字节顺序
2022-09-07 本文已影响0人
七秒钟回忆待续
- 中文wiki
- RFC 描述。
https://www.rfc-editor.org/info/rfc1700
https://www.rfc-editor.org/rfc/rfc1700.txt 网络字节序规定为 big-endian - 网络字节序
计算机存储数据的基本单位是字节,1字节=8位。
8位11111111为16进制0xFF。因此下面为了方便演示用16进制表示。
0x数字1数字2数字3数字4。数字1和2为一个基本存储单元,同理数字3和4也是。
用C语言的union
判断计算机大小端模式
#include <stdio.h>
union Data {
int x;
short int y;
};
int main() {
union Data data;
data.x = 0x1234567;
printf("数字x为%d; 数字y为%d\n", data.x,data.y);
}
// 输出:数字x为19088743; 数字y为17767
x
的输出肯定没问题16进制0x1234567
是十进制19088743
。
假设是大端字节序:short int
是2个字节,因此y表示为0x12 0x34
。也就是0x1234=4660
。
小端字节序存储为:0x67 0x45
。也就是16进制0x4567
(小端字节)=17767
和输出一致。