python - 在python中将字母数字字符串转换为int,反之亦然

标签 python

我正在尝试将最大长度为 40 个字符的字母数字字符串转换为尽可能小的整数,以便我们可以轻松地从数据库中保存和检索。我不知道是否存在任何 python 方法或我们可以使用的任何简单算法。具体来说,我的字符串将只有字符 0-9 和 a-g。因此,请提供有关我们如何从字符串唯一地转换为 int 以及反之亦然的任何建议。我在 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

关于python - 在python中将字母数字字符串转换为int,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29026687/

相关文章:

python - 创建知道每个列表长度的子列表

python - PyQt5:单独文件中的插槽未被调用

python - 在 str 对象上使用 'to_datetime' - 为了更改数据帧列名称

Python:查找前 N 位数字可被 N(从 0-9)整除的数字的代码

python - 是否没有用于使用多索引 pandas 数据框动态创建列的语法糖?

python - 有没有办法在一行中运行多个 %run 语句?

python - 从 *.sql 文件自动恢复数据库

python - skimage.util 中的像素值缩放错误(Scipy 中字节缩放的替代方案)

python - Postgresql 启动失败

python - 如果 df 中的列的值是同一数据框中另一列的值之一(逐行),则匹配