- 浏览: 3010215 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 4821.Java的内存机制 Java 把内存划分成两 ... -
监听域对象中属性的变更的监听器
2016-07-18 19:06 1753监听域对象中属性的变更的监听器 域对象中属性 ... -
HttpSessionActivationListener
2016-07-18 18:46 649HttpSessionActivationListe ... -
Web容器监听器(实现在线统计人数,踢人)
2016-07-18 10:48 950Web容器监听器(实现在线统计人数,踢人) Servl ... -
HttpSessionBindingListener接口
2016-07-18 10:29 642HttpSessionBindingListene ... -
ServletRequestAttributeListener接口
2016-07-17 22:24 8342. HttpSessionAttribut ... -
Servlet3中异步Servlet特性介绍
2016-07-17 15:50 846Servlet3中异步Servlet特性介绍 ... -
HttpSessionAttributeListener
2016-07-15 17:49 696HttpSessionAttributeListener ... -
使用ServletContextAttributeListener
2016-07-15 16:47 847使用ServletContextAttr ... -
ServletRequestListener
2016-07-15 16:25 600ServletRequestListener接口 ... -
HttpSessionListener
2016-07-15 14:56 634HttpSessionListener接口 M ... -
ServletContextListener 接口
2016-07-15 12:16 628在 Servlet API 中有一个 Se ... -
ReflectASM,高性能的反射
2016-04-29 17:19 961http://www.oschina.net/p/r ... -
Java多线程与静态方法
2016-04-26 11:52 850Java多线程与静态方法 在多线程中使用静态方法会发生什么 ... -
log4j日志输出格式
2016-04-12 20:58 1117log4j日志输出格式 在LOG4J的配置文件中,l ... -
Servlet3.0
2016-04-12 16:58 698一、Servlet3.0介绍 Servlet3 ... -
log4j2 使用详解
2016-04-12 14:14 1466log4j2 使用详解 转载自 Blog of ... -
Eclipse jar打包和命令行运行
2016-04-08 10:44 2963?Eclipse jar打包和命令行运行 第1步: ... -
GRAPHICSMAGICK+IM4JAVA错误Cannot run program "gm": error=2
2015-05-19 15:27 4112在通过 GRAPHICSMAGICK+IM4JAVA ... -
GraphicsMagick安装、实时生成缩略图
2015-05-19 13:39 2421GraphicsMagick安装、实时生成缩略图 ...
相关推荐
本文将详细探讨易语言中如何将IP地址转换为长整数,以及这个过程中的关键知识点。 易语言是一种中国本土开发的、面向对象的、中文编程语言,它的设计目标是降低编程的难度,让编程变得更加直观易懂。在易语言中处理...
通过学习和理解这段源码,不仅可以掌握IP与长整数之间的转换,还能加深对易语言编程的理解,提高编程技能。 在阅读和分析"content.txt"文件时,你可能会看到如何定义函数,如何处理字符串,以及如何进行数学运算的...
这个过程涉及到IPv4地址的二进制表示和整数转换。本文将详细讲解如何实现这一转化,并通过一个简单的源码示例来说明。 首先,让我们理解IP地址的结构。IPv4地址由32位组成,分为4个8位段,每个段用十进制表示,之间...
以下提供的两种方法详细介绍了如何在JavaScript中实现IP地址与整数之间的转换。 首先,我们来看第一个实现,即`ipToNumber`函数和`numberToIp`函数: 1. `ipToNumber`函数: - 这个函数接收一个IP地址作为参数,...
将十进制整数转换回IP地址的过程则需要逆向执行上述操作。具体步骤包括: 1. **分离各个位**:将整数按照24位、16位、8位和0位的规则分割,并提取出相应的部分。 2. **转换为十进制字符串**:将分割后的各个部分...
本文将深入探讨如何使用PHP实现IP地址与数字(通常称为整型或长整型)之间的相互转换,同时参考提供的博客链接:[链接已省略]。 首先,让我们了解IP地址和数字表示的基础知识。IP地址是一个32位的二进制数,通常以...
在IT领域,尤其是在编程实践中,将IP地址转换为长整数是一种常见的操作,尤其是在处理网络数据或进行IP相关的计算时。易语言,一种简洁而直观的中文编程语言,提供了这样的功能。本文将深入探讨易语言如何实现IP到长...
总结来说,Python中判断IP地址合法性的方法主要是通过字符串处理和整数转换,确保每个部分的长度、内容和数值都在有效范围内。这个过程对于网络编程和数据验证是非常重要的,确保了数据的准确性。希望这个详细的解释...
一般而言,这涉及到将IP地址转换为二进制形式,然后应用子网掩码,最后比较结果是否与子网的网络部分匹配。 ### 总结 通过分析给定的C++代码片段,我们了解了如何在C++中实现IP地址和子网掩码的合法性验证,以及...
1. **获取IP地址与子网的十进制形式**:首先将输入的字符串转换为十进制形式的数组。 2. **计算子网掩码**:根据输入的`mask`值计算出对应的子网掩码。具体做法是创建一个长度为4的数组,用于存储每个八位段的掩码值...
- 字符串与整数之间的转换:利用`sprintf`函数,可以将多个整数值拼接成一个字符串。 3. **内存管理**:使用`malloc`动态分配内存,并确保使用完毕后调用`free`释放内存,避免内存泄漏。 4. **SNMP协议**:简单...
根据给定的信息,本文将详细解释如何将IPv4与IPv6地址从字符串形式转换为`BigInteger`数字形式,以及反向操作的过程。 ### IPv4与IPv6简介 #### IPv4 IPv4(Internet Protocol Version 4)是互联网协议的第四版,...
在JavaScript编程领域中,IP地址的显示是一种常见的需求,特别是在网络应用或者数据分析的场景下。这个"javascript经典特效---IP地址的显示(说明).rar"压缩包文件可能包含了一个详细的示例或教程,用于教导如何在...
例如,在网络编程中,IP地址通常以点分十进制形式表示,但在底层实际上是用32位二进制表示的;又如,计算机内存中的数据是以二进制形式存储的,而我们在程序中读取时可能需要将其转换为易于理解的十进制或十六进制...
1. **点的个数**:一个合法的IP地址应包含3个点,因为有4个十进制数,每个数之间用一个点隔开。因此,我们可以先检查字符串中"."的出现次数,确保其等于3。 2. **每个字段的值**:每个十进制数(字节)的值必须在0...
- **替换法**:通过预定义的字符映射表或数学公式,将IP地址中的每个数字进行转换,例如将每个数字加上一个特定的值,然后对256取模,从而达到加密的目的。 - **哈希函数**:虽然哈希函数通常用于验证数据完整性,但...
在IT领域,尤其是在数据处理和网络通信中,十六进制(Hexadecimal)和IP地址的转换是常见的操作。本文将详细讲解"十六进制时间转化器和IP转化器"的相关知识点,以及它在实际工作中的应用。 首先,我们来探讨十六...
总之,`inet_aton()`和`inet_ntoa()`是处理IP地址与整数之间转换的便捷工具,特别是在数据库操作中,它们能提高效率并减少潜在的错误。正确理解和使用这两个函数对于处理网络数据和进行IP相关的计算至关重要。
6. **ip2long** 和 **long2ip**:这两个函数是IP地址与长整型数值之间的转换工具。`ip2long`将IP地址转换为一个长整型数值,方便在网络传输和计算中使用;而`long2ip`则将这种数值形式的IP地址还原为人类可读的点分...
在IT行业中,网络编程是不可或缺的一部分,而IP地址与数字之间的转换经常出现在各种网络操作中。`ip2long`和`long2ip`是两个在PHP中常用的函数,用于将IPv4地址转换为整型数字(长整型)以及将整型数字还原为IPv4...