遇到问题即解决问题:
在c#和js两种环境下作ip地址转换:
c#中:
public Queue GetIPAddressQueue(string firstIP, string lastIP)
{
//拆ip地址
var firstIPArray = firstIP.Split('.');
var lastIPArray = lastIP.Split(',');
//获取十进制IP地址
long firstIPNum = (long.Parse(firstIPArray[0]) << 24) +
(long.Parse(firstIPArray[1]) << 16) +
(long.Parse(firstIPArray[2]) << 8) +
(long.Parse(firstIPArray[3]));
long lastIPNum = (long.Parse(lastIPArray[0]) << 24) +
(long.Parse(lastIPArray[1]) << 16) +
(long.Parse(lastIPArray[2]) << 8) +
(long.Parse(lastIPArray[3]));
Queue queue = null;
//获取区间内所有IP地址,通过IPAddress类转换为字符串
for (long i = firstIPNum; i <= lastIPNum; i++)
{
IPAddress ipAddress = new IPAddress(BitConverter.GetBytes(Convert.ToUInt32(i)).Reverse().ToArray());
queue.Enqueue(ipAddress);
}
return queue;
}
js中实现的方式是相同的,但是js中没有long类型,所以在转换的时候需要作处理:
var firstIPSize = parseInt(firstIPArray[0] , 10)*256*256*256 + parseInt(firstIPArray[1] , 10)*256*256 + parseInt(firstIPArray[2] ,10)*256+ parseInt(firstIPArray[3],10);
var lastIPSize = parseInt(lastIPArray[0] , 10)*256*256*256 + parseInt(lastIPArray[1] , 10)*256*256 + parseInt(lastIPArray[2] ,10)*256 + parseInt(lastIPArray[3],10);
使用parseInt(value,位数);