Java で 16 進文字列のバイト配列を変換する方法
Asad Riaz
2021年3月24日
2020年6月12日
Java
Java Array
Java String
-
Java でバイト配列を 16 進文字列に変換する
HEX_ARRAY[]
メソッド -
Java でバイト配列を 16 進文字列に変換するための
Hex.encodeHexString()
メソッド -
Java で 16 進文字列のバイト配列を変換する
DatatypeConverter()
メソッド -
Java でバイト配列を 16 進文字列に変換するための
append(.format)
メソッド

このチュートリアルでは、Java でバイト配列を 16 進文字列に変換する方法を説明します。
Java でバイト配列を 16 進文字列に変換する HEX_ARRAY[]
メソッド
最初の方法は、この変換のために、可能なすべての 16 進値からなる HEX_ARRAY[]
を使用することです。この方法は、他のどの方法よりも高速です。
コード例:
public class SimpleTesting {
char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
byte b[]= new byte[2];
b[0] = 20;
b[1] = 10;
char[] hexChars = new char[b.length * 2];
for (int j = 0; j < b.length; j++) {
int v = b[j] & 0xFF;
hexChars[j * 2] = HEX_ARRAY[v >>> 4];
hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
}
System.out.println(hexChars);
}
}
出力:
140A
Java でバイト配列を 16 進文字列に変換するための Hex.encodeHexString()
メソッド
Java でバイト配列を 16 進文字列に変換する最初のメソッドは、Hex.encodeHexString()
メソッドです。apache
の commons
ライブラリなので、メソッド apache.commons.codec.binary.Hex()
を最初にコンパイラー内にインポートする必要があります。
コード例:
import java.util.Arrays;
import org.apache.commons.codec.binary.Hex;
public class SimpleTesting {
public static void main(String[] args) {
byte[] byteArray = new byte[]
{'S', 'i', 'm', 'p', 'l', 'e', 'T', 'e', 's',
't', 'i', 'n', 'g'};
System.out.println("Byte Array: ");
System.out.println(Arrays.toString(byteArray));
System.out.println("Hex String Conversion: " +
Hex.encodeHexString(byteArray));
}
}
出力:
Byte Array: Simple Testing
Hex String Conversion: 53696d706c652054657374696e67
Java で 16 進文字列のバイト配列を変換する DatatypeConverter()
メソッド
別のアプローチは、Java の javax.xml.bind.DatatypeConverter.printHexBinary()
メソッドです。このメソッドはバイトを受け取り、それを配列から Hex
に変換します。
コード例:
import java.util.Arrays;
public class SimpleTesting {
public static void main(String[] args) {
byte byteArray[] =
{(byte)00, (byte)10, (byte)20, (byte)30, (byte)40};
String hexString =
javax.xml.bind.DatatypeConverter
.printHexBinary(byteArray);
System.out.println("Byte Array: ");
System.out.println(Arrays.toString(byteArray));
System.out.println("Hex String Conversion: "
+ hexString);
}
}
出力:
Byte Array:
[0, 10, 20, 30, 40]
Hex String Conversion: 000A141E28
Java でバイト配列を 16 進文字列に変換するための append(.format)
メソッド
使用できる別の方法は、Java で stringBuilder
を使用して append(.format)
を含めることです。バイト配列
のすべての値を変換し、それに応じて 1つずつ 16 進文字列
に変換します。
コード例:
public class SimpleTesting {
public static void main(String[] args) {
byte a[]= new byte[2];
a[0] = 20;
a[1] = 10;
StringBuilder sb = new StringBuilder(a.length * 2);
for(byte b: a)
sb.append(String.format("%02x", b));
System.out.println(sb);
}
}
出力:
140a