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); } }
ライブラリダウンロード
Codec – Home
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント