Python 允许通过
从给定基数的字符串轻松创建整数int(str, base).
我想执行相反的操作:从整数创建字符串,
即我想要一些函数 int2base(num, base)
,例如:
int(int2base(x, b), b) == x
函数名/参数顺序不重要。
对于 int()
将接受的任意数字 x
和基 b
。
这是一个易于编写的函数:实际上它比在这个问题中描述它更容易。但是,我觉得我一定错过了什么。
我知道函数 bin
、oct
、hex
,但由于以下几个原因我不能使用它们:
这些函数在旧版本的 Python 上不可用,我需要与 (2.2) 兼容
我想要一个通用的解决方案,可以针对不同的碱基以相同的方式调用
我想允许 2、8、16 以外的碱基
相关
最佳答案
令人惊讶的是,人们只给出了转换为小碱基(小于英文字母长度)的解决方案。没有尝试给出将任意基数从 2 转换为无穷大的解决方案。
所以这里有一个 super 简单的解决方案:
def numberToBase(n, b):
if n == 0:
return [0]
digits = []
while n:
digits.append(int(n % b))
n //= b
return digits[::-1]
所以如果你需要将一些超大数字转换为基本的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 的数字转换为基数 577。
- 这是由于缺乏对某些基数中的数字含义的理解。
- 我鼓励您思考一下,为什么您的方法中的 base 仅适用于 n <= 36。完成后,很明显为什么我的函数返回一个列表并具有它所具有的签名。
关于python - 如何将整数转换为任何基数的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2267362/