我有套接字应用程序,我可以逐字节读取,我需要将所有字节推入一个单独的数组。 我读到如下。所以我将有12 + bodylen字节。
int messageID = r.readUnsignedShort();
int bodyLen = r.readUnsignedShort();
byte[] phoneNum = new byte[6];
r.readFully(phoneNum);
int serialNum = r.readUnsignedShort();
byte[] messageBody = new byte[bodyLen];
r.readFully(messageBody);
byte checkCode = r.readByte();
我的挑战是如何将所有字节推入一个fullMessage,然后我需要在每个字节之间进行xor并将结果作为字节获取。
byte[] fullMessage = new byte[12+bodyLen];
答案 0 :(得分:1)
如果您不需要将所有内容分开,并且需要所有单个数组,请在阅读bodyLen
之后执行以下操作:
int messageID = r.readUnsignedShort();
int bodyLen = r.readUnsignedShort();
byte[] fullMessage=new byte[12+bodyLen];
r.readFully(fullMessage,0,fullMessage.length);
此处fullMessage
将包含您在单个数组中的代码中逐步阅读的所有数据。
但如果您需要单独阅读所有部分:请参阅下面的
要将数组和其他元素连接到数组,请使用ByteBuffer#put(byte[])。
完成工作后,使用.array()
ByteBuffer
方法从缓冲区中获取数组
byte[] fullMessage=byteBuffer.array();
稍后,迭代数组并完成所需的工作
for(int i=0,s=fullMessage.lengthl;i<s;i++){
// do your XOR operations -> xor operator is ^
}