Java:将字符串转换为hex(Byte)

1、前言

最近在做展馆的中控物联网控制的时候,遇到了需要通过远程控制指令将UDP指令发送至设备的情况。如图所示,通过系统的发送指令,就能向指定IP的设备发送UDP指令,达到控制现场灯具的亮灭。
在这里插入图片描述

2、将字符串转换为Byte数组

	 /** 
	* @Description: 字符串转byte数组 
	* @Title: hexStr2Bytes 
	* @param src
	* @return byte[]
	* @author qin
	* @date 2021年11月30日下午5:31:30
	*/ 
	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) {
				// TODO: handle exception
				int s = Integer.decode(sss);
				ret[i] = (byte)s;
			}
        }
        return ret;
    }
	/** 
	* @Description: 主函数 
	* @Title: main 
	* @param args void
	* @author qin
	* @date 2021年11月30日下午5:32:12
	*/ 
	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) {
	// TODO: handle exception
	int s = Integer.decode(sss);
	ret[i] = (byte)s;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值