我正在尝试从原始二进制文件中解码base64:
作为输入,我有4个6位的值
010000 001010 000000 011001
我把它转换成十进制,给出
16 10 0 25
最后使用base64表进行解码,给出
Q K A Z
验证了这是正确的结果。
我想使用Python的base64模块来实现自动化,但是使用
import base64
base64.b64decode( bytearray([16,10,0,25]) )
返回空字符串。
将这个库与给定的输入一起使用的正确方式是什么?
发布于 2015-12-22 01:43:15
实际上,[16, 10, 0, 25]
不是base64字符串;我不认为base64
有任何函数可以将base64字母表的数字表示形式转换为字母表示形式。不过,创建自己的应用程序并不难:
def to_characters(numeric_arr):
target = b'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + b'abcdefghijklmnopqrstuvwxyz' + b'0123456789' + b'+/'
return bytes(target[n] for n in numeric_arr)
然后:
>>> to_characters(bytearray([16, 10, 0, 25]))
b'QKAZ'
>>> to_characters([16, 10, 0, 25]) # <- or just this
b'QKAZ'
现在可以将此字节对象传递给base64.b64decode
>>> base64.b64decode(b'QKAZ')
b'@\xa0\x19'
(请注意,在使用bytearray
的示例中有一个语法问题--不要使用bytearray[...]
,而要使用bytearray([...])
。( Python不使用类似C的int array[size]
语法。)
https://stackoverflow.com/questions/34401245
复制相似问题