Java函数实现将字符串转换为十六进制数
发布时间:2023-06-21 05:14:21
在Java中,有多种方式可以将字符串转换为十六进制数。下面我们将介绍三种常用的方法。
方法一:使用Java内置的工具类
Java内置了一个Hex类,可以方便地将字节数组或字符串转换为十六进制表示。以下是使用Hex类将字符串转换为十六进制数的示例代码:
import org.apache.commons.codec.binary.Hex;
public class HexDemo {
public static void main(String[] args) {
String str = "Hello, world!";
byte[] bytes = str.getBytes();
String hex = Hex.encodeHexString(bytes);
System.out.println("Hex string: " + hex);
}
}
运行结果如下:
Hex string: 48656c6c6f2c20776f726c6421
此方法的缺点是需要导入外部库,但是Hex类提供了更多的十六进制转换功能,比如将十六进制字符串转换为字节数组、进行CRC校验等。
方法二:使用StringBuilder手动转换
另一种常用的方法是手动将字符串转换为十六进制数,具体步骤如下:
1. 将字符串转换为字节数组;
2. 遍历字节数组,对于每个字节,将其转换为两位的十六进制字符串,然后拼接到StringBuilder中。
以下是示例代码:
public class HexDemo {
public static void main(String[] args) {
String str = "Hello, world!";
byte[] bytes = str.getBytes();
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
String hex = sb.toString();
System.out.println("Hex string: " + hex);
}
}
输出结果与方法一相同,但此方法不需要导入外部库。
方法三:使用Java 8的Stream API
如果你是Java 8及以上版本的用户,你可以使用Stream API来转换字符串为十六进制数。Stream API提供了map()方法可以将字符串中的每个字符映射为相应的十六进制字符串,然后再用collect()方法将结果收集到一个字符串中。以下是示例代码:
public class HexDemo {
public static void main(String[] args) {
String str = "Hello, world!";
String hex = str.chars()
.mapToObj(c -> String.format("%02x", c))
.collect(Collectors.joining());
System.out.println("Hex string: " + hex);
}
}
输出结果与前两种方法相同。
总结
本文介绍了三种常用的Java字符串转换为十六进制数的方法,分别是使用Hex类、手动拼接字符串和使用Stream API,读者可以根据具体需求选择合适的方法。当然,也可以进一步扩展这些方法,比如支持指定编码方式、忽略空白字符等等。
