#B4148. [语言月赛 202502] IPv6
[语言月赛 202502] IPv6
题目描述
IP 地址是在网络中唯一标识一台网络设备的一串数字。IPv4 使用 位二进制数作为 IP 地址,然而,随着网络设备数目的快速增加,IPv4 的总地址数已经耗尽。为了解决这个问题,计算机科学家引入了 IPv6。
IPv6 使用 位二进制数作为 IP 地址。为了方便书写,常常将这 位二进制数划分为 组,每组对应 位二进制,在书写时,每组写为 位十六进制数。每两组间,使用 :
隔开。
下图展示了一个 IPv6 地址的二进制表示形式与十六进制简写格式。
然而,十六进制的书写依然非常不方便,因此,IPv6 进一步引入了 IP 地址的简写规则:
- 前导零省略规则。 在每一组中,前导零可以省略。例如
FC00:0:130F:0:9C0:876A:130B:0
与FC00:0000:130F:0000:09C0:876A:130B:0000
表示的是同一个地址。 - 连续零替代规则。 如果一组或连续多组全为零,可以用双冒号
::
代替,但整个 IPv6 地址中只能使用一次::
。例如,2001:DB8:130F::9C0:876A:130B
与2001:0DB8:130F:0000:0000:09C0:876A:130B
表示的是同一个地址。::
可以出现在 IPv6 地址串的两端。
现在,给出一个十六进制形式的 IPv6 地址。该地址可能应用了上述的简写规则,请输出该 IPv6 地址对应的二进制格式。
输入格式
输入一行一个字符串,表示十六进制形式的 IPv6 地址。
输出格式
输出一行 个数字字符,表示对应的二进制 IPv6 地址。字符与字符之间不要用空格隔开。
1111:2222:3333:0000:0000:0000:7777:FFF
00010001000100010010001000100010001100110011001100000000000000000000000000000000000000000000000001110111011101110000111111111111
1111:2222:3333::7777:FFFF
00010001000100010010001000100010001100110011001100000000000000000000000000000000000000000000000001110111011101111111111111111111
提示
- 对于 的测试数据,IPv6 地址没有应用简化规则;
- 对于另外 的测试数据,IPv6 地址没有应用连续零替代规则;
- 对于 的测试数据,输入的是一个合法的 IPv6 地址。