大端字节顺序(big end)、小端字节顺序(little end)

本文详细解释了大端与小端字节序的概念,并通过具体例子展示了这两种字节序在内存中的表现形式。同时介绍了如何通过简单的代码测试计算机采用的是哪种字节序,并探讨了Java中ByteBuffer类对于字节序的处理方式及其潜在的性能影响。

例如,32 位的 int 值0x037fb4c7(十进制的 58,700,999)

当数值的高位先放入内存的低地址时为大端字节顺序:

内存地址 
c70xE3高地址
b40xE2 
7f0xE1 
030xE0低地址


当数值的低位先放入内存的低地址时为小端字节顺序:

内存地址 
030xE3高地址
7f0xE2 
b40xE1 
c70xE0低地址

测试计算机是否为大端小端的代码为:

unsigned int i=0x037FB4C7;
char j=0xC7;
if(j==(*((char*)(&i)))) //为true时则为小端,为false时则为大端.

{std::cout<<"小端";}

else

{std::cout<<"大端";}

Java中的ByteBuffer 类:默认字节顺序总是 ByteBuffer.BIG_ENDIAN,无论系统的
固有字节顺序是什么。Java 的默认字节顺序是大端字节顺序,这允许类文件等以及串行化的
对象可以在任何 JVM 中工作。如果固有硬件字节顺序是小端,这会有性能隐患。在使用固有
硬件字节顺序时,将 ByteBuffer 的内容当作其他数据类型存取很可能高效得多.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值