关于通信数据包中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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 01 大学参加了学院的女子篮球队,当时的训练主要是关于篮球上的运球、传球和防守等等。大二的时候真正开始打比赛才发现...
    jessieeee阿阅读 265评论 0 0
  • 现在是北京时间11:16,而我却是刚刚下班回家,然后马不停蹄的写一下自己的一些感悟,争取能在12:00之前交上。...
    微笑的小天使0902阅读 424评论 0 0