2011-05-18 73 views
1

我有一個我得到Base64(64位編碼)字符串的場景。我的要求是將此字符串轉換爲gmp整數(mpz_t)。將Base64轉換爲GMP整數

但是,根據 GMP manual僅對於函數mpz_set_str(),「基數可能在2到62之間變化」。

是否有任何方法可以執行成功的轉換? 讓我感到震驚的一個想法是將Base64轉換爲二進制,然後使用基於2的mpz_set_str設置mpz_t變量。

幫助將非常感激。謝謝。

+3

[Base64](http://en.wikipedia.org/wiki/Base64)與基數64中的數字不同。 – lhf 2011-05-18 12:12:30

+0

@lhf:應用base64解碼將其轉換爲二進制或字節數組? – Maverickgugu 2011-05-18 13:00:01

回答

5

GMP鹼基與base64編碼不同。你在正確的軌道上 - 應用base64解碼,然後在結果上使用mpz_import

+0

@crazyscot:謝謝,另一個疑問,在使用base64_Decode之後,我們將其轉換爲二進制形式。 mpz_import的結果與基地爲2的mpz_set_str的結果有什麼不同? – Maverickgugu 2011-05-18 12:55:36

+1

mpz_set_set從可打印的字符串中讀取,在基數2中它可能只包含「0」和「1」字符。 mpz_import採用二進制輸入(字節數組),但必須確保正確設置其參數的格式。 – crazyscot 2011-05-18 13:03:58

+0

@crazyscot:所以我猜base64通常會將編碼轉換爲字節數組? – Maverickgugu 2011-05-18 13:08:09