从hex到char有更好的方法吗?
char one = static_cast<char>(0x01);
(因此询问 - &gt; C++ using pointers, nothing is passed)
还有一种快速方法可以使用十六进制值创建一个char数组(例如,0x12345678到一个char数组)?
答案 0 :(得分:7)
你可以试试这个:
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());
}
对于“char into char array”技巧的STL的信用。
在打印在某些平台上签名的char
时也要小心。如果您希望128
打印为80
而不是FFFFFFFF
,则必须先通过转换为无符号字符来阻止它被视为-1
:hexify((unsigned char)(c));
答案 1 :(得分:1)
您打算将哪些内容存储在变量one
?
编写的代码会将ASCII字符0x01
存储到one
中。这是一个控制字符,而不是可打印字符。如果您正在寻找数字 1,那么您需要明确说明:
char one = '1';
存储实际字符,而不是ASCII代码0x01
。
如果您尝试将数字转换为该数字的字符串表示形式,则需要使用one of these mechanisms。相反,如果您试图将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);