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();
}
}0xff 是16位的 你这相当于是对 8位能表示的数据做了8位扩展,即buf[i]如果是00000001 & 0xff =0x01 自然就多了一个0