假设我将一堆 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/