在Python中将整数转换为ASCII及其反向操作

191 投票
6 回答
481014 浏览
提问于 2025-04-16 03:53

我正在为我的网站制作一个网址缩短器,目前的计划是使用节点ID来生成缩短的网址。简单来说,节点26可能对应的缩短网址是 short.com/z,节点1可能是 short.com/a,节点52可能是 short.com/Z,而节点104可能是 short.com/ZZ。当用户访问这个网址时,我需要把这个过程反过来(这点很明显)。

我能想到一些笨拙的方法来实现这个,但我觉得可能还有更好的办法。有什么建议吗?

6 个回答

14

如果多个字符被绑定在一个整数或长整型里,就像我遇到的问题:

s = '0123456789'
nchars = len(s)
# string to int or long. Type depends on nchars
x = sum(ord(s[byte])<<8*(nchars-byte-1) for byte in range(nchars))
# int or long to string
''.join(chr((x>>8*(nchars-byte-1))&0xFF) for byte in range(nchars))

结果是 '0123456789'x = 227581098929683594426425L

124
>>> ord("a")
97
>>> chr(97)
'a'

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

333

把ASCII转换成整数:

ord('a')

结果是 97

再把它转换回字符串:

  • 在Python2中用 str(unichr(97))
  • 在Python3中用 chr(97)

结果是 'a'

撰写回答