一,计算机存储系统的大小端
1,大端模式:高地址存放高字节数据,低地址存放低字节数据。
2,小端模式:高地址存放低字节数据,低地址存放高字节数据。
3,图示:32位系统
4,两种判断计算机大小端模式的办法
#include<stdio.h> union myunion { int a; char b; }; int main(void) { union myunion un; //unsigned int c = 1; unsigned int c = 0x12345678; char *p = (char *)&c; //方式一:通过联合体的元素共用内存的特质来判别大小端模式 un.a = 1; if(un.b) { printf(" 小端模式 "); } else { printf(" 大端模式 "); } //方式二:通过指针的方式判断 printf(" *p = 0x%x ",*p); if(*p) { printf(" 小端模式 "); } else { printf(" 大端模式 "); } }
二,通信系统的大小端问题
1,比如说要通过一个串口发送一个0x12345678给接收方,但是由于串口限制,只能以字节为单位发送,那么久需要发送四次,接收方分四次接收,内容分别是0x12、0x34、 0x56、 0x78。接收方收到这四个字节后需要去重组得到0x12345678而不是得到0x78563412。
2,所以通信双方需要有一个默契,那就是相互通信之前就规定好,是先发/接收高位还是先发低位/接收。这便是通信中的大小端问题。
3,一般来说,先发高字节的叫做大端模式,先发低字节的叫做小端模式。但也不一定,可以通信双方相互约定。