芯片字节序
字节序列,在计算机领域中,指电脑内存中或通信链路中,对数据占用的多个字节的排列顺序。
小端字节序(Little endian),高位字节在前,低位字节在后。0x12345678先存低位的那一端
大端字节序(Big endian),低位字节在前,高位字节在后。0x12345678即先存高位的那一端
以0x12345678数据为例,地址按线性增长。
小端字节序列存储为0x78, 0x56, 0x34, 0x12
小端字节序列存储为0x12, 0x34, 0x56, 0x78
程序判断计算机是大端的还是小端的,判断的思路是确定一个多字节的值(下面使用的是4字节的整数),将其写入内存(即赋值给一个变量),然后用指针取其首地址所对应的字节(即低地址的一个字节),判断该字节存放的是高位还是低位,高位说明是Big endian,低位说明是Little endian。
#include <stdio.h>
int main ()
{
unsigned int data = 0x12345678;
char *c = (char*)&data;
if (*c == 0x78) {
printf("Little endian");
} else {
printf("Big endian");
}
return 0;
}