字节排序按分为大端和小端,概念如下
大端(big endian):低地址存放高有效字节。数据的第一个字节先存。
小端(little endian):低字节存放地有效字节
1.大端和小端的方式及判断
举个例子说明,我的机子是32位windows的系统,处理器是AMD的。对于一个int型数0x12345678,为方便说明,这里采用16进制表示。这个数在不同字节顺序存储的CPU中储存顺序如下:
LSB的意思是:全称为Least Significant Bit,在二进制数中意为最低有效位,一般来说,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。
MSB的意思是:全称为Most Significant Bit,在二进制数中属于最高有效位,MSB是最高加权位,与十进制数字中最左边的一位类似。
0x12345678 16进制,两个数就是一字节 数据的第一个字节是12(MSB)
高有效字节——>低有效字节: 12 34 56 78
低地址位 高低址位
大端: 12 34 56 78
小端: 78 56 34 12
复制代码
#include<stdio.h>
int main(void ){
unsigned int x =0x12345678;
unsigned char *p = (unsigned char *)&x;
printf("%0x %0x %0x %0x",p[0],p[1],p[2],p[3]);
return 0;
}