将整数转换为任何基数的字符串
Python 提供了方便的功能,可以通过 int() 函数使用指定基数将字符串转换为整数,但是将整数转换回不同基数的字符串会带来挑战。本文旨在解决此任务并提供克服内置函数中的限制的通用解决方案。
函数 int2base()
为了解决这个问题,提出了一个函数 int2base(num, base),满足以下要求:
一个令人惊讶的简单解决方案
与预期相反,一个简单的解决方案存在:
def numberToBase(n, b): if n == 0: return [0] digits = [] while n: digits.append(int(n % b)) n //= b return digits[::-1]
此解决方案适用于从 2 到无穷大的任何基数。如果您需要将大整数转换为基数 577,例如:
numberToBase(67854 ** 15 - 102, 577)
它正确返回:
[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]
然后可以根据需要将此结果轻松转换为任何其他基数.
理解解决方案
关键解决方案在于理解不同基数的数字表示。例如,在基数 10 中,数字 123 表示 (1 10^2) (2 10^1) (3 * 10^0)。类似地,在任意基数 b 中,数字可以表示为 b 的幂之和。
numberToBase() 函数的工作原理是迭代地将输入 n 除以 b 并收集余数。这些余数以相反的顺序表示以 b 为基数的数字。
以上是如何在 Python 中将整数转换为任意基数的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!