Conversion d'entiers en chaînes dans des bases arbitraires
Cette question recherche une méthode pour convertir des entiers en chaînes dans n'importe quelle base. Contrairement à la fonction int(str, base) de Python, qui permet la création d'entiers à partir de chaînes d'une base spécifiée, l'approche souhaitée est son inverse, dans laquelle les chaînes sont construites à partir d'entiers.
Une solution simple
Intuitivement, les gens avaient tendance à se concentrer sur la conversion vers de petites bases (par exemple, inférieures à la longueur de l'alphabet anglais). Cependant, la question exige une solution universelle applicable à toute base de 2 à l'infini.
Une solution simple est présentée ci-dessous :
def numberToBase(n, b): if n == 0: return [0] digits = [] while n: digits.append(int(n % b)) n //= b return digits[::-1]
Cette fonction prend un entier n et une base b comme saisit et renvoie une liste de chiffres représentant n en base b. Cela fonctionne en divisant itérativement n par b et en collectant les restes (c'est-à-dire les chiffres) dans une liste. La liste est ensuite inversée pour obtenir l'ordre correct des chiffres.
Par exemple, pour convertir 67854**15 - 102 en base 577 :
print(numberToBase(67854 ** 15 - 102, 577))
Sortie :
[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 être converti davantage en toute autre base souhaitée.
Clé Points
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!