while((bytes = in.read(buf,0,buf.length))!=-1){
if(bytes <= 0xf){
System.out.print("0");
}
for(int i = 0 ; i < bytes;i++){
System.out.print(Integer.toHexString(buf[i] & 0xff)+" ");
if(j++%10==0){
System.out.println();
}
}
}
在这个程序里,你的这个变量bytes=in.read(buf,0,buf.length),得到的是读取的字节个数。用它去判断是否小于等于15(bytes<=oxf)是没有意义的。应该是在for循环内通过判断if(buf[i]<=oxf)单个字节是否小于等于15才有意义。
你说前面的可以,可能你用的是bytes=in.read();这是每次读取一个字符,当然可以。
请记清楚,int bytes = in.read(buf,0,buf.length)和int bytes=in.read()是完全不同的概念。所以老师其实在例子用的变量都是int b=in.read()。
public static void printHexByByteArrayMethod2(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]&0xff)<=0xf){
System.out.print("0");
}
System.out.print(Integer.toHexString(buf[i] & 0xff)+" ");
if(j++%10==0){
System.out.println();
}
}
}
}
我没找到你说的上个例子是那个,是否需要补0应该还是根据需求做的