2010-12-11 16 views

Antwort

1

Erwarten Sie, dass die Zahl in hex steht, was 0x normalerweise bedeutet?

Um einen einfachen String in ein BigInteger

BigInteger bi = new BigInteger(string); 
String text = bi.toString(); 

wiederum eine Hexadezimalzahl als Text in ein BigInteger und zurück zu drehen.

if(string.startsWith("0x")) { 
    BigInteger bi = new BigInteger(string.sustring(2),16); 
    String text = "0x" + bi.toString(16); 
} 
+0

Nicht sicher, warum es eine Down-Vote gibt, da das zweite Beispiel das OP nach einer Ausgabe fragt, @Carlos ist das einzige, das dies tut. (Er später gepostet) –

+0

Dies berücksichtigt auch keine negativen Werte – TheRealNeo

+0

@TheRealNeo können Sie ein Beispiel für einen negativen hexadezimalen Wert Sie meinen? –

0
BigInteger bigInt = new BigInteger("9999999999999999", 16);  
12

können Sie die Basis in BigInteger Konstruktor angeben.

BigInteger bi = new BigInteger("9999999999999999", 16); 
String s = bi.toString(16); 
2

Wenn der String immer mit "0x" beginnt und hexadezimal:

String str = "0x9999999999999999"; 
    BigInteger number = new BigInteger(str.substring(2)); 

besser, überprüfen, ob es mit "0x" beginnt

String str = "0x9999999999999999"; 
    BigInteger number; 
    if (str.startsWith("0x")) { 
     number = new BigInteger(str.substring(2), 16); 
    } else { 
     // Error handling: throw NumberFormatException or something similar 
     // or try as decimal: number = new BigInteger(str); 
    } 

Zur Ausgabe es als hexadezimal oder in eine hexadezimale Darstellung umwandeln:

System.out.printf("0x%x%n", number); 
    // or 
    String hex = String.format("0x%x", number); 
+0

Achten Sie hier auf negative Werte! – TheRealNeo

Verwandte Themen