项目中发现和硬件通信时候出现了一些问题,所以仔细看了一下通信的时候的数据传输,在硬件协议上经常看见要求发送这样格式的数据;这个是十六进制的数据,怎么来构建这种数据来发送呢
55 AA 01 00 01 00 01
首先和硬件通信,我们一般是通过输入输出流来发送或者接收一个byte[]数组;首先我们得构建这个byte数组
String拼接
简单的命令可以先拼接字符串,再把字符串转成byte数组
String hexStr="55AA0100010001";
//16进制字符串转成byte[]
byte[] bytes=hexStrToByteArray(hexStr);
System.out.println(Arrays.toString(bytes));
打印出来的数据
[85, -86, 1, 0, 1, 0, 1]
十六进制字符串转成byte[]方法
public static byte[] hex2Bytes(final String data) throws Exception {
final int len = data.length();
if ((len & 0x01) != 0) {
throw new Exception("Odd number of characters.");
}
final byte[] out = new byte[len >> 1];
// two characters form the hex value.
for (int i = 0, j = 0; j < len; i&#