ByteBuffer索引一个

时间:2013-10-04 02:50:53

标签: java bytebuffer

所以我试图找出为什么当我插入/放入ByteBuffer时,索引总是比它们应该大1。例如:

public static void main(String[] args) throws Exception
    {
        byte[] memory = new byte[10]; // 3MB memory
        ByteBuffer byteBuffer = ByteBuffer.wrap(memory);

        char character = 'G';

        byteBuffer.putChar(0, character); // 71 at index 1
        byteBuffer.putChar(5, character); // 71 at index 6
        byteBuffer.putChar(3, character); // 71 at index 4

        for(Byte myByte : byteBuffer.array())
        {
            System.out.println(myByte.byteValue());
        }
}

如何将其插入到我想要的索引中?

1 个答案:

答案 0 :(得分:2)

该功能的文档说明:

  

在当前中写入包含给定char值的两个字节   字节顺序,在给定索引处的缓冲区中。

听起来你有一个big-endian字节顺序,因此你期望看到的值被写入第二个位置(可能在第一个位置有一个0字节)。

您应该使用等效的put方法,它会写一个字节。