[英]Python: decode bin using base64
如果我有二进制字符串,可以说str = "010100011010101001001101100101100110101"
,它是由其他字符串的base64版本编码的,如何解码该字符串?
如果您的示例字符串实际上是有意义的东西,而不是使问题变得不清楚的复杂东西,那就太好了,但是在这里,我将尽我最大的努力找出您可能以最冗长的方式讲的意思。
假设您的实际输入是一个如下所示的str
:
s = '101100101010011010000100011000001011010010110000100111000110000'
您可以使用base
关键字参数将其强制转换为int
以获得十六进制形式
>>> i = int(s, base=2) # 6436561067884170800
然后将其格式化为如下所示,将其转换为字符串:
>>> h = '%x' % i # '595342305a584e30'
然后对十六进制字符串使用binascii.a2b_hex
函数来获取原始字节:
>>> b64 = binascii.a2b_hex(h) # b'YSB0ZXN0'
如果它是一些有效的base 64编码字节流,则可以在其上使用base64.b64decode
来获取实际字节
>>> r = base64.b64decode(b64) # b'a test'
要将其转换为字符串,请对其应用正确的编解码器(即,使用bytes.encode
)。
最后,如果您想知道我是如何生成该输入的,则上述全部操作都可以转换为一个单行函数:
>>> '{0:b}'.format(int(binascii.b2a_hex(base64.b64encode(b'a test')), base=16))
'101100101010011010000100011000001011010010110000100111000110000'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.