Javaでbyte配列から16進数に変換する方法

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

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました