`

ip2long

    博客分类:
  • java
 
阅读更多
package com.juanpi.order.common;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * @author jis117@yahoo.com
 *
 */
public class Ip2Number {

	/**
	 * @param ip
	 * @return 有符号的整形数;当ip>128.0.0.0时为负数;
	 * @throws UnknownHostException
	 * @author wenc
	 */
	public static int ip2Int(String ip) throws Exception {
		InetAddress address = InetAddress.getByName(ip);// 在给定主机名的情况下确定主机的 IP 址。
		byte[] bytes = address.getAddress();// 返回此 InetAddress 对象的原始 IP 地址
		int a, b, c, d;
		a = byte2int(bytes[0]);
		b = byte2int(bytes[1]);
		c = byte2int(bytes[2]);
		d = byte2int(bytes[3]);
		int result = (a << 24) | (b << 16) | (c << 8) | d;
		return result;
	}

	public static int byte2int(byte b) {
		int l = b & 0x07f;
		if (b < 0) {
			l |= 0x80;
		}
		return l;
	}

	/**
	 * @param ip
	 * @return IP转化为长整形数值
	 * @throws UnknownHostException
	 * @author wenc
	 */
	public static long ip2long(String ip) throws Exception {
		int ipNum = ip2Int(ip);
		return int2long(ipNum);
	}

	public static long int2long(int i) {
		long l = i & 0x7fffffffL;
		if (i < 0) {
			l |= 0x080000000L;
		}
		return l;
	}

	/**
	 * @param ip
	 * @return 长整形数值转化为ip地址
	 * @author wenc
	 */
	public static String long2ip(long ip) {
		int[] b = new int[4];
		b[0] = (int) ((ip >> 24) & 0xff);
		b[1] = (int) ((ip >> 16) & 0xff);
		b[2] = (int) ((ip >> 8) & 0xff);
		b[3] = (int) (ip & 0xff);
		String x = Integer.toString(b[0]) + "." + Integer.toString(b[1]) + "." + Integer.toString(b[2]) + "." + Integer.toString(b[3]);
		return x;
	}

}
分享到:
评论

相关推荐

    Java_IPv4转换_ip2long_long2IP

    Java_IPv4转换_ip2long_long2IP,与php/java/javascript互相兼容

    ip2long和long2ip的学习程序

    `ip2long`和`long2ip`函数就是用于实现这种转换的工具。这两个函数通常在PHP中使用,但其他编程语言中也有类似功能的函数。 `ip2long`函数的主要作用是将IPv4地址(例如"192.168.1.1")转换为32位无符号整型数值。...

    详谈php ip2long 出现负数的原因及解决方法

    `ip2long` 和 `long2ip` 这两个函数提供了解决这个问题的便捷方式。本文将详细讨论`ip2long` 函数出现负数的原因以及相应的解决方法。 `ip2long` 是一个PHP内置函数,其功能是将一个符合标准格式的IPv4地址转换为32...

    go语言版的ip2long函数实例

    本文实例讲述了go语言版的ip2long函数。分享给大家供大家参考。具体分析如下: 这里介绍的go语言版的ip2long 函数不会对 IP 的合法性进行校验。 代码如下:// 注意: 该函数不会对 IP 的合法性进行校验 func Ip2Long...

    php IP转换整形(ip2long)的详解

    `ip2long()`函数在处理这种点分十进制格式的IP地址时,会将其转换为单一的32位数字,便于存储和计算。 首先,让我们深入理解`ip2long()`的工作原理。对于一个IP地址,例如"10.2.1.3",它实际上可以被视为一个32位二...

    探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法

    另一种方法是先使用`ip2long()`将IP地址转换为有符号的32位整数,然后将这个整数转换为二进制,再将二进制字符串转换回十进制。这可以避免整数溢出的问题: ```php $strIp = '182.118.0.0'; echo bindec(decbin...

    IP地址转化为长整型long

    在提供的"IP2Long.txt"文件中,可能包含了更多关于此话题的源码或解释。阅读该文件可以进一步了解IP地址转长整型的细节和应用。在实际编程中,我们应确保正确处理各种边界情况,如无效的IP地址、异常处理等,以确保...

    【PHP】根据IP地址查询省市(纯真数据库最新版)

    $ipLong = ip2long($ip); if ($ipLong === false) { return '无效的IP地址'; } $result = null; foreach ($ipData as $range) { if ($ipLong &gt;= $range['start'] && $ipLong $range['end']) { $result = $...

    php版纯真ip数据库

    if (ip2long($ip) &gt;= ip2long($start_ip) && ip2long($ip) &lt;= ip2long($end_ip)) { return $location; } } return '未知'; } // 使用示例 $ip = '192.168.0.1'; echo ip_location($ip); // 输出对应位置信息 `...

    php判断IP为国内国外

    - `long2ip()`:将长整型数字转换回IP地址。 - `filter_var()`:配合`FILTER_VALIDATE_IP`可以验证IP地址的有效性,同时可以指定是否接受IPv4、IPv6或者两者。 4. **IP数据库的使用**: - 如`ipdata.db`这样的...

    纯真IP数据库(2008-11-15)SQL版

    可使用Ip2long.java中的ip2long(String ip)方法将您的IP转换成长整型。 用以下语句查出相应的记录 SELECT description FROM wn_ip_dic WHERE #ip# &gt;= startip and #ip# LIMIT 1 --------------------...

    PHP使用纯真数据IP库转换物理IP

    $ipLong = ip2long($ip); if ($ipLong === false) { return "无效的IP地址"; } $file = fopen("qqwry.dat", "rb"); if (!$file) { return "无法打开数据库文件"; } $offset = 0x3e8; // 跳过文件头 $...

    PHP根据IP获取所在城市

    $ip_long = ip2long($ip); if ($ip_long === false) { return "无效的IP地址"; } $begin = $end = 0; while (true) { $data = unpack('N2', fread($fp, 8)); $begin = $data[1]; $end = $data[2]; if ...

    PHP利用纯真IP数据库在本地实现IP地址信息查询(无乱码)

    这可能涉及到IP地址的比较操作,可以使用`ip2long()`函数将IP地址转换为整型,便于比较。 最后,返回查询结果。这部分可能涉及JSON、XML或其他格式的数据结构,以便前端展示。确保编码正确,避免出现乱码,可以使用...

Global site tag (gtag.js) - Google Analytics