-
Book Overview & Buying
-
Table Of Contents
-
Feedback & Rating

Protocol Buffers Handbook
By :

One last important concept that is important to know is the concept of packed and unpacked repeated fields. As we know, repeated is the way we describe lists in Protobuf. A repeated modifier can be applied to a scalar type (int32, uint64, and so on) but can also be applied to more complex types (user-defined types, strings, and so on). The former will be encoded as a packed repeated field, and the latter will be unpacked.
Before going into more detail, let’s visualize the difference between both encodings. Let’s start with a packed repeated field. We will have a list of integers (repeated/encoding.proto
):
syntax = "proto3"; message Encoding { repeated uint64 us = 1; }
We can now set some values for it by describing the data in text format (repeated/packed.txtpb
):
us: [1, 2, 3, 4, 5]
Now, let’s run the following command:
$ cat packed.txtpb | protoc --encode=Encoding encoding.proto | hexdump...