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

单个读取和按数组读取前面加0的显示问题

printHex()

printHexByteByByte()

跟老师写的是一样的,为什么到第二个方法里的是否是一位数的判断,

出来的结果是这样的:

0d 0a 0a1 0a1 0a1 0a1 0bb 0ad 20 2d 

20 47 2e 45 2e 4d 2e 20 0b5 0cb 

0d7 0cf 0c6 0e5 0d 0a 0d 0a 0a1 0a1 

0a1 0a1 0b4 0ca 0a3 0ba 47 2e 45 2e 

4d 2e 20 0b5 0cb 0d7 0cf 0c6 0e5 0d 

0a 0d 0a 0a1 0a1 0a1 0a1 0c7 0fa 0a3 

0ba 47 2e 45 2e 4d 2e 20 0b5 0cb 

0d7 0cf 0c6 0e5 20 


正在回答

3 回答

f(buf[i]<=0xf)这句有问题的!这里buf[i]是byte类型,虽然比较的时候会自动变成int,但是如果它的最高位是1的话,它始终都是负数!只需要在判断的时候再加上判断为正即可if(buff[i] <= 0xf && buff[i] >= 0)

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

helloworld2008 提问者

非常感谢。!~
2016-07-26 回复 有任何疑惑可以回复我~

我的也是,不知道咋回事

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

helloworld2008 提问者

偶已经知道原因了, read()方法读出来的是int类型的data【设为X】 read(buf,0,length)读出来是byte类型的data【-128~127】 读出来如果值为大于在这个范围外的话,就无法显示,只是显示成了X-256,所以对我们的<0xf的判断就会有问题。
2016-07-21 回复 有任何疑惑可以回复我~

System.out.println(Integer.toHexString(buf[i] & 0xff) + " ");是不是这句话有问题

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

举报

0/150
提交
取消

单个读取和按数组读取前面加0的显示问题

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