Java字节缓冲覆盖字节
我有一个ByteBuffer,包含1024字节 我需要在关键时刻以某个偏移量覆盖缓冲区内的一个短路 我知道ByteBuffer类已经进行了putShort,但这不会覆盖数据,它只是将数据添加进来,这会导致缓冲区溢出 我猜使用ByteBuffer没有直接的方法,有人能建议一种方法吗 谢谢 感谢所有回复的人,似乎这是可以做到的,我只是使用了错误的putShort版本。我想当你盯着同一段代码看了六个小时就会发生这种情况Java字节缓冲覆盖字节,java,buffer,byte,Java,Buffer,Byte,我有一个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,问题解决了: