16进制工具 - HexUtil
# 16进制工具 - HexUtil
简介
HexUtil
是 Hutool 提供的一个用于在字符串或字节数组与十六进制表示之间进行转换的工具类。十六进制(Hex)是一种常见的进制表示方法,广泛应用于计算机科学中,例如表示二进制数据、加密解密、编码转换等。HexUtil
提供了丰富的 API,使得十六进制处理变得简单且高效。
# 1. 将字符串编码为十六进制字符串并解码回原始字符串
在处理需要进行十六进制编码的数据时,HexUtil
提供了 encodeHexStr
和 decodeHexStr
方法,用于在字符串和十六进制表示之间进行转换。
示例代码:
import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.CharsetUtil;
public class HexUtilExample {
public static void main(String[] args) {
// 原始字符串
String originalStr = "我是一个字符串";
// 将字符串编码为十六进制字符串
String hexStr = HexUtil.encodeHexStr(originalStr, CharsetUtil.CHARSET_UTF_8);
System.out.println("编码后的十六进制字符串: " + hexStr);
// 将十六进制字符串解码为原始字符串
String decodedStr = HexUtil.decodeHexStr(hexStr, CharsetUtil.CHARSET_UTF_8);
System.out.println("解码后的字符串: " + decodedStr);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
参数说明:
encodeHexStr(String data, Charset charset)
data
:要编码的原始字符串,不能为null
。charset
:编码时使用的字符集(如CharsetUtil.CHARSET_UTF_8
),不能为null
。- 返回值:编码后的十六进制字符串。
decodeHexStr(String hexStr, Charset charset)
hexStr
:要解码的十六进制字符串,不能为null
。charset
:解码时使用的字符集(如CharsetUtil.CHARSET_UTF_8
),不能为null
。- 返回值:解码后的原始字符串。
开发场景:
- 在处理需要以十六进制表示的数据时,如加密数据、网络传输数据等,可以将字符串转换为十六进制表示,便于传输和存储。
# 2. 将字节数组转换为十六进制字符串并解码回字节数组
在处理二进制数据(如文件、图片、音频等)时,常常需要将字节数组转换为十六进制字符串进行存储或显示。HexUtil
提供了 encodeHex
和 decodeHex
方法,方便在字节数组和十六进制表示之间进行转换。
示例代码:
import cn.hutool.core.util.HexUtil;
public class HexUtilExample {
public static void main(String[] args) {
// 原始字节数组
byte[] originalBytes = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF};
// 将字节数组编码为十六进制字符串
String hexStr = HexUtil.encodeHexStr(originalBytes);
System.out.println("编码后的十六进制字符串: " + hexStr);
// 将十六进制字符串解码为字节数组
byte[] decodedBytes = HexUtil.decodeHex(hexStr);
System.out.println("解码后的字节数组: ");
for (byte b : decodedBytes) {
System.out.printf("0x%02X ", b);
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
参数说明:
encodeHex(byte[] data)
data
:要编码的字节数组,不能为null
。- 返回值:编码后的十六进制字符串。
decodeHex(String hexStr)
hexStr
:要解码的十六进制字符串,不能为null
。- 返回值:解码后的字节数组。
开发场景:
- 在处理图片、音频、视频等二进制文件时,通常需要将字节数据转换为十六进制字符串进行存储或显示。
# 3. 整数与十六进制字符串的转换
在某些场景下,整数需要以十六进制形式进行表示。HexUtil
提供了 toHex
和 fromHex
方法,方便将整数和十六进制字符串进行互转。
示例代码:
import cn.hutool.core.util.HexUtil;
public class HexUtilExample {
public static void main(String[] args) {
int number = 255;
// 将整数转换为十六进制字符串
String hexStr = HexUtil.toHex(number);
System.out.println("整数 255 转换为十六进制字符串: " + hexStr); // 输出: ff
// 将十六进制字符串转换为整数
int num = HexUtil.fromHex(hexStr);
System.out.println("十六进制字符串 'ff' 转换为整数: " + num); // 输出: 255
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
参数说明:
toHex(int number)
number
:要转换为十六进制字符串的整数。- 返回值:整数的十六进制表示字符串。
fromHex(String hexStr)
hexStr
:要转换为整数的十六进制字符串,不能为null
。- 返回值:十六进制字符串表示的整数。
开发场景:
- 在网络协议、数据加密等场景中,整数的十六进制表示非常常见,可以通过这些方法进行方便的转换。
# 4. 处理无效的十六进制字符串
在使用 HexUtil
进行编码或解码时,可能会遇到无效的十六进制字符串,这时会抛出 UtilException
异常。通过捕获该异常,可以安全处理解码错误。
示例代码:
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.util.HexUtil;
public class HexUtilExample {
public static void main(String[] args) {
String invalidHex = "XYZ";
try {
// 尝试解码无效的十六进制字符串
byte[] bytes = HexUtil.decodeHex(invalidHex);
} catch (UtilException e) {
System.out.println("解码错误: 无效的十六进制字符串");
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
参数说明:
- 在解码过程中,如果提供的十六进制字符串格式不正确,会抛出
UtilException
,可以通过捕获此异常来处理解码错误。
开发场景:
- 在处理用户输入的十六进制字符串或外部数据时,捕获解码异常可以确保程序的稳定性,防止因无效输入导致崩溃。
总结
HexUtil
工具类在处理十六进制字符串和字节数组的转换方面功能强大且易于使用。它为开发者提供了丰富的 API,适用于多种场景,如加密解密、编码转换、网络传输等,使得开发工作更加高效和可靠。