Java字节缓冲覆盖字节

Java字节缓冲覆盖字节,java,buffer,byte,Java,Buffer,Byte,我有一个ByteBuffer,包含1024字节 我需要在关键时刻以某个偏移量覆盖缓冲区内的一个短路 我知道ByteBuffer类已经进行了putShort,但这不会覆盖数据,它只是将数据添加进来,这会导致缓冲区溢出 我猜使用ByteBuffer没有直接的方法,有人能建议一种方法吗 谢谢 感谢所有回复的人,似乎这是可以做到的,我只是使用了错误的putShort版本。我想当你盯着同一段代码看了六个小时就会发生这种情况 再次感谢您的特殊情况,您可以使用此方法直接修改备份阵列 然后只需在适当的索引处插入

我有一个ByteBuffer,包含1024字节

我需要在关键时刻以某个偏移量覆盖缓冲区内的一个短路

我知道ByteBuffer类已经进行了putShort,但这不会覆盖数据,它只是将数据添加进来,这会导致缓冲区溢出

我猜使用ByteBuffer没有直接的方法,有人能建议一种方法吗

谢谢

感谢所有回复的人,似乎这是可以做到的,我只是使用了错误的putShort版本。我想当你盯着同一段代码看了六个小时就会发生这种情况


再次感谢您的特殊情况,您可以使用此方法直接修改备份阵列

然后只需在适当的索引处插入两个字节:

if(myBuffer.hasArray()) {
    byte[] array = myBuffer.array();
    array[index] = (byte) (myShort & 0xff);
    array[index + 1] = (byte) ((myShort >> 8) & 0xff);
}

对于您的特殊情况,您可以使用该方法直接修改备份阵列

然后只需在适当的索引处插入两个字节:

if(myBuffer.hasArray()) {
    byte[] array = myBuffer.array();
    array[index] = (byte) (myShort & 0xff);
    array[index + 1] = (byte) ((myShort >> 8) & 0xff);
}

我想你可以称这个版本的接受占有率索引。

我想你可以称这个版本的接受占有率索引。

无法重现这个问题,一切似乎都正常

    ByteBuffer bb = ByteBuffer.allocate(20);
    bb.putShort(10, (short)0xffff);
    System.out.println(Arrays.toString(bb.array()));
印刷品

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0]

无法重现问题,似乎一切正常

    ByteBuffer bb = ByteBuffer.allocate(20);
    bb.putShort(10, (short)0xffff);
    System.out.println(Arrays.toString(bb.array()));
印刷品

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0]

ByteBuffer有两种简单的方法:和。你确定你用的是对的吗?我完全用错了!谢谢马克,问题解决了:ByteBuffer有两种简单的方法:和。你确定你用的是对的吗?我完全用错了!谢谢Mark,问题解决了: