프로토콜 및 바이너리 직렬화

MessagePack 디코더바이트의 타입과 경계를 살펴보기

hex, Base64, 십진 바이트를 붙여 넣거나 로컬 파일을 엽니다. 표준 JSON 인코딩으로 방향을 바꿀 수도 있습니다.

MessagePack 디코더

입력

결과

바이트와 파일은 브라우저에서만 처리하며 업로드하지 않습니다.

옵션

바이트를 붙여 넣거나 파일을 열어 주세요.

캐시나 API 응답에서 꺼낸 바이트는 눈으로 구조를 알기 어렵습니다. MessagePack 디코더는 중첩된 값과 원래 타입을 트리로 펼친 뒤 JSON 미리보기를 제공합니다. MessagePack 바이너리의 구조를 확인할 때 유용합니다.

단순한 MessagePack JSON 변환은 bin을 문자열로 섞거나 64비트 식별자를 반올림할 수 있습니다. JSON MessagePack 인코딩도 같은 화면에서 시험할 수 있습니다.

MessagePack 디코더를 쓰는 이유

JSON에서 사라지는 타입 차이를 먼저 보여 줍니다.

타입이 살아 있는 트리

MessagePack 디코더는 str, bin, 확장 번호, 큰 정수를 구분합니다. JSON 미리보기에서는 표현할 수 없는 값에 표식을 남겨 디버깅 단서를 잃지 않습니다.

바이트 타일이 문자열, 원시 바이트, 확장 값, 긴 정수 가지로 나뉜 그림.

남은 바이트의 시작점을 알림

첫 값이 끝난 뒤에도 데이터가 남으면 첫 번째 추가 바이트의 위치를 알립니다. 잘린 데이터도 해당 위치를 보여 줘 이어 붙은 메시지인지 살필 수 있습니다.

구조화된 값 다음에 바이트 타일이 남고 경계에 호박색 표시가 있는 그림.

형식 선택과 내보내기 실수 줄이기

01

가진 바이트 표기를 선택

기본값은 hex입니다. Base64나 십진 배열이라면 먼저 형식을 바꾸세요. 짧고 애매한 문자열은 자동 추측하지 않습니다. 로컬 파일은 원시 바이트로 읽습니다. MessagePack 디코딩 전에 표기를 확인하세요.

  • 예시에는 bin, 알 수 없는 확장 타입, 큰 정수가 들어 있습니다.
02

언제 처리할지 정하기

자동 처리는 입력이 멈춘 뒤 350ms에 실행됩니다. 끄면 버튼이 보이고 Ctrl/Cmd+Enter도 쓸 수 있습니다. 입력이나 형식을 바꾸면 예전 결과의 내보내기가 막힙니다.

  • 트리와 JSON 화면 전환은 같은 바이트를 다시 해석하지 않습니다.
03

타입을 확인한 뒤 저장

트리에서 타입, 시작 오프셋, 길이를 확인하고 JSON 미리보기를 활용하세요. 인코딩 결과는 표시용 hex가 아닌 실제 .msgpack 파일로 저장할 수 있습니다.

  • 확장 값 미리보기의 표식은 역인코딩 명령이 아닙니다.

구조를 검사하고 바이너리 만들기

중첩 맵과 배열

키와 인덱스를 펼쳐 봅니다. 노드마다 시작 바이트와 길이를 보여 주며 큰 결과는 100줄씩 추가합니다.

bin과 확장 타입 보존

bin은 원시 바이트로 남고 알 수 없는 ext는 부호 있는 번호와 전체 페이로드를 보존합니다. 표준 타임스탬프에는 초와 나노초도 표시합니다.

JSON 인코딩과 파일 저장

표준 JSON을 MessagePack으로 만들고 hex, Base64, 십진 바이트를 복사하거나 실제 바이너리 파일로 받습니다.

변환할 때 지키는 경계

한 번에 완전한 값 하나
MessagePack 디코더는 첫 값 뒤의 바이트를 무시하지 않습니다. 연결된 스트림이라면 첫 추가 바이트에서 오류를 내므로 먼저 메시지를 나누세요.
모르는 확장은 원형 유지
공통 의미가 정의된 확장은 타입 -1 타임스탬프뿐입니다. 응용 프로그램 전용 타입은 번호와 페이로드만 보여 주며 UUID로 추측하지 않습니다.
JSON 미리보기는 무손실 왕복이 아님
JSON에는 bin, ext, 문자열이 아닌 맵 키, 정확한 64비트 정수가 없습니다. 표식은 읽기용이며 인코더는 표준 JSON만 받습니다.
브라우저 입력 제한
입력 1MiB, 깊이 64단계, 노드 10000개가 상한입니다. 초과하면 완성된 결과인 척 일부만 보여 주지 않고 오류를 냅니다.

MessagePack 디코더 자주 묻는 질문

str과 bin의 차이는 뭔가요?

str은 UTF-8 텍스트이고 bin은 임의 바이트입니다. 트리에서 둘을 따로 표시하므로 바이너리가 깨진 문자열로 바뀌지 않습니다.

큰 정수가 왜 JSON에서 문자열로 나오나요?

자바스크립트의 안전 정수 범위를 넘는 값은 트리에서 정확하게 유지합니다. JSON 미리보기에는 표식을 붙인 십진 문자열로 나타납니다.

타임스탬프는 어떻게 해석하나요?

타입 -1의 32·64·96비트 형식을 읽어 초와 나노초, 원시 바이트를 남깁니다. 가능한 경우 날짜를 보조 정보로 표시합니다.

남은 바이트 경고는 무슨 뜻인가요?

첫 값은 끝났지만 뒤에 바이트가 더 있다는 뜻입니다. 첫 추가 바이트 오프셋으로 연결된 메시지나 프레임 경계를 확인하세요.

타임스탬프 말고 다른 확장 타입은요?

타임스탬프 이외 확장의 뜻은 작성한 애플리케이션이 정합니다. 타입 번호와 hex 페이로드만 보존합니다.

다른 질문이 있나요?

MessagePack 디코더 사용해 보기

예시를 불러 타입 트리와 JSON 미리보기를 비교한 다음 자신의 페이로드를 확인하거나 표준 JSON을 MessagePack으로 인코딩하세요.

브라우저에서만 처리합니다.