【发布时间】:2017-06-30 03:50:34
【问题描述】:
我需要将一个字符串表示为一个数字,但是它有 8928313 个字符长,请注意这个字符串可以包含的不仅仅是字母,我还必须能够有效地将它转换回来。我当前(太慢)的代码如下所示:
alpha = 'abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ,.?!@()+-=[]/*1234567890^*{}\'"$\\&#;|%<>:`~_'
alphaLeng = len(alpha)
def letterNumber(letters):
letters = str(letters)
cof = 1
nr = 0
for i in range(len(letters)):
nr += cof*alpha.find(letters[i])
cof *= alphaLeng
print(i,' ',len(letters))
return str(nr)
【问题讨论】:
-
请注意,这段代码运行良好,只是太慢了
-
我严重质疑为什么您需要一个精度约为 8 MB 的数字。最终,字符串和数字都是字节。字符串是你想要的数据类型。
-
您使用的是 Python 3 还是 Python 2?我假设你没有使用 both?
标签: python python-2.7 python-3.x numbers