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

Posted 秦晓宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

以上是关于Java:将字符串转换为hex(Byte)的主要内容,如果未能解决你的问题,请参考以下文章

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

java byte to hex

Java转换byte[]数组到Hex十六进制字符串

C# Byte[Hex] 数组到字符串 - 无转换

java中byte[] 和16进制字符串互转

java中byte转换int时为何与0xff进行与运算