我有一个数据流,我首先使用这种方法读取了它。
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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句