Python允许通过
int(str, base).
我想执行逆操作:从整数创建字符串,
i、 我想要一些函数int2base(num, base)
,这样:
int(int2base(x, b), b) == x
函数名/参数顺序不重要。
对于x
和b
可以接受的任何数。
这是一个很容易编写的函数:事实上,它比在这个问题中描述它更容易。然而,我觉得我一定是错过了什么。
我知道函数bin
、oct
、hex
,但是我不能使用它们有几个原因:
这些函数在较旧版本的Python上不可用,我需要与(2.2)兼容
我想要一个通用的解决方案,对于不同的基可以用相同的方法调用
我要允许除2,8,16以外的基
如果您需要与早期版本的Python兼容,您可以使用gmpy(它确实包含一个快速、完全通用的int-to-string转换函数,并且可以为此类早期版本而构建——您可能需要尝试较旧的版本,因为最近的版本没有经过历史悠久的Python和GMP版本的测试,只使用最近的代码),或者,为了更快但更方便,使用Python代码——例如,最简单的是:
令人惊讶的是,人们给出的解决方案只能转换成小基数(比英文字母表的长度小)。没有人试图给出一个从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]
你以后可以把它转换成任何你想要的基
参考号: http://code.activestate.com/recipes/65212/
请注意,这可能会导致
对于非常大的整数。
相关问题 更多 >
编程相关推荐