网络地址(ip)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
问题描述
网际协议第6版(英语:Internet Protocol version 6,缩写:IPv6)是网际协议的最新版本,用作互联网的协议。用它来取代IPv4主要是为了解决IPv4地址枯竭问题,同时它也在其他方面对于IPv4有许多改进。
IPv6的设计目的是取代IPv4,然而长期以来IPv4在互联网流量中仍占据主要地位,IPv6的使用增长缓慢。在2022年4月,通过IPv6使用Google服务的用户百分率首次超过40%。
IPv6具有比IPv4大得多的编码地址空间。这是因为IPv6采用 位的地址,而IPv4使用的是 位。因此新增的地址空间支持 (约 )个地址,具体数量为 $340,282,366,920,938,463,463,374,607,431,768,211,456$ 个,也可以说成 个。
IPv6二进位制下为 位长度,以 位为一组,每组以冒号“:”隔开,可以分为 组,每组以 位十六进制方式表示。例如:2001:0db8:86a3:08d3:1319:8a2e:0370:7344 是一个合法的IPv6地址。
同时IPv6在某些条件下可以省略:
-
每项数字前导的0可以省略,省略后前导数字仍是0则继续,例如下组IPv6是等价的: 2001:0db8:02de:0000:0000:0000:0000:0e13
2001:db8:2de:0000:0000:0000:0000:e13
2001:db8:2de:000:000:000:000:e13
2001:db8:2de:00:00:00:00:e13
2001:db8:2de:0:0:0:0:e13
-
可以用双冒号“::”表示一组0或多组连续的0,但只能出现一次,例如下组IPv6是等价的:
-
如果四组数字都是零,可以被省略。遵照以上省略规则,下面这两组IPv6都是相等的。
-
2001:db8:2de:0:0:0:0:e13
2001:db8:2de::e13
-
2001:0db8:0000:0000:0000:0000:1428:57ab
2001:0db8:0000:0000:0000::1428:57ab
2001:0db8:0:0:0:0:1428:57ab
2001:0db8:0::0:1428:57ab
2001:0db8::1428:57ab
-
-
2001::25de::cade 是非法的,因为双冒号出现了两次。它有可能是下种情形之一,造成无法推断。
- 2001:0000:0000:0000:0000:25de:0000:cade
- 2001:0000:0000:0000:25de:0000:0000:cade
- 2001:0000:0000:25de:0000:0000:0000:cade
- 2001:0000:25de:0000:0000:0000:0000:cade
-
如果这个地址实际上是IPv4的地址,后32位可以用10进制数表示;因此::ffff:192.168.89.9 相等于::ffff:c0a8:5909。
-
珊迪想要制作一个全新的工具(与真实的IP转换无关),具体的功能是给你一个IPv6的网络地址其中前 位是IPv6的格式,后 位是一个完整的IPv4格式的IP(即由 位二进制数组成,为便于使用,以点分十进制XXX.XXX.XXX.XXX
形式表现,每组XXX
代表小于或等于 的 进制数),并且没有任何的省略,你的任务很简单,就是把它转换成一个完全的IPv6格式的地址后进行省略。在做双冒号省略时,我们只会对首次出现的一组0或多组连续的0进行双冒号省略,并且后续再遇见一组0或多组连续的0的情况无需进行双冒号省略。
输入格式
一行字符串表示原始的网络地址
输出格式
修改后的网络地址
2001:0db8:02de:0000:0000:0000:192.168.89.9
2001:db8:2de::c0a8:5909
1111:1111:0111:0011:1111:1111:111.111.0.0
1111:1111:111:11:1111:1111:6f6f::
1111:1111:0000:0011:1111:1111:111.111.0.0
1111:1111::11:1111:1111:6f6f:0
数据范围
对于 的数据,保证转换后的网络地址不会出现任何前导
另有 的数据,保证连续的一组 或多组连续的 只会出现一次
对于 的数据,保证原始的网络地址是一个合法的地址(范围、格式),只由数字、小写字母及两种符号组成