请问,为什么是一个整数来装读到的字节流呢?一个字节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”?