私はintをbase64にエンコードしようとしています、私はそれをしています:
foo = 1
base64.b64encode(bytes(foo))
期待される出力:'MQ=='
与えられた出力:b'AA=='
私が間違っていることは何ですか?
編集:in Python 2.7.2は正しく機能します
これを試して:
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
をエンコードします。 2番目の例は、1バイトの文字列'1'
をエンコードします。
Bytes(N)を整数Nで初期化すると、nullバイトで初期化された長さ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=='