在Python中将整数转换为ASCII及其反向操作
我正在为我的网站制作一个网址缩短器,目前的计划是使用节点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'