我想将给定的十六进制转换为base64(在python中不使用任何库)。正如我从其他 stackoverflow 答案中了解到的,我们可以将 3 个十六进制(12 位,即每个 4 位)分组以获得 2 个 base64 值(12 位,即每个 6 位)。我们还可以将 6 个十六进制(24 位)分组为 4 个 base64 值(24 位)。
标准程序是将所有十六进制的二进制位附加在一起,并从左开始分组为 6 个数据包。
我的问题是关于我们需要填充的情况:(假设我们将 3 个十六进制转换为 2 个 base64)当我们只剩下 2 个或 1 个十六进制值要转换时,就会出现这种情况。举个例子:
'a1' 到 base64
10100001(a1 的二进制)
101000 01(0000) //将 6 个分组并在需要时添加额外的 0
这给出了“oQ”在某个地方的答案(oQ==)和在其他地方不同的答案(wqE=)
Q1。两个来源中哪一个给出了正确的答案?为什么另一个是错误的在线解码器?
Q2。我们如何在这里实现'='的数量?(我们可以像上面的例子一样在任何需要的地方添加足够的 0,因此在这里结束答案只是 oQ 而不是 oQ== ,假设 oQ== 是正确的)
我的概念是:如果十六进制的长度为 2(而不是 3),我们用一个 = 填充(因此在上述情况下符合答案 wqE=),否则如果十六进制的长度为 1(而不是 3),我们用 double ='s 填充。
同时,我很困惑,如果将 3 个十六进制转换为 2 个 base64,我们将永远不需要两个 =。
'a' 到 base64
1010(a的二进制)
Q3。如何将十六进制“a”转换为 base64。