首页 >后端开发 >Python教程 >如何在 Python 中将整数转换为任意基数的字符串?

如何在 Python 中将整数转换为任意基数的字符串?

Barbara Streisand
Barbara Streisand原创
2024-12-06 10:28:11410浏览

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

将整数转换为任何基数的字符串

Python 提供了方便的功能,可以通过 int() 函数使用指定基数将字符串转换为整数,但是将整数转换回不同基数的字符串会带来挑战。本文旨在解决此任务并提供克服内置函数中的限制的通用解决方案。

函数 int2base()

为了解决这个问题,提出了一个函数 int2base(num, base),满足以下要求:

  • 将整数 x 转换为 a以 b 为基数的字符串 str: int(str, b) == x
  • 支持 int() 函数接受的任何有效 x 和 b

一个令人惊讶的简单解决方案

与预期相反,一个简单的解决方案存在:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn