/*
字节序:字节在内存中存储的顺序。
大端字节序:数据的低位字节存储在内存的高位地址,高位字节存储在内存的低位地址
小端字节序:数据的高位字节存储在内存的高位地址,低位字节存储在内存的低位地址
不同计算机的字节序可能不同,在传输数据时可能出错
在网络传输中统一用的都是大端字节序
eg:Ox 01 02 03 04 两个16进制数表示一个字节
01为高位,04为低位
若计算机内存增长方向--->
小端:04 03 02 01
*/
// 通过代码检测当前主机的字节序
#include <stdio.h>
int main() {
union {
short value; // short占2字节
char bytes[sizeof(short)]; // char占一个字节,这个数组占两个字节
/*
union 叫共用体,又叫联合、联合体。
"联合体"是一种特殊的类,也是一种构造类型的数据结构。
在一个"联合体"内能够定义多种不同的数据类型。
一个被说明为该"联合体"类型的变量中,
这些数据共享同一段内存,以达到节省空间的目的。
*/
} test;
test.value = 0x0102; //两个字节
//01是高位,02是低位
//test.bytes[0]是低位
if((test.bytes[0] == 1) && (test.bytes[1] == 2)) {
printf("大端字节序\n");
} else if((test.bytes[0] == 2) && (test.bytes[1] == 1)) {
printf("小端字节序\n");
} else {
printf("未知\n");
}
return 0;
}
Linux网络编程:字节序
最新推荐文章于 2023-12-21 23:46:25 发布