Netty中的ByteBuf 和String之间的转换

x33g5p2x  于2021-08-16 发布在 Java  
字(0.7k)|赞(0)|评价(0)|浏览(260)

ByteBuf转String

Netty中的消息传递,都必须以字节的形式,以ChannelBuffer为载体传递。

public String convertByteBufToString(ByteBuf buf) {
        String str;
        if(buf.hasArray()) { // 处理堆缓冲区
            str = new String(buf.array(), buf.arrayOffset() + buf.readerIndex(), buf.readableBytes());
        } else { // 处理直接缓冲区以及复合缓冲区
            byte[] bytes = new byte[buf.readableBytes()];
            buf.getBytes(buf.readerIndex(), bytes);
            str = new String(bytes, 0, buf.readableBytes());
        }
        return str;
    }

String转ByteBuf

public ByteBuf convertStringToByteBuf(String message) {
        ByteBuf byteBuf = null;
        if(StringUtils.isNotBlank(message)){
            byte[] bytes = message.getBytes();
            //池化
            PooledByteBufAllocator allocator = new PooledByteBufAllocator(true);
            byteBuf = allocator.directBuffer(bytes.length);
            byteBuf.writeBytes(bytes);
        }
        return byteBuf;
    }

相关文章

热门文章

更多