任何十六进制到char

C++ any hex to char

本文关键字:char 十六进制 任何      更新时间:2023-10-16

从十六进制到字符有更好的方法吗?

char one = static_cast<char>(0x01);

(问,因为这——> c++使用指针,没有传递)

也有一个快速的方法,使字符数组十六进制值(例如。0x12345678到字符数组)?

你可以试试:

std::string hexify(unsigned int n)
{
  std::string res;
  do
  {
    res += "0123456789ABCDEF"[n % 16];
    n >>= 4;
  } while(n);
  return std::string(res.rbegin(), res.rend());
}

感谢STL的"索引到字符数组"技巧。

在打印char时也要小心,它们在某些平台上是签名的。如果您希望128打印为80而不是FFFFFFFF,您必须通过首先转换为无符号char来防止它被视为-1: hexify((unsigned char)(c));

您打算在变量one中存储什么?

代码将把ASCII字符0x01存储到one中。这是一个控制字符,而不是一个可打印字符。如果你正在寻找数字 1,那么你需要明确地说:

char one = '1';

存储实际字符,而不是ASCII码0x01

如果您试图将一个数字转换为该数字的字符串表示形式,那么您需要使用这些机制之一。相反,如果您试图将32位整数视为4字节的序列,其中每个字节都是一个ASCII字符,那就是另一回事了。为此,您可以这样做:

uint32_t someNumber = 0x12345678;
std::string myString(4, ' ');
myString[0] = static_cast<char>((someNumber >> 24) & 0xFF);
myString[1] = static_cast<char>((someNumber >> 16) & 0xFF);
myString[2] = static_cast<char>((someNumber >> 8) & 0xFF);
myString[3] = static_cast<char>((someNumber) & 0xFF);