web-dev-qa-db-ja.com

整数の文字列表現をbase64にエンコードしますPython 3

私はintをbase64にエンコードしようとしています、私はそれをしています:

foo = 1
base64.b64encode(bytes(foo))

期待される出力:'MQ=='

与えられた出力:b'AA=='

私が間違っていることは何ですか?

編集:in Python 2.7.2は正しく機能します

11
fj123x

これを試して:

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'をエンコードします。

1
Robᵩ

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=='
7
doep