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

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

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 10:28:11405parcourir

How to Convert Integers to Strings in Any Base in Python?

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

Python fournit une fonctionnalité pratique pour convertir des chaînes en entiers en utilisant une base spécifiée via la fonction int() , mais la reconversion d'entiers en chaînes dans différentes bases pose un défi. Cet article vise à résoudre cette tâche et à fournir une solution générale qui surmonte les limitations trouvées dans les fonctions intégrées.

La fonction int2base()

Pour résoudre le problème, une fonction int2base(num, base) est proposée, répondant aux exigences suivantes :

  • Convertit un entier x en une chaîne str en base b: int(str, b) == x
  • Prend en charge tout x et b valide accepté par la fonction int()

Une solution étonnamment simple

Contrairement aux attentes, une solution simple existe :

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

Cette solution fonctionne pour n'importe quelle base du 2 à l'infini. Si vous devez convertir un grand entier en base 577, par exemple :

numberToBase(67854 ** 15 - 102, 577)

Il renvoie correctement :

[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]

Ce résultat peut ensuite être facilement converti en n'importe quelle autre base selon les besoins .

Comprendre la solution

La clé de cette solution réside dans la compréhension de la représentation de nombres dans différentes bases. Par exemple, en base 10, le nombre 123 représente (1 10^2) (2 10^1) (3 * 10^0). De même, dans une base arbitraire b, un nombre peut être représenté comme une somme de puissances de b.

La fonction numberToBase() fonctionne en divisant de manière itérative l'entrée n par b et en collectant les restes. Ces restes, dans l'ordre inverse, représentent les chiffres du nombre en base b.

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