大小端模式及其验证

大小端模式

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

在计算机业界,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");
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值