16진수 텍스트 변환기 사용법
- 16진수 문자열을 붙여넣으세요. 예:
48 65 6C 6C 6F,0x48,0x65또는\x48\x65. 구분자가 섞여 있어도 괜찮습니다. - 디코딩된 텍스트가 즉시 표시됩니다. 글자가 깨져 보이면 UTF-8, ASCII/Latin-1, UTF-16 중 다른 인코딩을 선택하세요.
- 텍스트를 복사하거나 파일로 다운로드하세요. 방향 바꾸기를 누르면 텍스트를 다시 16진수로 변환합니다.
16진수를 ASCII 텍스트로 디코딩하는 원리
16진수 두 자리는 00부터 FF 사이의 값을 갖는 1바이트입니다. ASCII와 UTF-8에서 20–7E 바이트는 출력 가능한 문자이므로 48 65 6C 6C 6F는 H, e, l, l, o, 즉 “Hello”로 읽힙니다. ASCII 범위 밖의 문자는 UTF-8에서 여러 바이트를 차지합니다(한글은 글자당 3바이트).
| 16진수 | 문자 |
|---|---|
0A | 라인 피드(줄바꿈) |
0D | 캐리지 리턴 |
20 | 공백 |
21 / 2C / 2E | ! / , / . |
30–39 | 숫자 0–9 |
41–5A | 대문자 A–Z |
61–7A | 소문자 a–z |
C3 A9 | UTF-8의 é |
E2 82 AC | UTF-8의 € |
올바른 인코딩 선택하기
- UTF-8 – 웹과 대부분의 파일, API에서 쓰는 표준 인코딩입니다. 일반 ASCII 텍스트는 그대로 유효한 UTF-8입니다.
- ASCII / Latin-1 (Windows-1252) – 오래된 시스템의 서유럽 텍스트에 쓰이며 한 글자가 1바이트입니다. 모든 바이트가 문자에 대응하므로 디코딩이 실패하지 않습니다.
- UTF-16 LE/BE – 한 글자가 2바이트이며 Windows API, Java, JavaScript 문자열에서 사용합니다. UTF-16 LE에서
48 00 69 00은 “Hi”입니다.
� 기호가 보인다면 일부 바이트가 선택한 인코딩에서 유효하지 않거나, 해당 16진수가 텍스트가 아니라 이미지, 해시, 압축 데이터 같은 바이너리 데이터일 수 있습니다.
코드에서 16진수를 문자열로 변환하기
- Python:
bytes.fromhex('48656c6c6f').decode() - Node.js:
Buffer.from('48656c6c6f', 'hex').toString() - 브라우저 JavaScript:
new TextDecoder().decode(Uint8Array.from('48656c6c6f'.match(/../g), (h) => parseInt(h, 16))) - Linux 및 macOS:
echo 48656c6c6f | xxd -r -p
자주 묻는 질문
HEX 텍스트 변환과 HEX ASCII 변환은 어떻게 다른가요?
ASCII는 영문자, 숫자, 문장 부호 등 128개 문자(바이트 00–7F)만 다룹니다. 텍스트 변환은 한글 같은 다른 언어의 문자와 이모지도 포함하며, UTF-8에서는 이러한 문자를 2–4바이트로 저장합니다. 일반 영어 텍스트라면 두 방식의 결과가 같습니다.
불완전한 바이트 오류가 나는 이유는 무엇인가요?
각 바이트는 정확히 16진수 두 자리여야 합니다. 자릿수가 홀수라면 대개 앞자리 0이 빠졌거나(A가 아니라 0A로 입력) 복사하는 과정에서 문자가 누락된 경우입니다. 오류 메시지에 문제가 있는 위치가 표시됩니다.
0x나 \x 접두사가 있는 16진수도 디코딩할 수 있나요?
네. 0x, \x, % 같은 접두사와 공백, 줄바꿈, 쉼표, 콜론, 대시는 자동으로 제거됩니다. 따라서 C 배열, Python 바이트 문자열, 헥사 덤프를 그대로 붙여넣을 수 있습니다.
입력한 데이터가 어딘가에 업로드되나요?
아니요. 16진수는 브라우저의 JavaScript로 디코딩되며 기기 밖으로 전송되지 않습니다.