套接字传递值为十六进制

Var*_*man 1 java sockets

我试图将套接字中的String值传递给另一台服务器.另一台服务器应该以十六进制格式接收值.

即如果我的字符串在服务器上是s ="600185838e",它应该收到60 01 85 83 8e,但是我发送的这些值已被转换为ASCII并且不是所需的格式.

我正在使用套接字连接

BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream()));

wr.write(messageBody);

wr.flush(); 
Run Code Online (Sandbox Code Playgroud)

如何发送类似Hex值的String值?

提前感谢你们

MBy*_*ByD 5

您应该将十六进制字符串转换为字节数组,然后将其作为字节数组发送:

OutputStream out = this.socket.getOutputStream();
out.write(yourBytearray);
Run Code Online (Sandbox Code Playgroud)

这是将十六进制字符串转换为byte []的方法,这是我给出的链接的副本,但我在这里复制它以明确我在说什么:

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) << 4)
                             + Character.digit(s.charAt(i+1), 16));
    }
    return data;
}
Run Code Online (Sandbox Code Playgroud)