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

请问,为何下面的判断语句,会让双位数也加零呢?本来想只对单位数(<=15)的前面补零。

	public static void printHexByByteArray(String fileName) throws IOException{
		FileInputStream in=new FileInputStream(fileName);
		byte[] buf=new byte[8*1024];
		int bytes=0;
		int j=1;
		while((bytes=in.read(buf, 0, buf.length))!=-1){
			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();
				}
			}
		}
		in.close();
	}
}


正在回答

2 回答

0xff 是16位的 你这相当于是对 8位能表示的数据做了8位扩展,即buf[i]如果是00000001 & 0xff =0x01  自然就多了一个0

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

举报

0/150
提交
取消

请问,为何下面的判断语句,会让双位数也加零呢?本来想只对单位数(<=15)的前面补零。

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