`

java字符串应用之IP地址转换成整数

    博客分类:
  • J2SE
阅读更多
一、应用范围
    一般用在登录限制、查找IP所在城市等需求中,windows的ping命令也支持整数形式的IP。

二、关键技术点
    将IP地址转化成整数的方法如下:
    1、通过String的indexOf方法找出IP字符串中的点"."的位置。
    2、根据点的位置,使用String的substring方法把IP字符串分成4段。
    3、使用Long的parseLong方法把子段转化成一个3位整数。
    4、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1
   
    将整数形式的IP地址转化成字符串的方法如下:
    1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。
    2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。
    3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
    4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。

三、实例演示



/** *//**
 * 文件名:IP2Long.java
 */
package book.oo.String;

/** *//**
 * @author joe
 *
 */
public class IP2Long ...{
    
    //将127.0.0.1形式的IP地址转换成十进制整数,这里没有进行任何错误处理
    public static long ipToLong(String strIp) ...{
        long[] ip = new long[4];
        //先找到IP地址字符串中.的位置
        int position1 = strIp.indexOf(".");
        int position2 = strIp.indexOf(".", position1 + 1);
        int position3 = strIp.indexOf(".", position2 + 1);
        //将每个.之间的字符串转换成整型
        ip[0] = Long.parseLong(strIp.substring(0, position1));
        ip[1] = Long.parseLong(strIp.substring(position1+1, position2));
        ip[2] = Long.parseLong(strIp.substring(position2+1, position3));
        ip[3] = Long.parseLong(strIp.substring(position3+1));
        return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
    }
    
    //将十进制整数形式转换成127.0.0.1形式的ip地址
    public static String longToIP(long longIp) ...{
        StringBuffer sb = new StringBuffer("");
        //直接右移24位
        sb.append(String.valueOf((longIp >>> 24)));
        sb.append(".");
        //将高8位置0,然后右移16位
        sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16));
        sb.append(".");
        //将高16位置0,然后右移8位
        sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8));
        sb.append(".");
        //将高24位置0
        sb.append(String.valueOf((longIp & 0x000000FF)));
        return sb.toString();
    }
    /** *//**
     * @param args
     */
    public static void main(String[] args) ...{
        String ipStr = "192.168.0.1";
        long longIp = IP2Long.ipToLong(ipStr);
        System.out.println("192.168.0.1 的整数形式为:" + longIp);
        System.out.println("整数" + longIp + "转化成字符串IP地址:"
                + IP2Long.longToIP(longIp));
        //ip地址转化成二进制形式输出
        System.out.println("192.168.0.1 的二进制形式为:" + Long.toBinaryString(longIp));

    }
}


输出结果:
192.168.0.1 的整数形式为:3232235521
整数3232235521转化成字符串IP地址:192.168.0.1
192.168.0.1 的二进制形式为:11000000101010000000000000000001
分享到:
评论
2 楼 lenomon 2012-03-11  
1 楼 zaul 2009-02-11  
有类似简洁的处理IPV6的方法吗

相关推荐

    跨平台 获取本机IP/MAC地址,检测是否内网IP,字符串IP转换成Number地址

    4. **字符串IP转Number地址**: 字符串形式的IP地址(如“192.168.1.1”)可以转换为整数形式,便于计算和比较。通常使用四个十进制数字分别对应32位二进制数的四个8位段,转换过程涉及将每个十进制数转换为二进制...

    ipv4和ipv6字符串转换成数字

    为了将`BigInteger`类型的IP地址转换回字符串形式,代码使用了`BigIntToString`方法。该方法首先将`BigInteger`转换为字节数组,然后使用`InetAddress`类提供的静态方法`getByAddress`将字节数组转换为`InetAddress`...

    java中用正则表达式检测IP地址是否合理

    ### Java中利用正则表达式检测IP地址合理性 在日常的软件开发中,经常会遇到需要验证用户输入数据的情况,特别是对于IP地址这类特定格式的数据。本文将详细介绍如何使用Java中的正则表达式来检查一个IP地址的有效性...

    JAVA中IP和整数相互转化的方法

    将IP地址转换为整数时,可以将每段看作一个8位的二进制数,然后将它们组合成一个32位的整数。这个过程主要通过位运算实现: 1. 将每段IP转换为二进制,例如,192对应于11000000,168对应于10101000,1对应于...

    ip转为十进制整数

    然而,在某些应用场景下,比如数据库存储、数据处理或网络通信协议中,可能需要将IP地址转换成一个整数值来方便处理。本文将详细探讨如何将IPv4地址转换为十进制整数以及反向转换的过程。 #### IP地址转十进制整数 ...

    HexStrToInt.zip_字符串处理_字符串的处理

    在IT行业中,字符串处理是一项基础且...总之,字符串处理是编程中的核心技能之一,而从十六进制字符串转换为整数是其中的一个关键操作。通过深入理解和实践,我们可以更有效地处理各种文本数据,实现更复杂的程序逻辑。

    java读取纯真IP地址数据库

    在Java编程环境中,读取纯真IP地址数据库是一项常见的任务,尤其对于需要进行IP定位或者网络管理的应用来说。纯真IP数据库(通常称为QQWRY或IPSeeker)是一个包含了全球IP地址及其对应地理位置信息的数据库,它由一...

    java判断是内网ip还是公网ip

    2. **IP地址解析**:将获取到的IP字符串转换为整数形式,方便进行比较。可以使用`InetAddress`类的`getByAddress()`方法,将IP字符串转换为字节数组,然后将每个字节转换为十进制数。 ```java String[] ipParts = ...

    使用Java代码将IP地址转换为int类型的方法

    在Java编程中,将IP地址转换为int类型的方法是一个常见的技术问题,这涉及到网络编程的基础知识和位操作。IP地址通常以点分十进制的形式表示(如"192.168.1.116"),而转换为int类型则需要将每个八位段(byte)分别...

    java实现ip地址与十进制数相互转换

    首先,让我们看看如何将IP地址转换为十进制数。这个过程涉及到将IP地址的每个部分(每个部分是0到255的整数)转换为二进制,然后将这些二进制数组合成一个32位的整数。例如,IP地址"10.0.3.193"转换为二进制是: - ...

    java ip 地址分析

    5. IP地址转换:Java提供了一些方法将IP地址转换为字节数组,反之亦然。例如,`InetAddress`的`getAddress()`方法返回一个字节数组,而`InetAddress.getByAddress(byte[] addr)`可以根据字节数组创建`InetAddress`...

    java根据ip获取国家、地区名称,附带ip库

    2. **IP地址转换** 在Java中,IP地址通常表示为字符串,如"192.168.0.1"。要进行比较和查询,需要将其转换为整数或`InetAddress`对象。`InetAddress`类提供了`getByName()`方法,用于将IP字符串转换为`InetAddress`...

    Java实现产生随机字符串主键的UUID工具类

    1. IP地址转换:使用InetAddress类获取当前机器的IP地址,并将其转换为整数。 2. JVM标识符:使用System.currentTimeMillis()方法获取当前时间戳,并将其转换为整数。 3. 计数器:使用synchronized关键字实现的...

    Java代码中对IP精确格式的校验

    在`CheckIP.java`文件中,我们可以定义一个静态方法`isValidIP(String ip)`,该方法接受一个字符串作为参数,返回值为布尔类型,表示输入的字符串是否符合IP地址的格式。 ```java public class CheckIP { public ...

    ip、mac标准格式转换工具(java)

    2. `byteArrayToMacString(byte[] macBytes)`:将字节数组形式的MAC地址转换为字符串。 3. `isValidMacAddress(String mac)`:验证给定的MAC地址是否有效。 4. `getMacAddressFromInterface(String interfaceName)`...

    Java 版本 IP 数据库查询

    可以使用`InetAddress`的`getByAddress()`方法将IP字符串转换为字节数组,再转换为整数。 3. **数据结构优化**: - 考虑到IP地址的连续性,可以使用`TreeMap`来存储IP范围,其中键是IP地址的整数值,值是地理位置...

    java读取纯真IP数据库

    `Utils` 类是一些辅助方法的集合,用于处理 IP 地址的字节表示和字符串表示之间的转换。 - `getIpByteArrayFromString(String ip)`:这个方法将 IP 字符串(例如 "192.168.1.1")转换为字节数组。它通过分隔符 "....

    利用纯真IP数据库,通过IP查地址[JAVA]

    3. **IP地址转换与解析**:学习IP地址的字符串到整数形式的转换方法以及如何根据IP地址获取对应的地理位置信息。 4. **随机访问文件类`RandomAccessFile`的应用**:掌握如何使用`RandomAccessFile`类读取大文件并...

    Java进制转换实现

    - `Integer.toString(int number, int radix)`:这个方法可以将一个十进制整数转换为指定基数的字符串表示。例如,`Integer.toString(10, 2)`会返回二进制字符串"1010"。 - `Long.toString(long number, int radix...

Global site tag (gtag.js) - Google Analytics