2011-05-18 10 views
1

J'ai un scénario dans lequel je reçois une chaîne Base64 (encodée en 64 bits). Mon exigence est de convertir cette chaîne en gmp entier (mpz_t).Conversion de Base64 en entier GMP

Mais selon GMP manual seulement "La base peut varier de 2 à 62" pour la fonction mpz_set_str().

Y a-t-il une approche que je peux suivre pour effectuer une conversion réussie? Une idée qui m'a frappé était de convertir le Base64 en binaire, puis définir la variable mpz_t en utilisant mpz_set_str avec la base 2.

Aide serait vraiment appréciée. Merci.

+3

[Base64] (http://en.wikipedia.org/wiki/Base64) n'est pas la même chose qu'un nombre dans la base 64. – lhf

+0

@lhf: L'application d'un décodeur base64 le convertit en un tableau binaire ou un tableau d'octets? – Maverickgugu

Répondre

5

Les bases GMP ne sont pas la même chose que le codage base64. Vous êtes sur la bonne voie - appliquez le décodage base64, puis utilisez mpz_import sur le résultat.

+0

@crazyscot: Merci, un autre doute, après l'utilisation du base64_Decode, nous le convertissons en un formulaire binaire. Comment le résultat de mpz_import diffère-t-il de celui de mpz_set_str avec la base comme 2? – Maverickgugu

+1

mpz_set_set lit à partir d'une chaîne imprimable, dans la base 2 il ne peut contenir que des caractères "0" et "1". mpz_import prend une entrée binaire (byte array), bien que vous devez vous assurer de régler correctement ses paramètres pour le format du numéro. – crazyscot

+0

@crazyscot: Donc je devine que base64 convertit généralement le codage en un tableau d'octets? – Maverickgugu