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

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

helloworld2008

2016-07-20 16:27

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

  • 小丑鱼yang
    2016-07-24 17:01:06
    已采纳

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

    hellow...

    非常感谢。!~

    2016-07-26 09:12:51

    共 1 条回复 >

  • 竹叶青_0002
    2016-07-21 15:03:58

    我的也是,不知道咋回事

    hellow...

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

    2016-07-21 18:02:54

    共 1 条回复 >

  • BlueBlueSkyZ
    2016-07-20 21:52:23

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

文件传输基础——Java IO流

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

133754 学习 · 1030 问题

查看课程

相似问题