python - 将数字字符串编码为缩短的字母数字字符串,然后再返回

标签 python string encode numeric

快速提问。我正在尝试在 Python 中查找或编写一个编码器,以使用大写和小写字母来缩短一串数字。数字字符串看起来像这样:

20120425161608678259146181504021022591461815040210220120425161608667

长度总是一样的。

我最初的想法是编写一些简单的编码器来利用大小写字母和数字将此字符串缩短为看起来更像这样的内容:

a26Dkd38JK

这完全是武断的,只是想尽可能清楚。 我确信有一种非常巧妙的方法可以做到这一点,可能已经内置了。也许这是一个令人尴尬的问题。

另外,我需要能够将缩短的字符串转换回较长的数值。 我应该写一些东西并发布代码,还是这是我应该已经知道的内置 Python 函数的一行?

谢谢!

最佳答案

这是一个很好的压缩:

import base64

def num_to_alpha(num):
    num = hex(num)[2:].rstrip("L")

    if len(num) % 2:
        num = "0" + num

    return base64.b64encode(num.decode('hex'))

它首先将整数转换为字节串,然后对其进行 base64 编码。这是解码器:

def alpha_to_num(alpha):
    num_bytes = base64.b64decode(alpha)
    return int(num_bytes.encode('hex'), 16)

例子:

>>> num_to_alpha(20120425161608678259146181504021022591461815040210220120425161608667)
'vw4LUVm4Ea3fMnoTkHzNOlP6Z7eUAkHNdZjN2w=='
>>> alpha_to_num('vw4LUVm4Ea3fMnoTkHzNOlP6Z7eUAkHNdZjN2w==')
20120425161608678259146181504021022591461815040210220120425161608667

关于python - 将数字字符串编码为缩短的字母数字字符串,然后再返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326118/

相关文章:

c - 在 C 中读取和打印 *char 字符串时的一个特殊错误

security - 什么是创建可逆哈希的好方法/功能?

c++ - 导入错误 : No module named NetCDF

用于收集仅包含主要实体的 IP 地址的所有主机名的 Python 脚本

python - 如何将字符串格式作为变量传递给 f 字符串

java - 如何使用 bufferedreader 和 treemap 打印文本中最常见的单词? - java

java - Java中如何将8个字符串一次转换为一个字节写入文件?

python - 将 int 转换为 ASCII 并返回 Python

python - 无法运行包含两个函数的 Python 脚本

python - ffmpeg-python跟踪转码过程