我正在尝试从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 []”。在C中,我可以轻松地将int *转换为char *,但我不知道如何在Java中完成。我怎么能用Java做到这一点?
答案 0 :(得分:2)
您可以使用ByteBuffer
。阅读为byteArray
然后转换。
int[] tempArray = ByteBuffer.wrap(byteArray).asIntBuffer().array();
答案 1 :(得分:0)
您是否尝试过readInt
方法:
for (int i = 0; i < tempArray.length; i++) {
tempArray[i] = RAF.readInt();
}
如果将int []强制转换为byte [],则不允许将其丢失,因为信息丢失,因此不允许(byte[])tempArray
。
该方法采用byte []参数而不是int []所以不能直接给int []。如果不允许数组类型加宽,而没有数组,则可以像方法接受int那样传递字节。