2013-02-20 14 views
5

şu dizeyi göz önüne alındığında:Büyük bir dizeyi java'daki tamsayıya nasıl dönüştürebilirim?

3132333435363738396162636465666768696a6b6c6d6e6f70 

Ben hex dize dönüştürülür ve şimdi bir dize değil onaltılık olarak yazmak sonuçlandırmak istiyorum. Int'ye çevirmeyi denedim ancak Integer.parseInt sadece 4'e kadar dönüştürür ve eğer bunun ötesine geçerse hata verirdi.

+7

Bunun salıncak ile ilgisi nedir? –

cevap

1

BigInteger kullanın, yapıcılardan biri bir radix alır.

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

BigInteger constructor taking a string and a radix'u denediniz mi?

BigInteger value = new BigInteger(hex, 16); 

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

Çıktı:

308808885829455478403317837970537433512288994552567292653424 
+0

Dosyayı olduğu gibi yazmalıyım. – user2090151

+0

@ user2090151: Bununla ne demek istediğinin hiçbir fikrim yok. Bu bir sayı - "olduğu gibi" diye bir şey yoktur. Bir şekilde onu temsil etmelisin - ondalık sayı ya da her neyse. Bir sayı olarak nasıl ayrıştırılacağını sordunuz - bunu nasıl yapacağınızı gösterdim. Sadece altıgen dizeyi bir * bayt * dizisine ayırmak istiyorsanız, bu tamamen farklı bir konudur ve bununla birlikte başlamasını istemelisiniz. (Yeni bir soru sorma - Yığın Taşması konusunda çok fazla on altı ayrıştırma sorusu var.) –

1

Dene:

new BigInteger("3132333435363738396162636465666768696a6b6c6d6e6f70", 16)