Python: 二进制转Base64

3

我有一个二进制数,001000,即8

如果我执行base64.b64encode(001000),会出现错误。

因此我执行base64.b64encode(b'001000'),得到结果b'MDAxMDAw'

但我需要在原始数字001000或8的索引处获取base64字符,例如此情况下应该得到'I'。如果数字是011100(28),则与值为28的base64表中对应的字符为:'d'

例如:以下是b64表中的一些值

0 == A, 1 == B, 2 == C, 3 == D, 4 == E

所以我想做的是:首先将二进制数转换为十进制数(000011 == 3)。然后将该数字与base64表进行比较,您会发现3000011等于'D'

有谁知道我该如何实现?


1
你试过 0b001000 吗? - J.Y.P.
如果您执行 base64.b64encode(b'0b001000'),则会得到 b'MGIwMDEwMDA=' - Merp
如果你执行base64.b64encode(0b001000),会出现错误。 - Merp
1个回答

2
如果我理解正确,以下内容应该可以满足您的需求:
base64.b64encode(bytes([0b001000]))

说明:

  • 0b001000:使用0b表示法返回整数8
  • [0b001000]:创建长度为1的数组
  • bytes([0b001000]):将可迭代对象转换为字节
  • b64encode(bytes([0b001000])):将这些字节转换为base64编码

那个对我返回了b'CA==',但我希望得到的是'I' - Merp
如果您查看Base64表,您会看到值列和字符列,并且由于'I'的值为8,当我执行001000时,我期望得到一个'I',无论如何感谢。 - Merp
CA== 是字节 0001000 的base64编码,对吗?那么这个 'I' 是从哪里来的呢? - Jaap Joris Vens
好的,001000 在十进制中是 8,在 base64 表中 'I' 等于十进制的 8 对吧? - Merp
你说得完全正确。现在我也感到困惑 :-D 我希望 0b 表示法能够对你有所帮助,至少。 - Jaap Joris Vens
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接