2024-10-06 11:24:16 发布
网友
IP地址00000011100000001111111111111111将被转换为点状十进制格式:3.128.255.255。这是因为前8位00000011将被转换为3,第2个8位10000000将被转换为128,第3个8位11111111将被转换为255,最后8位11111111将被转换为255。在
00000011100000001111111111111111
3.128.255.255
00000011
10000000
11111111
如何编写一个函数ip_format(),该函数接受二进制格式的IP地址并将其转换为点分十进制格式?在
ip_format()
当您转换为int时,还可以指定第二个参数作为基(在本例中,2表示二进制)。然后,您可以一次跨越字符串8个元素,最后是join和'.'个字符
int
2
join
'.'
def ip_format(s): return '.'.join(str(int(s[i:i+8], 2)) for i in range(0, 32, 8)) >>> ip_format('00000011100000001111111111111111') '3.128.255.255'
您可以使用标准库中的^{}模块:
>>> import ipaddress >>> def ip_format(ip): ... return str(ipaddress.ip_address(int(ip, 2))) ... >>> ip_format('00000011100000001111111111111111') '3.128.255.255'
否则,手动操作非常容易:
至于逻辑:将二进制字符串转换为integer,将其拆分为单个字节,将其转换为字符串,并使用"."进行联接。在
"."
def ip_format(s): return '.'.join(str(int(s[n * 8:(n + 1) * 8], 2)) for n in range(4))
当您转换为
int
时,还可以指定第二个参数作为基(在本例中,2
表示二进制)。然后,您可以一次跨越字符串8个元素,最后是join
和'.'
个字符您可以使用标准库中的^{} 模块:
否则,手动操作非常容易:
^{pr2}$至于逻辑:将二进制字符串转换为integer,将其拆分为单个字节,将其转换为字符串,并使用
"."
进行联接。在相关问题 更多 >
编程相关推荐