2013-02-20 19 views
5

Biorąc pod uwagę następujący ciąg:Jak przekonwertować duży ciąg na liczbę całkowitą w java?

3132333435363738396162636465666768696a6b6c6d6e6f70 

konwertowane ciąg hex i teraz chcę napisać go jako plik hex nie sznurku. Próbowałem przekonwertować go do int, ale Integer.parseInt konwertuje tylko do 4, a jeśli go przekroczy, to dałby błąd już.

+7

Co to ma do czynienia z parą? –

Odpowiedz

1

Użyj BigInteger, jeden z konstruktorów przyjmuje podstawkę.

BigInteger value = new BigInteger(hexString, 16); 
8

Czy próbowałeś BigInteger constructor taking a string and a radix?

BigInteger value = new BigInteger(hex, 16); 

Przykładowy kod:

import java.math.BigInteger; 

public class Test { 

    public static void main(String[] args) { 
     String hex = "3132333435363738396162636465666768696a6b6c6d6e6f70"; 
     BigInteger number = new BigInteger(hex , 16); 
     System.out.println(number); // As decimal... 
    } 
} 

wyjściowa:

308808885829455478403317837970537433512288994552567292653424 
+0

Muszę go zapisać i zapisać. – user2090151

+0

@ user2090151: Nie mam pojęcia, co przez to rozumiesz. To jest liczba - nie ma czegoś takiego jak "jak jest". Musisz go w jakiś sposób przedstawić - jako liczbę dziesiętną lub cokolwiek innego. Zapytałeś, jak przeanalizować go jako numer - pokazałem ci, jak to zrobić. Jeśli chcesz tylko sparsować ciąg szesnastkowy w tablicy * bajtów *, jest to zupełnie inna sprawa i powinieneś był zapytać, od czego zacząć. (Nie pytaj o nowe pytanie - jest tam * dużo * pytań analizujących hex na Stack Overflow.) –

1

Spróbuj:

new BigInteger("3132333435363738396162636465666768696a6b6c6d6e6f70", 16) 
Powiązane problemy