Java 如何制作新的varint编码protobuf消息?

Java 如何制作新的varint编码protobuf消息?,java,encoding,buffer,protocol-buffers,Java,Encoding,Buffer,Protocol Buffers,我有一个我正在生成的protobuf消息的ArrayList,我想知道如何用它们生成一个可变编码的消息 假设我想要的信息叫做Foobar。它将使用protoc-java_创建,我想这样做: VarintFoobarVarintFoobarVarintFoobar Varint应该表示Foobar之后的长度 一旦消息被编码到字节数组中,假设输出是我开始使用的ArrayList,输入是编码的protobuf,则以下代码应该能够撤消所有操作: List<Foobar> output =

我有一个我正在生成的protobuf消息的ArrayList,我想知道如何用它们生成一个可变编码的消息

假设我想要的信息叫做Foobar。它将使用protoc-java_创建,我想这样做:

VarintFoobarVarintFoobarVarintFoobar
Varint应该表示Foobar之后的长度

一旦消息被编码到字节数组中,假设输出是我开始使用的ArrayList,输入是编码的protobuf,则以下代码应该能够撤消所有操作:

List<Foobar> output = new ArrayList<Foobar>();
CodedInputStream cis = CodedInputStream.newInstance(input);
for (int i = 0; !cis.isAtEnd(); i++) {
    int x = cis.readRawVarint32();
    output.add(Foobar.parseFrom(cis.readRawBytes(x)));
}

你的意思是什么品种的???。在java版本的protocol buffers中,WriteDelimedTo方法写入一个变量32,然后写入messageSorry。我大概一周前就知道了。它被写得很有限。如果你愿意,你可以回答这个问题,因为你知道答案而获得满分。毕竟,这是你应得的。