大头

大头小头 字节序

匿名 (未验证) 提交于 2019-12-03 00:22:01
PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据 。那么究竟什么是big endian,什么又是little endian呢? 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。 小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处 。 对WORD/DWORD/QWORD等多于1字节类型的数据,在这些嵌入式平台上应该变换其存储顺序。通常我们认为,在空中传输的字节的顺序即网络字节序为标准顺序,考虑到与协议的一致以及与同类其它平台产品的互通,在程序中发数据包时,将主机字节序转换为网络字节序,收数据包处将 网络字节序 转换为主机字节序。 所有网络协议也都是采用big endian的方式来传输数据的。 用文字说明可能比较抽象,下面用图像加以说明。比如数字0x12345678在两种不同字节序CPU中的存储顺序如下所示: 对于0x12345678, Little endian:高地址<------->低:存储数据0x12 0x34 0x56 0x78 判断小端还是大端规则的方法: 另外补充: int x = 1; if(*(char *)&x == 1) //取x指针强制转换为char*类型再取值