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