BIT_辣鸡校园网

辣鸡校园网

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 131   Accepted Submission(s) : 49
Font: Times New Roman | Verdana | Georgia
Font Size:  

Problem Description

六六已经有两个礼拜没有IPv6了,非常非常郁闷。
于是它想要把IPv4变成IPv6。(大雾)
为了简化问题,有如下描述。
  一个合法的IPv4地址是32位的,写成4组,每组都在0-255之间,无前置0,且用"."隔开。
  如"10.0.0.55",(0.0.0.0 - 255.255.255.255)。
  
  而一个合法的完整的IPv6地址是128位的,写成8组,每组为四个十六进制数的形式,不足四个以0补足,每组之间以":"隔开。
  如"AD80:0000:0000:0000:ABAA:0000:00C2:0002",(0000:0000:0000:0000:0000:0000:0000:0000 - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF)。
  
定义如下转换规则:
  当一个IPv4地址变成一个IPv6地址时,将IPv4地址写成十六进制并在前面不足的位数补上"0000:0000:0000:0000:0000:FFFF..."。
  形象的讲,就是变成了 "0000...0000 | FFFF | IPv4 address |"
  如:192.168.89.9 --> 0000:0000:0000:0000:0000:FFFF:C0A8:5909
  (IPv6有一些缩写规则,但是我们并不讨论它
  
六六小贴士,不知道什么是IPv4,IPv6的看这里:
  无论你是使用智能手机上网还是使用PC机上网,你的手机或PC机都会被分配一个IP地址,手机或PC机使用这个IP地址与互联网上的其它网元通信。IP地址现在有IPv4和IPv6两大类,现在使用的绝大多数的IP地址是其中的IPv4地址。
  但是IPv4只有32位,只能给2^32-1台电脑分配地址,于是IPv6地址出现啦,它有2^128-1个地址可以分配,妈妈再也不用担心我分不到IP啦!

Input

多组用例,每组用例占一行,包含一个合法的IPv4地址。

Output

对于每组用例,输出一行,包含一个转换后的合法的完整的无缩写的IPv6地址。

Sample Input

192.168.89.9

Sample Output

0000:0000:0000:0000:0000:FFFF:C0A8:5909

Author

CWIND

#include <stdio.h>
int main()
{
	char hex[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
	int a[5] = { 0 }, i, x, y, n[10] = {0};
	while (scanf("%d.%d.%d.%d", &a[0], &a[1], &a[2], &a[3]) != EOF)
	{
		getchar();
		printf("0000:0000:0000:0000:0000:FFFF:");
		for (i = 0;i < 4;i++)
		{
			int k = 0;
			memset(n, 0, sizeof(n));
			while (a[i] > 0)
			{
				n[k++] = a[i] % 16;
				a[i] = a[i] / 16;
			}
			x = n[1];
			y = n[0];
			printf("%c%c", hex[x], hex[y]);
			if (i == 1)	printf(":");
		}
		printf("\n");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值