gpt4 book ai didi

将 int 转换为字节数组时的 C++ 字节顺序

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:10:53 28 4
gpt4 key购买 nike

鉴于我的平台是小尾数法,我假设四字节整数值 1 将表示为 0x000x000x00, 0x01 表示为字节数组时。有了这个,有人可以向我解释为什么以下断言失败......

int val{1};
auto bytes = reinterpret_cast<char*>(&val);
assert(bytes[sizeof(int) - 1] == 0x01);

...但是下面的断言成功了...

assert(bytes[0] == 0x01);

转换为 char* 后,字节似乎被颠倒了。我对字节顺序的假设是错误的吗?编译器(clang)或语言是否抽象出字节顺序?怎么回事?

最佳答案

你的假设是相反的。在小尾数法中,1 的 32 位整数值以十六进制表示为 0x00000001,但以字节表示为 0x01 0x00 0x00 0x00

关于将 int 转换为字节数组时的 C++ 字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27997319/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com