[英]converting alphanumeric string to int and vice versa in python
我正在尝试将最大长度为 40 个字符的字母数字字符串转换为尽可能小的整数,以便我们可以轻松地从数据库中保存和检索。 我不知道是否有任何可用的 python 方法或我们可以使用的任何简单算法。 具体来说,我的字符串将只有字符 0-9 和 ag。 因此,请就我们如何唯一地将字符串转换为整数(反之亦然)提出任何建议。 我在 Cent os 6.5 上使用 Python 2.7
这并不难:
def str2int(s, chars):
i = 0
for c in reversed(s):
i *= len(chars)
i += chars.index(c)
return i
def int2str(i, chars):
s = ""
while i:
s += chars[i % len(chars)]
i //= len(chars)
return s
例子:
>>> chars = "".join(str(n) for n in range(10)) + "abcdefg"
>>> str2int("0235abg02", chars)
14354195089
>>> int2str(_, chars)
'0235abg02'
基本上,如果您想将n 个字符编码为一个整数,您可以将其解释为base-n 。
改进上述答案:
# The location of a character in the string matters.
chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
charsLen = len(chars)
def numberToStr(num):
s = ""
while num:
s = self.chars[num % charsLen] + s
num //= charsLen
return s # Or e.g. "s.zfill(10)"
可以处理以 0 开头的字符串:
def strToNumber(numStr):
num = 0
for i, c in enumerate(reversed(numStr)):
num += chars.index(c) * (charsLen ** i)
return num
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.