Je travaille avec des nombres avec des dizaines de milliers de chiffres en python. Le type long fonctionne magnifiquement en effectuant des calculs sur ces nombres, mais je suis incapable d'accéder aux chiffres les plus élevés de ces nombres d'une manière suffisamment rapide. Notez que je ne sais pas exactement combien de chiffres le numéro contient. Les "chiffres les plus élevés" se réfèrent aux chiffres à l'endroit le plus significatif, les chiffres les plus bas peuvent être accédés rapidement en utilisant le module.Accéder aux chiffres les plus élevés de grands nombres de Python long
Je peux penser à deux façons d'accéder à ces chiffres en python, mais ils sont tous deux trop lent pour mes fins. J'ai essayé de convertir en une chaîne et d'accéder aux chiffres grâce à des méthodes de tableau, mais les conversions de type sont lentes lorsque vous avez plus de 10 000 chiffres. Sinon, je pourrais simplement masquer les bits et tronquer, mais cela nécessite que je sache combien de chiffres sont dans le long. Trouver le nombre de chiffres dans le long nécessiterait une boucle sur un compteur et un test de masque, ce sera sûrement plus lent que la conversion de chaîne.
From the description here Il semble que le type long contienne en fait un tableau bignum. Y at-il un moyen d'accéder à la structure de données sous-jacente qui stocke le long, ou peut-être vérifier combien de chiffres le long a à partir du type de base?
Si les gens sont intéressés, je peux donner un exemple avec des repères.
Si vous connaissez l'ordre de grandeur, vous pouvez simplement diviser par '10 ** (orderMag-1)'. Une division entière vous donnera le chiffre le plus significatif – inspectorG4dget
Le nombre de chiffres n'est pas connu. –
Peut-être y accéder en C en utilisant [PyLong_AsVoidPtr] (http://docs.python.org/2/c-api/long.html # PyLong_AsVoidPtr), fil intéressant http://www.gossamer-threads.com/lists/python/dev/551423?do=post_view_threaded – soulseekah