Python 允许通过以下方式从给定基数的字符串轻松创建整数
int(str, base).
我想执行相反的操作: 从整数创建字符串,即我想要一些函数 int2base(num, base)
,这样:
int(int2base(x, b), b) == x
函数名称/参数顺序并不重要。
对于任何数字 x
和 base b
int()
将接受。
这是一个易于编写的函数:实际上它比在这个问题中描述它更容易。但是,我觉得我必须遗漏一些东西。
我知道函数 bin
, oct
, hex
,但我不能使用它们有几个原因:
这些函数在旧版本的 Python 上不可用,我需要与 (2.2) 兼容
我想要一个通用的解决方案,可以针对不同的基础以相同的方式调用
我想允许 2、8、16 以外的基数
有关的
- int(string, base) 的 Python 优雅反函数
- 在 python 中使用递归将整数转换为 base-x 系统
- Python 中的 Base 62 转换
- 如何将整数转换为 Python 中最短的 url 安全字符串?
原文由 Mark Borgerding 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您需要与旧版本的 Python 兼容,您可以使用 gmpy (它确实包括一个快速、完全通用的 int-to-string 转换函数,并且可以为这样的旧版本构建——您可能需要尝试旧版本,因为最近的还没有针对古老的 Python 和 GMP 版本进行测试,只是最近的一些),或者,为了降低速度但更方便,使用 Python 代码——例如,对于 Python 2,最简单:
对于 Python 3,
int(x / base)
导致不正确的结果,必须更改为x // base
: