1

RandomAccessFile から int の配列を読み込もうとしています。ただし、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。として読み取ってbyteArrayから変換します。

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れません。

このメソッドは int[] ではなく byte[] パラメータを取るため、int[] を直接指定することはできません。配列型の拡張は許可されていませんが、配列がなければ、メソッドが int を受け入れている間にバイトを渡すようにできます。

于 2013-05-13T11:15:02.067 に答える