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

三位数字出现

if(buf[i]<=0xf)
	        System.out.print("0");
		    		
			System.out.print(Integer.toHexString(buf[i]&0xff)+"  ");
			
			if(count++%10==0)
				System.out.println();
    	}

为什么会出现0b7  0c5  0c8  0eb  0d7  数字

提问者:大猫爱学习 2017-03-23 18:04

个回答

  • qq_顿首_0
    2017-03-23 20:47:39
    已采纳

    看看你的项目的编码格式吧,我的是utf-8的,这样也是三位,视频里面的项目编码格式是GBK的

  • 下线123
    2017-07-30 15:21:54

    这个应该是由于高位是1开头的,默认负数,所以buf[i]<=0xf是一定成立的,要改成(buf[i]&0xff)<0xf才能正确,并不是编码的问题

  • 落叶萧萧online
    2017-04-16 16:39:41

    会不会是另一个原因?debug一下,当进行比较大小的时候,高位是1开头的,默认负数,在计算时自然小于0xf,但实际并不小于,此时如果和0xff相与结果还会是正常的,因为负数的原因所以那儿被认为是小于16,所以加了个0,变成3位的了。

    举例来说 某个1开头的字节,你按32位000000000000000000000000,1xxxxxx假设的。。正数是100多,只算负数就是-49。当系统用字节进行比较的时候,应该直接拿了-49的值去比较了。。此时因为我们写的程序就会在前面多加了一个0.

  • 大猫爱学习
    2017-03-23 21:32:26

    默认gbk 可行,大概是这个原因吧