在处理之前,我需要将一些数据转换为29进制,我使用的是:
import string
def datatobase(data, base):
digs = string.digits + string.lowercase + string.uppercase
if base > len(digs):
return None
digits = []
x = int(data.encode("hex"), 16)
while x:
digits.append(digs[x % base])
x /= base
digits.reverse()
return ''.join(digits)
问题是这个小代码太慢了,所以你会怎么做来替换它?在
一个自定义的答案只有29将是伟大的太!在
如果你负责运行时。。。这个版本比你的快2.8倍,比二战时快7%。在
这是我根据@wwii改编的方法的最后一个迭代和最快的解决方案。在
^{pr2}$如果您不反对使用第三方软件包,
numpy.base_repr()
是进行转换的一种非常方便的方法:您需要分析一下这是否为您的应用程序提供了足够的性能。在
更新
分析表明
numpy.base_repr()
比OP的实现慢。这是因为numpy实现与Python中实现的算法基本相同,只是添加了可选的零填充。在仅以29为基数,是
int
参数的解决方案。在递归的:
常规:
^{pr2}$相关问题 更多 >
编程相关推荐