关于大小端模式的说明

1、高字节对应低地址(大端模式)、高字节对应高地址(小端模式)
有些CPU是大端(譬如C51单片机);有些CPU是小端(譬如ARM)。(大部分是用小端模式)


2、用C语言写一个函数来测试当前机器的大小端模式。


用union来测试机器的大小端模式

union myunion
{
int a;
char b;
};


int is_little_endian(void)
{
union myunion u1;
u1.a = 1;
return u1.b;
}
//分析:返回值为1,说明低位放在低地址,为小端模式,否则为大端模式




指针方式来测试机器的大小端

int is_little_endian2(void)
{
int a = 1;
char b = *((char *)(&a));// 指针方式其实就是共用体的本质


return b;//分析:返回值为1,说明低位放在低地址,为小端模式,否则为大端模式
}

注意:位与、移位、强制类型转化都不能进行大小端模式测试,因为这些都是逻辑上的操作,不涉及内存。


在通信协议中,大小端是非常重要的,一般来说,先发低字节叫小端;先发高字节就叫大端。

猜你喜欢

转载自blog.csdn.net/amumu_123/article/details/78347448