코딩을 하다보면 데이터의 표현이 0x00, 0xff 등의 16진수로 표현되는 경우를 자주 볼 수 있다.
참고로 0x는 뒤에 따라오는 숫자가 16진수라는 걸 알려주는 접두어다.
예를 들어 0x10 에서 10은 16진수이고, 10진수로 바꾸면 16이다.
파이썬 콘솔에서 이러한 16진수 표현법을 입력하면 10진수로 리턴해준다.
>>> 0x10
16
>>> 0x0a
10
>>> 0x0f
15
그럼 접두어 0x 뒤에 두자리 수가 주로 오는 이유는 무엇일까?
1바이트(8비트)로 표현할 수 있는 가장 큰 이진수는 1111 1111 이다. 이를 십진수로 바꿔보자
>>> 0b11111111
255
255가 나온다. 그리고 이걸 다시 16진수로 바꾸면,
>>> hex(255)
'0xff'
0xff
로 나타난다. 즉 이진수로 8비트를 나타내려면 8자리가 필요하지만 16진수로는 두자리만 필요하다.
표준코드라고 할 수 있는 아스키(ASCII) 코드에서 문자 하나가 표현되는 단위가 8비트이기 때문에 8비트 데이터 표현이 많고, 그래서 이에 대한 16진수 표현인 0x00
, 0xff
등을 빈번하게 보게 되는 것이다.