[版权声明] 本站内容采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆 (CC BY-NC-SA 3.0 CN) 进行许可。
部分内容和资源来自网络,纯学习研究使用。如有侵犯您的权益,请及时联系我,我将尽快处理。
如转载请注明来自: Broly的博客,本文链接: ByteBuf与Protobuf互转
ByteBuf是Netty的缓冲区,Protobuf是Google的开源编码协议。
使用Netty+Protobuf进行编程是很常见的方式,上面二者之间是可以进行转换的。具体实现如下:
一、Protobuf转ByteBuf
使用 Unpooled 类
1 2 3 4 |
Unpooled.copiedBuffer(ByteBuffer) Unpooled.copiedBuffer(byte[]) Unpooled.wrappedBuffer(ByteBuffer) Unpooled.wrappedBuffer(byte[]) |
1 |
ByteBuf mybytebuf = Unpooled.copiedBuffer(myprotobuf.toByteArray()); |
参考链接:《Create a ByteBuf in Netty 4.0》
二、ByteBuf转Protobuf
1 2 3 4 |
byte[] payloadBytes = new byte[mybytebuf.readableBytes()]; mybytebuf.readBytes(payloadBytes); MyMessage protoMessage = MyMessage.parseFrom(payloadBytes); |
参考链接:《Netty and Protobuf in HTTP content》
三、ByteBuf转String
1 2 3 4 |
HttpResponse response = (HttpResponse) msg; ByteBuf buf = msg.content(); String text = buf.toString(io.netty.util.CharsetUtil.UTF_8); buf.release(); |