十进制转十六进制
/**
* 十进制数转十六进制数,不够指定位数就在前面补零。超过位数不截取
* @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
十进制与十六进制转换技巧
本文详细介绍了如何将十进制数转换为十六进制数,并提供了不足位数补零的方法。同时,也讲解了如何将十六进制数转换回十进制数,包括当位数不足时的补零策略以及是否允许超出指定长度的选项。
331

被折叠的 条评论
为什么被折叠?



