十进制转十六进制
/**
* 十进制数转十六进制数,不够指定位数就在前面补零。超过位数不截取
* @param num 十进制数
* @param digits 位数,转成多少位的十六进制数
* @return
*/
public static String decimal2Hex(Integer num,int digits){
return String.format("%0"+digits+"x",num);
}
测试:
@Test
public void decimal2Hex(){
String result = StringUtil.decimal2Hex(11,4);
System.out.println(result);
result = StringUtil.decimal2Hex(0x11,4);
System.out.println(result);
}
输出:
000b
0011
十六进制转十进制
/**
* 十六进制数转十进制数,不够指定位数就在前面补零。超过位数不截取
* @param hexStr
* @param digits 位数,转成多少位的十进制数
* @return
*/
public static String hex2Decimal(String hexStr, int digits){
return String.format("%0"+digits+"d",new BigInteger(hexStr, 16),true);
}
/**
* 十六进制数转十进制数,不够指定位数就在前面补零。
* 如果不允许超出位数,则返回0
* @param hexStr
* @param digits
* @param allowExceedDigits 为false且超出长度将返回指定位数的0
* @return
*/
public static String hex2Decimal(String hexStr, int digits, boolean allowExceedDigits){
String result = String.format("%0"+digits+"d",new BigInteger(hexStr, 16));
if (!allowExceedDigits&&result.length()>digits){
return String.format("%0"+digits+"d",0);
}
return result;
}
测试:
@Test
public void hex2Decimal(){
String result = StringUtil.hex2Decimal("1abcd",8);
System.out.println(result);
result = StringUtil.hex2Decimal("1abcd",4,true);
System.out.println(result);
result = StringUtil.hex2Decimal("1abcd",4,false);
System.out.println(result);
}
输出
00109517
109517
0000