사용 방법
- 텍스트를 16진수로 바꾸려면 ‘인코딩’을, 16진수를 텍스트로 되돌리려면 ‘디코딩’을 선택합니다.
- 내용을 입력하거나 붙여넣고, 파일의 바이트를 16진수로 보려면 파일을 엽니다.
- 옵션을 설정합니다. ‘대문자’, ‘구분자’(‘없음’, ‘공백’, ‘콜론’), ‘접두사’(‘없음’, 0x, \x)를 고를 수 있습니다.
- 결과를 복사하거나 파일로 다운로드합니다.
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.is | 4261736536342e6973 |
你好 | e4bda0e5a5bd |
자주 묻는 질문
16진수를 텍스트로 변환하려면 어떻게 합니까?
‘디코딩’으로 전환하고 16진수를 붙여넣으십시오. 공백, 콜론, 0x 또는 \x 접두사는 자동으로 제거되며, 다른 문자 인코딩을 선택하지 않으면 바이트가 UTF-8 텍스트로 표시됩니다.
16진수는 대문자로 써야 합니까, 소문자로 써야 합니까?
둘 다 같은 바이트를 나타냅니다. RFC 4648은 대문자를 사용하지만 많은 프로그래밍 언어는 소문자로 출력합니다. 대상 시스템이 대문자를 요구한다면 ‘대문자’를 켜십시오. 디코더는 어느 쪽이든 받아들입니다.