要发送的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”
来个高人指点下,多谢啦