任何十六进制到char
C++ any hex to char
从十六进制到字符有更好的方法吗?
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);
相关文章:
- 是否可以在C++中获取 CHAR 的有效十六进制地址?
- char* 如何读取十六进制的这个整数?它在 ostream::write() 中是如何工作的
- 从char阵列中提取十六进制数字
- 十六进制到十六进制char []
- 我如何格式化十六进制中“未签名char”阵列的值
- C++/C:Char[]的前缀长度(以字节为单位)(二进制/十六进制)
- 将int转换为十六进制并将其存储到char缓冲区中
- 将十六进制数的 char[] 转换为对应于 ASCII 表中十六进制数字的字母的 char[] 并反转
- Ofstream 写入十六进制而不是 char*
- 将整数的 char* 数组转换为十六进制
- 将char数组转换为十六进制数组(C++)
- 将包含十六进制值的字符串转换为c中的char字节
- 如何在python中将包含十六进制值的无符号char*数组写入文件
- 如何从具有十六进制二进制数据的 char* 加载流字符串
- 如何从十六进制转换为int和char
- C++:将char*中的十六进制解释为uint8_t
- 我如何从ASCII转换到十六进制值,也增加char指针
- 十六进制值00到ASCII或char
- C/ c++从整数到十六进制到char数组到char
- c++ char十六进制值到字节