2013-02-20 75 views
5

考虑以下字符串:如何将大型字符串转换为java中的整数?

3132333435363738396162636465666768696a6b6c6d6e6f70 

我转换字符串为十六进制,现在我想文件写为十六进制不是一个字符串。我试图将其转换为int,但Integer.parseInt只能转换为4,如果超出它,它会给出错误。

+7

这是什么都与挥杆呢? – 2013-02-20 07:44:02

回答

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 2013-02-20 07:57:01

+0

@ user2090151:我不知道你是什么意思。这是一个数字 - 没有“按原样”这样的事情。你需要以某种方式表示它 - 作为十进制数字或其他。你问如何解析它作为一个数字 - 我已经告诉你如何做到这一点。如果你只是想把十六进制字符串解析成一个* byte *数组,那完全是另一回事了,你应该先问这个问题。 (不要问一个新的问题 - Stack Overflow上有十六进制的解析问题。 – 2013-02-20 08:08:24

1

尝试:

new BigInteger("3132333435363738396162636465666768696a6b6c6d6e6f70", 16)