Little-endian和Big-endian

Nic*_*ola 0 c endianness

我必须编写一个例程来表示2个表示之间的转换.但我有点困惑.如果我有一个具有32位字的存储器的架构并且我必须将字0xA15D23B1存储为Big-endian,那么在23之后的5D之后存储器变为A1并且在具有Little-endian的B1结束之后存储器变为A1而在5D之后的23之后存储器是B1在A1之后是对的吗?

如果我能解决机器上的各个字节,而我的字地址是零,那么字节1是什么?在Big-endian是5D?在小端也是5D?

感谢所有愿意回答我的人

ise*_*dev 6

Big-endian内存布局首先是最重要的字节,而little-endian布局首先是最不重要的字节.给定值0xA15D23B1:

Memory address    0  1  2  3
Big-endian       A1 5D 23 B1
Little-endian    B1 23 5D A1
Run Code Online (Sandbox Code Playgroud)

请注意,big-endian内存布局在字大小方面不会改变,但是little-endian会改变.如果考虑两个短字(16位),0xA15D和0x23B1连续存储:

Memory address    0  1  2  3
Big-endian       A1 5D 23 B1
Little-endian    5D A1 B1 23
Run Code Online (Sandbox Code Playgroud)