2016-09-28 50 views
0

我有套接字應用程序,我可以逐字節讀取,我需要將所有的字節推入一個單一的數組。 我讀取如下。所以我會有12 + bodylen字節。如何將所有字節發送到單個數組中,然後在字節之間發送xor?

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有後,我需要每一個這個字節之間進行異或,得到的結果爲字節了。

byte[] fullMessage = new byte[12+bodyLen]; 
+0

什麼是'r'?流/數據讀取器? – Antoniossss

+0

r是新的DataInputStream(新的BufferedInputStream(receivedSocketConn1.getInputStream())); – user5313398

回答

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[])。 工作步驟完成後,使用ByteBuffer

byte[] fullMessage=byteBuffer.array();

.array()方法從緩衝區中的陣列後來獲得,遍歷數組,做必要的工作

for(int i=0,s=fullMessage.lengthl;i<s;i++){ 
    // do your XOR operations -> xor operator is^
} 
+0

不,我不需要全部原因在前面和最後我需要忽略幾個字節? – user5313398

+0

如何將每個字節的讀數添加到fullMessage數組中? – user5313398

+0

@ user5313398使用'ByteBuffer'。閱讀javadocs'ByteBuffer',但主要是'ByteBuffer#put(byte [])'和其他'ByteBuffer#put'方法家庭 – Antoniossss