1

我正在尝试从 RandomAccessFile 读取整数数组。然而,RandomAccessFile 仅支持读取字节数组。到目前为止我的代码:

public long getSumOfElementsFromArray(long start, int length)
{
    int[] tempArray = new int[length];
    try
    {
        RAF.seek(start);
        RAF.readFully( (byte[]) (tempArray) , 0, length*4);
        //do some stuff with tempArray
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    return 0;
}

Eclipse 告诉我:“不能从 int[] 转换为 byte[]”。在 CI 中可以轻松地将 int* 转换为 char* 但我不知道这是如何在 Java 中完成的。我怎么能在 Java 中做到这一点?

4

2 回答 2

3

您可以使用ByteBuffer. 读作 abyteArray然后转换。

int[] tempArray = ByteBuffer.wrap(byteArray).asIntBuffer().array();

检查类似的问题

于 2013-05-13T11:22:02.863 回答
0

你试过readInt这样的方法吗:

    for (int i = 0; i < tempArray.length; i++) {
            tempArray[i] = RAF.readInt();
    }

如果将 int[] 转换为 byte[],则不允许,因为会丢失信息,因此(byte[])tempArray不允许。

该方法采用 byte[] 参数而不是 int[] 因此不能直接给出 int[]。在不允许数组类型扩大的情况下,如果没有数组,您可以像传递字节而方法接受 int 一样。

于 2013-05-13T11:15:02.067 回答