2019년 3월 5일 화요일

Hex.decodeHex - 바이트문자열 변환

- Hex.decodeHex를 통한 byteString을 정수형으로 변환하는 샘플.



1. 기본 예제
String value = "ff";

try {
byte[] bytes = Hex.decodeHex(value);
long result = bytes[0] & 0xff;

System.out.println(result);
} catch (DecoderException e) {
e.printStackTrace();
}

> 결과 : 255
> 0xff 마스크를 적용하지 않으면 -1 결과가 나옴.
> 2의 보수 위키백과 :
https://ko.wikipedia.org/wiki/2%EC%9D%98_%EB%B3%B4%EC%88%98







2. 변환 응용
- long 데이터로 변환 예제
String value = "FF7FFFFFFF";

try {
byte[] bytes = Hex.decodeHex(value);
long result = 0;

for (int i = bytes.length - 1; i >= 0; i--) {
result += (long) (bytes[i] & 0xff) << 8 * i;

}

System.out.println(result);
} catch (DecoderException e) {
e.printStackTrace();
}

> 결과 : 1099511595007
> int형 양수 최대 길이는 7FFFFFFF

댓글 없음:

댓글 쓰기