텍스트 → 16진수 변환기

→
텍스트 → UTF-8 바이트 → 바이트마다 16진수 2자리, 공백으로 구분

텍스트 → 16진수: 추적 화면에서 바이트가 취하는 형태

이 변환이 하는 일

텍스트를 UTF-8로 인코딩하고 각 바이트를 16진수 두 자리로 찍습니다. 패킷 캡처와 메모리 뷰어, 프로토콜 로그가 쓰는 표기이므로 이 변환은 사람이 입력한 것과 도구가 보여주는 것 사이의 번역이라고 할 수 있습니다.

바이트마다 언제나 두 자리

한 바이트는 0부터 255까지 담고 16진수 두 자리가 그 범위를 정확히 덮습니다. 00에서 FF까지입니다. 이 짝은 절대 흔들리지 않아서 16진 덤프를 훑어볼 수 있습니다. 짝을 세면 바이트를 세는 것이고 왼쪽 오프셋 열이 지금 보는 짝을 알려줍니다.

텍스트 → 16진수 변환표

짧은 문자열과 그 16진 바이트 값입니다. 문장부호와 숫자는 한 짝 안에서 ASCII 값이 되고 라틴 알파벳 밖의 문자는 여러 짝으로 늘어납니다.

텍스트16진수
A41
Hi48 69
OK4F 4B
12331 32 33
!21
Go47 6F

캡처 안에서 문자열 찾기

패킷 캡처에서 읽을 수 있는 텍스트를 검색하는 일은 좀처럼 통하지 않습니다. 회선에 흐르는 것은 바이트이고 입력한 것은 문자이기 때문입니다. 찾는 문자열을 16진수로 바꾸면 검색할 정확한 열을 얻고, 악센트가 있는 이름을 검색했다가 악센트를 뺀 같은 검색이 성공하는 이유도 드러납니다.

구분자를 살피세요

이 도구는 읽기 쉽도록 바이트를 공백으로 나누지만 많은 캡처와 URL은 자리를 붙여 쓰거나 퍼센트 기호를 씁니다. 검색할 때는 공백을 지우거나 도구가 기대하는 구분자로 바꾸세요. 언뜻 똑같아 보이는 열이 오로지 사이의 빈칸 때문에 일치하지 않을 수 있습니다.

자주 묻는 질문

텍스트를 16진수로 손으로 바꾸려면 어떻게 하나요?

문자마다 UTF-8 바이트 값을 찾아 16진수 두 자리로 적습니다. Hi는 48과 69입니다. ASCII 범위 밖의 문자는 코드 포인트가 아니라 바이트 값이 필요합니다. 한 문자가 여러 바이트를 차지할 수 있기 때문입니다.

16진수 출력과 2진수 출력의 차이는 무엇인가요?

표기 말고는 없습니다. 둘 다 같은 UTF-8 바이트를 인코딩하고 16진수는 바이트를 두 자리로, 2진수는 여덟 자리로 씁니다. 그래서 16진수가 네 배 짧고 훑어보기 훨씬 쉽습니다. 읽을 때는 16진수, 개별 비트를 볼 때는 2진수를 고르세요.

악센트 문자가 왜 두 바이트가 되나요?

UTF-8이 원래 ASCII 범위를 넘는 모든 것을 두 바이트 이상으로 인코딩하고 대부분의 악센트 라틴 문자가 2바이트를 쓰기 때문입니다. 이는 정상이며 손상이 아닙니다. 그 문자가 1바이트로 닿을 수 있는 범위 밖에 있을 뿐이고 어떤 바이트 계수기든 두 개로 봅니다.

URL이 쓰는 인코딩과 같은 건가요?

관련은 있지만 같지는 않습니다. 퍼센트 인코딩은 UTF-8 바이트 앞에 퍼센트 기호를 붙여 쓰므로 바이트 값은 이 도구와 정확히 같고 문장부호만 다릅니다. 여기서 16진수로 바꾸면 퍼센트 인코딩할 올바른 바이트를 얻습니다.

출력을 바이트 배열 리터럴에 써도 되나요?

됩니다. 나오는 자리가 곧 바이트 값이라 각 짝에 0x 접두사만 붙이면 대부분의 프로그래밍 언어 리터럴이 됩니다. 이 도구는 관례에 따라 대문자로 출력하고 붙여 넣는 곳에서는 소문자도 똑같이 유효합니다.

아래 코드를 복사하여 웹사이트에 붙여넣으면 이 변환기를 추가할 수 있습니다.

<!-- 텍스트를 16진수로 -->
<iframe src="https://unitflow.net/ko/embed/text-to-hex" title="텍스트를 16진수로" width="100%" height="420" loading="lazy" style="border:0;max-width:100%;display:block"></iframe>
<p><a href="https://unitflow.net/ko/text-to-hex" target="_blank" rel="noopener">UnitFlow 제공</a></p>