1

所以我试图弄清楚为什么当我插入/放入 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());
        }
}

我怎样才能让它插入到我想要的索引中?

4

1 回答 1

3

该函数的文档指出:

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

听起来您有一个大端字节序,因此您希望看到的值被写入第二个位置(可能在第一个位置有一个 0 字节)。

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

于 2013-10-04T03:00:26.050 回答