我正在製作一個需要通過互聯網接收數據的程序。它使用DatagramSockets並接收DatagramPackets。這一切工作正常,它收到的字節數組是我所期望的。NumberFormatException有效數字字符串
但是,當我嘗試將字節數組轉換爲字符串,然後轉換爲整數時,會發生很奇怪的事情。
運行下面的代碼給出了一個NumberFormatException異常的parseInt
行:
String length = new String(data, 1, data.length-1);
System.out.println("length = "+length);
size = Integer.parseInt(length);
System.out.println("size = "+size);
然而,當我檢查的data
內容,我看到,它只是包含55,52,49,56,53,0,0,0,0,0,0,0,0,0,0,0,0
,這是很好的,這是字符串「74185 」。這引發了異常。
當我硬編碼「74185」作爲length
字符串時,一切都很好。
這裏可能會出現什麼問題?
您確定您正在適當注意從網絡中讀取的字節數嗎?你有沒有考慮過將一個顯式編碼傳遞給String構造函數?你是否在十六進制中一次只輸出一個字符串? – bmargulies