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