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

Java 如何(base64)将protobuf编码为字符串,java,base64,protocol-buffers,Java,Base64,Protocol Buffers,我有一个protobuf,希望用base64(或另一种文本编码)对其二进制表示进行编码,以便通过文本协议进行传输。最干净的方法是什么?最简单的方法是使用的类将这些字节编码为base64字符串: String asBase64 = BaseEncoding.base64().encode(proto.toByteArray()); 这是最简单的,但还有许多其他大致相同的机制。例如,如果要将编码数据写入文件或其他可写资源,则可以将其写入以下返回的OutputStream: 在Java8中,如果您

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

最简单的方法是使用的类将这些字节编码为base64字符串:

String asBase64 = BaseEncoding.base64().encode(proto.toByteArray());
这是最简单的,但还有许多其他大致相同的机制。例如,如果要将编码数据写入文件或其他可写资源,则可以将其写入以下返回的
OutputStream


在Java8中,如果您不使用番石榴,还有一个。见和



正如Jon Skeet所提到的,如果您不需要显式地以二进制格式传输数据(当然您使用的是proto3),proto3可以提供支持。

注意,从proto3开始,JSON将得到支持,并且显然比使用base64更具可读性。谢谢,使用JavaSE中的标准Base64添加了一个链接:
String asBase64=Base64.getEncoder().encodeToStrng(proto.toByteArray())。另请查看
.wrap(OutputStream)
@JoopEggen谢谢;我想在回答这个问题时,我的代码库还没有在Java8上。我已将答案更新为指向
Base64
proto.writeTo(BaseEncoding.base64().encodingStream(fileWriter));