2016-07-24 53 views
0

我对大数使用mpz_t。我需要将mpz_t转换为二进制表示。我试图使用mpz_export,但返回的数组只包含0。将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(因为它的功能标签作为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

相关问题