2012-11-27 126 views
0

我正在使用Socket連接。我正在客戶端工作。 我已經通過這個討論Socket pass value as Hex。我需要發送字符串例如(0x01是一個十六進制值和一個字符串「Ravi」)在服務器,他們期待hexa值像1 72 61 76 69.我嘗試將String Ravi轉換爲六進制值作爲字符串,並附加「1 「並嘗試轉換爲字節數組。我得到一個異常,即StringIndexOutOfBound異常。在Socket通信中寫入十六進制字符串android

更新:

`公共靜態字節[] hexStringToByteArray(一個String){ INT LEN = s.length(); byte [] data = new byte [len/2];數據[i/2] =(字節)((Character.digit(s.charAt(i),16)< < 2) + (int i = 0; i < len; i + = 2) + Character.digit(s.charAt(i + 1),16)); } 返回數據; }

public String toHex(String arg) { 
    return String.format("%x", new BigInteger(arg.getBytes())); 
}` 

我用這兩種方法的1Ravi字符串轉換爲字節數組,但我得到異常hexstringtobytearray方法。

+0

請告訴我們你已經嘗試的事情,包括樣本輸入。請注意,你並不是真的想用「十六進制」發送它 - 你只是想發送字節。 –

回答

1

試試這個

 Socket sock = new Socket("host", port); 
    OutputStream out = sock.getOutputStream(); 
    out.write(0); 
String s = "ravi"; 
    byte[] bytes = s.getBytes("UTF-8"); 
    out.write(bytes); 
+0

感謝您的回覆..我需要以字節的形式發送。我嘗試了十六進制字符串到字節數組。我得到StringOutOfIndexBound異常。 –

+0

@RaviTejaN:請向我們展示您嘗試過的代碼。顯然你做錯了什麼(否則你不會得到一個異常),但是我們不能在沒有看到你的代碼的情況下判斷你做錯了什麼。 –

+0

我更新了我的代碼,請檢查它 –

相關問題