欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Java代碼將IP地址轉換為int類型的方法

 更新時間:2015年08月07日 10:24:56   作者:zinss26914  
這篇文章主要介紹了使用Java代碼將IP地址轉換為int類型的方法,這也是各大計算機考試和ACM以及面試的常見基礎問題,需要的朋友可以參考下

基本知識點 
 
IP ——> 整數(shù):
把IP地址轉化為字節(jié)數(shù)組
通過左移位(<<)、與(&)、或(|)這些操作轉為int
整數(shù) ——> IP:
將整數(shù)值進行右移位操作(>>>),右移24位,再進行與操作符(&)0xFF,得到的數(shù)字即為第一段IP。
將整數(shù)值進行右移位操作(>>>),右移16位,再進行與操作符(&)0xFF,得到的數(shù)字即為第二段IP。
將整數(shù)值進行右移位操作(>>>),右移8位,再進行與操作符(&)0xFF,得到的數(shù)字即為第三段IP。
將整數(shù)值進行與操作符(&)0xFF,得到的數(shù)字即為第四段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; 
  } 

相關文章

  • SpringBoot項目如何設置權限攔截器和過濾器

    SpringBoot項目如何設置權限攔截器和過濾器

    這篇文章主要介紹了使用lombok時如何自定義get、set方法問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 利用Sharding-Jdbc組件實現(xiàn)分表

    利用Sharding-Jdbc組件實現(xiàn)分表

    這篇文章主要為大家詳細介紹了利用Sharding-Jdbc組件實現(xiàn)分表,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • javaSE,javaEE,javaME的區(qū)別小結

    javaSE,javaEE,javaME的區(qū)別小結

    本篇文章小編就為大家簡單說說JavaSE、JavaEE、JavaME三者之間的區(qū)別,需要的朋友可以過來參考下,感興趣的小伙伴們可以參考一下
    2023-08-08
  • IDEA mybatis-generator逆向工程生成代碼

    IDEA mybatis-generator逆向工程生成代碼

    這篇文章主要介紹了IDEA mybatis-generator逆向工程生成代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Spring-AOP自動創(chuàng)建代理之BeanNameAutoProxyCreator實例

    Spring-AOP自動創(chuàng)建代理之BeanNameAutoProxyCreator實例

    這篇文章主要介紹了Spring-AOP自動創(chuàng)建代理之BeanNameAutoProxyCreator實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 輕松掌握Java代理模式

    輕松掌握Java代理模式

    這篇文章主要幫助大家輕松掌握Java代理模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • SpringBoot實現(xiàn)文件下載功能的方式分享

    SpringBoot實現(xiàn)文件下載功能的方式分享

    這篇文章主要為大家詳細介紹了SpringBoot這哪個實現(xiàn)文件下載功能的幾種方式,文中的實現(xiàn)方法簡介易懂,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-03-03
  • Java?精煉解讀數(shù)據(jù)結構的鏈表的概念與實現(xiàn)

    Java?精煉解讀數(shù)據(jù)結構的鏈表的概念與實現(xiàn)

    鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結構,數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針連接次序實現(xiàn)的,每一個鏈表都包含多個節(jié)點,節(jié)點又包含兩個部分,一個是數(shù)據(jù)域,一個是引用域
    2022-03-03
  • Java線程中的用戶態(tài)和內核態(tài)解讀

    Java線程中的用戶態(tài)和內核態(tài)解讀

    這篇文章主要介紹了Java線程中的用戶態(tài)和內核態(tài)解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Springboot 2.6集成redis maven報錯的坑記錄

    Springboot 2.6集成redis maven報錯的坑記錄

    這篇文章主要介紹了Springboot 2.6集成redis maven報錯的坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評論