首页 > 解决方案 > 字节顺序。这些字节将如何表示?

问题描述

给定十六进制字节 0x12345678,使用 big-endian 顺序将字节复制到内存。

地址内容

0x00400003 0x78

0x00400002 0x56

0x00400001 0x34

0x00400000 0x12

那正确吗?

标签: endianness

解决方案


在 big-endian 中,最重要的字节 ( 12) 应该在最前面,其余的应该按重要性降序排列。

如果给定的数字是大端字节序(可能是),那么您的解决方案是正确的,因为它看起来像这样:

00400000|00400001|00400002|00400003
--------+--------+--------+--------
   12   |   34   |   56   |   78

如果您必须以小端序排列字节,则排列将相反:

00400000|00400001|00400002|00400003
--------+--------+--------+--------
   78   |   56   |   34   |   12

请注意,在这种安排中,只有字节的顺序颠倒了,但半字节的顺序(4 位区域 = 十六进制数字)保持不变。

您可以在此 Wikipedia 页面中阅读有关字节序的更多信息。


推荐阅读