解决思路:1.IP转数字
1.1 用.分割
1.2 进制为256
1.3.一次遍历分割的数字,乘上各自的进制即可。
2.数字转ip
2.1 转为二进制字符串
2.2 遍历二进制字符串,各个位置的ip数字加上合适的进制
2.3 ip数组组合为IP字符串
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace csharptest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ip2int("255.255.255.255"));
Console.WriteLine(int2ip(0));
Console.Read();
}
public static int ip2int(string ip)
{
int result = 0;
string[] splits = ip.Split('.');
int[] num=new int[4];
if (splits.Length == 4)
{
for (int i = 0; i < splits.Length; i++)
{
num[i]=int.Parse(splits[i]);
}
}
int pow = 1;
for (int i = num.Length-1; i>=0; i--)
{
result += num[i] * pow;
pow *= 256;
}
return result;
}
public static string int2ip(int num)
{
string binaryStr = Convert.ToString(num,2);
Console.WriteLine(binaryStr);
int[] ipnum = { 0, 0, 0, 0 };
for (int i = 0; i <binaryStr.Length; i++)
{
ipnum[i / 8] += (binaryStr[i]-'0')==0?0:(int)Math.Pow(2,7-i%8);
}
StringBuilder builder = new StringBuilder(ipnum[0].ToString());
for (int i = 1; i < 4; i++)
{
builder.Append(".");
builder.Append(ipnum[i].ToString());
}
return builder.ToString();
}
}
}