我有使用此方法首先读取的数据流。
int messageSerialNumber = r.readUnsignedShort();
接下来,我将其转换为
byte[] byteMessageSerialNumber = new byte[2];
byteMessageSerialNumber[0] = (byte) messageSerialNumber;
byteMessageSerialNumber[1] = (byte) (messageSerialNumber >>> 8);
接下来,我构建一个更大的缓冲区数组并将其他数据添加到其中。
ByteBuffer bufReply = ByteBuffer.allocate(10);
bufReply.put(replyMessageID);
bufReply.put(byteMessageSerialNumber);
byte[] fullMessageReply=bufReply.array();
我想要的是
byteMessageSerialNumber
有2个字节,所以现在发生的是它没有多余的00
。所以变成
05 01 00 27 36 81 82 01 2C
应该是
05 01 00 27 36 81 82 01 00 2C
最佳答案
解决方案很简单。像这样交换:
byteMessageSerialNumber[0] = (byte) (messageSerialNumber >>> 8);
byteMessageSerialNumber[1] = (byte) messageSerialNumber;
第一个字节应该是
messageSerialNumber
的第一个最高有效部分,第二个字节应该是messageSerialNumber
的最后一个最低有效部分。