2012-08-11 75 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); 
相關問題