ML

Byte에서 Hex로 형변환 방법

728x90
반응형

#1 &0xff 비트연산 수행

byte형은 8비트 공간을 차지, int는 32비트 공간을 차지한다.

비트연산자 &를 수행할 경우, 비트수가 넓은 곳에 맞춰 낮은 비트를 가진 자료형을 확장시킨다.

ByteData & 0xff를 수행할 경우, byte는 32비트의 int형으로 강제 형변환된다.

이때 비트의 확장 시 ByteData의 가장 앞의 비트가 0인 경우는 0으로, 1인 경우는 1로 모든 비트를 채워 확장한다.

💡
가장 앞의 비트가 0인경우 : 0000000000000000000010110 가장 앞의 비트가 1인 경우 : 1111111111111111110010110

이렇게 되면 원본 값과 전혀 다른 값이 되기 때문에 &0xFF 비트 연산을 수행하는 것이다.

11111111111111111111111110101010

00000000000000000000000011111111

-------------------------------------------

00000000000000000000000010101010

#2 unsigned 표현방법

음수를 양의 정수로 표현하고 싶을때가 있다. 예를 들어, IPv4의 네 바이트 IP 주소를 4byte의 Signed Integer로 표현되었다고 하면, 255.255.255.255(FF FF FF FF)는 -1로 표현된다.

그럼 반대로, -1을 unsigned로 표현하려면

ip = -1
u_ip = ip & 0xFFFFFFFF

print '%08X' % u_ip

참고 사이트

https://velog.io/@zeesoo/byte-16진수-문자열-반환

반응형

댓글

Designed by JB FACTORY