我注意到 cout << hex
给我奇怪的结果,我找不到任何地方可以回答为什么。我所做的只是为 uint8_t
分配一些值和 uint16_t
然后尝试将它们写入标准输出。当我运行这个时:
uint8_t a = 0xab;
uint16_t b = 0x24de;
cout << hex << a << endl;
cout << hex << b << endl;
我得到的结果:
$./a.out
24de
$
没有显示 uint8_t 的值。是什么原因造成的?我不认为对于一种类型没有针对另一种类型的 cout 实现。
最佳答案
std::uint8_t
是 unsigned char
的别名:
typedef unsigned char uint8_t;
因此选择了采用 char&
的插入器重载,并编写了 0xab
的 ASCII 表示,这在技术上可能因操作系统而异,因为 0xab
在Extended ASCII范围内。
你必须把它转换成一个整数:
std::cout << std::hex << static_cast<int>(a) << std::endl;
关于c++ - cout << hex 与 uint8 和 uint16 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575381/