hex를 텍스트로 변환하는 방법
- 입력 · Hex에 hex를 붙여넣으세요. 대문자든 소문자든, 구분자가 있든 없든 됩니다.
- 입력하는 동안 출력 · 텍스트에 텍스트가 나타납니다. 실행을 눌러 변환하고 싶다면 실시간을 해제하세요.
- 출력에
�가 보이면 출력 아래의 문자 인코딩을 열어 다른 것을 골라 보세요. 기본값은 UTF-8이며, 목록에 ASCII, Latin-1, Windows-1252, EUC-KR 등 23개가 더 있습니다. - 텍스트는 출력 복사나 다운로드로 받으세요. hex가 텍스트가 아니라 파일 덤프라면 바이트 저장이 내용에서 추측한 확장자로 원시 바이트를 디스크에 씁니다.
도구 위의 텍스트 → Hex 전환으로 방향을 바꾸거나 텍스트를 Hex로로 이동하세요.
변환기가 읽는 hex 형식
hex는 만든 도구에 따라 여러 가지로 표기됩니다. 아래는 모두 Hello로 디코딩됩니다.
| 형식 | 예시 | 흔한 출처 |
|---|---|---|
| 일반 | 48656c6c6f | xxd -p, sha256sum, 데이터베이스 덤프 |
| 공백 구분 | 48 65 6c 6c 6f | Wireshark, hex 편집기 |
| 콜론 구분 | 48:65:6c:6c:6f | 인증서 지문, openssl 출력 |
| 하이픈 구분 | 48-65-6C-6C-6F | .NET BitConverter.ToString |
0x 접두사 | 0x48 0x65 0x6c 0x6c 0x6f 또는 0x48656c6c6f | C 소스, 디버거 |
\x 이스케이프 | \x48\x65\x6c\x6c\x6f | Python, 셸 스크립트, 로그 |
쉼표, 세미콜론, 마침표도 구분자로 쓸 수 있습니다. hex 열만 붙여넣으세요. 기본 xxd 보기는 각 줄이 00000000: 같은 오프셋으로 시작하고 ASCII 열로 끝나므로, 변환기가 오프셋을 바이트로 읽은 뒤 ASCII 열의 첫 글자에서 오류를 냅니다. 대신 xxd -p로 일반 hex를 얻으세요.
hex를 ASCII로 읽는 방법
hex 두 자리가 1바이트이고, ASCII에서는 80 미만의 각 바이트가 한 문자입니다. 기억해 둘 만한 범위는 다음과 같습니다.
| Hex | 문자 |
|---|---|
20 | 공백 |
30–39 | 숫자 0–9 |
41–5A | A–Z |
61–7A | a–z |
21–2F | ! " # $ % & ' ( ) * + , - . / |
0A, 0D | 줄 바꿈(LF)과 캐리지 리턴(CR) (0D 0A는 Windows 줄 바꿈) |
대문자와 소문자는 정확히 20 차이입니다. 41은 A, 61은 a입니다. 이것과 표만 있으면 짧은 hex는 눈으로 읽을 수 있습니다. 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64는 Hello, world이며, 2c가 쉼표, 20이 공백입니다.
hex를 UTF-8로: 80부터 FF까지의 바이트
기본 영문자 밖의 문자는 UTF-8에서 2바이트 이상이 필요하고, 그 바이트는 모두 80 이상입니다. 같은 바이트라도 어떤 문자 인코딩으로 읽느냐에 따라 텍스트가 달라집니다.
| Hex | UTF-8로 읽기 | Windows-1252로 읽기 |
|---|---|---|
63 61 66 c3 a9 | café | café |
e2 82 ac | € | € |
f0 9f 91 8b | 👋 | 👋 |
63 61 66 e9 | caf� | café |
처음 세 행은 UTF-8 데이터이고, 마지막 행은 é가 1바이트 e9인 Latin-1 또는 Windows-1252 데이터입니다. Ã와 â가 연달아 나오면 거의 항상 UTF-8 바이트를 1바이트 문자 인코딩으로 읽은 것입니다. 한글이라면 EUC-KR로 저장된 바이트를 UTF-8로 읽었을 때 �가 이어지며 깨집니다. 어떤 문자 인코딩으로도 말이 되는 텍스트가 나오지 않으면 그 바이트는 아마 텍스트가 아닙니다. 상태 줄의 추정 형식을 확인하세요. 아는 형식이면 이름을 알려 줍니다.
hex, Base64, 그리고 같은 바이트
hex는 바이트당 두 문자를, Base64는 3바이트에 네 문자를 쓰므로 같은 데이터라면 Base64가 3분의 1 짧습니다. 가진 문자열이 SGVsbG8 같은 것으로 시작하고 f 이후의 글자가 들어 있다면 Base64입니다. Base64를 텍스트로로 디코딩하세요. API나 설정 파일용으로 hex 바이트를 Base64로 다시 인코딩하려면 Hex를 Base64로를 사용하세요. 각각이 언제 쓰이는지는 hex, Base32, Base58, Base85 비교에서 다룹니다.
코드에서 hex를 문자열로
bytes.fromhex("48656c6c6f").decode("utf-8") # 'Hello'
bytes.fromhex("48 65 6c 6c 6f").decode("utf-8") # spaces are fine: 'Hello'
bytes.fromhex는 공백은 건너뛰지만 콜론과 0x는 거부하므로 먼저 지우세요. Node.js에서는 다음과 같습니다.
Buffer.from("48656c6c6f", "hex").toString("utf8"); // 'Hello'
Buffer.from("48zz65", "hex"); // <Buffer 48>
두 번째 줄은 함정을 보여 줍니다. Buffer.from은 hex가 아닌 첫 문자에서 멈추고 그때까지 읽은 것을 오류 없이 돌려줍니다. 더 많은 패턴은 Python과 Node.js 페이지에 있습니다.
자주 묻는 질문
hex를 ASCII로 바꾸려면 어떻게 하나요?
hex를 붙여넣고 출력을 읽으세요. ASCII는 바이트 00부터 7F까지만 다루므로, 그 위의 바이트를 UTF-8로 읽지 않고 �로 표시하려면 문자 인코딩을 ASCII로 설정하세요.
48 65 6c 6c 6f는 텍스트로 무엇인가요?
Hello입니다. 48은 H, 65는 e, 6c는 l(두 번), 6f는 o입니다.
hex가 é 같은 이상한 문자로 깨지는 이유는 무엇인가요?
UTF-8 바이트를 Latin-1이나 Windows-1252로 읽었거나 그 반대입니다. c3 a9는 UTF-8에서 é, Windows-1252에서 é입니다. 한글이 깨진다면 UTF-8과 EUC-KR이 뒤바뀐 경우가 많습니다. 텍스트가 제대로 읽힐 때까지 문자 인코딩을 바꿔 보세요.
"hex 자릿수가 홀수입니다"는 무슨 뜻인가요?
바이트마다 hex 두 자리이므로 전체 자릿수는 짝수여야 합니다. 복사하다 한 자리가 빠졌고, 대개 맨 앞이나 맨 끝입니다. 입력의 첫 쌍과 마지막 쌍을 확인하세요.
변환 결과로 바로 가는 링크를 만들 수 있나요?
네. 페이지 주소에 #in=과 hex를 붙이세요. 예: /hex-to-text/#in=48656c6c6f. # 뒤의 부분은 브라우저에만 머물고 서버로 보내지지 않습니다.