Answers:
ASCII转换为int:
ord('a')
给 97
然后返回一个字符串:
str(unichr(97))
chr(97)
给 'a'
如果多个字符绑定在一个整数/长整数内,这就是我的问题:
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
BASE58编码URL怎么样?像flickr这样。
# note the missing lowercase L and the zero etc.
BASE58 = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'
url = ''
while node_id >= 58:
div, mod = divmod(node_id, 58)
url = BASE58[mod] + url
node_id = int(div)
return 'http://short.com/%s' % BASE58[node_id] + url
将其转换为数字也没什么大不了的。
使用hex(id)[2:]
和int(urlpart, 16)
。还有其他选择。对您的id进行base32编码也可以正常工作,但是我不知道有没有内置Python进行base32编码的库。
显然,在Python 2.4中使用base64模块引入了base32编码器。您可以尝试使用b32encode
和b32decode
。你应该给True
两者的casefold
和map01
期权b32decode
的情况下,人们写下你的短网址。
实际上,我收回了这一点。我仍然认为base32编码是一个好主意,但是该模块对于URL缩短的情况没有用。您可以查看模块中的实现,并针对此特定情况进行自己的设计。:-)