Maison >développement back-end >Tutoriel Python >Comment convertir des entiers en chaînes dans n'importe quelle base en 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 :
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!