有时会碰到这样的需求,须要将IP地址转换为整数存放,在读取时再转换为IP地址格式算法
一、将IP字符串转换为整型保存数组
代码以下:blog
string address; int intAddress; string ipAddress; while ((address = Console.ReadLine()) != "\\0") { //将IP地址转换为字节数组 byte[] IPArr = IPAddress.Parse(address).GetAddressBytes(); //显示出来字节数组存放的内容,结果以16进制显示 Console.WriteLine(BitConverter.ToString(IPArr, 0, IPArr.Length)); //将字节数组转换为整型 intAddress = BitConverter.ToInt32(IPArr, 0); Console.WriteLine(intAddress); } Console.ReadLine();
运行结果:ip
C0-A8-0A-11 是IPArr转换为string类型时的输出结果,也是192 168 10 17 的16进制字符串
285911232 是IPArr转换为整数的结果,C0是最低位,也就是说该整数是由 11-0A-A8-C0转换成10进制的来的,你们能够试试!string
二、将IP转换的整型数组转换为IP格式it
实际上是第一部分的逆过程,先将整型转换为字节数组,再将字节数组转换为IPim
代码以下:总结
//将整型转换为IP ipAddress = new IPAddress(BitConverter.GetBytes(intAddress)).ToString();
运行结果:数据
最后一行即为原来的IP
三、总结
两个过程是互逆的过程,IP转整型:利用IPAddress.GetAddressBytes(),获取IP的字节数组格式,而后利用BitConverter.ToInt32(),来转换为Int.涉及到的算法,无非是将字节数组转换为16进制,而后数组的第一个数值为最低位这样的顺序来转换为10进制数获得整型数据;整型转IP则将这个过程反过来。