program-doc-字节序

字节序

字节序,简单来说,就是指的超过一个字节的数据类型在内存中存储的顺序

分类

  • 大端字节序

高位字节数据存放在低地址处,低位数据存放在高地址处;

  • 小段字节序

高位字节数据存放在高地址处,低位数据存放在低地址处;

  • 网络字节序

TCP/IP协议传输数据时,字节序默认大端

高低位

在内存中,栈是向下生长的,以char arr[4]为例,(因为char类型数据只有一个字节,不存在字节序的问题)依次输出每个元素的地址,可以发现,arr[0]的地址最低,arr[3]的地址最高。

数组

数组

最简单地来说,用整形的 1 为例,1在栈中存储的大小端格式分别如下图所示。

整形1

整形1
  • c测试代码
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
int a = 1;
char pc = *(char*)(&a);
if (pc == 1)
printf("第一个字节为1,小端存储\n");
else
printf("第一个字节为0,大端存储\n");

return 0;
}