在网上找到的IP地址与整型之间的转化,另外加上一个自己写的根据IP和子网掩码获取IP网段的方法
package cn.cloudex.util;
public class IPUtil {
//十进制ip地址转化为长整型(59.225.0.0-->1004601344L)
public static long getStringIpToLong(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地址(1004601344L-->59.225.0.0)
public static String getLongIpToString(long ipLong) {
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();
}
//根据IP和子网掩码获取IP网段
public static String getIPStartAndEnd(String ip,String mask){
long s1 = getStringIpToLong(ip);
long s2 = getStringIpToLong(mask);
String erj = Long.toBinaryString(s2);
long s3 = s1 & s2;
long start = getStringIpToLong(getLongIpToString(s3));
String wl = Long.toBinaryString(s3);
if(wl.length()<32) {
int le = 32-wl.length();
for(int i=0; i<le; i++) {
wl = "0"+wl;
}
}
String gbl = wl.substring(0,erj.indexOf("0"))+wl.substring(erj.indexOf("0"),wl.length()).replace("0", "1");
long s4 = Long.parseLong(gbl, 2);
long end = getStringIpToLong(getLongIpToString(s4));
return start+"|"+end;
}
public static void main(String[]arg) {
System.out.println(IPUtil.getIPStartAndEnd("59.224.192.0", "255.255.192.0"));
System.out.println(IPUtil.getStringIpToLong("1.12.0.0"));
System.out.println(IPUtil.getLongIpToString(1004584960L));
System.out.println(IPUtil.getLongIpToString(1004601343L));
}
}
分享到:
相关推荐
Java ip 地址排序Java ip 地址排序Java ip 地址排序Java ip 地址排序
在Java编程中,获取IP地址是一项常见的任务,特别是在网络编程和服务器开发中。这个"java IP地址工具类"是为了解决这个问题而设计的。它提供了便捷的方法来获取和处理IP地址,尤其对于获取客户端IP地址在Web应用中至...
Java IP地址网段计算是网络编程中的一个重要概念,它可以帮助开发者计算出某个IP地址的网段信息,包括网段的起始IP、结束IP和子网掩码等。在Java语言中,可以使用各种算法和技巧来实现IP地址网段计算。下面是一个...
本文将详细解析"IP地址转换整形工具"及其相关知识点,旨在帮助用户理解和掌握IP地址与整数之间的转换技巧。 首先,我们要明白IP地址(Internet Protocol Address)是由32位二进制组成的,通常以点分十进制的形式...
- 如果输入的URL有效,则将其IP地址转换为字符串形式,并显示在标签(`jl`)中。 - 如果输入的URL无效或者无法解析,则会抛出`UnknownHostException`异常,此时程序会捕获这个异常并打印堆栈跟踪。 - 用户点击...
Java中IP地址和数字相互转换可以通过使用bitwise操作来实现。以下是Java中IP地址和数字相互转换的代码示例: IP转为数字(第二种算法。用左移、按位或实现。效率更高。): ```java public long ipToLong(String ip...
在Java编程语言中,获取IP地址是一项常见的任务,特别是在网络编程和服务器开发中。这个程序虽然界面简单,但核心功能强大,它能够帮助开发者获取指定域名对应的IP地址。以下是关于这个话题的一些详细知识点: 1. *...
在Java编程中,有时我们需要根据用户的IP地址获取其所在地理位置的信息,这在网站统计、个性化推荐或者安全防护等方面都有重要作用。本篇文章将分享一个利用Java实现根据IP地址获取地理位置的简单示例,主要使用了QQ...
IP地址范围读取与转换 代码中的`ipBegin`和`ipEnd`变量分别表示数据库中记录的起始和结束IP地址。通过`byteArrayToLong`方法将读取到的字节数据转换为长整型数字,便于比较和计算。这里采用了小端序(little-...
在Java编程中,根据IP地址获取国家和地区名称是一项常见的需求,尤其在数据分析、网络监控或者用户定位等场景中。这个话题涉及到的主要知识点包括IP地址处理、数据库查询以及使用第三方库。 首先,IP地址是一个32位...
在Java编程语言中,获取计算机名和IP地址是常见的网络编程任务。这主要涉及到Java的`java.net`包,该包提供了多种类和接口来处理网络相关的操作。下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看...
例如,我们可以创建一个IP地址列表,然后通过遍历并比较输入IP与列表中的IP进行匹配,以决定是否允许通信。对于更复杂的过滤规则,可能需要用到数据结构(如树或散列表)来提高查询效率。 开通和关闭IP地址的操作...
在IT行业中,网络编程是不可或缺的一部分,而与之相关的任务之一就是识别和处理IP地址。在Java编程中,我们有时需要获取一个IP地址所对应的具体地理位置,例如省份、城市等信息。这通常需要借助特定的IP数据库,如...
IP地址通常表示为四段式的点分十进制形式,例如 "192.168.1.1",而整形数值则是将IP地址转换成一个32位无符号整数,便于计算和存储。在C#中,我们可以使用内置的方法或自定义函数来实现这两种形式的互转。 1. **IP...
Java正则表达式验证IP地址是指使用Java语言中的正则表达式来验证IP地址是否符合标准。IP地址是指在网络通信中用来标识设备的地址,它是一种逻辑地址,通过它可以找到网络中的设备。在Java中,可以使用正则表达式来...
在Java编程中,根据IP地址反查对应的省市县地址是一项常见的需求,这通常涉及到网络编程和地理信息系统(GIS)的应用。下面将详细讲解如何利用Java实现这一功能。 首先,我们需要理解IP地址的基本概念。IP地址是由...
输入IP地址及掩码(如24),计算出地址范围 1、计算出掩码指定的IP地址个数 2、分割IP地址 3、将10.0.0.0形式的ip地址转换成10进制整数 4、将10进制整数形式转换成127.0.0.1形式的IP地址
在Java编程中,发送邮件和获取IP地址是两个常见的任务,尤其在系统集成、通知服务或者数据通信中。下面将详细讲解这两个知识点。 首先,让我们来看看如何使用Java发送邮件。在Java中,我们通常使用JavaMail API来...
标题中的“根据IP地址获取经纬度”是指在Java编程环境下,通过特定的库或API来实现从IP地址解析出地理位置的经纬度坐标。这通常涉及到网络编程和地理信息系统(GIS)的技术。描述中提到的Java工程是实现这个功能的一...