如何(base64)将protobuf编码为字符串

时间:2015-11-18 18:28:55

标签: java base64 protocol-buffers

我有一个protobuf,并希望在base64(或其他文本编码)中编码其二进制表示,以便通过文本协议进行传输。最干净的方法是什么?

1 个答案:

答案 0 :(得分:2)

最简单的选择是convert your proto to a byte[],然后使用GuavaBaseEncoding类将这些字节编码为base64字符串:

String asBase64 = BaseEncoding.base64().encode(proto.toByteArray());

这是最直接的,但还有许多其他大致相同的机制。例如,如果要将编码数据写入文件或其他可写资源,可以将其写入BaseEncoding.encodingStream()返回的OutputStream

proto.writeTo(BaseEncoding.base64().encodingStream(fileWriter));

正如Jon Skeet所提到的,如果你没有明确地需要以二进制格式传输数据(当然你正在使用proto3),proto3可以map to and from JSON