請問,為何下面的判斷語句,會讓雙位數也加零呢?本來想只對單位數(<=15)的前面補零。
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++){ //為何下面的判斷,會讓雙位數也加零 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位的 你這相當于是對 8位能表示的數據做了8位擴展,即buf[i]如果是00000001 & 0xff =0x01 ?自然就多了一個0