Bonjour,
Dans le cadre d'un projet perso, je m'amuse à manipuler de très grands nombres (jusqu'à 300 chiffres) en python.
Magiquement, aucun soucis niveau python, qui les gère nativement.
Le problème se pose au stockage.
Je cherche un moyen efficace (aussi bien en termes de temps de traitement que de place) de stocker mes très grands nombres.
Solutions envisagées :
- fichier texte classique : le hic ici est le poid du fichier. Traiter des très grands nombres comme des chaines de caractère est une perte de place évidente ...
- fichier binaire : Avec le module struct, cela me permettrai en théorie (il me semble) d' avoir le "meilleur rendement" en terme d'espace. cependant problème : Il semblerai que ce module se base sur des formats types C; Et est donc limité en terme de taille d'int, long voir longlong.
D'où ma question, connaissez vous un moyen efficace de stocker des int dynamique tel que ceux utilisés par Python ?
À noter : Les nombres que je cherche à stocker n'ont pas de taille fixe.
Piste en travaux actuellement :
->Créer mon propre format binaire de stockage d'int :
Si je code un chiffre sur 4 bits, cela me donne 16 valeurs possibles il me reste donc 4 valeurs pour coder des séparateurs et autres ...
donc 1 octet = 2 chiffres.
Sachant que mes nombres employés ont entre 1 et 300 chiffres => je m'en sort à 1o-150o
c'est mieux que de considérer mes entiers comme des chars, mais ça reste plus que d'écrire directement le nombre en binaire :
10^300 correspondant grosso modo à 128o sachant qu'il manque le séparateur dans ce cas.
Partager