1、前言
最近在做展馆的中控物联网控制的时候,遇到了需要通过远程控制指令将UDP指令发送至设备的情况。如图所示,通过系统的发送指令,就能向指定IP的设备发送UDP指令,达到控制现场灯具的亮灭。
2、将字符串转换为Byte数组
public static byte[] hexStr2Bytes(String src) {
src = src.replaceAll(" ", "");
System.out.println(src);
int m = 0, n = 0;
int l = src.length() / 2;
System.out.println(l);
byte[] ret = new byte[l];
for (int i = 0; i < l; i++) {
m = i * 2 + 1;
n = m + 1;
String sss = "0x" + src.substring(i * 2, m) + src.substring(m, n);
System.out.println("sss["+i+"]:"+sss);
try {
ret[i] = Byte.decode(sss);
} catch (Exception e) {
int s = Integer.decode(sss);
ret[i] = (byte)s;
}
}
return ret;
}
public static void main(String[] args) {
String hexstr = "1B 43 DD 0D 0A C9 00 00";
byte[] b = hexStr2Bytes(hexstr);
for (int c : b) {
System.out.println(c);
}
}
3、Debug信息
可以看到通过上面的转换代码将 String hexstr = “1B 43 DD 0D 0A C9 00 00”; 转换为了byte数组。
4、可能遇到的问题
在这里使用Byte.decode(sss);转换的时候,如果转换的hex大于128,则会报异常,这样需要在转换失败的时候先转换为int型,再强制转换为byte类型即可。
try {
ret[i] = Byte.decode(sss);
} catch (Exception e) {
int s = Integer.decode(sss);
ret[i] = (byte)s;
}
|