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

三位数字出现

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  数字

正在回答

4 回答

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

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

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

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

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

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

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

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

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

举报

0/150
提交
取消

三位数字出现

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