嘿,我正在尝试编写一个程序,将BASE64字符串转换为BASE16(HEX)字符串。
以下是一个例子:
BASE64: Ba7+Kj3N
HEXADECIMAL: 05 ae fe 2a 3d cd
BINARY: 00000101 10101110 11111110 00101010 00111101 11001101
DECIMAL: 5 174 254 42 61 205
从BASE64转换为HEXIDECIMAL的逻辑是什么?
为什么十进制表示法会分开?
为什么二进制表示被分成6个部分?
只想要数学,我能处理的代码只是这个过程令我感到困惑。谢谢:))
答案 0 :(得分:4)
一次读取base64 4个字符,因为4个base64字符变为3个字节:
'Ba7+', 'Kj3N'
解码base64的每个char。我刚看了Wikipedia:
[1, 26, 59, 62], [10, 35, 55, 13]
将每组中的数字分别向左移动18,12,6和0:
>>> def pack(a, b, c, d): return hex((a << 18) + (b << 12) + (c << 6) + d)
>>> pack(1, 26, 59, 62)
'0x5aefe'
>>> pack(10, 35, 55, 13)
'0x2a3dcd'
然后,如果你想自己转换为十六进制,请将它们向右移动4,8,... 24,28以剥离每个nybble并转换为从0到f的数字。