weixin_40855208 2020-03-30 12:18 采纳率: 0%
浏览 896

JAVA-串口或者Socket发送16进制指令数据问题

要发送的16进制数据:“01050000FF008C3A”

使用十六进制的字符串转换成字节数组:

 public static byte[] hexStrToBinaryStr(String hexString) {





        hexString = hexString.replaceAll(" ", "");

        int len = hexString.length();
        byte[] data = new byte[len / 2];
        for (int i = 0; i < len; i += 2) {
            data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
                    + Character.digit(hexString.charAt(i+1), 16));
        }
        return data;



    }

然后将数据发送出去

                String hex="01050000FF008C3A";
                byte[] b;
                b=hexStrToBinaryStr(hex);
                String message = null;
                while((message = br.readLine()) != null){
                    for(PrintWriter o: allOut){
                        System.out.println("服务器收到的消息为:"+message);
                        if(message.equals("01")){
                            System.out.println("开启浇水阀门");
                            o.println(b);
                        }
                    }
                }

使用TCP工具进行接收,收到数据为:“5b 42 40 37 64 61 64 35 32 33 38 0d 0a ”

为什么TCP收到的数据变了呢,不是我要发送的“01050000FF008C3A”

来个高人指点下,多谢啦

  • 写回答

1条回答 默认 最新

  • 带着竹蜻蜓的飞机 2023-08-10 16:21
    关注

    应该是进制问题,可以再调整下发送前数据

    评论

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波