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が省略される場合には補完処理を行っています。