gpt4 book ai didi

java - Java System.arraycopy数组范围

转载 作者:行者123 更新时间:2023-12-03 02:13:26 25 4
gpt4 key购买 nike

我正在尝试通过65536字节大小的缓冲区流音频。

如果我通过 System.arraycopy() 将一部分音频数据复制到缓冲区,而剩余的音频数据小于65536,会发生什么情况?它会抛出错误还是将剩余字节复制到缓冲区而不会出现任何错误?

这是我现在的代码:

int offset = 0;
while(isAudioActive)
{

byte[] buffer = new byte[65536];
System.arraycopy(this.currentFile.getSampledata().getData(), 65536 * offset, buffer, 65536 * offset, 65536);

//<<writing Audio to track here>>
offset++;
}

因此,系统会一小段地将音频数据复制到缓冲区。
我正在使用一些小片段,因为我想稍后暂停/停止音乐。

最佳答案

从我的 Angular 来看,该代码将无法正常工作,并抛出IndexOutOfBoundsException。请检查目标数组buffer中的位置。

在while循环的第一个迭代中,偏移量为0,并且您正在写入0到65535的位置。在第二个迭代中,您将写入位置65536 * offset with offset =1。因此,您从buffer[65536]开始,这将导致上述情况提到的异常(exception)。

关于剩余数据的问题……这也不应该起作用:您的代码始终将固定长度的65536字节的字节从源数组复制到目标数组。您可能会在条件srcPos + length> src.length的情况下到达源数组中的位置,然后您还将具有IndexOutOfBoundsException。

关于java - Java System.arraycopy数组范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22231686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com