【问题标题】:Convert ByteArray to ShortArray将 ByteArray 转换为 ShortArray
【发布时间】:2020-06-26 09:06:07
【问题描述】:

我在 Kotlin/Java 中有包含音频数据的字节数组。

当我使用以下代码时,创建了 ShortBuffer 但里面的 short[] 为空。

    var short1 = ByteBuffer.wrap(samples.data).order(ByteOrder.BIG_ENDIAN).asShortBuffer()

当我调用函数.array() 时,它无法转换,因为缓冲区中的 short[] 为空。

我以错误的方式操作数组/缓冲区?

示例数据是 byte[],其中包含 Android WebRtc 中的音频数据

【问题讨论】:

    标签: java android arrays bytebuffer


    【解决方案1】:

    ShortBufferarray() 方法是可选操作,ShortBuffer 由短数组 (short[]) 支持时才起作用。

    public final short[] array()

    返回支持此缓冲区的短数组(可选操作)。

    修改此缓冲区的内容将导致返回数组的 内容要修改,反之亦然。

    在调用该方法之前调用 hasArray 方法,以便 确保此缓冲区具有可访问的支持数组。

    由于您的ShortBuffer 不是short[] 支持,因为它是由ByteBuffer 创建的,所以array() 方法将抛出UnsupportedOperationException

    您可以使用hasArray() 方法检查调用array() 是否安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-28
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多