JAVA里16进制和字节数组互转

来源:百度知道 编辑:UC知道 时间:2024/06/09 15:37:22
byte[] bytes = new byte[]{(byte)0x12, (byte)0x0F, (byte)0xF0};
BigInteger bi = new BigInteger(bytes);
String s = bi.toString(16);
这个可行?可以的话要怎么转回来!大括号里是什么意思?
有没有别的方法。

大括号理的就是一个byte类型的数组,里面是3个byte类型那个的数

public static String stringToHexString(String strPart) {
String hexString = "";
for (int i = 0; i < strPart.length(); i++) {
int ch = (int) strPart.charAt(i);
String strHex = Integer.toHexString(ch);
hexString = hexString + strHex;
}
return hexString;
}

private static String hexString="0123456789ABCDEF";
/*
* 将字符串编码成16进制数字,适用于所有字符(包括中文)
*/
public static String encode(String str)
{
// 根据默认编码获取字节数组
byte[] bytes=str.getBytes();
StringBuilder sb=new StringBuilder(bytes.length*2);
// 将字节数组中每个字节拆解成2位16进制整数
for(int i=0;i<bytes.length;i++)
{
sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
}
return sb.toString();
}

/*
* 将16进制数字解码成字符串,适用于所有字符(包括