본문 바로가기

MessagePack 뷰어·변환기

브라우저 처리

MessagePack 바이트(16진수·Base64)를 읽기 쉬운 JSON으로 풀고, 거꾸로 JSON을 가장 작은 MessagePack 형식으로 인코딩해 16진수와 크기 비교를 보여 줍니다. 타임스탬프 확장도 읽습니다.

사용 전 확인
  • 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
도구 실행입력 후 결과 확인
MessagePack 뷰어·변환기 샘플 실행

MessagePack은 JSON과 같은 구조를 더 작은 바이너리로 담는 형식이라 Redis 캐시, 게임 서버, 실시간 통신에서 자주 쓰이지만 바이트만 보고는 내용을 알 수 없습니다. 이 도구는 MessagePack 바이트를 해석해 JSON으로 보여 주고, 반대로 JSON을 MessagePack으로 바꿔 줍니다.

브라우저 처리
샘플 결과
{
  "name": "ToolBada",
  "tools": 800
}

24바이트를 읽었습니다.
자바스크립트가 활성화되면 이 영역이 실제 입력, 실행, 결과 패널로 바뀝니다.

MessagePack 뷰어·변환기 사용 가이드

MessagePack은 JSON과 같은 구조를 더 작은 바이너리로 담는 형식이라 Redis 캐시, 게임 서버, 실시간 통신에서 자주 쓰이지만 바이트만 보고는 내용을 알 수 없습니다. 이 도구는 MessagePack 바이트를 해석해 JSON으로 보여 주고, 반대로 JSON을 MessagePack으로 바꿔 줍니다.

디코딩은 nil, 참/거짓, 정수(fixint부터 64비트까지), float32·64, 문자열, 배열, 맵, bin, ext 형식을 모두 읽습니다. 바이너리는 {"$bin": "16진수"}로, 타임스탬프 확장(-1)은 {"$timestamp": "ISO 시각"}으로, JavaScript 안전 범위를 넘는 64비트 정수는 문자열로 보여 줍니다.

인코딩은 값마다 가장 짧은 형식을 골라 같은 JSON보다 얼마나 작아지는지 바이트 수로 비교해 줍니다. 디코딩 후 남은 바이트가 있으면 값이 여러 개 이어진 스트림일 수 있다는 점도 알려 줍니다.

사용 방법

  1. 'MessagePack 바이트 또는 JSON' 칸에 16진수·Base64 바이트를 넣거나, 인코딩하려면 JSON을 넣습니다.
  2. 변환 방향에서 'MessagePack → JSON' 또는 'JSON → MessagePack'을 고릅니다.
  3. '실행'을 누르면 정리된 JSON 또는 16진수 바이트와 크기 정보가 나옵니다.

예시: 맵 하나 풀어 보기

입력
82 a4 6e 61 6d 65 a8 54 6f 6f 6c 42 61 64 61 a5 74 6f 6f 6c 73 cd 03 20
결과
{
  "name": "ToolBada",
  "tools": 800
}

24바이트를 읽었습니다.

같은 JSON을 거꾸로 인코딩하면 이 24바이트가 그대로 나오고, JSON 원문(31바이트)보다 작다는 비교도 함께 표시됩니다.

이럴 때 쓰면 좋아요

  • Redis나 메시지 큐에 저장된 MessagePack 값을 확인할 때
  • 게임·실시간 서버의 패킷 내용을 디버깅할 때
  • JSON 대신 MessagePack을 쓰면 크기가 얼마나 줄어드는지 비교할 때
  • 직접 구현한 MessagePack 인코더의 결과를 검증할 때

문제가 생겼을 때

'MessagePack 형식이 아닙니다' 오류

0xc1은 MessagePack에서 쓰지 않는 바이트입니다. 다른 형식(CBOR, BSON 등)의 데이터이거나 시작 위치가 어긋났을 수 있습니다.

'값이 끝나기 전에 데이터가 끊겼습니다' 오류

문자열이나 배열 길이만큼 바이트가 이어지지 않습니다. 복사할 때 끝부분이 잘리지 않았는지 확인하세요.

활용 팁

  • JSON의 1.0은 정수 1로 인코딩됩니다. JavaScript가 둘을 구분하지 않기 때문이며, 실수로 보내야 한다면 받는 쪽에서 형식을 맞춰야 합니다.
  • 맵 키가 문자열이 아닌 데이터는 JSON으로 바꿀 때 키를 문자열로 표시합니다. 원래 키 형식이 중요하면 16진수에서 직접 확인하세요.

자주 묻는 질문

Base64로 저장된 값도 넣을 수 있나요?

네. 16진수가 아닌 Base64 문자열을 넣으면 자동으로 바이트로 바꿔 해석합니다.

64비트 큰 정수는 어떻게 보이나요?

JavaScript가 정확히 다룰 수 있는 범위(약 9천조)를 넘는 정수는 정밀도를 잃지 않도록 "18446744073709551615"처럼 문자열로 표시합니다.

인코딩 결과는 다른 언어 라이브러리와 같나요?

표준이 정한 가장 작은 형식을 고르므로 대부분의 라이브러리와 같은 바이트가 나옵니다. 실수는 항상 float64로 인코딩하는 점만 라이브러리 설정에 따라 다를 수 있습니다.