在C++中打印出无符号字符数组的十六进制谷
Printing out the hex vale of an unsigned char array in C++
我想使用cout
函数打印出unsigned char
数组的hex
值。
最明显的方法是如下所示。
unsigned char str[] = "foo bar bazn";
for(unsigned short int i = 0; i < sizeof(str); i++){
std::cout << std::hex << str[i] << std::dec << ' ';
}
std::cout << std::endl;
令人惊讶的是,这会输出以下字符串:
foo bar baz
由于某种原因,这不会打印出正确的十六进制值str
如何cout
str
的正确hex
值?
要cout
无符号字符的正确十六进制值,需要先将其转换为整数。
unsigned char str[] = "foo bar bazn";
for(unsigned short int i = 0; i < sizeof(str); i++){
std::cout << std::hex << (int) str[i] << std::dec << ' ';
}
std::cout << std::endl;
提供以下输出。
66 6f 6f 20 62 61 72 20 62 61 7a 00
这与str
中每个unsigned char
的hex
值相对应。
可以在以下std::hex
文档中找到对此的解释。
标准::十六进制
将 str 流的
basefield
格式标志设置为hex
。当
basefield
设置为hex
时,插入到流中的整数值以十六进制基数表示(即基数16)。对于输入流,设置此标志时,提取的值也应以十六进制基数表示。
http://www.cplusplus.com/reference/ios/hex/
相关文章:
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 在Arduino中将字符串转换为(逗号分隔的十六进制)字符串到无符号字符数组
- 字符数组到十六进制字符串的转换 - 意外输出
- 将字符串转换为十六进制数组c++
- C++ 用户定义的数组被解释为十六进制?
- 十六进制 QString 表示为无符号字符数组
- 从十六进制字符串转换为十六进制字符数组
- 字符数组中的十六进制导致写入套接字时出现随机字符
- 将十六进制字符数组存储在字节数组中,而无需更改为 ASCII 或其他任何东西
- 从 std::数组创建十六进制代表
- 生成十六进制随机 16 字节数组
- 将二进制读入十六进制字节数组
- 使用无符号字符数组输入十六进制数
- 如何将十六进制字符数组转换为C 中的字符串
- 尝试将二进制数组转换为十六进制C++然后打印结果
- 如何将十六进制添加到字符数组
- 在C/C++中将十六进制数组作为字符串写入文件
- 将十六进制字符串转换为字符数组 c++
- 十六进制数组 cout 到文本文件失败
- 如何将一组十六进制字符串转换为字节阵列