0
我有一个java.nio.MappedByteBuffer,我正在使用从小端文件读取整数。我使用ByteBuffer.order()将字节顺序设置为LITTLE_ENDIAN,但这会导致缓冲区将整数解释为大端。MappedByteBuffer字节顺序颠倒?
确认我们已经3号在小尾数字节4-7
读为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公司的Java的HotSpot(TM)64位服务器VM混合模式 使用MATLAB R2011b
你的先生,是一个绅士和学者。为了澄清他人,我将ByteBuffer.getInt()的参数当作是一个整数数组的索引(1 =“我想要第二个整数”),当它实际上是一个字节偏移量时 – Clark 2012-04-19 18:38:24
也许'IntBuffer ib = byteBuffer.asIntBuffer();'更符合你的喜好。 – 2012-04-19 19:44:57