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