如何将所有字节发送到单个数组,然后在字节之间发送xor?

时间:2016-09-28 05:37:18

标签: java arrays

我有套接字应用程序,我可以逐字节读取,我需要将所有字节推入一个单独的数组。 我读到如下。所以我将有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];

1 个答案:

答案 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 ^
}