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

我的补0判断哪里出了问题呢?

for(int i=0;i<bytes;i++){

   

    if(buf[i]<=0xf){

    System.out.print("0");

    }

    System.out.print(Integer.toHexString(buf[i] & 0xff)+" ");

    if(j++%10==0){

    System.out.println();

    }

    }

输出结果是这样的

0f7 0bc 0fc 0d2 0d4 0cd 0e2 0b5 0c4 0c6 

0e4 0cb 0fb 0c1 0d0 0b6 0bc 0b2 0bb 0b4 

0ab 0b5 0dd 0d2 0c0 0c0 0b5 0d3 0da 0d6 

0f7 0bc 0fc 0c1 0d0 0a3 0ac 0d4 0f2 0c2 

0fa 0d7 0e3 0b5 0da 0c8 0fd 0b7 0b6 0ca 

0bd 0a1 0a3


正在回答

3 回答

补0判断不严谨,如果有中文的话会出现负值

if (buf[j]<=0xf&&buf[j]>=0) {

System.out.print(0);

}


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

你把上面的判断添加buf[i]<=0xf;改成(buf[i]& 0xff)<=0xf

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

你的补0判断没有问题,只不过是因为你的读取文件中,包含了中文,而中文在字节数组中保存的数值是负值,

 if(buf[i]<=0xf){

    System.out.print("0");

    }

所以但凡是中文 都会经由此补上0,而且看你输出的全是3位补0,应该是全文字内容,你再加入一点字母数字,就会发现有3位和两位并存的现象

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

举报

0/150
提交
取消

我的补0判断哪里出了问题呢?

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