Java 中可以通过多种方式实现十六进制和字符串之间的转化。本文将介绍两种主要的方法:使用内置类库和字节数组转换。
使用内置类库实现
Java 内置的 Integer
、Long
和 Short
等类库提供了十六进制和字符串之间的转化方法。下面是一个示例:
// 十六进制转字符串
int hexVal = 0x1F;
String hexStr = Integer.toString(hexVal, 16);
System.out.println("Hex string: " + hexStr);
// 字符串转十六进制
String strVal = "Hello World";
StringBuilder hexBuilder = new StringBuilder();
for (char ch : strVal.toCharArray()) {
hexBuilder.append(Integer.toHexString((int) ch));
}
String hexStr2 = hexBuilder.toString();
System.out.println("Hex string: " + hexStr2);
这个示例将一个十六进制整数转换为字符串,以及将一个字符串转换为十六进制。需要注意的是,对于字符串转换为十六进制的部分,我们通过循环遍历字符串中的每个字符,将它们转换为十六进制表示并拼接成新的字符串。
使用字节数组转换实现
另一种方法是通过字节数组进行转换,这个方法对于更大的数据量和二进制数据更加适用。下面是示例代码:
// 十六进制转字节数组
String hexStr = "1F";
byte[] bytes = new byte[hexStr.length() / 2];
for (int i = 0; i < bytes.length; i++) {
bytes[i] = (byte) Integer.parseInt(hexStr.substring(2 * i, 2 * i + 2), 16);
}
System.out.println("Byte array: " + Arrays.toString(bytes));
// 字节数组转十六进制字符串
byte[] bytes2 = { 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64 };
StringBuilder hexBuilder = new StringBuilder();
for (byte b : bytes2) {
hexBuilder.append(String.format("%02x", b));
}
String hexStr2 = hexBuilder.toString();
System.out.println("Hex string: " + hexStr2);
这个示例将一个十六进制字符串转换为字节数组,以及将一个字节数组转换为十六进制字符串。需要注意的是,在字节数组转换为十六进制字符串的部分,我们使用格式字符串 "%02x"
将每个字节转换为两位十六进制数,并在前面添加一个零,保证每个十六进制数都是两位数。
以上就是两种实现 Java 十六进制和字符串之间转换的方法,根据需要选择相应的方法来使用即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA 十六进制与字符串的转换 - Python技术站