杰瑞科技汇

Java 16进制转10进制字符串怎么转?

Java 16进制转10进制字符串

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

Java 16进制转10进制字符串怎么转?-图1
(图片来源网络,侵删)

方法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);
    }
}

注意事项

  1. Integer.parseInt()只能处理32位整数(8位16进制字符)
  2. Long.parseLong()可以处理64位整数(16位16进制字符)
  3. 如果16进制字符串包含无效字符,会抛出NumberFormatException
  4. 对于非常大的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);
    }
}

方法可以根据你的具体需求选择使用。

Java 16进制转10进制字符串怎么转?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇