ByteArrayInputStream 遇到的问题:类型转换
import java.io.*;
public class ByteArrayTester
{
public static void main(String args[])throws
IOException {
byte[] buff=new byte[]{2,15,67,-1,-9,9};
ByteArrayInputStream in=new ByteArrayInputStream(buff,1,4);
int data=in.read();
while(data!=-1)
{
System.out.println(data+ " ");
data=in.read();
}
in.close();
}
}
结果输出:15 67 255 247
对于 byte类型的15 二进制的形式为 00001111 转为int 类型是为 00000000 00000000 0000000 00001111 因此结果依然是15,但是当是-1时转化完的结果是255
同理其他的都一样。
可是在进行基本类型转化的时候却不是这样;
byte b1=15,b2=-1,b3=-9;
int a1=b1,a2=b2,a3=b3;
此时a1,a2,a3的值是15,-1,-9
这是为什么呀 不明白大家遇没遇到这个问题
希望高手给讲解一下
------解决方案--------------------public int read()
从此输入流中读取下一个数据字节。
返回一个 0 到 255 范围内的 int 字节值。
如果因为到达流末尾而没有可用的字节,则返回值 -1。
返回的是0-255,所以是负数的话就会溢出,返回一个正数
原数加上(减去)256的倍数,使得结果在0-255中
byte到int转型是扩充范围,不会引起数值的变化
------解决方案--------------------public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}