鉴于我的平台是小端字节序,我假设四字节整数值 1 将表示为0x00
, 0x00
, 0x00
, 0x01
当表示为字节数组时。这样,有人可以向我解释为什么以下断言失败......
int val{1};
auto bytes = reinterpret_cast<char*>(&val);
assert(bytes[sizeof(int) - 1] == 0x01);
...但是以下断言成功了...
assert(bytes[0] == 0x01);
演员阵容结束后char*
,字节似乎颠倒了。我对字节序的假设是错误的吗?编译器(clang)或语言是否抽象了字节序?这是怎么回事?
你的假设被颠倒了。在小尾数中,32 位整数值 1 以十六进制表示为0x00000001
,但以字节表示为0x01 0x00 0x00 0x00
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)