请问,为什么是一个整数来装读到的字节流呢?一个字节8位,一个整数32位,从低位装起的话,最多也只能装4个呀?如果字节数组超过4个,多余的怎么办呢?等到下一次再装么?

来源:4-2 字节流之文件输入流FileInputStream-2

小羊爱主

2015-07-18 15:05

public static void printHexByByteArray(String fileName) throws IOException{
		FileInputStream in=new FileInputStream(fileName);
		byte[] buf=new byte[8*1024];
		//为什么是一个整数来装读到的字节流呢?一个字节8位,一个整数32位,从低位装起的话,最多也只能装4个呀?如果字节数组超过4个,多余的怎么办呢?等到下一次再装么?
		int bytes=in.read(buf, 0, buf.length);
		int j=1;
		for(int i=0;i<bytes;i++){
			if(buf[i]<=0xf){
				System.out.print("0");
			}
			System.out.print(Integer.toHexString(buf[i])+" ");
			if(j++%10==0){
				System.out.println();
			}
		}
/*		while((bytes=in.read(buf, 0, buf.length))!=-1){
			for(int i=0;i<bytes;i++){
				//为何下面的判断,会让双位数也加零
				if(buf[i]<=0xf){
					System.out.print("0");
				}
				System.out.print(Integer.toHexString(buf[i] & 0xff)+" ");
				if(j++%10==0){
					System.out.println();
				}
			}
		}*/
		in.close();
	}

另外,为何while体中的判断单字节语句,运行下来,双字节也加了“0”?

写回答 关注

1回答

  • 幕布斯7272363
    2015-07-28 13:20:06
    已采纳

    读到的字节流是byte[] 数组装 , 而不是 int bytes这个整型变量来装,bytes 返回的是读取到的字节个数

    小羊爱主

    非常感谢!

    2015-07-28 20:47:33

    共 1 条回复 >

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题