2017년 5월 7일 일요일

how to change byte to hex string or hex string to byte in java (자바에서 hex string , byte간 변환)


데이터 전송을 위한 encode시 유용하게 사용하는 오래된 코드인데 정리해봤습니다. 제가 만든 예제에서도 가끔 사용하는 코드입니다.
Hex <-> Byte 간 형변환을 하는 코드입니다.
이러한 코드가 필요한 이유는 Byte가 화면에 출력 할 수 없는 경우가 있어서 이것을 다른쪽으로 데이터를 전달해 줄 때 화면상 어려움이 있어서 hex string형태로 변환하고 받는쪽에서는 다시 byte로 변환해서 사용하게됩니다.


예제
package testProject;

public class HexToByte {
 public static void main(String[] args) {
  String data = "Hello.";
  byte bdata[] = data.getBytes();
  String hex = byteArrayToHex(bdata);

  System.out.println(data);
  System.out.println(hex);

  byte bdataresult[] = hexToByteArray(hex);
  String data2 = new String(bdataresult);

  System.out.println(data2);
 }


 // hex string to byte[]
 public static byte[] hexToByteArray(String hex) {
  if (hex == null || hex.length() == 0) {
   return null;
  }
  byte[] ba = new byte[hex.length() / 2];
  for (int i = 0; i < ba.length; i++) {
   ba[i] = (byte) Integer.parseInt(hex.substring(2 * i, 2 * i + 2), 16);
  }
  return ba;
 }

 // byte[] to hex sting
 public static String byteArrayToHex(byte[] ba) {
  if (ba == null || ba.length == 0) {
   return null;
  }
  StringBuffer sb = new StringBuffer(ba.length * 2);
  String hexNumber;
  for (int x = 0; x < ba.length; x++) {
   hexNumber = "0" + Integer.toHexString(0xff & ba[x]);
   sb.append(hexNumber.substring(hexNumber.length() - 2));
  }
  return sb.toString();
 } 
}

결과
Hello.
48656c6c6f2e
Hello.

댓글 없음:

댓글 쓰기