因为我没有上得到答案这个问题我得样机,并检查自己,因为我的数据集头需要固定的大小,我需要固定大小的字符串。 所以,是否有可能以指定固定大小的字符串或字节数组在协议缓冲器? 这是不是很明显这里,我有点心疼有关强制固定大小的字符串到页眉信息。 --ie, std::string('\0', 128)
;
如果没有我宁愿使用#pragma pack(1) struct header {...};
“
编辑
问间接回答了这里 。 要回答除
因为我没有上得到答案这个问题我得样机,并检查自己,因为我的数据集头需要固定的大小,我需要固定大小的字符串。 所以,是否有可能以指定固定大小的字符串或字节数组在协议缓冲器? 这是不是很明显这里,我有点心疼有关强制固定大小的字符串到页眉信息。 --ie, std::string('\0', 128)
;
如果没有我宁愿使用#pragma pack(1) struct header {...};
“
编辑
问间接回答了这里 。 要回答除
protobuf的不具有在协议这样的概念,也没有在.proto模式语言。 在字符串和斑点中,数据总是用一个长度前缀技术上可变长度(其本身使用varint编码,所以即使长度是可变长度)。
当然,如果你永远只能存储特定长度的数据,那么它会排队。 还要注意的是,由于在protobuf的字符串使用UTF-8编码的Unicode是,编码的数据的长度是不作为字符数一样简单(除非只使用ASCII字符)。
这是一个轻微的澄清以前的答案。 Protocol Buffers的不编码字符串作为UTF-8,它编码其视为常规字节。 上的线格式会被消耗掉,然后实际的字节的字节数。 见https://developers.google.com/protocol-buffers/docs/encoding/ 。
虽然上线格式总是相同的,协议缓冲器提供两个接口,用于开发者使用,字符串和字节,主要区别在于,前者通常将尝试提供字符串类型的显影剂,其中,因为后者将尝试提供字节类型(即Java的将提供的字符串和ByteArray为字节字符串)。