0

我正在处理套接字连接。我在客户端工作。我已经通过这个讨论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(); 字节[] 数据 = 新字节[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 方法。

4

1 回答 1

2

试试这个

        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);
于 2012-11-27T06:36:55.153 回答