大端字节序和小端字节序
注意:大端字节序就是网络序,小端字节序就是主机序,现在的计算机一般都是小端字节序。
大小端字节序的区别,只在于数据在计算机的存储顺序不同。
小端字节序:低地址处存放数据的低位,高地址处存放数据的高位。
大端字节序:低地址处存放数据的高位,高地址处存放数据的低位。
主机字节序的计算方式:
#include <stdio.h>
int main()
{
int a = 0x12345678;
char *p = NULL;
p = (char *)&a;
if(*p == 0x78)
{
printf("小端字节序\n");
}
if(*p == 0x12)
{
printf("大端字节序\n");
}
printf("p = %x\n", *p);
return 0;
}
注意:系统的堆栈增长方向,堆是从低地址往高地址增长,栈是从高地址往低地址增长。局部变量是存放在栈中的,但是实际上也是从低地址往高地址增长,这是为什么?这是由于,栈的基本单位是栈帧,一个函数就是一个栈帧,栈帧的地址值是根据调用关系从高地址往低地址增长的,但是栈帧内(也就是函数内)的内存地址增长方向则是由编译器决定的,一般是从低地址往高地址。
参考:https://blog.csdn.net/weixin_42224577/article/details/115118561

浙公网安备 33010602011771号