我是编程和Python的新手,所以请耐心等待。我有一个字符串是Base64,我想将其转换为十进制。字符串可以作为任何值进入脚本,例如zAvIAQ。此值表示转换为十进制时的IP地址204.11.200.1。我想要做的是将Base64字符串转换为十进制并将其分配给一个变量,以便我可以在脚本的其他地方使用它。
我曾尝试使用base64.decode函数,但这只是给我一个非常奇怪的文本输出。我试过使用Decimal()函数,但这给了我一个错误。经过几天的搜索,我找不到办法,至少没有一个我能理解的方法。您可以提供任何帮助。
答案 0 :(得分:6)
首先使用decode('base64')
解码base64编码的字符串,然后使用socket.inet_ntoa
将生成的数字解码为IP四重奏。像这样:
>>> socket.inet_ntoa('zAvIAQ=='.decode('base64'))
'204.11.200.1'
答案 1 :(得分:3)
>>> address=[ord(c) for c in base64.b64decode('zAvIAQ==')]
>>> address
[204, 11, 200, 1]
答案 2 :(得分:1)
我通常使用base64.b64decode()
。有了这个,你得到:
In [18]: base64.b64decode('zAvIAQ==')
Out[18]: '\xcc\x0b\xc8\x01'
这可能是您所指的奇怪输出。关键是你得到一个字节串,每个字节代表一个0到255之间的值。这些值可能不可打印,因此是\ x表示。
但是你知道这些是IPv4地址的桶,你可以通过它们将它们转换成小数,例如:使用生成器表达式:
[ord(c) for c in ...]
你得到更熟悉的表示204,11,200,1。