关于通信数据包中hex格式和明文格式的转化
2019-10-09 本文已影响0人
Mr_J316
发送端
不勾选hex发送,是将报文数据调用getBytes方法取得字节数组,高方法得到的是ascii码表准换成的十进制数据
String data = "A1 32"; //要发送的报文
byte[] bytes = s.getBytes();
//bytes:{65,49,32,51,50}
勾选hex发送,是将报文数据直接转成字节数组发送
String s = "A1 32"; //要发送的报文
String[] ss = s.split(" ");
byte[] bytes1 = new byte[ss.length];
for (int i = 0; i < ss.length; i++) {
bytes1[i] = (byte) Integer.parseInt(ss[i], 16);
}
//bytes:{-95,50}
接收端
以十六进制接收就是将收到的字节数组,逐字节的转换为十六进制显示
byte[] bytes = {-95, 50}; //接收到的字节数组
for (byte b : bytes) {
System.out.println(String.format("%02X", b));
}
//得到的数据 A1 32
以文本接收就是将收到的字节数组,整体转换为string
byte[] bytes = {65, 49, 32, 51, 50}; //接收到的字节数组
System.out.println(new String(bytes));
//得到的数据 A1 32