【问题标题】:netty getting the text value of an byte[]netty 获取字节 [] 的文本值
【发布时间】:2021-03-24 00:44:21
【问题描述】:

我使用 API,它为我提供了 WebSicketFrame#content 的字节 []。 如果我使用 WebSocketFrame#content#toString(Charset) 没有问题。 我使用的 API 虽然返回 WebSocketFrame#content#array,它返回字节数组。

我尝试使用 new String(byte[]),它也尝试读取不可读的字符。 我也绑了这个:

ByteBuf byteBuf = Unpooled.wrappedBuffer(bytelist);
String message =  byteBuf.toString(Charset.forName(StandardCharsets.UTF_8.toString()));

这也会读取所有不可读和可写的字符。

还有: ByteBuf#toString 在原始 WebSocketFrame 的 ByteBuf 上使用的上限为 20 Unpooled#wrappedBuffer(byte[]) 生成的 ByteBuf 上使用的 ByteBuf#toString 表示其上限为 16777216

我希望我试图描述的内容是可以理解的

【问题讨论】:

    标签: java websocket netty


    【解决方案1】:

    问题是array() 返回整个缓冲区的“支持数组”,它可能比ByteBuf 的可读部分大很多。如果您只需要ByteBuf 的可读部分作为byte[],您应该使用它的readBytes(...) 方法之一,该方法允许写入byte[]

    【讨论】:

      猜你喜欢
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 2013-04-14
      相关资源
      最近更新 更多