问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

IPV4要如何转换为IPV6?

发布网友 发布时间:2022-04-20 05:27

我来回答

3个回答

热心网友 时间:2023-06-25 20:09

源码如下:(需要用到twisted.python.compat及struct和python socket方法)

import struct,socket

#import twisted.python.compat  #导入twisted.python.compat 更方便

# ipv4数字地址

def ipv4_to_string(ipv4):

ipv4_n = socket.htonl(ipv4)

data = struct.pack('I', ipv4_n)

ipv4_string = socket.inet_ntop(socket.AF_INET, data)

return ipv4_string

def ipv4_from_string(ipv4_string):

data = socket.inet_pton(socket.AF_INET, ipv4_string)

ipv4_n = struct.unpack('I', data)

ipv4 = socket.ntohl(ipv4_n[0])

return ipv4

def ipv4_readable2int(ipv4):

return int(ipv4)

def ipv4_int2readable(ipv4):

return str(ipv4)

# ipv6用四个整数(tuple或用,分开的字符串)表示

def ipv6_to_string(ipv6):

ipv6_n = (socket.htonl(ipv6[0]),

socket.htonl(ipv6[1]),

socket.htonl(ipv6[2]),

socket.htonl(ipv6[3]))

data = struct.pack('IIII', ipv6_n[0], ipv6_n[1], ipv6_n[2], ipv6_n[3])

ipv6_string = socket.inet_ntop(socket.AF_INET6, data)

return ipv6_string

def ipv6_from_string(ipv6_string):

data = socket.inet_pton(socket.AF_INET6, ipv6_string)

ipv6_n = struct.unpack('IIII', data)

ipv6 = (socket.ntohl(ipv6_n[0]),

socket.ntohl(ipv6_n[1]),

socket.ntohl(ipv6_n[2]),

socket.ntohl(ipv6_n[3]))

return ipv6

def ipv6_tuple2readable(ipv6):

return str(ipv6[0]) + ',' + str(ipv6[1]) + ',' + str(ipv6[2]) + ',' + str(ipv6[3])

def ipv6_readable2tuple(ipv6):

return tuple(ipv6.split(','))

#win32 下实现 inet_pton 和 inet_nto

def inet_ntop(family, ipstr):

if family== socket.AF_INET:

return socket.inet_ntoa(ipstr)

elif family== socket.AF_INET6:

v6addr = ':'.join(('%02X%02X' % (ord(i), ord(j)))

for i,j in zip(ipstr[::2], ipstr[1::2]))

return v6addr

#www.iplaypy.com

def inet_pton(family, addr):

if family== socket.AF_INET:

return socket.inet_aton(addr)

elif family== socket.AF_INET6:

if '.' in addr: # a v4 addr

v4addr = addr[addr.rindex(':')+1:]

v4addr = socket.inet_aton(v4addr)

v4addr = map(lambda x: ('%02X' % ord(x)), v4addr)

v4addr.insert(2, ':')

newaddr = addr[:addr.rindex(':')+1] + ''.join(v4addr)

return inet_pton(family, newaddr)

dbyts = [0]* 8 # 8 groups

grps = addr.split(':')

for i,v in enumerate(grps):

if v:

dbyts[i] = int(v, 16)

else:

for j, w in enumerate(grps[::-1]):

if w:

dbyts[7-j] = int(w, 16)

else:

break

break

return ''.join( (chr(i//256) + chr(i%256)) for i in dbyts)

else:

raise RuntimeError("What family?")

IPv4地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),通常我们以10进制表示。例如192.168.1.1就是一个10进制的IPv4地址,如果用2进制表示,则为11000000 10101000 00000001 00000001这里设计的2进制与10进制的计算方法比较简单,这里就不再阐述。

那么由IPv4的地址转换为IPv6的地址怎么转换呢?这里有2种表示方法:

比较简单的。例如还是IPv4的192.168.1.1 转换成IPv6的地址,则为::192.168.1.1 。就是在IPv4的地址前添加::即可,不需要经过计算。

标准的IPv6地址,需要经过计算。首先,需要将IPv4的地址转换成2进制的,然后再由2进制的数,每4位为一组,转换成16进制的,最后再转换为IPv6地址。举例说明,192.168.1.1,10进制表示为192.168.1.1,2进制表示为11000000 10101000 00000001 00000001,16进制表示为C0 A8 01 01,IPv6地址为0:0:0:0:0:0:C0A8:0101。下表会更加清晰。

热心网友 时间:2023-06-25 20:09

这个很好解决。
以下都以 ipv4 的 192.168.0.199为例
最简单的兼容地址就是
::192.168.0.199
我估计你想问的是下面的写法
::C0A8:00C7
我们知道 ipv4的地址是32位二进制用点分十进制表示。
而ipv6的地址是128位二进制 通常用8组16进制数表示
想要写出兼容的ipv6地址。 只需要 把32位的ipv4地址 转化成十六进制写法就可以了
也就是说 前面96位都是0 后面32位用ipv4的地址表示出来就可以。
::表示全是零
C0就是192的十六进制写法 A8就是168的十六进制写法。
ipv4地址每组之间用的点表示。 ipv6用的是冒号表示。
希望你能明白

热心网友 时间:2023-06-25 20:09

IPv6隧道技术
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在爱水APP哪个模块中可以填写个人信息,查询自己一天的饮水量? 黄金为什么是避险产品 避险买什么 避险品种是什么 避险产品什么意思 什么是避险产品 ...对联和我们平时使用的印章,说说使用了哪几个字体 对联上写的是什么字 ...有一空是让我评价我自己,请各位哥哥姐姐帮帮忙,帮我编一段,往好了... 艾灸用品哪种好 求此线稿原图,与这个动漫人物 动漫人物具体要如何画(详细点) 好的加分(⊙o⊙)哦! 求动漫人物线稿 动漫中角色的动作是画师一笔一划的画出来的吗? 怎么画动漫人物的动作? 动漫人物绘画基本线条 请问这个是多少? 天然气表多少方? 买燃气一,二,三档各是多少立方? 一个月使用天然气多少是正常的? 一个月一般天然气用量多少立方 北京市天然气多少钱一立方米? 正常使用天然气,一个月大概多少个立方? 一瓶天然气是多少立方? 家用燃气费多少一立方? 一瓶天然气是多少立方天然气? 天然气一方是多少立方 70方燃气能用多久 天然气一立方多少钱? 74方燃气三口人能用多长时间? IPV4怎么改成IPV6 ipv4与ipv6如何转换?计算方法是什么? IPv4转换为IPv6 IPV4地址怎么转换到IPV6地址? 将本机IPv4地址是转换为Ipv6为: ipv4如何转换成ipv6 如何转IPV4成IPV6的地址 如何改ipv4为ipv6 ipv4如何转换ipv6? 电信送的光猫默认是ipv4,可以改成ipv6吗 既有ipv4协议也有ipv6协议,怎么改成ipv6协议 显卡是干什么用的 国产的蔚来汽车,为何售价却一点也不便宜? 蔚来 SUV价格 在电脑中的显卡是干什么用的 搬家流程是什么? 搬家仪式流程和注意事项 乔迁新居要注意哪些事项? 搬家的程序是怎样的步骤? 要搬家需要做什么?有什么程序?