Fixed-size integers
The last type of integer type we’ll look at is the fixed-size integer type. These are pretty much encoded how integers/floating points are encoded into your computer memory. In this case, the 32 and 64 suffixes of the type names correspond to the number of bits the value will be encoded in.
The types that are encoded into fixed-size integers are fixed32, fixed64, sfixed32, sfixed64, float, and double. The main thing to talk about here is the difference between sfixed and fixed. The former is signed, meaning that it can contain positive and negative numbers. The latter is unsigned, which means it can only contain positive numbers.
Let’s look at an example, just to ensure that we’re on the same page about encoding fixed-size numbers. If we have the following message (fixed/encoding.proto
):
syntax = "proto3"; message Encoding { fixed32 f32 = 1; }
We set the value 128 to f32
(fixed32.txtpb
):
f32: 128
We run...