Maison >développement back-end >Tutoriel Python >Comment puis-je convertir efficacement des entiers en chaînes dans n'importe quelle base en Python ?

Comment puis-je convertir efficacement des entiers en chaînes dans n'importe quelle base en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-05 06:10:18361parcourir

How Can I Efficiently Convert Integers to Strings in Any Base in Python?

Conversion d'entiers en chaînes dans n'importe quelle base

En Python, la fonction int() crée sans effort un entier à partir d'une chaîne avec une base spécifiée. Cependant, l’opération inverse de conversion d’un entier en chaîne peut être délicate. Notre objectif est de développer une solution générale, int2base(num, base), qui remplit la condition :

int(int2base(x, b), b) == x

Voici une solution étonnamment simple qui gère des bases arbitraires :

def numberToBase(n, b):
    if n == 0:
        return [0]
    digits = []
    while n:
        digits.append(int(n % b))
        n //= b
    return digits[::-1]

Cette fonction convertit un nombre n en base b et renvoie une liste de chiffres. Pour convertir un grand nombre en base 577, par exemple :

numberToBase(67854 ** 15 - 102, 577)

Cela vous donnera le résultat correct sous forme de liste :

[4, 473, 131, 96, 431, 285, 524, 486, 28, 23, 16, 82, 292, 538, 149, 25, 41, 483, 100, 517, 131, 28, 0, 435, 197, 264, 455]

Pourquoi cette solution fonctionne

La solution fournie démontre que parfois, des fonctions personnalisées sont nécessaires lorsque les fonctions intégrées ne disposent pas des fonctionnalités souhaitées. Ici, int2base() surmonte les limitations en :

  • Gérer des bases arbitraires de 2 à l'infini.
  • Renvoyer une liste de chiffres plutôt qu'une chaîne, car aucune fonction intégrée n'existe pour conversion directe de base vers n'importe quelle base arbitraire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn