Java 16进制转10进制字符串
在Java中,将16进制字符串转换为10进制字符串有几种方法,以下是几种常见的实现方式:

方法1:使用Integer类
public class HexToDecimal {
public static void main(String[] args) {
String hexString = "1A3F"; // 示例16进制字符串
// 将16进制字符串转换为10进制整数
int decimalValue = Integer.parseInt(hexString, 16);
// 将10进制整数转换为字符串
String decimalString = String.valueOf(decimalValue);
System.out.println("16进制: " + hexString);
System.out.println("10进制字符串: " + decimalString);
}
}
方法2:使用Long类(适用于更大的16进制数)
public class HexToDecimal {
public static void main(String[] args) {
String hexString = "FFFFFFFF"; // 示例16进制字符串
// 使用Long处理更大的16进制数
long decimalValue = Long.parseLong(hexString, 16);
String decimalString = String.valueOf(decimalValue);
System.out.println("16进制: " + hexString);
System.out.println("10进制字符串: " + decimalString);
}
}
方法3:处理带前缀的16进制字符串
如果16进制字符串带有"0x"或"0X"前缀:
public class HexToDecimal {
public static void main(String[] args) {
String hexString = "0x1A3F"; // 带前缀的16进制字符串
// 去除前缀
String cleanHex = hexString.replaceFirst("0[xX]", "");
int decimalValue = Integer.parseInt(cleanHex, 16);
String decimalString = String.valueOf(decimalValue);
System.out.println("16进制: " + hexString);
System.out.println("10进制字符串: " + decimalString);
}
}
方法4:处理负数16进制
如果16进制字符串表示负数(以补码形式):
public class HexToDecimal {
public static void main(String[] args) {
String hexString = "FFFFFFFF"; // 补码表示的负数
long longValue = Long.parseLong(hexString, 16);
// 如果最高位是1,表示负数
if (longValue > Integer.MAX_VALUE) {
longValue = ~(longValue ^ 0xFFFFFFFFL);
}
String decimalString = String.valueOf(longValue);
System.out.println("16进制: " + hexString);
System.out.println("10进制字符串: " + decimalString);
}
}
注意事项
Integer.parseInt()只能处理32位整数(8位16进制字符)Long.parseLong()可以处理64位整数(16位16进制字符)- 如果16进制字符串包含无效字符,会抛出
NumberFormatException - 对于非常大的16进制数,可能需要使用
BigInteger类
使用BigInteger处理超大16进制数
import java.math.BigInteger;
public class HexToDecimal {
public static void main(String[] args) {
String hexString = "1234567890ABCDEF1234567890ABCDEF"; // 超大16进制数
BigInteger bigIntValue = new BigInteger(hexString, 16);
String decimalString = bigIntValue.toString();
System.out.println("16进制: " + hexString);
System.out.println("10进制字符串: " + decimalString);
}
}
方法可以根据你的具体需求选择使用。

