2012-08-11 51 views
13

Tôi có một số BigInteger và tôi cần chuyển đổi nó thành Hệ thập lục phân. Tôi đã thử các cách sau:Cách chuyển đổi giá trị BigInteger thành Hex trong 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); 

Nhưng điều này không cho tôi giá trị chính xác sau khi chuyển đổi. Ai có thể giúp.

+2

là gì giá trị mà bạn nhận được? Bạn mong đợi giá trị nào? –

+0

Tôi mong đợi đầu ra chứa các chữ cái. Nhưng đầu ra luôn luôn là số. –

+0

Giá trị thập phân nào bạn đang thử? –

Trả lời

10

Bạn nên thay đổi

BigInteger toHex=new BigInteger(dec,16); 

để

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

Hiện nay bạn hỏi người dùng cho một tháng mười hai giá trị, và sau đó giải thích các đầu vào như một hex-giá trị. (. Đó là lý do đầu ra là giống với đầu vào)

+0

cần cải thiện tốc độ nhập của tôi –

+0

Ok. Nhưng sự khác nhau giữa việc viết: 'String s = toHex.toString (16);' và 'String s = toHex.toString();' ?? –

+0

'toString()' sẽ trả về một đại diện cơ sở-10 của số, trong khi 'toString (16)' sẽ trả về một đại diện cơ sở-16 của số. – aioobe

3

Tôi nghĩ rằng tôi thấy vấn đề:

BigInteger toHex=new BigInteger(dec,16); 

Bạn đang chuyển đổi số bạn gõ vào một số nguyên sử dụng cơ sở 16. Cố gắng sử dụng 10 đây.

1

sử dụng

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); 
Các vấn đề liên quan