我正在尝试将套接字中的字符串值传递给另一台服务器。另一台服务器应以十六进制格式接收该值。
即,如果我的字符串在服务器上为s =“600185838e”,则它应接收为60 01 85 83 8e,但是我发送的这些值已转换为ASCII且不是所需的格式。
我正在使用套接字连接
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream()));
wr.write(messageBody);
wr.flush();
如何发送类似于十六进制值的String值?
提前谢谢大家
最佳答案
您应该convert the hex string to byte array,然后将其作为字节数组发送:
OutputStream out = this.socket.getOutputStream();
out.write(yourBytearray);
这是将十六进制字符串转换为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;
}
关于java - 套接字将值传递为十六进制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5546853/