Javaでbyte配列から16進数に変換する方法
byte配列から16進数に変換する方法です。
ライブラリを使って変換
org.apache.commons.codec.binary.HexクラスのencodeHexメソッドを使用します。
package jp.co.confrage;
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Hex;
public class Sample {
public static void main(String... args) throws UnsupportedEncodingException {
byte[] bytes = "あああ".getBytes("UTF-8");
String result = new String(Hex.encodeHex(bytes)); // 変換
System.out.println(result); // 16進数表示
}
}
ライブラリを使わずに変換
ライブラリを使わずにbyte配列をfor文でループして16進数に変換する例です。
package jp.co.mainmain;
import java.io.UnsupportedEncodingException;
public class Sample {
public static void main(String... args) throws UnsupportedEncodingException {
byte[] bytes = "あああ".getBytes("UTF-8");
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
String ret = sb.toString();
System.out.println(ret);
}
}
IntStreamを使ってbyte配列を16進数に変換する例です。
package jp.co.confrage;
import java.io.UnsupportedEncodingException;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Sample {
public static void main(String... args) throws UnsupportedEncodingException {
byte[] bytes = "あいうえお".getBytes("UTF-8");
String result =
IntStream.range(0, bytes.length)
.mapToObj(i -> String.format("%02x", bytes[i]))
.collect(Collectors.joining(""));
System.out.println(result);
}
}
ライブラリダウンロード
Home – Apache Commons Codec

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^

コメント