1. 概述

在这篇简短的文章中,我们将探讨如何在Java中进行十六进制(Hex)与ASCII编码之间的简单转换。

通常情况下,十六进制格式可以以紧凑的形式表示非常大的整数值。例如,AD45比其十进制等价物44357更短,随着值的增加,这种长度差异会更加明显。

2. ASCII转十六进制

现在,我们来看看将ASCII值转换为十六进制的选项:

  1. 将字符串转换为字符数组
  2. 将每个char转换为int
  3. 使用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格式的转换:

  1. 将十六进制值切割成每两个char一组
  2. 使用Integer.parseInt(hex, 16)将其转换为基于16的整数,并转换为char
  3. 将所有字符添加到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项目中找到——只需导入项目并直接运行即可。


» 下一篇: Java中的PDF转换