将一个Base64编码的字符串解码为十进制字符串

3

我有一个字符串,比如说FhY=,它已经被编码成十六进制。因此,当运行以下代码时:

>>> b6 = 'FhY='
>>> b6.decode('base64')
'\x16\x16'

这是一个十六进制字符串,转换后应该为22 22。该结果已在网站https://conv.darkbyte.ru/上得到证实。然而,我似乎无法正确地将base64转换为十进制表示。我面临的一些挑战是:

  1. 期望的十进制数为整数。我只想要10进制
  2. 值不正确。我尝试了以下转换base64 > base16(将base64编码的字符串转换为二进制),base64 > binary > decimal(将十六进制字符串转换为Python中的int),但这两种方法都失败了。

请协助处理。


你为什么不使用 struct - Ignacio Vazquez-Abrams
我还没有看过它。让我现在去看一下。 - Magondu
@IgnacioVazquez-Abrams可能是因为他需要一个例子 :P struct.unpack('H','\x16\x16') 也许可以吗? - Joran Beasley
谢谢@JoranBeasley。看起来可以用了。不过有没有一种不需要两步过程的解决方案?直接从base64转换为base10的方法? - Magondu
1个回答

3
你需要将解码字符串中的每个字节转换为十进制值。下面是解决方法:
b6 = 'FhY='
' '.join([ str(ord(c)) for c in b6.decode('base64') ])

结果为22 22


谢谢,看起来不错。这个函数可逆吗?我该如何将结果为十进制的文本映射回base-64字符串? - Leonid
2
@Leonid,您可以使用''.join(map(lambda x: chr(int(x)), '22 22'.split())).encode('base64')来反转该函数。 - Marco

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