Python 如何从IPv6转换为IPv4,并从IPv6转换为整数格式

Python 如何从IPv6转换为IPv4,并从IPv6转换为整数格式,python,python-2.7,ipv6,ipv4,Python,Python 2.7,Ipv6,Ipv4,如何将IPv6地址转换为IPv4地址,以及如何将IPv4地址解析为一组整数 我有: a='ff06::c3' 我想: 4278583296.0.0.195 从那里我想得到: a1=4278583296 a2=0 a3=0 a4=195 方法1: 您需要做的第一步是扩展IPV6。一旦展开,就可以将其转换为十进制。一旦有了十进制值,就可以将其转换为二进制,最后使用公式来计算二进制的IPV4 方法2: 您可以使用python库“netaddr”(注意:您需要按照以下说明安装该库) 然后,您可以在代码中

如何将IPv6地址转换为IPv4地址,以及如何将IPv4地址解析为一组整数

我有:

a='ff06::c3'

我想:

4278583296.0.0.195

从那里我想得到:

a1=4278583296
a2=0
a3=0
a4=195

方法1: 您需要做的第一步是扩展IPV6。一旦展开,就可以将其转换为十进制。一旦有了十进制值,就可以将其转换为二进制,最后使用公式来计算二进制的IPV4

方法2: 您可以使用python库“netaddr”(注意:您需要按照以下说明安装该库)

然后,您可以在代码中导入“netaddr:”,并使用下面代码中类似的定义方法

>>> IPNetwork('::ffff:192.0.2.1/119').ipv6()
IPNetwork('::ffff:192.0.2.1/119')
>>> IPNetwork('::ffff:192.0.2.1/119').ipv6(ipv4_compatible=True)
IPNetwork('::192.0.2.1/119')
>>> IPNetwork('::ffff:192.0.2.1/119').ipv4()
IPNetwork('192.0.2.1/23')
>>> IPNetwork('::192.0.2.1/119').ipv4()
IPNetwork('192.0.2.1/23')

我不知道你为什么会想要这样的东西,因为它与IP地址的实际工作方式没有任何对应关系,但你可以使用Python3.3的
ipaddress
模块轻松解析字符串。如果你不使用Python3.3,你必须为IPv6地址编写自己的解析器,将其扩展为分解形式(
)0123:4567:89ab:cdef:fedc:ba98:7654:3210“

然后转换为带有
IPv6Address.exploded
的字符串,并使用
str.split(“:”)

然后将每对六进制数映射到一个32位组中,并用
int(grp,base=16)解析为int

然后,您可以使用
str.join
map
将所有内容放在一个虚线“IPv4”地址中

和元组解包以获得每个单独的参数

a1, a2, a3, a4 = new_groups

ipv6->ipv4->Int您尝试过什么吗?请先写下您的解决方案。我已经整理好了您的问题,因为根本不清楚您想要达到什么目的。请注意格式。您在问题上投入的精力越多,就越有可能有人会帮助您。我们都是这里的志愿者,所以我们有点不好意思期待您的努力。本着这种精神,请向我们展示您已经尝试过的内容,以便我们能够真正帮助您解决问题,而不是我们为您解决问题。除此之外,格式化问题:IP地址不是这样工作的。IPv6地址是128位,IPv4地址是32位,因此您所问的是不可能的。ff06::C3转换为FF06:0:0:0:0:0:C3,而不是FF06:0:0:C3。我认为这个答案不正确,因为a)它不能实现OP所需要的(这是,在这个答案的防御中,不可理解的)B)它建议在Py3.3(2012年9月29日)中在StdLIB中使用“代码> IP地址< /代码>时,下载第三方模块。
hextets = myIP.exploded.split(":")
import itertools

# from itertools recipes
def grouper(iterable, n, fillvalue=None):
    args = [iter(iterable)] * n
    return itertools.zip_longest(*args, fillvalue=fillvalue)

new_groups = [int(a+b, base=16) for (a, b) in grouper(hextets, 2)]
# N.B. that a+b here is string concatenation, not addition
ipv4ish = '.'.join(map(str, new_groups))
a1, a2, a3, a4 = new_groups