19

我有一个 BigInteger 数字,我需要将其转换为十六进制。我尝试了以下方法:

    String dec = null;
    System.out.println("Enter the value in Dec: ");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    dec = br.readLine();  
    BigInteger toHex=new BigInteger(dec,16);
    String s=toHex.toString(16);
    System.out.println("The value in Hex is: "+ s);

但这并没有给我转换后的正确值。任何人都可以帮忙。

4

4 回答 4

17

你应该改变

BigInteger toHex=new BigInteger(dec,16);

BigInteger toHex=new BigInteger(dec,10);
                                     ^

目前,您向用户询问十进制值,然后将输入解释为十六进制值。(这就是输出与输入相同的原因。)

于 2012-08-11T22:24:56.907 回答
5
String hexValue = "FFF";
    System.out.println("HexaDecimal Value :"+hexValue);
    BigInteger bigint = new BigInteger(hexValue ,16);
    System.out.println("Big Int Value :"+bigint);
    BigInteger s = new BigInteger("4");
    bigint = bigint.add(s);
    System.out.println("After Addition :"+bigint);
    String hexNewValue = bigint.toString(16);
    System.out.println("HexaDecimal Value after Addition :"+hexNewValue);
于 2013-07-19T11:08:59.390 回答
4

我想我看到了问题:

BigInteger toHex=new BigInteger(dec,16);

您正在使用基数 16 将您键入的数字转换为整数。尝试10在此处使用。

于 2012-08-11T22:25:04.400 回答
2

采用

 BigInteger toHex=new BigInteger(dec,10);
于 2012-08-11T22:25:56.863 回答