Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで16進数文字列をバイト配列に変換する方法をわかりやすく解説

Javaでは、16進数の文字列(Hex String)をバイト配列(byte配列)へ変換できます。基本的な流れは以下の2ステップです。

  1. IntegerクラスのparseInt()メソッドを使い、16進数文字列を整数値(10進数)に変換します。
  2. BigIntegerクラスのtoByteArray()メソッドを使い、その整数値からバイト配列を取得します。

parseInt()メソッドは第2引数に基数「16」を指定することで、16進数として文字列を解析し、対応する10進数のint値を返します。その後、BigInteger.valueOf()でBigIntegerオブジェクトに変換し、toByteArray()を呼び出すことでバイト配列が得られます。

サンプルコード

import java.math.BigInteger;

public class Demo {
    public static void main(String args[]) {
        String str = "1D08A";

        // 16進数文字列を整数値に変換
        int it = Integer.parseInt(str, 16);
        System.out.println("16進数文字列 : " + str);

        // BigIntegerに変換してバイト配列を取得
        BigInteger bigInt = BigInteger.valueOf(it);
        byte[] bytearray = bigInt.toByteArray();

        System.out.print("Byte Array : ");
        for (int i = 0; i < bytearray.length; i++) {
            System.out.print(bytearray[i] + "\t");
        }
    }
}

実行結果

16進数文字列 : 1D08A
Byte Array : 1	-48	-118

注意点:大きな16進数を扱う場合

上記の方法は、変換後の値がint型の範囲(-2147483648 ~ 2147483647)に収まる場合に有効です。桁数の多い16進数文字列を扱う場合は、int型ではオーバーフローが発生するため、最初からBigIntegerのコンストラクタを使って直接変換するのが安全です。

String hexStr = "1D08A";
byte[] bytes = new BigInteger(hexStr, 16).toByteArray();

このように書けば、どれだけ長い16進数文字列でも正しくバイト配列へ変換できます。用途に応じて使い分けるようにしましょう。

  1. JavaScriptで配列を文字列に変換する方法|toString()メソッドの使い方

    JavaScriptで配列を文字列に変換するには、toString()メソッドを使用します。ArrayオブジェクトのtoString()メソッドは、指定された配列とその要素を表す文字列を返します。各要素はカンマ(,)で区切られて連結され、1つの文字列として出力されます。なお、配列を文字列コンテキストで扱った場合にも、このtoString()メソッドは自動的に呼び出されるため、配列から文字列への変換において最も基本的なメソッドといえます。サンプルコード以下のコードを実行すると、配列がどのように文字列へ変換されるかを確認できます。<html>    <head

  2. AndroidでJavaのBitmapをバイト配列(byte[])に変換する方法【サンプルコード付き】

    このチュートリアルでは、Androidアプリ開発において、JavaのBitmap(ビットマップ)画像をバイト配列(byte[])へ変換する方法を、ステップごとに詳しく解説します。画像の圧縮・保存やネットワーク送信など、さまざまな場面で役立つ基本テクニックです。ステップ1:新規プロジェクトを作成するまずはAndroid Studioを起動し、メニューから「File」→「New Project」を選択しましょう。必要な項目をすべて入力して、新しいプロジェクトを作成します。ステップ2:レイアウトファイル(activity_main.xml)を編集するres/layout/activity_main.