python - 如何将由各种ASCII码组成的int值转换为其对应的字符串?

标签 python

假设我将一堆 ASCII 代码连接到一个 int 值中。例如- 我的名字“Rahul”产生 8297104117108(x =''.join(str(ord(c))for c in "Rahul")。如何将此整数转换回单词使用 ASCII 代码组成?

最佳答案

如果将其限制为 8 位字符集(扩展 ASCII)中的可打印字符(ascii >= 32),则实际上没有歧义。每个字符将使用 2 或 3 位数字。两位数字的字符将 >= 32,三位数字的字符将 <= 255(恰好以低于 32 的两位数字开头)。所以两个连续的数字<32只能是3位字符的开头。

def decodeStr(s):
    if s == "": return ""
    code = s[:3] if s[:2] < "32" else s[:2]
    return chr(int(code)) + decodeStr(s[len(code):])

sa = decodeStr("8297104117108")
print(sa) # "Rahul"

如果要解码的字符串非常长,则递归方法可能会达到 Python 的最大递归限制。这是该函数的迭代变体:

def decodeStr(s):
    result = ""
    code   = ""
    for digit in s:
        code += digit
        if len(code) < 2 or code < "32" : continue
        result += chr(int(code))
        code = ""
    return result

迭代函数的运行速度比递归函数快约 1.8 倍。

关于python - 如何将由各种ASCII码组成的int值转换为其对应的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55324652/

相关文章:

python - Pandas - 合并两列

python - 在 MySQL/SQLAlchemy 中计算事件持续时间的最佳方法?

python - Jinja 条件子句取决于数据类型

python - 在python中计算 PIL 逊相关性

python - 用 Pandas : Is there an equivalent to dplyr's select(. ..,一切())重新排列列?

python - 值错误: Expected object or value when reading json in panda using parameter lines=True

python - 在 Ubuntu 14.04 上运行 deepdream 时出错

python - 根据另一个列表的排序将转换应用于列表

python - 给定一个已经创建的python对象,有没有办法通过检查找出构造的实际参数?

python Django "ImportError: No module named hashcompat"