16진수(Base16) 인코더 및 디코더

텍스트, 파일, 원시 바이트를 16진수로 변환하고 되돌립니다. 대소문자, 구분자, 0x 또는 \x 접두사를 고를 수 있으며, 디코더는 흔히 쓰이는 16진수 형식을 알아서 정리합니다.

브라우저에서만 실행되며 어떤 데이터도 업로드되지 않습니다.

사용 방법

  1. 텍스트를 16진수로 바꾸려면 ‘인코딩’을, 16진수를 텍스트로 되돌리려면 ‘디코딩’을 선택합니다.
  2. 내용을 입력하거나 붙여넣고, 파일의 바이트를 16진수로 보려면 파일을 엽니다.
  3. 옵션을 설정합니다. ‘대문자’, ‘구분자’(‘없음’, ‘공백’, ‘콜론’), ‘접두사’(‘없음’, 0x, \x)를 고를 수 있습니다.
  4. 결과를 복사하거나 파일로 다운로드합니다.

16진수(Base16)란?

16진수는 0~9의 숫자와 A~F의 문자, 모두 16개의 기호를 사용합니다. 16진수 한 자리는 4비트를 담으므로 모든 바이트는 00부터 FF까지 정확히 두 자리로 표기됩니다. 출력 크기는 입력의 두 배로 Base64나 Base32보다 크지만, 바이트 경계가 그대로 보입니다. 그래서 디버거, 헥스 에디터, 네트워크 도구가 데이터를 이 방식으로 표시합니다.

RFC 4648은 이 인코딩을 대문자 알파벳을 쓰고 패딩이 없는 Base16으로 표준화합니다. 실제로는 소문자도 그만큼 흔하며, 디코더는 둘 다 받아들입니다. 이 도구의 디코더도 마찬가지입니다.

16진수가 사용되는 곳

  • 해시와 키. SHA-256 다이제스트는 32바이트이며 16진수 64자리로 표기됩니다. 암호 키, UUID, 체크섬도 보통 16진수로 표시합니다.
  • 하드웨어 주소. MAC 주소는 6바이트를 16진수로 쓰며, 보통 콜론으로 구분합니다. ‘콜론’ 구분자를 선택하면 이 형식이 만들어집니다.
  • 이스케이프 시퀀스. C, Python, JavaScript 문자열에서는 \x 뒤에 16진수 두 자리를 붙여 바이트 하나를 표현할 수 있으며, \x 접두사 옵션이 바로 이 형식을 출력합니다.
  • 웹 형식. #FF8800 같은 CSS 색상은 3바이트를 16진수로 쓴 것이고, URL 퍼센트 인코딩은 바이트를 % 뒤에 16진수 두 자리를 붙여 표기합니다.

16진수를 텍스트로 디코딩하기

디코더는 형식에 너그럽습니다. 대소문자 숫자를 모두 받아들이고, 공백, 줄 바꿈, 쉼표, 콜론, 세미콜론, 하이픈을 무시하며, 0x, \x, %, &#x 접두사를 제거합니다. xxd -p의 출력, MAC 주소, UUID, 쉼표로 구분된 0x 목록, %XX 이스케이프, HTML 16진수 엔티티를 그대로 붙여넣을 수 있습니다. 바이트마다 두 자리가 필요하므로 자릿수가 홀수이면 오류로 표시됩니다. 바이트는 선택한 문자 인코딩의 텍스트로 표시됩니다.

텍스트를 거치지 않고 16진수를 다른 인코딩으로 바꾸려면 16진수 Base64 변환 또는 Base64 16진수 변환 도구를 사용하십시오.

코드에서 16진수 다루기

# Python
'Hi'.encode().hex()                 # '4869'
bytes.fromhex('4869').decode()      # 'Hi'

// Node.js
Buffer.from('Hi').toString('hex')             // '4869'
Buffer.from('4869', 'hex').toString('utf8')   // 'Hi'

# Shell
printf 'Hi' | xxd -p                # 4869

사양

알파벳0-9 A-F
출력 크기바이트당 2문자(200%)
패딩없음
표준RFC 4648 8절
대소문자 구분아니요

예시

입력 (UTF-8)출력
Hello, World!48656c6c6f2c20576f726c6421
Base64.is4261736536342e6973
你好e4bda0e5a5bd

자주 묻는 질문

16진수를 텍스트로 변환하려면 어떻게 합니까?

‘디코딩’으로 전환하고 16진수를 붙여넣으십시오. 공백, 콜론, 0x 또는 \x 접두사는 자동으로 제거되며, 다른 문자 인코딩을 선택하지 않으면 바이트가 UTF-8 텍스트로 표시됩니다.

16진수는 대문자로 써야 합니까, 소문자로 써야 합니까?

둘 다 같은 바이트를 나타냅니다. RFC 4648은 대문자를 사용하지만 많은 프로그래밍 언어는 소문자로 출력합니다. 대상 시스템이 대문자를 요구한다면 ‘대문자’를 켜십시오. 디코더는 어느 쪽이든 받아들입니다.

16진수가 원본보다 두 배 긴 이유는 무엇입니까?
각 바이트가 두 문자가 되므로 크기가 100% 늘어납니다. Base64는 약 33%만 늘어납니다. 크기가 중요하다면 16진수 Base64 변환 도구로 바이트를 변환하십시오.
숫자를 16진수로 바꾸는 것과 같습니까?
꼭 그렇지는 않습니다. 이 도구는 텍스트의 바이트 같은 바이트열을 인코딩합니다. 255를 FF로 바꾸는 것처럼 정수 하나를 변환하려면 진법 변환기를 사용하십시오.