2013-02-20 3 views
5

Учитывая следующую строку:Как преобразовать большую строку в целое число в java?

3132333435363738396162636465666768696a6b6c6d6e6f70 

я преобразовал строку в шестнадцатеричном, и теперь я хочу, чтобы файл записать его в виде шестнадцатеричного не строк. Я попытался преобразовать его в int, но Integer.parseInt конвертирует только до 4, и если выйдет за рамки этого, это уже даст ошибку.

+7

Что это нужно делать с качелей? –

ответ

1

Используйте BigInteger, один из конструкторов принимает радиус.

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

Вы пробовали BigInteger constructor taking a string and a radix?

BigInteger value = new BigInteger(hex, 16); 

Пример кода:

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... 
    } 
} 

Выход:

308808885829455478403317837970537433512288994552567292653424 
+0

Мне нужно записать его как есть. – user2090151

+0

@ user2090151: Я понятия не имею, что вы подразумеваете под этим. Это число - нет такой вещи, как «как есть». Вам нужно каким-то образом представить его - как десятичное число, так и другое. Вы спросили, как разобрать его как число - я показал вам, как это сделать. Если вы просто хотите разобрать шестнадцатеричную строку в массив * byte *, это совсем другое дело, и вы должны были спросить, с чего начать. (Не задавайте новый вопрос - есть * lots * вопросов шестнадцатеричного разбора в Stack Overflow.) –

1

Try:

new BigInteger("3132333435363738396162636465666768696a6b6c6d6e6f70", 16) 
Смежные вопросы