Javaプログラミングにおいて、バイト配列を16進数文字列に変換する必要がある場面があります。これは、特にデータのハッシュ化やユーザーに対するセキュリティ目的でよく使用されます。以下は、バイト配列から16進数文字列への変換方法です。

import java.math.BigInteger;

public class ByteArrayToHexString {
    public static String convertToHexString(byte[] byteArray) {
        BigInteger bigInteger = new BigInteger(1, byteArray);
        String hexString = bigInteger.toString(16);

        // バイト配列の先頭が0の場合、BigInteger.toString()は0を省略するので、補完が必要
        int paddingLength = (byteArray.length * 2) - hexString.length();
        if (paddingLength > 0) {
            return "0".repeat(paddingLength) + hexString;
        } else {
            return hexString;
        }
    }

    public static void main(String[] args) {
        // テスト用のバイト配列
        byte[] testData = {0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x2C, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64};

        // バイト配列から16進数文字列に変換
        String hexResult = convertToHexString(testData);

        // 結果の表示
        System.out.println("バイト配列: " + new String(testData));
        System.out.println("16進数文字列: " + hexResult);
    }
}

この例では、BigIntegerクラスを使用してバイト配列を符号なしの整数に変換し、toString(16)メソッドを使用して16進数文字列に変換しています。また、先頭の0が省略される場合には補完処理を行っています。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です