将点分式的IP地址转换成长整型

 

/**
 *
 */
package test;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;

/**
 * @author wKF46214
 *
 */
public class IpConvert
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        try
        {
            long ip1 = convertIpFromString2Long("1.1.1.1");
            long ip2 = convertIpFromString2Long("255.255.255.255");
            System.out.println(ip1);
            System.out.println(ip2);
            long a = 3294967295L;
            String ip3 = convertIpFromLong2String(a);
            System.out.println(ip3);
        }
        catch (UnknownHostException e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 将点分式的IP地址转换成长整型
     * @param ip
     * @return
     * @throws UnknownHostException
     */
    public static long convertIpFromString2Long(String ip) throws UnknownHostException
    {
        if (ip == null || ip.equals(""))
        {
            return 0;
        }

        InetAddress ipaddr = InetAddress.getByName(ip);
        byte[] bas = ipaddr.getAddress();
        int result = 0;
        result |= ((short) (bas[0] & 0x00ff) << 24);
        result |= ((short) (bas[1] & 0x00ff) << 16);
        result |= ((short) (bas[2] & 0x00ff) << 8);
        result |= (short) (bas[3] & 0x00ff);

        return convertUnsignedInt2Long(result);
    }

    public static long convertUnsignedInt2Long(int value)
    {
        long ret;

        ret = value >>> 1;
        ret <<= 1;
        ret |= (value << 31) >>> 31;

        return ret;
    }

    /**
     * 将长整型的IP地址转换成点分式
     *
     * @param ip
     * @return
     * @throws UnknownHostException
     */
    public static String convertIpFromLong2String(long ip) throws UnknownHostException
    {
        if (ip <= 0)
        {
            return "";
        }

        ByteBuffer buf = ByteBuffer.allocate(4);
        // buf.order(ByteOrder.LITTLE_ENDIAN);//必须转换成小头序,才能正确显示IP
        buf.putInt(convertLong2UnsignedInt(ip));

        InetAddress addr = InetAddress.getByAddress(buf.array());
        return addr.getHostAddress();
    }

    public static int convertLong2UnsignedInt(long value)
    {
        int ret;

        ret = (int) (value & 0x00000000ffffffff);

        return ret;
    }

}

 

 

时间: 2024-12-03 13:58:17

将点分式的IP地址转换成长整型的相关文章

使用JAVA IP地址转成长整型方法时出现错误

java.lang.NumberFormatException: For input string: "0" 在使用JAVA IP地址转成长整型方法时出现此错误 这里对场景进行记录,以备日后遇到类似的错误,参考如何解决 错误输出: 错误原因:怀疑此处为"\0"字符 解决方法: 作者:csdn博客 微wx笑 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/

JAVA IP地址转成长整型方法

JAVA IP地址转成长整型方法 代码如下: /** * IP转成整型 * @param ip * @return */ public static Long ip2int(String ip) { Long num = 0L; if (ip == null){ return num; } try{ ip = ip.replaceAll("[^0-9\\.]", ""); //去除字符串前的空字符 String[] ips = ip.split("\\.&

JAVA中把IP地址转成长整型的方法

代码如下: /** * IP转成整型 * @param ip * @return */ public static Long ip2int(String ip) { Long num = 0L; if (ip == null){ return num; } try{ ip = ip.replaceAll("[^0-9\\.]", ""); //去除字符串前的空字符 String[] ips = ip.split("\\."); if (ips.l

将IP地址转换为长整型、将长整型转换为IP地址

ip地址|转换 将IP地址转换为长整型 Converts a string ip address ("192.168.0.1") to a Long number (3232235521). One of the reasons to do this would be to store IP addresses in databases. Numbers greatly reduce the size required to store this information. Inputs

ASP转化ip地址为长整型数字

有时候我们会在页面上显示用户的所在地区,这个原理是:先得到用户的IP,然后去查询将IP转换成一个数值,最后去查这个数值所在的范围,来得到用户所在的地方. IP转换成数值的方法: 假设IP是192.168.0.1 192*255*255*255+168*255*255+0*255+1 结果就是要得到的数值. 将ip地址转换为长整型 <%  Function CLngIP(ByVal asNewIP)  Dim lnResults  Dim lnIndex  Dim lnIpAry  lnIpAry

转化ip地址为长整型数字的函数

将ip地址转换为长整型 <% Function CLngIP(ByVal asNewIP) Dim lnResults Dim lnIndex Dim lnIpAry lnIpAry = Split(asNewIP, ".", 4) For lnIndex = 0 To 3 If Not lnIndex = 3 Then lnIpAry(lnIndex) = lnIpAry(lnIndex) * (256 ^ (3 - lnIndex)) End If lnResults = l

python将ip地址转换成整数的方法

 这篇文章主要介绍了python将ip地址转换成整数的方法,涉及Python针对IP地址的转换技巧,需要的朋友可以参考下     本文实例讲述了python将ip地址转换成整数的方法.分享给大家供大家参考.具体分析如下: 有时候我们用数据库存储ip地址时可以将ip地址转换成整数存储,整数占用空间小,索引也会比较方便,下面的python代码自定义了一个ip转换成整数的函数,非常简单,代码同时还提供了整数转换成ip地址的方法. ? 1 2 3 4 5 6 7 import socket, struc

java中IP地址转换十进制数实现代码

先看实例  代码如下 class ip { private static long iptolong(string strip) //将127.0.0.1 形式的ip地址转换成10进制整数,这里没有进行任何错误处理 { int j=0; int i=0; long [] ip=new long[4]; int position1=strip.indexof("."); int position2=strip.indexof(".",position1+1); int

wireshark 网络数据包-ip地址转换的问题?非常规地址表示如何转换

问题描述 ip地址转换的问题?非常规地址表示如何转换 用wireshark抓包,STUN协议中包含的ip地址192.168.1.13,显示的是e1baa54f,求解192.168.1.13是如何从e1baa54f转换得来的?