請問,為什么是一個整數(shù)來裝讀到的字節(jié)流呢?一個字節(jié)8位,一個整數(shù)32位,從低位裝起的話,最多也只能裝4個呀?如果字節(jié)數(shù)組超過4個,多余的怎么辦呢?等到下一次再裝么?
public?static?void?printHexByByteArray(String?fileName)?throws?IOException{ FileInputStream?in=new?FileInputStream(fileName); byte[]?buf=new?byte[8*1024]; //為什么是一個整數(shù)來裝讀到的字節(jié)流呢?一個字節(jié)8位,一個整數(shù)32位,從低位裝起的話,最多也只能裝4個呀?如果字節(jié)數(shù)組超過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++){ //為何下面的判斷,會讓雙位數(shù)也加零 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體中的判斷單字節(jié)語句,運行下來,雙字節(jié)也加了“0”?
2015-07-28
讀到的字節(jié)流是byte[] 數(shù)組裝 , 而不是 int bytes這個整型變量來裝,bytes 返回的是讀取到的字節(jié)個數(shù)