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

基本知识点 
 
IP ——> 整数:
把IP地址转化为字节数组
通过左移位(<<)、与(&)、或(|)这些操作转为int
整数 ——> IP:
将整数值进行右移位操作(>>>),右移24位,再进行与操作符(&)0xFF,得到的数字即为第一段IP。
将整数值进行右移位操作(>>>),右移16位,再进行与操作符(&)0xFF,得到的数字即为第二段IP。
将整数值进行右移位操作(>>>),右移8位,再进行与操作符(&)0xFF,得到的数字即为第三段IP。
将整数值进行与操作符(&)0xFF,得到的数字即为第四段IP。

思路
ip地址转int类型,例如ip为“192.168.1.116”,相当于“.“将ip地址分为了4部分,各部分对应的权值为256^3, 256^2, 256, 1,相成即可

int类型转ip地址,思路类似,除以权值即可,但是有部分字符串的操作

代码

  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
  #include <math.h> 

  #define LEN 16 

  typedef unsigned int uint; 

  /**
   * 字符串转整形
   */
  uint ipTint(char *ipstr)
  {
    if (ipstr == NULL) return 0; 

    char *token;
    uint i = 3, total = 0, cur; 

    token = strtok(ipstr, "."); 

    while (token != NULL) {
      cur = atoi(token);
      if (cur >= 0 && cur <= 255) {
        total += cur * pow(256, i);
      }
      i --;
      token = strtok(NULL, ".");
    } 

    return total;
  } 

  /**
   * 逆置字符串
   */
  void swapStr(char *str, int begin, int end)
  {
    int i, j; 

    for (i = begin, j = end; i <= j; i ++, j --) {
      if (str[i] != str[j]) {
        str[i] = str[i] ^ str[j];
        str[j] = str[i] ^ str[j];
        str[i] = str[i] ^ str[j];
      }
    }
  } 

  /**
   * 整形转ip字符串
   */
  char* ipTstr(uint ipint)
  {
    char *new = (char *)malloc(LEN);
    memset(new, '\0', LEN);
    new[0] = '.';
    char token[4];
    int bt, ed, len, cur; 

    while (ipint) {
      cur = ipint % 256;
      sprintf(token, "%d", cur);
      strcat(new, token);
      ipint /= 256;
      if (ipint) strcat(new, ".");
    } 

    len = strlen(new);
    swapStr(new, 0, len - 1); 

    for (bt = ed = 0; ed < len;) {
      while (ed < len && new[ed] != '.') {
        ed ++;
      }
      swapStr(new, bt, ed - 1);
      ed += 1;
      bt = ed;
    } 

    new[len - 1] = '\0'; 

    return new;
  } 

  int main(void)
  {
    char ipstr[LEN], *new;
    uint ipint; 

    while (scanf("%s", ipstr) != EOF) {
      ipint = ipTint(ipstr);
      printf("%u\n", ipint); 

      new = ipTstr(ipint);
      printf("%s\n", new);
    } 

    return 0;
  } 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, int
ip
java强制类型转换int、java int 类型转换、c ip地址转换 int、int类型转换成string、object类型转换成int,以便于您获取更多的相关知识。

时间: 2024-09-27 05:59:12

使用Java代码将IP地址转换为int类型的方法_java的相关文章

JAVA中如何将整数表示的ip地址转换为字符串表示

/** * 将整数表示的ip地址转换为字符串表示. * * @param ip 32位整数表示的ip地址 * @return 点分式表示的ip地址 */ public static final String long2Ip(final long ip) { final long[] mask = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 }; final StringBuilder ipAddress = new StringBuilder

JAVA中如何将字符串表示的ip地址转换为long表示

01./** 02. * 将字符串表示的ip地址转换为long表示. 03. * 04. * @param ip ip地址 05. * @return 以32位整数表示的ip地址 06. */ 07.public static final long ip2Long(final String ip) { 08. if (!RegexpUtils.isExactlyMatches("(\\d{1,3}\\.){3}\\d{1,3}", ip)) { 09. throw new Illega

将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

将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的转换方式比较简单,它内置了两个函数 int ip2long ( string $ip_address )和 string long2ip ( string $proper_address ) 可以直接调用使用~ [Asp的互转]:

用java能够修改ip地址吗

问题描述 用java能够修改ip地址吗 能够用java代码实现修改ip吗?能够用java代码实现修改ip地址吗? 解决方案 http://blog.sina.com.cn/s/blog_7c6be9470100qfuc.htmlhttp://download.csdn.net/detail/zhouya10099/2982770 不过对于公网环境,不是你制定什么ip运营商都认可的. 解决方案二: 可以写一个修改ip的.bat脚本,然后再用java编程去调用这个脚本,java可以调用外部的应用程序

java实现根据ip地址获取地理位置_java

最近项目某个功能需要根据ip地址从第三方接口获取详细的地理位置,从网上找了很多例子,主要接口有新浪的,淘宝的,腾讯的.试了淘宝的,如果是数量级小的还可以,如果数量级达到上十万级就速度慢了,会导致系统崩溃.下面例子是新浪的,例子不是适合每个项目,需要改一下. /** ipSearchUrl=http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=(这是新浪的接口地址) 在项目中新浪的接口地址没有直接写死,而是去读属性文件. *

JAVA获得域名IP地址的方法_java

本文实例讲述了JAVA获得域名IP地址的方法.分享给大家供大家参考.具体如下: import java.net.InetAddress; import java.net.UnknownHostException; public class TestInetAddress { InetAddress myIpAddress = null; InetAddress[] myServer = null; public static void main(String args[]) { TestInet

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地址转成长整型方法时出现错误

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