2013-04-16 39 views
-1

我想分配一個二進制值mpz_class對象如何分配一個二進制值mpz_class對象

我有一個二進制數10011101111001111100010111000011111010010.

我想將其分配給值對象,即(mpz_class值)

感謝

+0

也許你在談論GMP庫?然後請說出來,併發布一些代碼。 – john

+1

你需要描述你的二進制數的**格式**而不是它的值。例如,它是一個字符串?它是字節嗎?這是話嗎?它是小端還是大端?如果你只發布一些代碼**,你可以做所有這些。向我們展示包含您的二進制數字的變量,向我們展示您想要分配給它的變量。 – john

+0

是的,我只是談論GMP庫只抱歉..我已經嘗試了下面的代碼,但值變量的值,當我使用gmp_printf打印出來的東西不同,所以我想我應該嘗試通過分配二進制值,所以計算出二進制值1356396726226和我想分配,但無法做到這一點..所以請幫助我unsigned long int intValue = 1356396726226; mpz_class temp; mp1_init2(value.get_mpz_t(),125); mpz_set_ui(value.get_mpz_t(),intValue); – user1574173

回答

0

這裏有一種方法,無論是你需要我不能說,因爲你還沒有描述你的問題非常好

什麼
mpz_class value("1356396726226", 10); 

這裏的另一種方式

mpz_class value("10011101111001111100010111000011111010010", 2); 

兩個例子使用mpz_class構造函數的字符串。也許這就是你要找的。

0

我寫這篇文章的目的是希望找到解決方案的人有更好的選擇來實現所描述的功能。

的GMP提供的MPZ結構導出和導入成二進制的功能以及他們是:

mpz_import(mpz_t rop, size_t count, int order, size_t size, int endian, size_t nails, const void *op) 
mpz_export(void *rop, size_t *countp, int order, size_t size, int endian, size_t nails, const mpz_t op) 

他們在Integer Import and Export更好地描述。 通常,使用mpz_export命令導出mpz_t結構,它將以W | W | W | W | W的格式輸出二進制數組,其中W是您指定爲Word的二進制字節組。命令參數指定二進制文字的字節順序,endian param指定W(二進制字節組)內的字節順序。

因此,在上述情況下,如果我們有一個數字的二進制表示在

const char num[100]; 
// assuming some initialization of num from may be inbound network packet? 

我們可以通過

mpz_t res; mpz_init(res); 
mpz_import(res, 100, -1, 1, -1, 0, num); 

創建使用二進制mpz_t假設我們是在小字節字的大小爲1字節。

相關問題