最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Java代碼將IP地址轉(zhuǎn)換為int類(lèi)型的方法

 更新時(shí)間:2015年08月07日 10:24:56   作者:zinss26914  
這篇文章主要介紹了使用Java代碼將IP地址轉(zhuǎn)換為int類(lèi)型的方法,這也是各大計(jì)算機(jī)考試和ACM以及面試的常見(jiàn)基礎(chǔ)問(wèn)題,需要的朋友可以參考下

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

思路
ip地址轉(zhuǎn)int類(lèi)型,例如ip為“192.168.1.116”,相當(dāng)于“.“將ip地址分為了4部分,各部分對(duì)應(yīng)的權(quán)值為256^3, 256^2, 256, 1,相成即可

int類(lèi)型轉(zhuǎn)ip地址,思路類(lèi)似,除以權(quán)值即可,但是有部分字符串的操作


代碼

  #include <stdio.h> 
  #include <stdlib.h> 
  #include <string.h> 
  #include <math.h> 
   
  #define LEN 16 
   
  typedef unsigned int uint; 
   
  /** 
   * 字符串轉(zhuǎn)整形 
   */ 
  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]; 
      } 
    } 
  } 
   
  /** 
   * 整形轉(zhuǎn)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; 
  } 

相關(guān)文章

  • Java?IO之流的分類(lèi)詳解

    Java?IO之流的分類(lèi)詳解

    這篇文章主要為大家介紹了Java?IO之流的分類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Java的SpringMVC中控制器返回XML數(shù)據(jù)問(wèn)題

    Java的SpringMVC中控制器返回XML數(shù)據(jù)問(wèn)題

    這篇文章主要介紹了Java的SpringMVC中控制器返回XML數(shù)據(jù)問(wèn)題,控制器是處理HTTP請(qǐng)求的組件,它們接收來(lái)自客戶(hù)端的請(qǐng)求,并將其轉(zhuǎn)換為適當(dāng)?shù)捻憫?yīng),這些響應(yīng)可以是動(dòng)態(tài)生成的?HTML?頁(yè)面,也可以是JSON或XML格式的數(shù)據(jù),需要的朋友可以參考下
    2023-07-07
  • JDK8通過(guò)Stream 對(duì)List,Map操作和互轉(zhuǎn)的實(shí)現(xiàn)

    JDK8通過(guò)Stream 對(duì)List,Map操作和互轉(zhuǎn)的實(shí)現(xiàn)

    這篇文章主要介紹了JDK8通過(guò)Stream 對(duì)List,Map操作和互轉(zhuǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • java Scanner輸入數(shù)字、字符串過(guò)程解析

    java Scanner輸入數(shù)字、字符串過(guò)程解析

    這篇文章主要介紹了java Scanner輸入數(shù)字、字符串過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • httpclient重定向之后獲取網(wǎng)址信息示例

    httpclient重定向之后獲取網(wǎng)址信息示例

    使用HttpClient進(jìn)行127.0.0.1:8080地址的問(wèn)題,然后該地址自動(dòng)重定向127.0.0.1:8080/mobserver,如何獲取該地址呢?使用HttpContext,下面是示例
    2014-02-02
  • Java開(kāi)發(fā)框架spring實(shí)現(xiàn)自定義緩存標(biāo)簽

    Java開(kāi)發(fā)框架spring實(shí)現(xiàn)自定義緩存標(biāo)簽

    這篇文章主要介紹了Java開(kāi)發(fā)框架spring實(shí)現(xiàn)自定義緩存標(biāo)簽的詳細(xì)代碼,感興趣的小伙伴們可以參考一下
    2015-12-12
  • springboot下mybatis-plus如何打印sql日志和參數(shù)到日志文件

    springboot下mybatis-plus如何打印sql日志和參數(shù)到日志文件

    本文主要介紹了springboot下mybatis-plus如何打印sql日志和參數(shù)到日志文件,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • java selenium 操作彈出窗口示例代碼

    java selenium 操作彈出窗口示例代碼

    本文主要介紹java selenium 操作彈出窗口,這里實(shí)例講解操作彈出窗口詳細(xì)流程,并附示例代碼,有需要的小伙伴可以參考下
    2016-08-08
  • easyExcel分批導(dǎo)入文件方式

    easyExcel分批導(dǎo)入文件方式

    這篇文章主要介紹了easyExcel分批導(dǎo)入文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 使用Mybatis更新時(shí)候只更新變更部分的方法

    使用Mybatis更新時(shí)候只更新變更部分的方法

    這篇文章主要介紹了使用Mybatis更新時(shí)候只更新變更部分的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

汶川县| 乐清市| 阿拉善盟| 文昌市| 金乡县| 岱山县| 弋阳县| 远安县| 嫩江县| 库尔勒市| 永安市| 长春市| 汝城县| 哈密市| 安乡县| 集安市| 那曲县| 吉木乃县| 光山县| 丽江市| 莫力| 梁河县| 南开区| 芜湖市| 如东县| 德清县| 周宁县| 大连市| 茶陵县| 清镇市| 北宁市| 福贡县| 长沙市| 炉霍县| 耒阳市| 堆龙德庆县| 石景山区| 万安县| 伊金霍洛旗| 榕江县| 陇川县|