对于多字节数据,如在32位系统中的一个无符号短整型数:
unsigned short usTestNum = 0x1122;
该数据占两个字节,在计算机中地址索引的最小单位是字节,也就是说高位0x11和地位0x22在计算机中分别有一个地址,那么谁的地址大谁的地址小呢。
大端模式:高位存放于低地址,即如果0x11的地址小于0x22的地址,就是大端模式;
小端模式:地位存放于低地址,即如果0x22的地址小于0x11的地址,就是小端模式;
那么计算机到底是大端模式还是小端模式是由CPU和操作系统决定的,下面提供一个简单的判断大小端的程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
short sTestData = 0x1122;
unsigned char cNum = *((unsigned char*)(&sTestData));
if (cNum == (unsigned char)0x11)
{
printf("big endian\n");
}
if (cNum == (unsigned char)0x22)
{
printf("little endian\n");
}
return 0;
}
目前我使用的计算机不论是windows系统还是ubuntu系统是小端模式。