- 浏览: 2969281 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (893)
- android (110)
- iphone (198)
- java (79)
- JavaScript手册-目录 (9)
- JavaScript手册-Array (19)
- JavaScript手册-Boolean (5)
- JavaScript手册-Date (50)
- JavaScript手册-Math (30)
- JavaScript手册-Number (14)
- JavaScript手册-RegExp (7)
- JavaScript手册-String (38)
- JavaScript手册-全局函数 (8)
- JavaScript实用脚本 (7)
- Others (21)
- java-jpcap (7)
- java-thread (1)
- ibm文章 (3)
- classloader (2)
- java-filter (2)
- 运行环境 (33)
- java-正则 (2)
- oracle (1)
- linux-shell (26)
- wap (1)
- sqlite (3)
- wow (1)
- jvm (1)
- git (5)
- unity3d (29)
- iap (2)
- mysql (23)
- nginx (14)
- tomcat (9)
- apache (2)
- php (1)
- ubuntu (40)
- rsa (1)
- golang (21)
- appstore (5)
- sftp (2)
- log4j (2)
- netty (18)
- 测试工具 (6)
- memcache (5)
- 设计模式 (1)
- centos (8)
- google_iab (5)
- iOS专题 (4)
- mac (10)
- 安装配置帮助手册 (2)
- im4java_graphicsmagick (5)
- inotify-tools (1)
- erlang (6)
- 微信支付 (1)
- redis (8)
- RabbitMQ (5)
最新评论
-
heng123:
Netty视频教程https://www.douban.com ...
netty4.0.23 初学的demo -
maotou1988:
使用Netty进行Android与Server端通信实现文字发 ...
netty4.0.23 初学的demo -
码革裹尸:
非常感谢,正好用上
android 呼入电话的监听(来电监听) -
rigou:
提示的/222.177.4.242 无法链接到ip地址,是什 ...
通过 itms:services://? 在线安装ipa ,跨过app-store -
duwanbo:
GridView与数据绑定
★★★ 本篇为原创,需要引用转载的朋友请注明:《 http://stephen830.iteye.com/blog/254742 》 谢谢支持! ★★★
在分析网站的客户来源经常会要求根据客户的ip地址去判断客户国家位置或者城市位置。当然要做到这一步,你要有一个详细的ip地址库。
ip地址库中一般是通过ip地址转换来的数字(长整数)来划分国家或者城市。ip地址库数据库的一般格式为:
...
startIpLongNumber endIpLongNumber CountryName CountryCode CityName
...
而在应用中需要将客户的ip地址字符串转成一个长整数,然后才能到地址库中去查找。
下面就给出ip->long , long->ip的转换方法。
通过上面这2个方法,就可以很方便的将一个ip地址字符串折算为一个long数字;或者将一个long数字还原成一个ip地址字符串。
ip2long("255.255.255.255")=4294967295, 没有超出范围。
一般ip库里面的数据按照如下格式
所以要根据客户的ip计算出来的数字,与ip库中的[start_ip_num,end_ip_num]去匹配。
测试了一下好像不对嘛。System.out.println(ip2long("203.208.37.104"));System.out.println(long2ip(-875551384L));System.out.println(ip2long("192.168.1.2"));System.out.println(long2ip(-1062731518L));输出:-875551384-53.208.37.104-1062731518-64.168.1.2
现在对了,原来默认是用int的,数据超出范围了!谢谢
在分析网站的客户来源经常会要求根据客户的ip地址去判断客户国家位置或者城市位置。当然要做到这一步,你要有一个详细的ip地址库。
ip地址库中一般是通过ip地址转换来的数字(长整数)来划分国家或者城市。ip地址库数据库的一般格式为:
...
startIpLongNumber endIpLongNumber CountryName CountryCode CityName
...
而在应用中需要将客户的ip地址字符串转成一个长整数,然后才能到地址库中去查找。
下面就给出ip->long , long->ip的转换方法。
/** * ip地址转成整数. * @param ip * @return */ public static long ip2long(String ip) { String[] ips = ip.split("[.]"); long num = 16777216L*Long.parseLong(ips[0]) + 65536L*Long.parseLong(ips[1]) + 256*Long.parseLong(ips[2]) + Long.parseLong(ips[3]); return num; } /** * 整数转成ip地址. * @param ipLong * @return */ public static String long2ip(long ipLong) { //long ipLong = 1037591503; long mask[] = {0x000000FF,0x0000FF00,0x00FF0000,0xFF000000}; long num = 0; StringBuffer ipInfo = new StringBuffer(); for(int i=0;i<4;i++){ num = (ipLong & mask[i])>>(i*8); if(i>0) ipInfo.insert(0,"."); ipInfo.insert(0,Long.toString(num,10)); } return ipInfo.toString(); }
通过上面这2个方法,就可以很方便的将一个ip地址字符串折算为一个long数字;或者将一个long数字还原成一个ip地址字符串。
评论
8 楼
leeldy
2009-02-12
厄,貌似是我计算错了。。。
是32位,Long足够了
汗。。。
是32位,Long足够了
汗。。。
7 楼
stephen830
2009-02-12
leeldy 写道
用Long型也会超过数据范围啊
Long.MAX_VALUE也只有2^63-1
而IPV4的地址最大可以是255.255.255.255
换成16进制就是0xFFFFFFFF
一共有64位,超过了Long的范围
你要将IP地址转换成数字的话,只能用BigInteger了
Long.MAX_VALUE也只有2^63-1
而IPV4的地址最大可以是255.255.255.255
换成16进制就是0xFFFFFFFF
一共有64位,超过了Long的范围
你要将IP地址转换成数字的话,只能用BigInteger了
ip2long("255.255.255.255")=4294967295, 没有超出范围。
6 楼
leeldy
2009-02-12
用Long型也会超过数据范围啊
Long.MAX_VALUE也只有2^63-1
而IPV4的地址最大可以是255.255.255.255
换成16进制就是0xFFFFFFFF
一共有64位,超过了Long的范围
你要将IP地址转换成数字的话,只能用BigInteger了
Long.MAX_VALUE也只有2^63-1
而IPV4的地址最大可以是255.255.255.255
换成16进制就是0xFFFFFFFF
一共有64位,超过了Long的范围
你要将IP地址转换成数字的话,只能用BigInteger了
5 楼
stephen830
2009-02-12
duronshi 写道
这样,如何与ip库里面进行对比呢?
一般ip库里面的数据按照如下格式
start_ip,end_ip,start_ip_num,end_ip_num,country_code,country_name '112.63.162.116', '112.63.162.119', 1883218548, 1883218551, 'ES', 'Spain' '112.63.162.120', '112.63.162.123', 1883218552, 1883218555, 'FR', 'France' '112.63.162.148', '112.63.162.151', 1883218580, 1883218583, 'BE', 'Belgium'
所以要根据客户的ip计算出来的数字,与ip库中的[start_ip_num,end_ip_num]去匹配。
4 楼
duronshi
2009-02-12
这样,如何与ip库里面进行对比呢?
3 楼
stephen830
2009-02-09
xplazy 写道
测试了一下好像不对嘛。System.out.println(ip2long("203.208.37.104"));System.out.println(long2ip(-875551384L));System.out.println(ip2long("192.168.1.2"));System.out.println(long2ip(-1062731518L));输出:-875551384-53.208.37.104-1062731518-64.168.1.2
现在对了,原来默认是用int的,数据超出范围了!谢谢
2 楼
xplazy
2009-02-09
测试了一下好像不对嘛。
System.out.println(ip2long("203.208.37.104"));
System.out.println(long2ip(-875551384L));
System.out.println(ip2long("192.168.1.2"));
System.out.println(long2ip(-1062731518L));
输出:
-875551384
-53.208.37.104
-1062731518
-64.168.1.2
System.out.println(ip2long("203.208.37.104"));
System.out.println(long2ip(-875551384L));
System.out.println(ip2long("192.168.1.2"));
System.out.println(long2ip(-1062731518L));
输出:
-875551384
-53.208.37.104
-1062731518
-64.168.1.2
1 楼
xplazy
2009-02-09
不错支持一下、
发表评论
-
Java的内存机制
2016-08-22 13:27 4501.Java的内存机制 Java 把内存划分成两 ... -
监听域对象中属性的变更的监听器
2016-07-18 19:06 1704监听域对象中属性的变更的监听器 域对象中属性 ... -
HttpSessionActivationListener
2016-07-18 18:46 605HttpSessionActivationListe ... -
Web容器监听器(实现在线统计人数,踢人)
2016-07-18 10:48 913Web容器监听器(实现在线统计人数,踢人) Servl ... -
HttpSessionBindingListener接口
2016-07-18 10:29 605HttpSessionBindingListene ... -
ServletRequestAttributeListener接口
2016-07-17 22:24 7922. HttpSessionAttribut ... -
Servlet3中异步Servlet特性介绍
2016-07-17 15:50 805Servlet3中异步Servlet特性介绍 ... -
HttpSessionAttributeListener
2016-07-15 17:49 652HttpSessionAttributeListener ... -
使用ServletContextAttributeListener
2016-07-15 16:47 797使用ServletContextAttr ... -
ServletRequestListener
2016-07-15 16:25 566ServletRequestListener接口 ... -
HttpSessionListener
2016-07-15 14:56 598HttpSessionListener接口 M ... -
ServletContextListener 接口
2016-07-15 12:16 585在 Servlet API 中有一个 Se ... -
ReflectASM,高性能的反射
2016-04-29 17:19 926http://www.oschina.net/p/r ... -
Java多线程与静态方法
2016-04-26 11:52 810Java多线程与静态方法 在多线程中使用静态方法会发生什么 ... -
log4j日志输出格式
2016-04-12 20:58 1073log4j日志输出格式 在LOG4J的配置文件中,l ... -
Servlet3.0
2016-04-12 16:58 654一、Servlet3.0介绍 Servlet3 ... -
log4j2 使用详解
2016-04-12 14:14 1415log4j2 使用详解 转载自 Blog of ... -
Eclipse jar打包和命令行运行
2016-04-08 10:44 2908?Eclipse jar打包和命令行运行 第1步: ... -
GRAPHICSMAGICK+IM4JAVA错误Cannot run program "gm": error=2
2015-05-19 15:27 4073在通过 GRAPHICSMAGICK+IM4JAVA ... -
GraphicsMagick安装、实时生成缩略图
2015-05-19 13:39 2371GraphicsMagick安装、实时生成缩略图 ...
相关推荐
易语言转换IP到长整数源码。@资源源码站。
只能输入数字:”^[0-9]*$”。 只能输入n位的数字:”^\d{n}$”。 只能输入至少n位的数字:”^\d{n,}$”。 只能输入m~n位的数字:。”^\d{m,n}$” 只能输入零和非零开头的数字:”^(0|[1-9][0-9]*)$”。 只能输入有...
分别统计出包含英文字母、空格、数字和其它字符的个数.py,数据分类处理.py,数字颠倒.py,素数伴侣.py,提取不重复的整数.py,统计每个月兔子的总数.py,图片整理.py,整数与IP地址间的转换.py,质数因子.py,字串的连接最长...
2.10 检验IP地址 . 124 2.11 校验忽略样式内容后文本域中的内容是否为空//校验忽略样式内容 后文本域中的内容是否为空.. 124 2.12 计算天数差的函数. 125 2.13 把结束日期月份加上月末日期.. 125 2.14 检验输入的...
0080 判断IP地址是否合法的算法 53 0081 判断身份证是否合法的算法 54 0082 判断素数的算法 55 0083 将字符串转换成Unicode格式 56 3.4 排序及分组类算法 56 0084 利用回溯法将一组数平均分成两组 56 ...
模块名称:茶凉专用模块 作者:茶凉 版本:2.0 本模块可以编程更简单...子程序 读内存长整数型, 长整数型, 公开, 从内存中读取长整数型数据,失败返回失败内容 .参数 进程ID, 整数型, , 进程ID .参数 地址, 整数型, , ...
0080 判断IP地址是否合法的算法 53 0081 判断身份证是否合法的算法 54 0082 判断素数的算法 55 0083 将字符串转换成Unicode格式 56 3.4 排序及分组类算法 56 0084 利用回溯法将一组数平均分成两组 56 ...
IP地址转化成整数,整数转化成IP地址; 十八为身份证格式验证;表达式解析器;字符串编码的转换;字符串对齐器;密码加密和验证(MD5); 制作命令行程序;使用正则表达式操作字符串;使用正则表达式验证电话号码的...
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: function IP2V(ip){re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式if(re.test(ip)){return RegExp.$1*Math.pow(255,3))+...
2.10 检验IP地址 . 124 2.11 校验忽略样式内容后文本域中的内容是否为空//校验忽略样式内容 后文本域中的内容是否为空.. 124 2.12 计算天数差的函数. 125 2.13 把结束日期月份加上月末日期.. 125 2.14 检验输入的...
【繁简转换】 可视化的繁简体GB与BGK码以及GB2与BIG5码相互转换,可以复制文本到当前窗体中文本进行转换,也可以实现单个文件或批量文件的转换。在窗体中双击文本字符串尾即可实现自动选定文本并自动复制功能。本...
常 用 工 具 【繁简转换】 可视化的繁简体GB与BGK码以及GB2与BIG5码相互转换,可以复制文本到当前窗体中文本进行转换,也可以实现单个文件或批量文件的转换。在窗体中双击文本字符串尾即可实现自动选定文本并自动...
5 IP地址转化成整数 5. 6 18位身份证格式验证 5. 7 表达式解析器 5. 8 字符串编码的转换 5. 9 字符串对齐器 5. 10 密码加密与验证 5. 11 制作命令行程序 5. 12 使用StringTokenizer ...
100 <br>0158 如何将二进制数转换为十六进制数 100 <br>0159 如何实现0~9之间随机整数 101 <br>0160 如何实现0~1之间随机数 101 <br>0161 如何返回数字的绝对值 101 <br>5.2 控件数据处理...
IP地址查询、html加密解密、弹出式窗口代码生成、、CSS生成器、html与js代码互转、HTML转换PHP代码、HTML转换为Perl代码、框架网页代码生成、GB2312转UTF8代码、网页调式器、字符串长度计算、md5加密代码、Encode...
中文数字转换为阿拉伯数字.cmd 人民币大小写互转程序.cmd 人民币金额小写转大写.cmd 十进制转二进制.cmd 十进制转十六进制.cmd 字母大小写转换.cmd 把秒转换为天小时分秒的格式.cmd 阿拉伯与罗马数字互转程序.cmd ...
11.4 通过CIDR地址生成对应的IP地址集 11.5 创建一个简单的REST接口 11.6 通过XML-RPC实现简单的远程调用 11.7 在不同的Python解释器之间交互 11.8 实现远程方法调用 11.9 简单的客户端认证 11.10 在网络服务...
4、新增“注册表操作Ex->写QWORD_64值”写入64位长整数值,成功返回真,失败返回假.源码由@pp25729391提供。 5、修正“类_APIHOOK->取地址”当安装时不填后缀,而取地址填写后无法获取已安装地址BUG,感谢易友【@...
实例022 自动类型转换与强制类型转换 33 2.2 运算符 34 实例023 加密可以这样简单(位运算) 34 实例024 用三元运算符判断奇数和偶数 35 实例025 更精确地使用浮点数 35 实例026 不用乘法运算符实现2×16 37 实例027...