因项目需求,这里的16转10进制采用的是一段byte[]数组中存放的16进制批量转换成10进制,如果只是少量16转10,则直接调用以下代码即可
long decNum = Long.parseLong("FFFF", 16);
// 输出结果为65535
工具类代码如下:
public class StringUtil {
/**
* 16进制转10进制
*
* @param bytes
* @return
*/
public static String bytes2hex03(byte[] bytes) {
final String HEX = "0123456789abcdef";
StringBuilder sb = new StringBuilder(bytes.length * 2);
for (byte b : bytes) {
sb.append(HEX.charAt((b >> 4) & 0x0f));
sb.append(HEX.charAt(b & 0x0f));
}
return sb.toString();
}
/**
* 10进制转16进制
*
* @param num
* @param totalLenght 需要的字符串总长度
* @return
*/
public static String toHex(int num, int totalLenght) {
String str = Integer.toHexString(num);
str = splicingZero(str, totalLenght);
return str;
}
public static String toHex(long num, int totalLenght) {
String str = Long.toHexString(num);
str = splicingZero(str, totalLenght);
return str;
}
/**
* 字符串前面补零操作
*
* @param str 字符串本体
* @param totalLenght 需要的字符串总长度
* @return
*/
public static String splicingZero(String str, int totalLenght) {
int strLenght = str.length();
String strReturn = str;
for (int i = 0; i < totalLenght - strLenght; i++) {
strReturn = "0" + strReturn;
}
return strReturn;
}
}