我想使用hex
函数打印出unsigned char
数组的cout
值。
最明显的方法如下:
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
我如何cout
hex
的正确str
值?
答案 0 :(得分:3)
要cout
无符号字符的正确十六进制值,首先需要将其转换为整数。
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
与hex
中每个unsigned char
的{{1}}值相对应。
可以在以下str
文档中找到对此的解释。
的std ::己
将str流的
std::hex
格式标志设置为basefield
。当
hex
设置为basefield
时,插入流中的整数值以十六进制数表示(即基数16)。对于输入流,当设置此标志时,预期提取的值也将以十六进制数表示。