Votre meilleur moyen serait d'utiliser une bibliothèque de calcul de grands nombres.
L'un des meilleurs là-bas est le GNU Multiple Precision Arithmetic Library
Exemple d'une fonction utile pour résoudre votre problème ::
Function: int mpz_set_str (mpz_t rop, const char *str, int base)
Définissez la valeur de ROP de str, un caractère nul chaîne C terminée dans la base base. L'espace blanc est autorisé dans la chaîne et est simplement ignoré.
La base peut varier de 2 à 62, ou si la base est 0, alors les premiers caractères sont utilisés : 0x et 0X pour hexadécimal, 0b et 0B pour binaire, 0 pour octal, décimal ou autrement.
Pour les bases jusqu'à 36, le cas est ignoré; les lettres majuscules et minuscules ont la même valeur. Pour les bases 37 à 62, les lettres majuscules représentent les 10,35 habituelles tandis que les lettres minuscules représentent 36,61. Cette fonction renvoie 0 si la chaîne entière est un nombre valide dans la base baseSinon, il renvoie -1.
Documentation: https://gmplib.org/manual/Assigning-Integers.html#Assigning-Integers
Étant donné qu'un tel nombre ne tient pas « réguliers » types entiers, vous devez soit réimplémenter les opérations que vous vous avez besoin, ou utilisez un bibliothèque bignum. –