为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

1 回复 有任何疑惑可以回复我~
#1

小羊爱主 提问者

非常感谢!
2015-07-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信