Estoy tratando de codificar un int en base64, estoy haciendo eso:
foo = 1 base64.b64encode(bytes(foo))
salida esperada: 'MQ=='
salida dada: b'AA=='
¿Qué estoy haciendo mal?
Edición: en Python 2.7.2 funciona correctamente
Prueba esto:
foo = 1 base64.b64encode(bytes([foo]))
o
foo = 1 base64.b64encode(bytes(str(foo), 'ascii')) # Or, roughly equivalently: base64.b64encode(str(foo).encode('ascii'))
El primer ejemplo codifica el entero 1
1 byte. El segundo ejemplo codifica la cadena de caracteres de 1 byte '1'
.
Si inicializa los bytes (N) con un entero N, le dará bytes de longitud N inicializados con bytes nulos:
>>> bytes(10) b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Lo que quieres es la cadena “1”; codifíquelo a bytes con:
>>> "1".encode() b'1'
ahora, base64 te dará b'MQ=='
:
>>> import base64 >>> base64.b64encode("1".encode()) b'MQ=='