Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将Base64中编码的IP地址转换为十进制IP地址_Python_Decimal_Base64 - Fatal编程技术网

Python将Base64中编码的IP地址转换为十进制IP地址

Python将Base64中编码的IP地址转换为十进制IP地址,python,decimal,base64,Python,Decimal,Base64,我对编程和Python非常陌生,所以请耐心听我说。我有一个Base64的字符串,我想把它转换成十进制。字符串可以作为任何值进入脚本,例如zAvIAQ。该值表示转换为十进制时为204.11.200.1的IP地址。我要做的是将Base64字符串转换为decimal并将其分配给变量,以便在脚本中的其他地方使用它 我曾尝试使用base64.decode函数,但这只会给我一个非常奇怪的文本输出。我试图使用Decimal()函数,但这给了我一个错误。在搜索了几天之后,我还没有找到一种方法来做这件事,至少我不

我对编程和Python非常陌生,所以请耐心听我说。我有一个Base64的字符串,我想把它转换成十进制。字符串可以作为任何值进入脚本,例如zAvIAQ。该值表示转换为十进制时为204.11.200.1的IP地址。我要做的是将Base64字符串转换为decimal并将其分配给变量,以便在脚本中的其他地方使用它


我曾尝试使用base64.decode函数,但这只会给我一个非常奇怪的文本输出。我试图使用Decimal()函数,但这给了我一个错误。在搜索了几天之后,我还没有找到一种方法来做这件事,至少我不明白。如果您能提供任何帮助,我们将不胜感激。

首先使用
decode('base64')
解码base64编码字符串,然后使用
socket.inet\u ntoa
将得到的数字解码为IP四重奏。像这样:

>>> socket.inet_ntoa('zAvIAQ=='.decode('base64'))
'204.11.200.1'

我通常使用
base64.b64decode()
。这样你就可以得到:

In [18]: base64.b64decode('zAvIAQ==')
Out[18]: '\xcc\x0b\xc8\x01'
这可能就是您所指的奇怪输出。关键是你得到了一个字节字符串,每个字节代表一个介于0和255之间的值。这些值可能不可打印,因此使用\x表示

但正如您所知,这些是IPv4地址的存储桶,您需要将它们转换为小数,例如,使用生成器表达式:

[ord(c) for c in ...]

您可以看到更熟悉的表示法204、11200、1。

我本来打算在自己的回答中这样说,但没有时间-谢谢您的填写。谢谢您提供的信息,这非常有帮助。我遇到的问题是,我想向socket.inet_ntoa提供一个变量的结果,因为base64地址会发生变化。示例:socket.inet_ntoa('peerRemoteAddr')。decode('base64')。其中peerRemoteAddr是一个结果(base64地址)谢谢当我将变量插入套接字时,我收到一个不正确的填充错误,这是因为您决定在发送之前将值切碎。等号很重要。peerRemoteAddr=re.findall(“BASE64:(*?”),Y)-这就是我如何让findall从单词base64后面的字符串中提取b64地址的方法。等号很重要。
[ord(c) for c in ...]