我试图将套接字中的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值?
提前感谢你们
您应该将十六进制字符串转换为字节数组,然后将其作为字节数组发送:
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)
| 归档时间: |
|
| 查看次数: |
7266 次 |
| 最近记录: |