請(qǐng)問(wèn),為何下面的判斷語(yǔ)句,會(huì)讓雙位數(shù)也加零呢?本來(lái)想只對(duì)單位數(shù)(<=15)的前面補(bǔ)零。
public?static?void?printHexByByteArray(String?fileName)?throws?IOException{ FileInputStream?in=new?FileInputStream(fileName); byte[]?buf=new?byte[8*1024]; int?bytes=0; int?j=1; while((bytes=in.read(buf,?0,?buf.length))!=-1){ for(int?i=0;i<bytes;i++){ //為何下面的判斷,會(huì)讓雙位數(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(); } }
2015-10-14
0xff 是16位的 你這相當(dāng)于是對(duì) 8位能表示的數(shù)據(jù)做了8位擴(kuò)展,即buf[i]如果是00000001 & 0xff =0x01 ?自然就多了一個(gè)0