Python:如何将n位转换为base 64?

时间:2011-03-14 22:51:56

标签: python binary base64

我有这个:struct.pack('I', 0b10101010101100101010001000001000).encode('base64') 这有利于将32位转换为基数64 ...但是有一种简单的方法可以将任意数量的位转换为基数64吗?

喜欢,在128到512之间的任何地方?

编辑: 我在哪里: 我原来的命令:

>>> struct.pack('I', 0b10101010101100101010001000001000).encode('base64')  
'CKKyqg==\n'

其中一个建议是使用\ x表示十六进制并将其转换为......到目前为止一直很好。

>>> struct.pack('I', 0b10101010101100101010001000001000).encode('hex')
'08a2b2aa'
>>> '\x08\xa2\xb2\xaa'.encode('base64')
'CKKyqg==\n'

但我可以用二进制文件做同样的事吗?

>>> '\b10101010\b10110010\b10100010\b00001000'.encode('base64')
'CDEwMTAxMDEwCDEwMTEwMDEwCDEwMTAwMDEwCDAwMDAxMDAw\n'
nope =(

2 个答案:

答案 0 :(得分:4)

如果您有一个任意长的二进制字符串,请使用字符串十六进制转义符:

'\x00\x01\x02\x03'.encode('base64')

所以你的例子是:

'\xaa\xb2\xa2\x08'.encode('base64')

答案 1 :(得分:1)

我编写了一个article,它描述了一个简单的Python解决方案,可用于从一系列数字转换为任意数字基数。使用建议的解决方案,您可以将二进制数字列表转换为您喜欢的任何编码表示。但请注意,转换的结果将不包含填充字符,因为它不需要它们。也许它可以满足您的需求,也许不是;)