我正在尝试将 int 编码为 base64,我正在这样做:
foo = 1
base64.b64encode(bytes(foo))
预期输出: 'MQ=='
给定输出: b'AA=='
我做错了什么?
编辑:在 Python 2.7.2 中正常工作
如果您使用整数 N 初始化 bytes(N),它将为您提供长度为 N 的字节,并使用空字节进行初始化:
>>> bytes(10)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
你想要的是字符串“1”;所以将其编码为字节:
>>> "1".encode()
b'1'
现在,base64 会给你b'MQ=='
:
>>> import base64
>>> base64.b64encode("1".encode())
b'MQ=='
尝试这个:
foo = 1
base64.b64encode(bytes([foo]))
或者
foo = 1
base64.b64encode(bytes(str(foo), 'ascii'))
# Or, roughly equivalently:
base64.b64encode(str(foo).encode('ascii'))
第一个示例对 1 字节整数进行编码1
。第二个示例对 1 字节字符串进行编码'1'
。