HJ33 整数与IP地址间的转换
整数与IP地址间的转换
描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数。
举例:一个ip地址为10.0.3.193每段数字 相对应的二进制数 10 00001010 0 00000000 3 00000011 193 11000001
组合起来即为:00001010 00000000 00000011 11000001,
转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。数据范围:保证输入的是合法的 IP 序列
输入描述: 1 输入IP地址 2 输入10进制型的IP地址 输出描述: 1 输出转换成10进制的IP地址 2 输出转换后的IP地址
示例输入:10.0.3.193 167969729输出:167773121 10.3.3.193
using System;
public class Program
{public static void Main(){string IP;IP = Console.ReadLine();long IPint;IPint = Convert.ToInt64(Console.ReadLine());string[] IPs = IP.Split('.');decimal intIP = decimal.Multiply(Convert.ToInt32(IPs[0]), Convert.ToInt32(Math.Pow(2, 24)))+ decimal.Multiply(Convert.ToInt32(IPs[1]), Convert.ToInt32(Math.Pow(2, 16)))+ decimal.Multiply(Convert.ToInt32(IPs[2]), Convert.ToInt32(Math.Pow(2, 8)))+ Convert.ToDecimal(IPs[3]);int s1 = (int)(IPint / Convert.ToInt32(Math.Pow(2, 24)));int s2 = (int)((IPint % Convert.ToInt32(Math.Pow(2, 24)))/ Convert.ToInt32(Math.Pow(2, 16)));int s3 = (int)((IPint % Convert.ToInt32(Math.Pow(2, 16))) / Convert.ToInt32(Math.Pow(2, 8)));int s4 = (int)(IPint % Convert.ToInt32(Math.Pow(2, 8)));string strIP = "" + s1 + "." + s2 + "." + s3 + "." + s4;Console.WriteLine(intIP);Console.WriteLine(strIP);}
}