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”

来个高人指点下,多谢啦

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