有没有办法在从Java中的输入流读取时将字节更改为整数?

时间:2011-10-28 03:52:10

标签: java android arrays performance

我正在将一个带有InputStream的文件读入一个字节数组,然后将每个字节更改为一个int。然后我将int存储到另一个数组中。有没有办法让这个更有效率?具体来说,有没有办法只使用一个数组而不是两个?分配这两个阵列对我的程序来说太长了。

这就是我现在正在做的事情(is是InputStream):

byte[] a = new byte[num];
int[] b = new int[num];

try {
    is.read(a, 0, num);
    for (int j = 0; j < nPixels; j++) {
        b[j] = (int) a[j] & 0xFF; //converting from a byte to an "unsigned" int
    }
} catch (IOException e) { }

3 个答案:

答案 0 :(得分:0)

您是否查看了DataInputStream甚至FileInputStream?还有许多方法允许您直接从InputStream读取特定的数据类型。

我不知道在您的情况下是否可以使用您提供的信息。

答案 1 :(得分:0)

让我们看看...你不能直接读取int,因为它会尝试一次读取4个字节。你可以说

int_array[j] = (int)is.read();
如果你可以一次读取一个字节,那么

在循环内部。

答案 2 :(得分:0)

为什么不使用返回int?

的无参数方法InputStream.read()
File file = new File("/tmp/test");
FileInputStream fis = new FileInputStream(file);
int fileSize = (int) file.length(); // ok for files < Integer.MAX_SIZE bytes
int[] fileBytesAsInts = new int[fileSize];
for(int j = 0; j < fileSize; j++) {
    fileBytesAsInts[j] = fis.read();
}