请给我一个protocol buffer的例子
时间: 2023-12-12 08:05:22 浏览: 34
假设我们想要创建一个简单的消息类型,表示一个人的姓名和年龄。 首先,我们需要定义该消息类型的.proto文件,如下所示:
```
syntax = "proto3";
message Person {
string name = 1;
int32 age = 2;
}
```
这个.proto文件定义了一个名为Person的消息类型,它有两个字段:name和age。name是一个字符串类型的字段,它的字段编号为1;age是一个32位整数类型的字段,它的字段编号为2。
然后,我们可以使用protobuf编译器生成相应的代码。 假设我们将.proto文件保存为person.proto,那么我们可以使用以下命令来生成代码:
```
protoc --proto_path=. --python_out=. person.proto
```
这将生成一个名为person_pb2.py的Python模块,其中包含了Person消息类型的Python类。
现在,我们可以在我们的Python代码中使用Person类来创建和序列化Person消息。 例如:
```
import person_pb2
# 创建一个Person消息
person = person_pb2.Person()
person.name = "Alice"
person.age = 30
# 将消息序列化为二进制格式
serialized_person = person.SerializeToString()
# 从二进制格式反序列化消息
deserialized_person = person_pb2.Person()
deserialized_person.ParseFromString(serialized_person)
# 打印反序列化后的消息
print(deserialized_person)
```
这个例子创建了一个名为Alice、年龄为30的Person消息,并将其序列化为二进制格式。 然后,它又从二进制格式反序列化了该消息,并打印出反序列化后的消息。