关于IP地址转换的问题

Tomato77 2005-11-18 09:42:49
有一个IP地址对应物理地址的表,IP分为startIP和EndIP 两部分,加密了的
例如:

startIP EndIP Country
3670678079 3670678527 云南省
3670691840 3670692095 内蒙古呼伦贝尔市
3670720256 3670720511 新疆吐鲁番市
3670727168 3670727423 新疆克拉玛依市
3670787840 3670788095 甘肃省酒泉市
3670802432 3670809855 广西


我想通过此表查询出IP的物理地址,
请问大家有没有类似的经验,是用了什么算法的?
...全文
184 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
china_hfz 2005-11-30
  • 打赏
  • 举报
回复
Tomato77 (萝卜丝.cpp)这种方法是不行的,字符串比较不确定
wl_szl 2005-11-30
  • 打赏
  • 举报
回复
请问哪里有IP地址和物理地址对应的表下载啊,我也想要啊
Tomato77 2005-11-21
  • 打赏
  • 举报
回复
to楼上,假设我的表已经是IP数据,不用通过*256这中方法,

但在查询过程中遇到问题:例如我在查询'218.18.159.177' 这个IP是属于什么地区的,

如果用
select * from tableIP
where '218.18.159.177' Between 起始IP and 结束IP

搜索结果:
202.18.15.0 202.18.16.255 xx电信ADSL
202.18.158.0 202.18.167.255 yy市
202.176.0.0 202.183.255.255 CZ88.NET

实际上,我需要的是 202.18.158.0 202.18.167.255 yy市 这条记录.

还需继续筛选.

有没有更好的查询方法?
Tomato77 2005-11-18
  • 打赏
  • 举报
回复
哦,谢谢!
devilzone 2005-11-18
  • 打赏
  • 举报
回复
IP地址用四个八位二进制段来存放,每段最高为256,你可以把每一段转换成二进制,不足八位在左边用0补足八位,把每一段得到的二进制数连起来,再转成十进制数就行了,

再有一个方法

比如IP地址: 219.159.68.54

219*256*256*256+159*256*256+68*256+54=3684647990

得到的数,在哪个起始IP之间,就是属于哪个地方的IP了

87,918

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧