关于通信数据包中hex格式和明文格式的转化

发送端

不勾选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

你可能感兴趣的:(关于通信数据包中hex格式和明文格式的转化)