, 나는 컴파일protobuf 삽입 된 메시지가 여분의 바이트로 연결됩니다.이 delimeter는 무엇입니까?
message Person{
required string name=1;
required int32 id=2;
optional string email=3;
enum PhoneType{
mobile=0;
home=1;
work=2;
}
message PhoneNumber{
required string number=1;
optional PhoneType type=2[default=home];
}
repeated PhoneNumber phone=4;
}
pytest.proto있어 그것을
protoc pytest.proty --python_out=./
그럼 내 파이썬 파일 :
import pytest_pb2
import sys
person=pytest_pb2.Person()
person.name="bbb"
person.id=9
phone_number=person.phone.add()
phone_number.number="aaa"
phone_number.type=pytest_pb2.Person.work
f=open("log4py.data","w")
s=person.SerializeToString()
f.write(s)
f.close()
실행이 :
$python pytest.py && xxd log4py.data
00000000: 0a03 6262 6210 0922 070a 0361 6161 1002 ..bbb.."...aaa..
name="bbb" id=9 ??? number="aaa" type=home
나는 위에서
이
0a03 6262 62 --> name="bbb"
1009 --> id=9
22 07 --> What's this??????????????????
0a03 616 161 --> number="aaa"
1002 --> type=home
내가 "22 07"여기 뜻의 추가 바이트를 무엇을하지 않았다 볼 수 있습니다, 임베디드 구조가 거기에 표시하는 것? "22 07"두 번 내가 볼,
$python pytest.py && xxd log4py.data
00000000: 0a03 6262 6210 0922 070a 0361 6161 1002 ..bbb.."...aaa..
00000010: 2207 0a03 6363 6310 02 "...ccc..
음,이 시간 :
phone_number1=person.phone.add()
phone_number1.number="aaa"
phone_number1.type=pytest_pb2.Person.work
phone_number2=person.phone.add()
phone_number2.number="ccc"
phone_number2.type=pytest_pb2.Person.work
실행을 내가 가지고 : 그래서 다음과 같이, 2 "PHONE_NUMBER"인스턴스를 내 파이썬 프로그램을 변경 각 PhoneNumber 인스턴스 앞에. 나는 Protobuf가 어떠한 delimeter 바이트도 encode하지 않는다는 것을 알았지 만 여기서 "22 07"은 delimeter이다. 설명이 있습니까?