c++ - 小型标量类型和谷歌 Protocol Buffer

标签 c++ protocol-buffers

谷歌 Protocol Buffer 中没有小标量类型背后的原因是什么?

https://developers.google.com/protocol-buffers/docs/proto#scalar

更具体地说,对于 C++,我是否将 uint16_t 作为两个 bytes 在 gpb 中传输?我正在研究将现有的基于消息的协议(protocol)转换为 gpb,这对我来说似乎有点奇怪。

最佳答案

Gbp使用变长编码,意味着传输的整数的大小取决于整数的值。 小整数将仅使用几个字节发送。
这是有关 gbp encoding 的指南的链接

特别是,如果你只有一个 short int 的特定情况(而且不是很多,在这种情况下你可能想使用 bytes),你应该简单地转换所有 uint16_tuint32_t 并让 varints 做这些事情。

关于c++ - 小型标量类型和谷歌 Protocol Buffer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42295695/

相关文章:

c++ - 安装位置缺少头文件

c++ - 错误 C2893 : Failed to specialize function template 'unknown-type std::less<void>::operator ()(_Ty1 &&,_Ty2 &&) const'

c++ - 按时间顺序排列的并发消息处理

C++ - 链表 - 复制构造函数

objective-c - Protobuf 与 JSON - Objective-C/iOS

python - Escape Python中的保留关键字[Protocol Buffer自动生成的类]

c++ - 混合语言和技术 : Is it a good idea?

python - 凭证无效 - 尝试从 GCE 实例访问 Google Datastore 时出现 401

java - 如何在单个命令中编译多个原型(prototype)文件?

c - Nanopb 从 pb_ostream_t 获取字符串