1概要

この簡単な記事では、16進数フォーマットとASCIIフォーマットの間の簡単な変換を行います。

典型的なユースケースでは、Hexフォーマットは非常に大きな整数値をコンパクトな形式で書き留めるために使用することができます。例えば、AD45は10進数の等価の44357よりも短く、値が大きくなるにつれて長さの違いはさらに顕著になります。

2. ASCIIから16進数

それでは、ASCII値を16進数に変換するためのオプションを見てみましょう。

  1. 文字列を文字配列に変換



  2. char



    int

    にキャストする

  3. それをHexに変換するために

    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. 16進数からASCII形式

同様に、3つのステップでHexからASCIIへのフォーマット変換をしましょう。

  1. Hex値を2つの

    char

    グループにカット


  2. 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とHexの間で変換する最も簡単な方法を調べました。

これらすべての例とコードスニペットの実装はhttps://github.com/eugenp/tutorials/tree/master/core-java/src/test/java/com/baeldung/hexToAscii[githubプロジェクト]にあります。プロジェクトをインポートしてそのまま実行するだけです。