为什么int8_t的输出格式使用4个字节?

Mathias B.

为了进行一些测试,我想显示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_tstd::cout与词汇的转换,你已经正确使用+触发推广int(必要的,因为char和相关类型不经历与IOSTREAMS词汇转换)。

但是然后……您已经将其提升为int所以你看到int类似的东西。

您的第二行很不错,可以确保您不会违反标志扩展名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的 8 个字节以内的 unsigned long long int 输出错误?

GDB检查数据显示格式,从连续8个字节到4个字节

为什么KeyValuePair <int,long> 16个字节?

为什么ObjectOutputStream用DataOutputStream写入14个字节而不是8个字节?

为什么arr [0]的大小是8个字节?

为什么打包的struct的大小是5个字节而不是4个字节?

为什么我不能在ps命令中使用-o或--format来控制输出格式?

为什么在Turbo C编译器中sizeof(int)是2个字节,而在gcc Linux编译器中是4个字节?

当32位和64位系统上的unsigned long long为8个字节时,为什么std :: size_t在32位系统上为4个字节?

使用int和int8_t有什么性能差异

为什么Box <[T]>在内存中需要16个字节,但是引用的切片仅需要8个字节?(在x64机器上)

为什么在C ++中,bool和int8_t的常见类型是int32_t?

C ++为什么数字限制对uint8_t和int8_t不起作用?

为什么两个指针之间有16个字节的差异而不是8个字节?

在一行中运行两个PowerShell命令时,为什么更改了输出格式?

使用little-endian格式将4个字节转换为整数(低字节在前)

为什么Java类文件格式的前四个字节为CAFEBABE?

为什么JVM tableswitch / lookupswitch指令的格式具有0到3个字节的填充?

为什么“ sizeof(a?true:false)”给出四个字节的输出?

为什么static_cast枚举类的基础类型为int8_t以获得意外的值?

为什么read()输出一个字节而不是一个字符串?

我说8时,为什么Golang没有给我8个字节?

将查找输出格式化为一个字段

二进制文件格式:为什么系统会读取所有4个字节并将其正确显示为25736483

为什么UTF-8编码不使用11111xxx形式的字节作为第一个字节?

为什么在C语言的4个字节上出现一个char字符

为什么numpy int16给26个字节的内存空间?

为什么WinDbg将System.Int32变量显示为24个字节?

为什么bpf代码无法访问cpumap_enqueue_ctx的前8个字节?