
.NET中把IP地址轉(zhuǎn)為長(zhǎng)整型的方法:
/// <summary>把IP地址轉(zhuǎn)成長(zhǎng)數(shù)字, /// 算法:128.125.1.24 → (128*256*256*256) + (125*256*256) + (1*256) +24 /// </summary> /// <param name="ip"></param> /// <returns></returns> public static ulong IpToLong(string ip) { try { string[] cip = ip.Trim().Split('.'); string[] aip = new string[4]; cip.CopyTo(aip, 0); if (cip.Length < 3) { for (int i = 3; i > cip.Length; i--) { aip[i] = "0"; } } uint[] iip = new uint[4]; Regex reg = new Regex(@"\d+"); for (int x = 0; x < aip.Length; x++) { if (reg.IsMatch(aip[x])) iip[x] = Convert.ToUInt32(aip[x]); else iip[x] = 0; } ulong uip = Convert.ToUInt64(256 * 256 * 256 * iip[0] + 256 * 256 * iip[1] + 256 * iip[2] + iip[3]); return uip; } catch (Exception ess) { throw ess; } }
我用自己的機(jī)器試,一開始就一下更新所有,結(jié)果搞到網(wǎng)頁超時(shí),后來就通過SQL語句的TOP先把一部分取出來更新好后再更新另一部分,SQL語句如下:
select top 100 * from ipdata where CHARINDEX('.',starip,0)>0
CHARINDEX函數(shù)是MSSQL的內(nèi)置函數(shù),類似于IndexOf。
更新好后詢查就可以把要查詢的IP轉(zhuǎn)成長(zhǎng)整形,然后通過SQL中的BETWEEN..AND..來查詢了。
select * from ipdata where @ip between starip and endip
如果不把IP轉(zhuǎn)成長(zhǎng)整型的話則查詢出來的會(huì)有問題的!!!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
