1. 概述
在这篇简短的文章中,我们将探讨如何在Java中进行十六进制(Hex)与ASCII编码之间的简单转换。
通常情况下,十六进制格式可以以紧凑的形式表示非常大的整数值。例如,AD45
比其十进制等价物44357更短,随着值的增加,这种长度差异会更加明显。
2. ASCII转十六进制
现在,我们来看看将ASCII值转换为十六进制的选项:
- 将字符串转换为字符数组
- 将每个
char
转换为int
- 使用
Integer.toHexString()
将其转换为十六进制
以下是实现这些步骤的一个快速示例:
private static String asciiToHex(String asciiStr) {
char[] chars = asciiStr.toCharArray();
StringBuilder hex = new StringBuilder();
for (char ch : chars) {
hex.append(Integer.toHexString((int) ch));
}
return hex.toString();
}
3. 十六进制转ASCII格式
同样地,让我们分三步进行十六进制到ASCII格式的转换:
- 将十六进制值切割成每两个
char
一组 - 使用
Integer.parseInt(hex, 16)
将其转换为基于16的整数,并转换为char
- 将所有字符添加到
StringBuilder
中
下面是一个示例说明如何实现这些步骤:
private static String hexToAscii(String hexStr) {
StringBuilder output = new StringBuilder("");
for (int i = 0; i < hexStr.length(); i += 2) {
String str = hexStr.substring(i, i + 2);
output.append((char) Integer.parseInt(str, 16));
}
return output.toString();
}
4. 测试
最后,使用这些方法,让我们快速测试一下:
@Test
public static void whenHexToAscii() {
String asciiString = "www.baeldung.com";
String hexEquivalent =
"7777772e6261656c64756e672e636f6d";
assertEquals(asciiString, hexToAscii(hexEquivalent));
}
@Test
public static void whenAsciiToHex() {
String asciiString = "www.baeldung.com";
String hexEquivalent =
"7777772e6261656c64756e672e636f6d";
assertEquals(hexEquivalent, asciiToHex(asciiString));
}
5. 总结
总之,我们探讨了使用Java进行ASCII和十六进制之间最简单的转换方法。
这些示例和代码片段的完整实现可以在GitHub项目中找到——只需导入项目并直接运行即可。