python是否为uuencoding提供了一个特殊字符列表



我可以在维基百科上找到uuencode字符映射。python有办法循环浏览这个列表吗?

for x in [builtin_uuencode_mappings]:
print(x)

我想把重点放在特殊字符上,比如"!@#$"等等。

Python已经内置了对uuencoded消息的编码和解码支持。

from codecs import encode  # decode also works
print(encode("my message", 'uu'))
# -> 'begin 666 <data>n*;7D@;65S<V%G90  n nendn'

python内部使用binascii包逐行对消息进行编码或解码。我们可以使用它来编码range(64)中的单个字节甚至所有字节(因为uuencoding将6bit转换为ascii字符:2**6 == 64(。

为了生成所有必要的比特模式,我们可以计数到64,并将结果向左移动2比特。这样,最高的6位从0计数到64。然后只需要将其转换为pythonbytes,对其进行uuencode编码并提取实际字符。

在蟒蛇2中

from binascii import b2a_uu
for byte in range(64):
pattern = chr(byte << 2)  # str and bytes are identical in python2
encoded = b2a_uu(pattern)
character = encoded[1]  # encoded[0] is the character count in that line
print "{:2} -> {!r}".format(byte, character)

《蟒蛇3》的第一部分有点难看。

from binascii import b2a_uu
for byte in range(64):
pattern = bytes([byte << 2])  # chr().encode() will not work!
encoded = b2a_uu(pattern)
character = chr(encoded[1]) 
print(f"{byte:2} -> {character!r}")

感谢Mark Ransom,他解释了为什么钻头移位确实有效。

相关内容

  • 没有找到相关文章

最新更新