16진수 (Hex)
헥스(Hex)는 16진수(hexadecimal)를 줄여 부르는 말로, 0부터 9까지의 숫자와 A부터 F까지의 문자 16개로 수를 나타내는 기수법입니다. A는 10, F는 15를 뜻하며, 이진수 4자리(4비트)를 16진수 한 자리로 정확히 옮길 수 있어 컴퓨터 데이터를 사람이 읽기 쉽게 적을 때 널리 쓰입니다.
어떻게 읽나요?
16진수의 각 자리는 16의 거듭제곱을 나타냅니다. 예를 들어 FF는 15 × 16 + 15 = 255이고, 이진수로는 11111111입니다. 1바이트(8비트)는 항상 16진수 두 자리로 표현되므로, 32바이트 데이터는 64자리 16진수 문자열이 됩니다. 반대로 10진수 26은 16진수로 1A(1 × 16 + 10)입니다. 대문자와 소문자는 같은 값을 나타내며, 영문자 O나 I 같은 문자는 쓰이지 않습니다. 주소나 해시처럼 길이가 정해진 16진수 문자열에서는 앞자리의 0도 값의 일부이므로, 함부로 지우거나 한 글자라도 바꾸면 전혀 다른 값이 됩니다.
블록체인에서의 16진수
- 0x 접두사: 이더리움 등에서는 값이 16진수라는 것을 표시하려고 앞에 ‘0x’를 붙입니다. 예를 들어 0xff는 255입니다. 이 표기는 C 언어 등 여러 프로그래밍 언어에서 쓰던 관습을 따른 것입니다.
- 이더리움 주소: 20바이트 값으로, 0x 뒤에 16진수 40자리가 이어집니다. EIP-55 방식은 대소문자를 섞어 체크섬을 넣어, 주소를 잘못 옮겨 적었는지 확인할 수 있게 합니다.
- 트랜잭션 해시와 블록 해시: 32바이트 값이어서 보통 16진수 64자리로 표시됩니다. 블록 탐색기에서 검색하는 txid가 이것입니다.
- 개인 키와 원시 트랜잭션: 256비트 개인 키는 16진수 64자리로 적을 수 있고, 서명된 트랜잭션도 노드 RPC나 블록 탐색기에서 16진수 문자열 형태로 제출하거나 확인합니다.
- 스마트 계약 데이터: 계약 호출 데이터와 이벤트 로그도 16진수로 인코딩되어 기록됩니다.
다만 비트코인 주소는 16진수가 아니라 Base58Check(1이나 3으로 시작)나 Bech32(bc1로 시작) 방식으로 인코딩합니다. 내부 값은 같은 이진 데이터라도 사람에게 보여 주는 형식이 다를 수 있습니다.
블록체인 밖의 쓰임
- 웹 디자인: #FF5733처럼 색상을 빨강·초록·파랑 각 1바이트씩 16진수 여섯 자리로 표현합니다.
- 메모리 주소와 오류 코드: 프로그래머는 메모리 위치나 시스템 오류 코드를 16진수로 표기합니다.
왜 16진수를 쓰나요?
컴퓨터 내부 데이터는 0과 1로 이루어져 있어 그대로 읽기 어렵습니다. 16진수로 쓰면 자릿수가 이진수의 4분의 1로 줄어 읽고 비교하기 쉬워지고, 이진수와의 변환도 자리마다 바로 대응해 간단합니다. 다만 이는 사람이 보는 표기 방식의 차이일 뿐, 컴퓨터 내부의 저장 공간이나 처리 속도를 바꾸지는 않습니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.