MessagePack 디코더
MessagePack은 JSON은 너무 크고 protobuf는 절차가 과하다고 느낄 때 쓰는 형식입니다. 같은 값을 바이트로 압축해 담죠. 그런데 문제가 생기면 그 압축성이 곧 걸림돌이 됩니다. 캐시나 큐, 로그에서 나온 페이로드를 디코딩 없이는 읽을 수 없으니까요. 이 도구는 형식 전체를 읽고, JSON이라면 잃어버릴 구분을 그대로 유지합니다. 정수는 기록된 폭 그대로 나오고, 자바스크립트 숫자에 담기지 않는 64비트 값은 조용히 반올림하는 대신 문자열로 유지합니다. 바이너리는 텍스트로 뭉개지 않고 바이너리로 남습니다. str과 bin의 구분은 형식이 나온 뒤에 추가된 것이고, 이 둘을 섞는 것이야말로 디코더가 데이터를 망가뜨리는 방식입니다. 확장 타입은 번호와 함께 보여주고, 타임스탬프 확장은 세 가지 인코딩 모두 제대로 해석합니다. 결과는 값마다 타입을 붙인 트리로, 그리고 JSON으로 보여줍니다. JSON이 표현할 수 없는 것들은 뭉뚱그리지 않고 명시합니다. 입력에 값 하나가 쓰는 것보다 많은 바이트가 있으면 — 메시지를 이어붙인 스트림이 그렇게 보입니다 — 남은 바이트 수를 알려줍니다. 없는 척하지 않고요. 업로드되는 것은 없습니다.
base64나 hex로 된 MessagePack 페이로드를 붙여넣으면 디코딩됩니다.
사용법
- 페이로드를 base64 또는 hex로 붙여넣으세요. 형식은 자동 감지되고 직접 지정할 수도 있습니다.
- 트리를 읽으세요. 각 행에 키, MessagePack 타입, 값이 표시됩니다.
- 값을 다른 곳에서 처리하려면 JSON을 복사하세요.
- 캡처한 페이로드 파일을 끌어다 놓으면 바로 디코딩됩니다.
- 여러 메시지가 이어진 스트림이라면 남은 바이트 안내를 확인하세요.
자주 묻는 질문
- str과 bin의 차이는 뭔가요?
- MessagePack에는 원래 텍스트와 바이트를 함께 쓰는 raw 타입 하나뿐이었습니다. 2013년 개정에서 UTF-8 텍스트용 str과 임의 바이트용 bin으로 분리됐는데, 그러지 않으면 디코더가 바이트를 텍스트로 해석해야 할지 알 수 없기 때문입니다. bin을 문자열로 다루는 것이 바이너리 데이터가 깨지는 경로라서, 여기서는 둘을 구분해 둡니다.
- 큰 정수가 왜 JSON에서 문자열로 나오나요?
- 자바스크립트 숫자는 2^53까지만 정수를 정확히 담습니다. MessagePack은 완전한 64비트 정수를 다루므로, 그 한계를 넘는 값은 JSON 출력에서 문자열로 씁니다. 자릿수가 조용히 사라지는 편이 불편함보다 나쁘니까요.
- 타임스탬프는 어떻게 해석하나요?
- 타입 -1인 타임스탬프 확장에는 세 가지 인코딩이 있습니다. 4바이트 초, 12바이트 나노초+초, 그리고 30비트 나노초를 34비트 초 위에 한 워드로 눌러 담은 8바이트 형식입니다. 마지막이 함정으로, 평범한 정수로 읽으면 수만 년 어긋난 날짜가 나옵니다.
- 남은 바이트 경고는 무슨 뜻인가요?
- MessagePack 값은 스스로 경계를 갖기 때문에 한 버퍼에 여러 개가 이어질 수 있습니다. 첫 값이 입력보다 먼저 끝나면 나머지는 대개 또 다른 메시지입니다. 조용히 무시하는 대신 얼마나 남았는지 알려줍니다.
- 타임스탬프 말고 다른 확장 타입은요?
- 타입 번호와 base64 페이로드로 보여줍니다. 확장의 의미는 그것을 기록한 애플리케이션이 정하는 것이라, 일반적으로 해석할 대상이 없습니다.
- 페이로드가 업로드되나요?
- 아니요. 바이트는 브라우저에서 디코딩되고 서버로 전송되지 않습니다.
관련 도구
Plist 뷰어 (바이너리·XML)
애플 속성 목록(plist)을 바이너리든 XML이든 열어 트리로 보고, JSON이나 XML plist로 변환합니다.
Protobuf 디코더 (.proto 없이)
base64나 hex로 된 protobuf 바이트를 붙여넣으면 스키마 없이 필드 번호, 와이어 타입, 중첩 메시지, 문자열, packed 배열을 읽어줍니다.
JWT 디코더
JWT의 헤더·클레임·만료를 즉시 확인하세요.
Hex Dump 뷰어
텍스트 또는 작은 파일을 오프셋 + hex 바이트 + 인쇄 가능 ASCII로 표시. `xxd`나 `hexdump -C` 형식.
비트 연산 계산기
두 정수에 대한 AND·OR·XOR·NOT·시프트 연산을 2진수·16진수·부호 없는/있는 10진수로 한눈에. 8·16·32·64비트 폭 선택.
ASCII 코드 표
256행 ASCII / 확장 ASCII 표 — 10진·16진·8진·2진 + 제어 문자 이름. 검색·복사.