我正在开发Socket连接。我在客户端工作。 我已经完成了这次讨论Socket pass value as Hex。我需要在服务器上发送字符串,例如(0x01是十六进制值和一个字符串“Ravi”),它们期望六进制值如1 72 61 76 69.我尝试将字符串Ravi转换为六进制值作为字符串并附加“1 “并尝试转换为字节数组。我得到一个异常的StringIndexOutOfBound异常。
更新
`public static byte [] hexStringToByteArray(String s){ int len = s.length(); byte [] data = new byte [len / 2]; for(int i = 0; i< len; i + = 2){ data [i / 2] =(byte)((Character.digit(s.charAt(i),16)<< 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);