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

来源:4-2 字节流之文件输入流FileInputStream-2

lynhao

2015-05-17 10:21

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

  }

  }

  }


写回答 关注

3回答

  • 源代码_思无邪
    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()。

    发呆的阿呆

    解释的很清楚,一下子明白了,赞一个~

    2015-10-24 11:05:12

    共 2 条回复 >

  • 一世沉香
    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应该还是根据需求做的

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题