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