串口或者Socket发送16进制数据
使用场景:硬件通讯
想要发送如下指令,并且不能当做字符串,必须要作为16进制发送
指令格式举例:01 10 00 00 00 02 04 00 01 00 00 a2 6f
这种需求其实是要
1,将16进制数字转为byte数组,
2,用OutStream讲byte数组写进流里。
1,自己写了个工具类,讲16进制的字符串转化为byte数组(数据需要先去除空格)
/**
* 将十六进制的字符串转换成字节数组
*
* @param hexString
* @return
*/
public static byte[] hexStrToBinaryStr(String hexString) {
if (TextUtils.isEmpty(hexString)) {
return null;
}
hexString = hexString.replaceAll(" ", "");
int len = hexString.length();
int index = 0;
byte[] bytes = new byte[len / 2];
while (index < len) {
String sub = hexString.substring(index, index + 2);
bytes[index/2] = (byte)Integer.parseInt(sub,16);
index += 2;
}
return bytes;
}
2,将数据写进流里
os.write(bytes);