2016-07-24 2 views
0

Я использую mpz_t для больших чисел. Мне нужно преобразовать mpz_t в двоичное представление. Я попытался использовать mpz_export, но возвращаемый массив содержит только 0s.Преобразование mpz_t в двоичное представление

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); 

ответ

2

Использование gmpxx (так как он TAged в c++)

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

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

Там должна быть эквивалентна функции в простом GMP

+1

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

+0

Хотя похоже, что OP хочет преобразовать в последовательность байтов, которые объединены вместе, будет представлять исходное число, а не в последовательность символов' char'. – iksemyonov

Смежные вопросы