Integer.toHexString(b & 0xff)

  • Post author:
  • Post category:其他


Integer.toHexString(b & 0xff)(b是byte类型的)

Integer.toHexString:这个方法是把字节以16进制的方式显示。

   public static String toHexString(int i)

——

&是什么

&是位操作符,“按位与”当&作为位运算时,1&1=1 ,1&0=0,0&0=0

举个栗子: a=1;b=2;a&b=0

计算方法为:

1转成二进制 01

2转成二进制 10

所以,a&b=00 转成十进制为0

——

0xff是什么

0x表示是十六进制。

ff是两个十六进制的数,每个f用二进制表示是1111,所以占四位(bit),两个f(ff)占八位(bit),八位(bit)也就是一个字节(byte).

toHexString传的参数应该是int类型32位,此处传的是byte类型8位,所以前面需要补24个0。然后& 0xff 就是把前面24个0去掉只要后8位。

int本身就是由4组byte组成,并且Java中本身就以byte读取。所以此处传参没有问题。

toHexString(b & 0xff)相当于做了一次位的与运算,将前24位字符省略,将后8位保留。即只转了后8位。即可得到两个十六进制的值。

在使用MessageDigest消息摘要时可以用到

package practice;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Task
{
	public static void main(String[] args)
	{
		String msg = "ABCDEFG";//待加密数据
		try
		{
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.update(msg.getBytes());
			byte[] digest = md.digest();
			StringBuffer buffer = new StringBuffer();
			for (int i = 0; i < digest.length; i++)
			{//********************
				buffer.append(Integer.toHexString(0xff & digest[i]));
			}//********************
			System.out.println(buffer.toString());
		} catch (NoSuchAlgorithmException e)
		{
			e.printStackTrace();
		}
	}
}

以上代码JAVA加密可在本人博客中查看介绍



版权声明:本文为PJF1501105594原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。