首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MappedByteBuffer字节顺序倒转?

MappedByteBuffer字节顺序倒转?
EN

Stack Overflow用户
提问于 2012-04-19 17:37:16
回答 1查看 543关注 0票数 0

我有一个java.nio.MappedByteBuffer,用于从一个小的endian文件中读取整数。我使用LITTLE_ENDIAN ()将字节顺序设置为ByteBuffer.order,但这会导致缓冲区将整数解释为大端字节。

确认我们有以字节4-7为单位的小endian数字3。

代码语言:javascript
复制
>> sprintf( '%.2x ', qfunction.s_idx.get(4), qfunction.s_idx.get(5), qfunction.s_idx.get(6), qfunction.s_idx.get(7) )

ans =

03 00 00 00 

读取作为LITTLE_ENDIAN返回0x03000000而不是0x00000003!

代码语言:javascript
复制
>> qfunction.s_idx.order( java.nio.ByteOrder.LITTLE_ENDIAN );
>> sprintf( '%.8x', qfunction.s_idx.getInt(1) )

ans =

03000000

读取作为BIG_ENDIAN返回3!*

代码语言:javascript
复制
>> qfunction.s_idx.order( java.nio.ByteOrder.BIG_ENDIAN );
>> sprintf( '%.8x', qfunction.s_idx.getInt(1) )

ans =

00000003

这里发生什么事情?

使用Java1.6.0_17-B04与Sun Microsystems公司的Java HotSpot(TM) 64位服务器VM混合模式

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-19 17:57:48

您正在写入字节4,5,6,7,但读取字节1,2,3,4。这使得字节4(这是唯一有值的字节)出现在末尾而不是开头,

试一试

代码语言:javascript
复制
>> sprintf( '%.8x', qfunction.s_idx.getInt(4) )
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10233627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档