我已经完成了类似的帖子,但他们都没有真正回答我的问题。因此,我在一个单独的帖子中发布我的问题。 我需要跳过我在字节数组中读取的文件中的一些字节。我正在尝试通过下面的代码实现此目的
1. byte [] readBytesToSKip = null;
2. readBytesToSKip = new byte[(int)bytesToSkip];
3. bytesReadToSkip = System.in.read(readBytesToSKip) ;
4. if(bytesReadToSkip > 0)
5. {
6. baos_.write(readBytesToSKip, 0, bytesReadToSkip);
7. }
但我在第2行得到NegativeArraySizeException
,其中大小超过Integer.MAX_VALUE
。我不知道如何实现这一点。
bytesToSkip
只要我在下面的函数中计算:
public static long bytesToLong1(byte[] bytes) {
long value = 0;
for (int i = 0; i < bytes.length; i++)
{
value = (value << 8) + (bytes[i] & 0xff);
}
return value;
}
答案 0 :(得分:-1)
从发布的bytes->long
功能
public static long bytesToLong1(byte[] bytes) {
long value = 0;
for (int i = 0; i < bytes.length; i++)
{
value = (value << 8) + (bytes[i] & 0xff);
}
return value;
}
每当bytes.length==8
和第一个字节的绝对值为&gt; = 128
时(特定于Java:它是负字节值),您将以负值结束为你的长期。
示例:
byte vals[]={0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
System.out.println(bytesToLong1(vals));
将导致-1
被打印。哪个会很好地转换为int
-1
值,但对于数组的长度仍然不合适。