当前位置: 首页 > 知识库问答 >
问题:

协议缓冲区是否支持字节[]字段?

方昊
2023-03-14

我正在尝试更新Android BluetoothChat示例的代码,以使用Protobuf进行更结构化的数据交换。我还需要byte[]数组字段来发送任意数据,如图像字节数组,但在尝试编译时。proto文件,我得到以下错误。

协议文件/蓝牙消息。proto:8:18:应为字段名。

下面是我的. proto文件。

package bluetoothmessage;

option java_package = "com.example.bluetoothexample";
option java_outer_classname = "ProtocolBuffers";

message BTMessage {
    required int32 cmd = 1;
    optional byte[] appData = 2;
}

stackoverflow上的其他几个帖子提到byte[]可以用作文件,下面的页面也说了同样的事情。

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

非常感谢您的帮助!谢谢

共有1个答案

郎琪
2023-03-14

从手动:字节可以包含任意字节序列。

该行:

optional byte[] appData = 2;

必须更改为:

optional bytes appData = 2;
 类似资料:
  • 协议缓冲区说它可以包含任何任意的字节序列。但是如果我的数据包含“\0”,协议缓冲区如何从字符串变量对我的整个数据进行编码。

  • 我不熟悉协议缓冲区,正在使用VS2010的protobuf net。从我在这里阅读的协议缓冲区中的字典来看,protobuf似乎不能用对象类型作为值序列化字典。但我在他的网站上读到: 类型注释 支持: 自定义类:被标记为数据契约有一个Silverlight的无参数构造函数:是公共的许多常见原语等单维数组:T[]List/IList字典/IDiction-任何类型,它实现了IENumable并具有一

  • 问题内容: 我正在尝试在Linux平台上探索协议缓冲区(PB),我的编码语言是C ++。我在协议缓冲区在线文档中找到了示例,但没有特定于套接字发送和接收的内容(或者我完全错过了:))。因此,我决定在实际消息之前添加消息Length,并通过套接字发送它。如果有人可以提出比我计划做的更好的解决方案,并且在PB中已经准备好任何用于创建此类数据包的东西,我将不胜感激。 但是我仍然在服务器端遇到问题,必须对

  • 我正在使用Google Protocol Buffers向服务器发送消息。我对如何发送图像与如何接收图像感到困惑。有关详细信息,请参阅下面的代码,但我的问题是: 我需要base64_decode从未经过base64编码的返回字符串吗,因为它是使用char*和size发送的?也许Google Protocol Buffers处理了这个问题,但我在生成的类中找不到任何证据。 我可能在这里找到了答案,但

  • 试图使用Ionic 4中的协议缓冲区进行编码 我已经下载了协议并用它来生成一堆_pb.js文件,每个. proto文件一个。很好。 首先关注原型示例。这是示例代码: 我做了一些更改以匹配我的文件。更改proto文件的名称。但是我的proto文件中没有包名称。所以我只是使用了消息名称。首先这是我的. proto文件的开头: 下面是我修改后的代码: 这似乎不起作用。我的控制台显示: 我相信我已经成功地

  • 问题内容: 我正在使用gSoap将旧式C 系统重构为SOA。我们遇到了一些性能问题(非常大的XML),因此我的领导要我看一下协议缓冲区。我做到了,它看起来非常酷(我们需要C 和Java支持)。但是协议缓冲区是仅用于序列化的解决方案,现在我需要将其发送到Java前端。从C ++和Java角度来看,我应该使用什么来通过HTTP(只是内部网络)发送那些序列化的内容? PS。另一个人试图加速我们的gSoa