ipv6数字转换

本文详细介绍了IPv6地址的三种表示方法:冒分十六进制表示法、0位压缩表示法和内嵌IPv4地址表示法,并提供了转换实例,帮助理解IPv6与十进制之间的转换。
摘要由CSDN通过智能技术生成

1、ipv6转换为十进制数

IPv6的地址长度为128位,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。
(1) 冒分十六进制表示法
  格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16位,以十六进制表示,例如:
  ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
  这种表示法中,每个X的前导0是可以省略的,例如:
  2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
(2) 0位压缩表示法
  在某些情况下,一个IPv6地址中问可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
  FF01:0:0:0:0:0:0:1101 → FF01::1101
  0:0:0:0:0:0:0:1 → ::1
  0:0:0:0:0:0:0:0 → ::
(3) 内嵌IPv4地址表示法
  为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用。

#将ipv6转换为十进制数
def ipv62dec(ipv6):
    if checkipv6(ipv6):
        compressIndex = ipv6.find('::')
        print("compressIndex:"+str(compressIndex))
        ipv4Index = ipv6.find('.')
        print("ipv4Index:"+str(ipv4Index))
        if compressIndex==-1 and ipv4Index==-1:
            return noCompressipv62dec(ipv6)
        elif compressIndex!=-1 and ipv4Index==-1:
            return compressipv62dec(ipv6)
        elif compressIndex==-1 and ipv4Index!=-1:
            ipv4,ipv6=ipv4v6Split(ipv6)
            if ipv4 and ipv6:
                return str(int(ipv42dec(ipv4))+int(noCompressipv62dec(ipv6)))
            else:
                return ""
        elif compressIndex != -1 and ipv4Index != -1:
            ipv4, ipv6 = ipv4v6Split(ipv6)
            if ipv4 and ipv6:
                return str(int(ipv42dec(ipv4))+int(compressipv62dec(ipv6)))
            else:
                
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值