为了进行一些测试,我想显示int8_t变量,将其转换为uint8_t,然后再次以十六进制显示它们。
#include <iostream>
#include <sstream>
int main()
{
std::int8_t t = -1;
std::cout << std::hex << +t << std::endl;
std::cout << std::hex << +static_cast<std::uint8_t>(t) << std::endl;
return 0;
}
这是该程序的输出:
$ ./a.exe
ffffffff
ff
cout似乎将int8_t格式化为4个字节。这是为什么?因为它是一个字节的值,所以希望看到ff,就像uint8_t一样,在本示例中就是这种情况。
为什么int8_t的输出格式使用4个字节?
没有。您输出的是int
,而不是int8_t
。
要流式播放uint8_t
到std::cout
与词汇的转换,你已经正确使用+
触发推广int
(必要的,因为char
和相关类型不经历与IOSTREAMS词汇转换)。
但是然后……您已经将其提升为int
。所以你看到int
类似的东西。
您的第二行很不错,可以确保您不会违反标志扩展名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句