我有这个: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 =(
答案 0 :(得分:4)
如果您有一个任意长的二进制字符串,请使用字符串十六进制转义符:
'\x00\x01\x02\x03'.encode('base64')
所以你的例子是:
'\xaa\xb2\xa2\x08'.encode('base64')
答案 1 :(得分:1)
我编写了一个article,它描述了一个简单的Python解决方案,可用于从一系列数字转换为任意数字基数。使用建议的解决方案,您可以将二进制数字列表转换为您喜欢的任何编码表示。但请注意,转换的结果将不包含填充字符,因为它不需要它们。也许它可以满足您的需求,也许不是;)