gpt4 book ai didi

java - MappedByteBuffer 字节顺序颠倒了?

转载 作者:行者123 更新时间:2023-12-02 07:50:57 26 4
gpt4 key购买 nike

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

确认字节 4-7 中的小尾数为 3

>> 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!

>> qfunction.s_idx.order( java.nio.ByteOrder.LITTLE_ENDIAN );
>> sprintf( '%.8x', qfunction.s_idx.getInt(1) )

ans =

03000000

读取 BIG_ENDIAN 会返回 3!*

>> qfunction.s_idx.order( java.nio.ByteOrder.BIG_ENDIAN );
>> sprintf( '%.8x', qfunction.s_idx.getInt(1) )

ans =

00000003

这是怎么回事?

将 Java 1.6.0_17-b04 与 Sun Microsystems Inc. Java HotSpot(TM) 64 位服务器 VM 混合模式结合使用使用 MATLAB R2011b

最佳答案

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

尝试一下

>> sprintf( '%.8x', qfunction.s_idx.getInt(4) )

关于java - MappedByteBuffer 字节顺序颠倒了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com