2016-07-24 1 views
0

J'utilise mpz_t pour les grands nombres. J'ai besoin de convertir le mpz_t en représentation binaire. J'ai essayé d'utiliser le mpz_export, mais le tableau retourné contient seulement 0s.Convertir mpz_t en représentation binaire

mpz_t test; 
mpz_init(test); 
string myString = "173065661579367924163593258659639227443747684437943794002725938880375168921999825584315046"; 
    mpz_set_str(test,myString.c_str(),10); 
    int size = mpz_sizeinbase(test,2); 
    cout << "size is : "<< size<<endl; 
    byte *rop = new byte[size]; 
    mpz_export(rop,NULL,1,sizeof(rop),1,0,test); 

Répondre

2

En utilisant gmpxx (car il est TAged comme c++)

#include <iostream> 
#include <gmpxx.h> 

int main() 
{ 
    mpz_class a("123456789"); 
    std::cout << a.get_str(2) << std::endl; //base 2 representation 
} 

Il devrait y avoir une fonction équivalente dans GMP plaine

+1

https://gmplib.org/manual/Converting-Integers.html ' mpz_get_str (char *, int, mpz_t) ' – iksemyonov

+0

Bien qu'il semble que OP soit prêt à convertir en une séquence d'octets concaténés ensemble représenterait le nombre d'origine, pas dans une séquence de' char'. – iksemyonov