2012-08-11 45 views
13

我有一个BigInteger号码,我需要将其转换为十六进制。我尝试了以下方法:如何的BigInteger值转换为十六进制在Java中

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); 

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

+2

的就是你得到的价值?你期望什么价值? – 2012-08-11 22:22:22

+0

我期望输出包含字母。但输出始终是数字。 – 2012-08-11 22:23:34

+0

你用什么十进制值? – 2012-08-11 22:24:04

回答

10

你应该改变

BigInteger toHex=new BigInteger(dec,16); 

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

目前你问用户的癸值,然后解释输入为十六进制值。 (这就是为什么输出与输入相同)

+0

需要提高我的打字速度 – 2012-08-11 22:26:44

+0

确定。但是什么写的区别是:'的String = toHex.toString(16);'和'的String = toHex.toString();'?? – 2012-08-11 22:27:32

+0

'的toString()'将返回数的底数为10的表示中,同时'的toString(16)'将返回的数量的基础-16表示。 – aioobe 2012-08-11 22:28:58

3

我想我看到的问题:

BigInteger toHex=new BigInteger(dec,16); 

您在使用使用10这里基部16试着键入的数字转换为整数。

1

使用

BigInteger toHex=new BigInteger(dec,10); 
1
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); 
相关问题