Protobuf 스키마 작업대
작은 proto3 스키마와 로컬 바이너리에서 wire 태그, 값, 0부터 시작하는 바이트 위치를 확인하세요. 이전 스키마를 추가하면 필드 번호를 보수적으로 비교합니다. 원본 바이너리는 변경하지 않고 내려받을 수 있으며 unknown 또는 wire 형식 불일치 필드의 정확한 원시 바이트를 표시합니다. 범위를 제한한 검사기로 전체 protoc 구현은 아닙니다.
주요 기능
- 최상위 메시지 1개·중첩 메시지·스칼라·repeated/optional·예약을 지원하는 제한적 proto3 파서
- VARINT·I64·LEN·I32를 중첩·packed 필드 트리로 해석
- unknown 또는 wire 불일치 필드의 원시 TLV와 처음·끝 바이트 위치 표시
- 이전·현재 필드 번호·이름·자료형·반복성·예약 여부 비교
- 입력 업로드 없이 JSON 결과와 바이트 단위로 같은 원본 바이너리 저장
사용 방법
- 현재 .proto 정의와 바이너리 메시지 또는 16진수를 입력합니다.
- 필요하면 이전 스키마를 추가해 필드 번호를 비교합니다.
- 필드 트리·바이트 위치·unknown TLV·호환성 보고서를 확인합니다.
- JSON 보고서 또는 변경되지 않은 원본 바이너리를 저장합니다.
활용 예시
- 캡처한 메시지에서 잘리거나 넘친 varint 찾기
- unknown 필드 번호와 원시 바이트 확인
- 삭제한 필드 번호 예약 여부 검토
- 새 스키마의 번호 재사용 가능성 확인
자주 묻는 질문
알 수 없는 필드는 보존되나요?
원본 바이너리 저장 파일은 입력과 바이트 단위로 같습니다. 보고서에도 unknown 필드의 원본 태그·길이·값이 담깁니다. 메시지를 재인코딩하지 않으며 다른 소프트웨어에서의 보존은 보장하지 않습니다.
필드 이름이 바뀌면 반드시 번호 재사용인가요?
아닙니다. wire에는 소스 이름이 아니라 번호와 wire 형식이 들어갑니다. 같은 번호의 이름 변경은 의도를 알 수 없어 검토로 표시합니다. 자료형 변경은 보수적으로 파괴적 변경으로 분류합니다.
어떤 .proto 문법을 지원하나요?
proto3 최상위 메시지 1개, 중첩 메시지, 지원 스칼라형, repeated/optional, packed true/false, 단순 reserved 번호/이름을 받습니다. import·enum·map·oneof·service·group·extension·사용자 옵션은 거부합니다.
바이트 위치는 어떻게 셉니까?
원본 바이너리의 0부터 시작하는 위치이며 표시 범위는 양쪽 끝을 포함합니다. packed 자식 행은 부모 payload 안쪽을 가리킵니다.
호환성을 보장하나요?
아닙니다. 제한된 번호·자료형·반복성·예약 변경만 검사합니다. 애플리케이션 의미, 생성 코드 API, presence, JSON 매핑과 모든 protobuf 규칙은 증명하지 않습니다.
파일을 업로드하나요?
아닙니다. 선택한 파일은 브라우저 메모리에서 읽고 이 탭에서 해석합니다. 저장 파일은 요청할 때만 생성합니다.
개인정보 안내
스키마와 바이너리는 이 브라우저 탭에 머뭅니다. 서버 API로 보내거나 자동 저장하지 않습니다.
댓글과 질문