目录
1、什么是大小端字节序
(1) 小端字节序(也称“主机字节序”)
小端字节序:把数据的低位字节的内容,存放在内存的低地址处,
把高位字节的内容,存放在内存的高地址处。
(2) 大端字节序 (也称“网络字节序”)
大端字节序:把数据的低位字节的内容,存放在内存的高地址处,
把高位字节的内容,存放在内存的低地址处。
2、为什么会存在大端和小端模式??
假设某个数据的字节数是 4,此时字节数 > 1,存在如何存放这4个字节的问题,是先放高地址还是先放低地址?
这就导致了小端存储模式 和 大端存储模式。
3、通过代码判断一个机器的大小端
整型常量 1 在内存中的二进制形式为 0000 0000 0000 0000 0000 0000 0000 0001,转换成十六进制就是 00 00 00 01
我们可以只访问第一个字节,如果第一个字节是 00,说明就是大端;如果第一个字节是 01 ,说明是小端。至于如何访问第一个字节,我们可以利用指针类型的特性实现,char* 类型的指针每次访问的步长就是一个字节。
int main() {
int n = 1;
char* p = (char*)&n;
printf("第一个字节的值为: %d\n", *p); // p是char*类型的指针变量,访问步长为1
if (*p == 0)
{
printf("大端存储");
}
else
{
printf("小端存储");
}
return 0;
}