为了账号安全,请及时绑定邮箱和手机立即绑定

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

 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 回答

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

2 回复 有任何疑惑可以回复我~
#1

lynhao 提问者

非常感谢!
2015-07-09 回复 有任何疑惑可以回复我~
#2

发呆的阿呆

解释的很清楚,一下子明白了,赞一个~
2015-10-24 回复 有任何疑惑可以回复我~

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://img1.sycdn.imooc.com//5a5831100001c6d404080497.jpg

0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信