我有一个protobuf,并希望在base64(或其他文本编码)中编码其二进制表示,以便通过文本协议进行传输。最干净的方法是什么?
答案 0 :(得分:2)
最简单的选择是convert your proto to a byte[]
,然后使用Guava的BaseEncoding
类将这些字节编码为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。