2
我遇到了如何在不破壞數據的情況下處理字節數據的問題。這裏是我的代碼如何在不破壞數據的情況下處理字節流
...
byte[] b = new byte[1000];
// read input stream
BufferedInputStream inData = new BufferedInputStream(socket.getInputStream());
int length = inData.read(b);
String data = new String(b, 0, length);
if (Log4j.log.isEnabledFor(Level.INFO)) {
Log4j.log.info("Data Length: " + length
+ ", Received data: " + data);
}
...
// start a new socket to other server
...
BufferedOutputStream out = new BufferedOutputStream(remote.getOutputStream());
out.write(data.getBytes());
out.flush();
...
這裏看起來沒什麼問題。但是,如果我有一個十六進制字符串像
F8 F0 F0 C2 20 00 00 80 00 00
像C2
一些數據會變成3F
。我可以在我的日誌&遠程服務器的日誌中看到這一點。
起初,我懷疑它會溢出。但由於這些數據將被視爲十六進制字符串併發送到另一臺服務器,因此這種懷疑將被越過。
我不知道這件事發生了什麼,所以如果有人知道這個問題,我真的可以使用一些幫助。
啊,你是對的!我的其他測試字符串正確傳遞它,所以我認爲我的代碼沒有錯。 – Kaninchen