我正在尝试创建一个将数据从C ++应用程序传输到Java应用程序的数组。由于这两种语言,您如何格式化Google协议消息?
另外,它们的局限性和优势是什么?
到目前为止,我有以下内容:
message Config {
repeated string types = 1;
}
我想我错过了一些事情!
答案 0 :(得分:1)
如果您的意思是在电线上 - 那么首先:担心序列化工作的工作,但在这种情况下它只是作为(按重复元素):
0x0a = "field 1, length prefixed" (strings are always length prefixed)
{number of bytes as UTF8, varint-encoded}
{that many bytes of UTF8}
因此,如果你有3个项目重复,你将有3个0x0a,varint,有效负载一个接一个地猛击。在一些原始类型的情况下 - 整数等,有一个"打包"通过预先填充整个数组的字节长度,然后只将数组内容作为原始非标记化数据添加,从而消除每个元素标题的编码。
如果你的意思是来自调用者的观点,那么:它取决于实现,但基本上你应该期待一些熟悉的API - 这是常见的框架。这可能意味着repeated
数据作为数组/向量公开,或者它可能意味着"集合"具有Add
等API的类。它完全取决于目标框架和实施作者的奇思妙想。