【发布时间】:2015-01-17 07:35:14
【问题描述】:
鉴于我的平台是小端序,我假设一个四字节整数值 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)还是语言抽象了字节序?怎么回事?
【问题讨论】:
-
Little endian - 第一个字节是最小的 - 即。 1
-
小端的意思是“小端优先”,“小端”=“最不重要”,内存中的“第一”
标签: c++ casting endianness