我为什么会收到ArraIndexOutOfBoundException?

问题描述 投票:-2回答:1

我正在尝试将从文件中读取的字节数组(fileData)复制到另一个字节数组(子数据)(在代码下方:]

                ByteBuffer inputBuffer = decoderInputBuffers[intBufIndex];
                int limit = inputBuffer.capacity();
                int pos = frameIndex * limit;
                byte[] subData = new byte[limit];

                System.arraycopy(fileData, pos, subData, 0, subData.length);

我的问题是为什么我会收到此错误?

java.lang.ArrayIndexOutOfBoundsException: src.length=732542 srcPos=0 dst.length=1572864 dstPos=0 length=1572864

自从我明确地说出数组的大小以来,甚至还有可能。

android arrays byte bytebuffer
1个回答
1
投票

如果您查看文档(在注释中有linknd),它说该函数的最后一个参数是:

length-这是要复制的数组元素的数量。

因此,如果您仔细观察,您正在尝试从732542数组中复制1572864,这就是为什么您会得到异常的原因

© www.soinside.com 2019 - 2024. All rights reserved.