【问题标题】:Convert ByteBuffer to byte array java [duplicate]将ByteBuffer转换为字节数组java [重复]
【发布时间】:2015-04-28 22:14:57
【问题描述】:

有谁知道如何将 ByteBuffer 转换为 byte[] 数组?我需要从我的ByteBuffer 获取字节数组。当我运行 bytebuffer.hasArray() 时,它返回 no。到目前为止,我看到的每个问题都是将字节数组转换为 byteBuffer,但我需要其他方式。 谢谢。

【问题讨论】:

  • 你试过byteBuffer.array()吗?
  • @JohnnyWiller - 它会失败... hasArray 正在返回false
  • 是的,我没有成功。
  • 好的..我认为诺米斯的回答会奏效:)

标签: java arrays bytebuffer


【解决方案1】:

如果hasArray() 报告false 那么,调用array() 将引发异常。

在这种情况下,获取byte[] 中数据的唯一方法是分配byte[] 并使用get(byte) 或类似方法将字节复制到byte[]

【讨论】:

    【解决方案2】:

    ByteBuffer 公开了大容量get(byte[]) 方法,该方法将字节从缓冲区传输到数组中。您需要实例化一个长度等于缓冲区中剩余字节数的数组。

    ByteBuffer buf = ...
    byte[] arr = new byte[buf.remaining()];
    buf.get(arr);
    

    【讨论】:

    • 仅代码的答案通常可以通过添加一些解释代码正在做什么的文本来改进 - 您可以添加一些文本来向 OP 解释吗?
    • 别忘了调用buf.rewind(),否则buf.remaining()会返回错误值
    • 嗨,buf.get(arr) 仍然返回一个 ByteBuffer,还有其他选择吗?
    • 这不是将 ByteBuffer 转换为字节数组。它仍在返回 ByteBuffer。
    • @SeetharamaniTmr - 字节被填充到“arr”变量中,不是返回值。
    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2023-03-05
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2011-07-02
    相关资源
    最近更新 更多