大端小端的概念
大端与小端的另一种说法是“尾端高地址存储” 与 “尾端低地址存储”。
即,当一个串存储在存储空间中的时候。其尾端相比于首端的地址是高还是低。
如 “0x12345678”, 如果0x78处于高地址的话,就是高地址存储(大端存储)。 0x78处于低地址的话,就是低地址存储(小端存储)。
大端 0x12345678
低地址 --------> 高地址
小端 0x12345678
高地址 --------> 低地址
(十六进制中78占一个地址位)
大端小端的由来
在计算机系统中,是以字节为单位分配地址空间的。
除了char占一个字节外,int short 等类型均需要两个或两个以上的地址空间。
因此,如何排列需要多个地址空间的变量,就成了一个问题(头冲哪边排列)。
因此就区分出了,“大端存储”与“小端存储”。
大端小端的决定
设备是大端存储模式还是小端存储模式,与存储器本身和编译器都没有关系。
只和cpu内核有关。
大端小端的影响
当不同端序的硬件设备相互通信时,可能会产生冲突。
如串口通信,是以字节为单位发送数据。
端序模式不同的设备在发送命令时,一段命令内字节的先后顺序是不同的。
因此,有时需要进行转序处理,才能正确识别命令。
我们现在所使用的设备与硬件基本都是小端设备,大多数情况下无需考虑大小端转换的问题。
大小端的验证
使用char sz[4] = {00, 00, 00, CB};
int a;
memcpy(&a, sz, sizeof(int));
将a的值打印出来。
看是不是CB所代表的数。
学识尚浅,欢迎纠正与补充
原文:https://www.cnblogs.com/contradictory-man/p/13172176.html