2012-11-27 57 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

我更新了我的代码,请检查它 –

相关问题