텍스트를 hex로 변환하는 방법
- 입력 · 텍스트에 텍스트를 입력하거나 붙여넣으세요. 입력하는 대로 출력 · Hex에 hex가 나타납니다.
- 입력 아래의 문자 인코딩은 문자를 어떤 바이트로 바꿀지 정합니다. 받는 시스템이 다른 것을 기대하지 않는 한 UTF-8로 두세요.
- 출력 아래에서 대소문자(소문자 또는 대문자), 구분자(없음, 공백,
:,0x,\x), 줄당 바이트 수(없음, 16, 32)를 고르세요. - 결과를 출력 복사하거나 다운로드하세요. Hex → 텍스트 토글이나 Hex를 텍스트로로 다시 텍스트로 되돌릴 수 있습니다.
출력 방식
구분자와 대소문자 옵션은 hex를 흔히 붙여넣는 곳을 모두 다룹니다. 텍스트 Hi!의 경우:
| 설정 | 출력 | 어울리는 곳 |
|---|---|---|
| 없음, 소문자 | 486921 | 해시, URL, JSON |
| 공백, 대문자 | 48 69 21 | hex 편집기, 프로토콜 문서 |
: | 48:69:21 | 지문, MAC 주소 형식 목록 |
0x | 0x48 0x69 0x21 | C와 어셈블러 소스 |
\x | \x48\x69\x21 | C, Python, Bash printf의 문자열 이스케이프 |
\x 형식은 문자열 리터럴에 그대로 넣을 수 있습니다. Bash에서 printf '\x48\x69\x21'은 Hi!를 출력합니다. 줄당 바이트 수는 긴 출력을 16바이트나 32바이트 행으로 나눠 오프셋을 눈으로 셀 수 있게 합니다.
문자 하나, 바이트 하나 이상
ASCII 문자는 각각 1바이트이고 UTF-8에서도 그대로이므로, 영문 텍스트는 두 인코딩에서 hex가 같습니다. 나머지는 모두 문자 인코딩에 따라 달라집니다.
| 텍스트 | UTF-8 | ISO-8859-1 | UTF-16LE |
|---|---|---|---|
A | 41 | 41 | 41 00 |
é | c3 a9 | e9 | e9 00 |
€ | e2 82 ac | 표현 불가 | ac 20 |
👋 | f0 9f 91 8b | 표현 불가 | 3d d8 4b dc |
문자 인코딩이 표현할 수 없는 문자는 ?로 바뀌고, 상태 줄에 몇 개가 바뀌었는지 표시됩니다. 다른 시스템의 hex가 내 것과 맞지 않으면 먼저 양쪽의 문자 인코딩을 확인하세요.
보이지 않는 문자 찾기
hex로 변환하는 것은 화면에서 아무것도 아닌 것처럼 보이는 문자를 찾는 가장 빠른 방법입니다. 똑같이 출력되는 두 문자열도 바이트는 다를 수 있습니다.
| UTF-8 hex | 문자 |
|---|---|
20 | 일반 공백 |
c2 a0 | 줄 바꿈 없는 공백. 웹 페이지와 Word에서 복사한 텍스트에 흔함 |
e2 80 8b | 폭 없는 공백 |
ef bb bf | 파일 시작 부분의 바이트 순서 표시(BOM) |
0d 0a | Windows 줄 바꿈 (Linux와 macOS는 0a만) |
비밀번호, API 키, 설정 값이 “맞는데 거부된다"면 구분자를 공백으로 두고 여기에 붙여넣어 이런 문자를 찾아보세요. 텍스트를 Base64로로 텍스트를 Base64로 인코딩하기 전에도 같은 확인이 도움이 됩니다. Base64는 보이지 않는 바이트도 모두 보존하므로 인코딩된 값에 그대로 남습니다.
코드에서 텍스트를 hex로
"Hi!".encode("utf-8").hex() # '486921'
"Hi!".encode("utf-8").hex(" ") # '48 69 21' (separator argument, Python 3.8+)
"é".encode("latin-1").hex() # 'e9'
const hex = Array.from(new TextEncoder().encode("café"),
b => b.toString(16).padStart(2, "0")).join(" ");
// '63 61 66 c3 a9'
TextEncoder는 항상 UTF-8을 만듭니다. 대응하는 Base64 호출은 JavaScript와 Python 페이지에 있습니다.
자주 묻는 질문
문자열을 hex로 변환하려면 어떻게 하나요?
입력란에 문자열을 붙여넣으세요. 각 문자는 선택한 문자 인코딩의 바이트 값이 되고, 바이트마다 hex 두 자리로 표시됩니다. Python에서는 "Hello".encode("utf-8").hex()와 같습니다.
"Hello"를 hex로 쓰면 어떻게 되나요?
ASCII와 UTF-8에서 48 65 6c 6c 6f입니다. 일반 영문자에서는 두 인코딩이 같습니다. UTF-16LE에서는 48 00 65 00 6c 00 6c 00 6f 00입니다.
é가 c3 a9 두 바이트가 되는 이유는 무엇인가요?
UTF-8은 U+007F보다 큰 모든 문자를 2~4바이트로 인코딩합니다. 1바이트 e9가 필요하면 문자 인코딩을 ISO-8859-1(Latin-1)이나 Windows-1252로 설정하세요. 한글을 EUC-KR 바이트로 보려면 EUC-KR을 고르면 됩니다.
모든 바이트 앞에 0x가 붙은 hex는 어떻게 얻나요?
구분자를 0x로 설정하세요. 출력이 0x48 0x65 0x6c 0x6c 0x6f가 됩니다. C나 Rust의 배열 리터럴 전체가 필요하면 Base64를 바이트 배열로가 선언문까지 써 줍니다.