我想使用 cout
函数打印 unsigned char
数组的 hex
值。
最明显的方法如下。
unsigned char str[] = "foo bar baz\n";
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
的正确十六进制值
如何计算
str
的正确十六进制
值?
最佳答案
要计算
无符号字符的正确十六进制值,需要首先将其转换为整数。
unsigned char str[] = "foo bar baz\n";
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
文档中找到。
std::hex
Sets the
basefield
format flag for the str stream tohex
.When
basefield
is set tohex
, integer values inserted into the stream are expressed in hexadecimal base (i.e., radix 16). For input streams, extracted values are also expected to be expressed in hexadecimal base when this flag is set.
关于c++ - 在 C++ 中打印出 unsigned char 数组的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194803/