转载请注明出处:http://blog.csdn.net/u012532631/article/details/76083120
/**
* 数字转十六进制字符串
*
* @param d
* @return
* 测试 System.out.println(toHexStr(10));
* 结果 a
*/
public static String toHexStr(int d) {
return Integer.toHexString(d);
}
/**
* 数字转二进制字符串
*
* @param d
* @return
*
* 测试 System.out.println(toBinary(10));
* 结果 1010
*/
public static String toBinary(int d) {
return Integer.toBinaryString(d);
}
/**
* 十进制字符串ASCII码byte数组转换成十六进制字符串
*
* @param bytes
* @return
*
* 测试 System.out.println(decimalByteToHexStr("1234".getBytes()));
* 结果 31 32 33 34
*/
public static String decimalByteToHexStr(byte[] bytes) {
char[] hexArray = "0123456789ABCDEF".toCharArray();
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
StringBuffer sb = new StringBuffer();
// sb.append("[");
for (int k = 0; k < hexChars.length; k += 2) {
// sb.append(""+hexChars[k] + hexChars[k + 1] + ", ");
sb.append("" + hexChars[k] + hexChars[k + 1] + " ");
}
// sb.append("]");
return sb.toString();
}
/**
* 十六进制字符串转十进制数字
* @param d
* @return
* 测试 System.out.println(hexToDecimal("10"));
* 结果 16
*/
public static int hexToDecimal(String hex) {
return Integer.parseInt(hex, 16);
}
/**
* 十六进制字符串转二进制字符串
* @param d
* @return
* 测试 System.out.println(hexToBinaryStr("10"));
* 结果 10000
*/
public static String hexToBinaryStr(String hex) {
return Integer.toBinaryString(Integer.parseInt(hex, 16));
}
/**
* 十六进制字符串转十进制byte数组
* @param str
* @return
* 测试 System.out.println(Arrays.toString(HexStrToBytes("1010")));
* 结果 [16, 16]
*/
public static byte[] hexStrToBytes(String str)
{
//如果字符串长度不为偶数,则追加0
if(str.length() % 2 !=0){
str = "0"+str;
}
byte[] b = new byte[str.length() / 2];
byte c1, c2;
for (int y = 0, x = 0; x < str.length(); ++y, ++x)
{
c1 = (byte)str.charAt(x);
if (c1 > 0x60) c1 -= 0x57;
else if (c1 > 0x40) c1 -= 0x37;
else c1 -= 0x30;
c2 = (byte)str.charAt(++x);
if (c2 > 0x60) c2 -= 0x57;
else if (c2 > 0x40) c2 -= 0x37;
else c2 -= 0x30;
b[y] = (byte)((c1 << 4) + c2);
}
return b;
}
/**
* 二进制形式字符串的数组转十六进制字符串
* @param d
* @return
* 测试 System.out.println(binaryToHexStr("10000"));
* 结果 10
*/
public static String binaryToHexStr(String hex){
return Integer.toHexString(Integer.parseInt(hex, 2));
}
/**
* 二进制形式字符串转十进制数字
* @param d
* @return
* 测试 System.out.println(binaryToDecimal("10000"));
* 结果 16
*/
public static int binaryToDecimal(String hex){
return Integer.parseInt(hex, 2);
}