`

IP地址转换成整形

    博客分类:
  • Java
 
阅读更多
将一个Ip地址转换成整形



//接受一个String类型的一个参数,将其转化成一个long类型的
//暂时转化String类型的IP地址
public long ipToLong(String ip){
  String[] ips = ip.split("//.");
  StringBuffer strip = new StringBuffer();
  for(int i=0;i<ips.length;i++){
    strip.append(ips[i]);
  }
  return Long.parseLong(strip.toString());
    }

当发生 192.168.12.1和192.168.1.21的时候用上面的那种转换的话,结果是相同的:192168121
所以有下面两种方式:

第一种:
    id分为四段,每段不够3位的话,加零如:192.168.12.1和192.168.1.21,结果是:192168012001和192168001021

    code:
package com.text.dos;

import org.omg.PortableInterceptor.DISCARDING;

public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自动生成方法存根
  
  String s = "192.168.1.12";
  long j = doString(s);
  System.out.println(j);
 }
 
 private static long doString(String idString)
 {
  long i = 0;
  int a1 = idString.indexOf(".");
  int a2 = idString.indexOf(".",a1+1);
  int a3 = idString.indexOf(".",a2+1);
  
 
  String s1 = idString.substring(0,a1);
  String s2 = idString.substring(a1+1,a2);
  String s3 = idString.substring(a2+1, a3);
  String s4 = idString.substring(a3+1,idString.length());
  //System.out.println(s4);
  
  if(s1.length()==1)
   s1 = "00"+s1;
  else if (s1.length()==2) {
   s1 = "0"+s1;
  }
  System.out.println(s1);
  
  if(s2.length()==1)
   s2 = "00"+s2;
  else if (s2.length()==2) {
   s2 = "0"+s2;
  }
  System.out.println(s2);
  
  if(s3.length()==1)
   s3 = "00"+s3;
  else if (s3.length()==2) {
   s3 = "0"+s3;
  }
  if(s4.length()==1)
   s4 = "00"+s4;
  else if (s4.length()==2) {
   s4 = "0"+s4;
  }
  
  System.out.println(s3);
  String s = s1+s2+s3+s4;
  i = Long.parseLong(s);
  
  
  return i;
 }

}

第二种:

一、应用范围
    一般用在登录限制、查找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。

三、实例演示
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.2.99";
		long longIp = Ip2Long.ipToLong(ipStr);
		System.out.println("192.168.2.99 的整数形式为:" + longIp);
		System.out.println("整数" + longIp + "转化成字符串IP地址:"
				+ Ip2Long.longToIP(longIp));
		// ip地址转化成二进制形式输出
		System.out.println("192.168.2.99 的二进制形式为:"
				+ Long.toBinaryString(longIp));

	}
}
分享到:
评论

相关推荐

    IP地址转换整形工具

    本文将详细解析"IP地址转换整形工具"及其相关知识点,旨在帮助用户理解和掌握IP地址与整数之间的转换技巧。 首先,我们要明白IP地址(Internet Protocol Address)是由32位二进制组成的,通常以点分十进制的形式...

    把IP地址转换整型数据的工具

    将IP地址转换为整型的过程称为IPv4到整型的转换。这通常通过以下步骤完成: 1. 将每段十进制数转换为二进制。 2. 把四段二进制数拼接在一起,形成一个32位的二进制数。 3. 将这个32位二进制数转换为十进制整数。...

    IP地址转换成整数,整数转换成IP地址

    IP地址转换成整数,整数转换成IP地址,16进制转换成IP地址,IP地址转换成16进制

    时间和IP地址数字转换工具Convert

    时间互转整型、IP地址互转整型、的工具,方便程序开发,数据查询。

    易语言源码易语言IP地址转换源码.rar

    本压缩包“易语言源码易语言IP地址转换源码.rar”包含了用易语言编写的IP地址转换的源代码,这对于学习易语言和网络编程的初学者来说是一份非常宝贵的资料。 IP地址是互联网上设备的唯一标识,通常以点分十进制的...

    IP地址转换成Int64

    在某些情况下,我们需要将IP地址转换为Int64格式,这主要出于计算或存储效率的考虑。这种转换在处理大量IP数据时特别有用,例如在网络监控、数据分析或路由表中。 IP地址转换为Int64的过程可以分为以下几个步骤: ...

    点分十进制IP转换为长整型

    点分十进制IP和长整型转换,直接把IP地址转换为整型,存数据库增加效率。

    时间、IP转换工具

    IP地址转换主要包括以下几种形式: 1. 十进制和二进制:将十进制IP转换为二进制形式,有助于理解网络掩码和子网划分。 2. 十进制和十六进制:在某些网络计算中,十六进制表示更方便,如IPv6。 3. IP和字符串:有时...

    将IP地址转换为整型数字的PHP方法、Asp方法和MsSQL方法、MySQL方法

    首先我们要先了解一下IP地址转换为整型(严格来说应该说是长整型)的原理~ 【转换原理】:假设IP为:w.x.y.z,则IP地址转为整型数字的计算公式为:intIP = 256*256*256*w + 256*256*x + 256*y + z 【PHP的互转】:PHP...

    Asp.net C# IP地址整形相互转化源代码

    IP地址通常表示为四段式的点分十进制形式,例如 "192.168.1.1",而整形数值则是将IP地址转换成一个32位无符号整数,便于计算和存储。在C#中,我们可以使用内置的方法或自定义函数来实现这两种形式的互转。 1. **IP...

    ip数据库(长整型)最新转换

    在IT领域,IP数据库通常用于将IP地址转换为地理位置信息,反之亦然。"ip数据库(长整型)最新转换"这个标题暗示我们有一个数据库,其中的IP地址已经被转换为长整型数值。这种转换是常见的做法,因为长整型表示IP地址...

    Delphi版IP地址与整型互转

    但在某些场景下,如数据库存储或算法处理时,将IP地址转换为整型数更为高效。本篇将详细介绍如何使用Delphi实现IP地址与整型之间的相互转换。 #### 二、基础知识回顾 ##### 1. IP地址结构 IPv4地址由32位二进制...

    ip 地址转换

    本文将深入探讨如何将点分十进制表示的IP地址转换为整型和十六进制字符串,以及如何进行反向转换。 首先,让我们了解IP地址的基本概念。IP地址是由32位二进制数组成的,通常被分为四组,每组8位,用点号(.)隔开,...

    Delphi IP地址与数字地址互转

    要将IP地址转换为32位整型数字,可以将IP地址的每个八位段转换为整数,然后将它们组合在一起。以下是一个简单的Delphi函数实现: ```delphi function IPToLong(const IPAddress: string): Cardinal; var Octets: ...

    C#写的IP地址转换作业

    Console.WriteLine("并输出IP地址的二进制表示形式,判断IP地址的类别,"); Console.WriteLine("输出IP地址所在的网络号、主机号以及广播地址。\n\n"); Console.WriteLine("*************************************...

    IP地址段分类,基本包括最新世界所有IP地址段对应的地区

    本文将深入探讨IP地址段分类、IP转换整形、IP对应的地区以及IP分类的相关知识点。 首先,让我们了解IP地址的基本概念。IP(Internet Protocol)地址是一个32位二进制数,通常被分为四个八位段,每个段用十进制表示...

    unsignedLongIP地址的转换

    `inToIptools.exe`很可能是一个实际的执行程序,这个小工具实现了将unsigned long格式的IP地址转换为可读的字符串形式。 在实际开发中,开发者可能会编写这样的工具来辅助调试或数据分析,尤其是在处理大量IP数据时...

    IP地址与数值的转换工具类

    提供把ip地址转换为长整型,把长整型转换为ip地址 。提供一个一般的地址(如192.168.1.250),以及掩码的长度(如24),得到网络地址(如192.168.1.0)。获取掩码位数。根据起始地址,终止地址,掩码长度,获取可使用的...

    IP点分十六进制整型转换

    接下来,我们将讨论如何将这样的点分十进制IP地址转换为十六进制整型。十六进制是一种基数为16的数制,它使用0-9的数字和A-F的字母来表示数值,其中A代表10,B代表11,C代表12,D代表13,E代表14,F代表15。每8位二...

Global site tag (gtag.js) - Google Analytics