Java で 16 進文字列を整数に変換する

Rupam Yadav 2023年10月12日
  1. Java で Integer.decode() を使用して短い 16 進文字列を整数に変換する
  2. Java で Long.parseLong() を使用して 16 進数の長い文字列を整数に変換する
  3. Java で非常に長い 16 進数の文字列を BigInteger を用いて int に変換する
Java で 16 進文字列を整数に変換する

この記事では、16 進数の文字列を int に変換するために使える 3つの方法を紹介します。16 進数または 16 進数とは、数字を表す記号が 16 個あることを意味します。数字を表すのに使われる 16 進数の値は、10 進数では 0-9、10 進数では A-F が 10-15 を表します。

以下の例では、Java で異なる長さの 16 進数の文字列を整数に変換する手順を見てみましょう。

Java で Integer.decode() を使用して短い 16 進文字列を整数に変換する

最初の例では、Integer クラスの decode() 関数を用いています。

Java では、int は最小値-231から最大値 231-1 までの値を格納することができます。もし結果を整数型にしたいのであれば、長い文字列を扱うことはできません。この記事のさらなる例では、16 進数の長い値を数値に変換する方法を示します。

public class Main {
  public static void main(String[] args) {
    String hex = "0x2fd";

    int convertedValue = Integer.decode(hex);
    System.out.print(convertedValue);
  }
}

出力:

765

Java で Long.parseLong() を使用して 16 進数の長い文字列を整数に変換する

上で説明したように、大きな 16 進値をプリミティブ整数に変換することはできません。この例では、-263から 263-1 という大きな容量を持つ Long を使っているのはこのためです。

LongparseLong() メソッドは文字列と基底値の 2つのパラメータを取り、文字列をプリミティブな長整数に変換します。

public class Main {
  public static void main(String[] args) {
    String hex = "AA0F245C";
    long l = Long.parseLong(hex, 16);
    System.out.println(l);
  }
}

出力:

2853119068

Java で非常に長い 16 進数の文字列を BigInteger を用いて int に変換する

16 進値は様々な目的に利用できるが、その一つは何かを暗号化したい場合であり、この 16 進数の値は非常に長いものになる可能性があります。何らかの理由でこの 16 進数を数値に変換したい場合は、その名前が示すように大きな整数を保持できる BigInteger を使用することができます。

次の例では、BigInteger のコンストラクタに 16 進数の値を基底値で渡しています。また、BigInteger.intValue() から int の値を取得することもできますが、これは 32 ビットの開始値を返すだけです。

import java.math.BigInteger;

public class Main {
  public static void main(String[] args) {
    String hex = "4D21C5BA77D06212F39E16BF2756E9811125F7FC";
    BigInteger bigInteger = new BigInteger(hex, 16);
    System.out.println(bigInteger);
  }
}

出力:

440345438517096076415390637616379300179635206140
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java Int

関連記事 - Java Hex