Python:如何从二进制转换为base 64并返回?

Python:如何从二进制转换为base 64并返回?,python,binary,base64,Python,Binary,Base64,假设我有一些二进制值: 0b100 想把它转换成base64吗 执行base64.b64解码(0b100)告诉我它需要的是字符串,而不是int。。。。现在,我不想使用字符串 那么,有谁能为我指出将二进制数转换为base64数的正确方向吗?谢谢 =D取决于您如何表示值0b100 >>> import struct >>> val = 0b100 >>> print struct.pack('I', val).encode('base64')

假设我有一些二进制值:

0b100
想把它转换成base64吗

执行
base64.b64解码(0b100)
告诉我它需要的是字符串,而不是int。。。。现在,我不想使用字符串

那么,有谁能为我指出将二进制数转换为base64数的正确方向吗?谢谢


=D

取决于您如何表示值
0b100

>>> import struct
>>> val = 0b100
>>> print struct.pack('I', val).encode('base64')
BAAAAA==
这将把您的值转换为本机endianness中的4字节整数,并将该值编码为base64。您需要指定数据的宽度,因为base64实际上用于以可打印字符表示二进制数据


您通常可以通过struct的函数将数据编码为一个字节字符串,然后编码到base64中。确保解码时使用相同的数据布局和尾数。

二进制值有多大?如果它可以放在一个字节中,那么可以使用
chr

>>> base64.b64encode(chr(255))
'/w=='
否则,我认为您必须使用指数数学从中获取单个字节,并将它们排列为大端或小端,多次调用
chr
。(编辑:yan使用
struct
模块的答案更简单:)

另外,我应该注意到二进制整数语法就是这个语法。解释器将其视为另一个整数

>>> (0b0).__class__
<type 'int'>
>(0b0)。\uu类__

二进制文字只是普通的python整数

>>> 0b100
<<< 4

>>> 4
<<< 4
>>0b100
> 4

这可能不是提问者想要的。这将把二进制转换成十进制,然后以64为基数对十进制表示进行编码。如果你只是想把数字转换成基数64,那就有点不同了。嗯?正如他所说,我正在对它的二进制表示进行base64编码。(我最初错误地回答了他的问题,但后来又修复了它)从base64返回?使用
encoded\u字符串。解码('base64')
,然后使用struct的
unpack
雕刻该字符串。是否确实要转换为基数为64的数字或基数为64的编码?转换为基数64是一个简单的数学计算(在任何语言中)。只是想知道python是否有超简单易用的东西。嗯,它可以是8位到512位之间的任意位置=\
>>> s = str(0b100).encode('base64')

>>> int(s.decode('base64'))
<<< 4
>>> bin(int(s.decode('base64')))
<<< '0b100'