2013-02-20 54 views
5

Với chuỗi sau:Làm thế nào tôi có thể chuyển đổi một chuỗi lớn thành số nguyên trong java?

3132333435363738396162636465666768696a6b6c6d6e6f70 

tôi chuyển đổi chuỗi để hex và bây giờ tôi muốn nộp viết nó như hex không phải là một chuỗi. Tôi đã thử chuyển đổi nó thành int nhưng Integer.parseInt chuyển đổi tối đa 4 chỉ và nếu vượt ra ngoài nó sẽ đưa ra lỗi rồi.

+7

gì này có liên quan gì với đu? –

Trả lời

1

Sử dụng BigInteger, một trong các nhà thầu có một cơ số.

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

Bạn đã thử BigInteger constructor taking a string and a radix chưa?

BigInteger value = new BigInteger(hex, 16); 

Mẫu mã:

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

Output:

308808885829455478403317837970537433512288994552567292653424 
+0

tôi cần phải ghi nó như là. – user2090151

+0

@ user2090151: Tôi không biết ý bạn là gì. Đó là một con số - không có thứ gì như "nguyên trạng". Bạn cần phải đại diện cho nó bằng cách nào đó - như một số thập phân hoặc bất cứ điều gì. Bạn hỏi làm thế nào để phân tích nó như là một số - Tôi đã chỉ cho bạn cách để làm điều đó. Nếu bạn chỉ muốn phân tích cú pháp chuỗi hex thành một mảng * byte *, đó là một vấn đề hoàn toàn khác và bạn nên yêu cầu bắt đầu bằng. (Đừng hỏi một câu hỏi mới - có * rất nhiều * câu hỏi phân tích cú pháp hex trên Stack Overflow.) –

1

Hãy thử:

new BigInteger("3132333435363738396162636465666768696a6b6c6d6e6f70", 16) 
Các vấn đề liên quan