问答详情
源自:4-2 字节流之文件输入流FileInputStream-2

为什么不能补零,上个例子为什么就可以

 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();

  }

  }

  }


提问者:lynhao 2015-05-17 10:21

个回答

  • 源代码_思无邪
    2015-07-08 07:24:50
    已采纳

    在这个程序里,你的这个变量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()。

  • 一世沉香
    2018-01-12 11:52:53

    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();

    }

    }

    }

    }

    http://img3.mukewang.com/5a5831100001c6d404080497.jpg

  • 好帮手慕珊
    2015-05-18 10:20:50

    我没找到你说的上个例子是那个,是否需要补0应该还是根据需求做的