Hex 인코딩

아래에 텍스트를 붙여넣고 인코딩을 클릭하면 16진수 문자열로 변환됩니다. 모든 처리는 브라우저에서 로컬로 수행됩니다.

복사됨!

16진수 인코딩이란?

16진수 인코딩은 데이터의 각 바이트를 두 자리 16진수 문자열(00ff)로 변환합니다. 바이너리 데이터 검사, 네트워크 프로토콜 디버깅 및 코드에서 바이트 배열을 표현하는 데 유용합니다.

2바이트 이상을 사용하는 UTF-8 문자는 여러 개의 16진수 쌍을 생성합니다.

구분 기호와 대소문자는 원하는 대로 고를 수 있습니다. 사이에 아무것도 두지 않으면 촘촘한 문자열이 되고, 공백을 넣으면 읽기 좋아지며, 콜론을 쓰면 지문이나 MAC 주소에서 흔히 쓰는 모양이 됩니다. 모든 처리는 브라우저에서 이뤄집니다.

디코딩되지 않는 문제를 쫓고 계신가요?

디코딩되지 않는 페이로드는 대개 원인이 아니라 증상입니다. 파이프라인 어딘가의 이중 인코딩, 선언 대신 가정된 문자셋, 아무도 예상하지 않은 바이트 위에 서명된 토큰 같은 것들이죠. 저희는 바로 그런 일을 합니다. 연동과 API, 그리고 그 사이에서 데이터를 넘기는 시스템에서요.

어디가 깨지는지 알려 주세요

자주 묻는 질문

16진 인코딩은 어디에 쓰나요?
16진수는 사람이 바이트를 읽어야 할 때 손이 가는 표기입니다. 해시, 체크섬, 암호 키, 색상 값, MAC 주소, 메모리 덤프, 패킷 캡처가 모두 16진수로 표시되는 이유는 한 바이트가 정확히 두 문자가 되어 자리가 열에 맞춰지고, 잘못된 바이트 하나가 한눈에 드러나기 때문입니다. 소스 코드에 이진 데이터를 붙여 넣는 통상적인 방법이기도 합니다.
16진 인코딩은 Base64와 어떻게 다른가요?
16진수는 자리를 더 먹지만 읽기 좋습니다. 한 바이트가 두 문자가 되므로 출력은 입력의 정확히 두 배이고, Base64는 약 3분의 1 늘어납니다. 대신 16진수는 대응이 고정적이고 분명합니다. 어느 한 쌍을 짚으면 그것이 어느 바이트인지 알 수 있고, 오프셋을 눈으로 셀 수 있으며, 주변을 건드리지 않고 한 바이트만 바꿀 수 있습니다. 크기가 중요한 곳에서는 Base64가, 사람이 들여다보는 곳에서는 16진수가 이깁니다.
왜 한 글자가 여러 개의 16진수 쌍이 되기도 하나요?
16진수가 부호화하는 것은 문자가 아니라 바이트이고, 텍스트는 UTF-8을 거쳐 바이트가 되기 때문입니다. ASCII 범위라면 1바이트, 즉 한 쌍입니다. 악센트가 붙은 라틴 문자와 그리스 문자, 키릴 문자는 2바이트, 대부분의 한중일 문자는 3바이트, 이모지는 4바이트를 차지합니다. 그래서 다섯 글자짜리 문자열이 스무 쌍으로 나오는 일도 흔합니다.
구분 기호는 어떤 것을 골라야 하나요?
출력이 어디로 가느냐에 달렸습니다. 사이에 아무것도 두지 않는 형태는 코드와 대부분의 API가 기대하는 모양이고 가장 짧습니다. 공백은 긴 문자열을 읽기 좋게 만들며 덤프에서 흔히 보는 모양입니다. 콜론은 인증서 지문과 MAC 주소의 관례입니다. 바이트 자체는 셋 다 같고, 사이의 문장부호만 달라집니다.
16진 인코딩은 해싱과 같은 것인가요?
아닙니다. 다만 둘은 대개 함께 등장합니다. 해시는 단방향 함수로, 어떤 입력이든 고정 길이 요약값으로 줄이며 원본으로 되돌릴 수 없습니다. 16진수는 바이트를 적어 두는 되돌릴 수 있는 방식입니다. 해시는 보통 16진수로 표시되기 때문에 서로 닮아 보이지만, 비밀번호를 16진수로 바꾼다고 해서 보호가 되는 것은 전혀 아니고 같은 비밀번호의 더 긴 판이 될 뿐입니다.