반응형






16진수 문자열과 바이트 배열간의 변환하는 방법을 소개합니다.



String 타입의 변수 hexString에 16진수 문자열 01020304FF11을 대입합니다.

String hexString = "01020304FF11";


hexStringToByteArray 메소드를 사용하면 16진수 문자열을 바이트 배열 ByteArray로 변환합니다.

byte[] ByteArray = hexStringToByteArray(hexString);


다음과 같이 바이트 배열에 들어가게 됩니다.

{ 0x01, 0x02, 0x03, 0x04, 0xFF, 0x11}


byteArrayToHexString 메소드를 사용하면 다시 16진수 문자열로 변환할 수 있습니다.

String str = byteArrayToHexString(ByteArray);


String 변수에 다음과 같이 저장됩니다.

01020304FF11



전체 소스 코드입니다.

public class Test {

public static byte[] hexStringToByteArray(String s) {
   int len = s.length();
   byte[] data = new byte[len / 2];
   for (int i = 0; i < len; i += 2) {
       data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                            + Character.digit(s.charAt(i+1), 16));
   }
   return data;
}


public static String byteArrayToHexString(byte[] bytes){

StringBuilder sb = new StringBuilder();

for(byte b : bytes){

sb.append(String.format("%02X", b&0xff));
}

return sb.toString();
}


  public static void main(String[] args){
  
     String hexString = "01020304FF11";
     
     byte[] ByteArray = hexStringToByteArray(hexString);
     
     String str = byteArrayToHexString(ByteArray);


     System.out.println(str);
  }
}



실행결과는 다음과 같습니다.

16진수 문자열을 바이트 배열로 바꾸었다가, 다시 16진수 배열로 변환해서 결과값을 보여줍니다.

01020304FF11



참고


http://stackoverflow.com/questions/8890174/in-java-how-do-i-convert-a-hex-string-to-a-byte


http://javarevisited.blogspot.kr/2013/03/convert-and-print-byte-array-to-hex-string-java-example-tutorial.html


반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts