2015년 6월 30일 화요일

java hex string <-> byte array 변환

1. hex string -> byte array
byte[] bytes = new java.math.BigInteger(hexText, 16).toByteArray();

2. byte array -> hex string
String hexText = new java.math.BigInteger(bytes).toString(16);

아래처럼 머리 아픈 코드를 안봐도 되니 편하네요. thanks BigInteger! ^^

    public static String toHexString(byte buf[]){
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < buf.length; i++) {
            sb.append(Integer.toHexString(0x0100 + (buf[i] & 0x00FF)).substring(1));
        }
        return sb.toString();
    }

참조: http://ecogeo.tistory.com/129


그러나 BigInteger를 사용하여 hex string을 byte array로 변환시킬 경우, 변환된 byte array의 앞 부분에 값이 0인 바이트가 들어갈 수 있다. 이 점 주의해야 한다.

댓글 없음:

댓글 쓰기