大小端模式及其验证

大小端模式

 
以前对大端和小端模式一直不太了解,而且还经常弄混淆,在此,简单的总结如下:

在计算机业界,Endian表示数据在存储器中的存放顺序。

1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

内存地址 小端模式存放内容 大端模式存放内容
0x4000 0x34 0x12
0x4001 0x12 0x34

Java和所有的网络通讯协议都是使用Big-Endian的编码。
 

按照概念,通过下列程序,可以测试出你的计算机是大端还是小端模式。
 

测试程序一

#include <stdio.h>
#include <stdlib.h>

int main(){
        short int x = 0x1234;
        char x0, x1;

        x0 = ((char*)&x)[0]; //low
        x1 = ((char*)&x)[1]; //high

        if(x0 == 0x12 && x1 == 0x34)
                printf("big endian\n");
        else
                printf("little endian\n");
}

测试程序二 

#include <stdio.h>
#include <stdlib.h>

int main(){
        union DIAN{
                char tc[2];
                short int inum;
        };

        union DIAN dian;
        dian.inum = 0x1234;
        if(dian.tc[0] == 0x12 && dian.tc[1] == 0x34)
                printf("big endian\n");
        else
                printf("little endian\n");
}

 

你可能感兴趣的:(big-endian,大端,小端,little-endian)