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

Java編程IP地址和數(shù)字相互轉(zhuǎn)換代碼示例

 更新時間:2017年11月30日 10:24:39   作者:Lena-Yang  
這篇文章主要介紹了Java編程IP地址和數(shù)字相互轉(zhuǎn)換代碼示例,具有一定借鑒價值,需要的朋友可以參考下。

最近才知道,將ip地址轉(zhuǎn)換成十進制、八進制、十六進制同樣可以訪問網(wǎng)站。

IP轉(zhuǎn)為數(shù)字(第二種算法。用左移、按位或?qū)崿F(xiàn)。效率更高。):

public long ipToLong(String ipAddress) { 
 
long result = 0; 
 
String[] ipAddressInArray = ipAddress.split("\\."); 
 
for (int i = 3; i >= 0; i--) { 
 
  long ip = Long.parseLong(ipAddressInArray[3 - i]); 
 
  //left shifting 24,16,8,0 and bitwise OR 
 
  //1. 192 << 24 
  //1. 168 << 16 
  //1. 1  << 8 
  //1. 2  << 0 
  result |= ip << (i * 8); 
 
} 
return result; 
 } 

數(shù)字轉(zhuǎn)為IP,兩種算法都差不多:

//ip = 3232235778 
 public String longToIp(long ip) { 
StringBuilder result = new StringBuilder(15); 
 
for (int i = 0; i < 4; i++) { 
 
  result.insert(0,Long.toString(ip & 0xff)); 
 
  if (i < 3) { 
    result.insert(0,'.'); 
  } 
 
  ip = ip >> 8; 
} 
return result.toString(); 
 } 
 
 //ip = 3232235778 
 public String longToIp2(long ip) { 
 
return ((ip >> 24) & 0xFF) + "."  
  + ((ip >> 16) & 0xFF) + "."  
  + ((ip >> 8) & 0xFF) + "."  
  + (ip & 0xFF); 
 } 

完整代碼:

public class JavaBitwiseExample { 
  
  public static void main(String[] args) { 
  
    JavaBitwiseExample obj = new JavaBitwiseExample(); 
  
    System.out.println("iptoLong : " + obj.ipToLong("192.168.1.2")); 
    System.out.println("iptoLong2 : " + obj.ipToLong2("192.168.1.2")); 
  
    System.out.println("longToIp : " + obj.longToIp(3232235778L)); 
    System.out.println("longToIp2 : " + obj.longToIp2(3232235778L)); 
  
  } 
  
  // example : 192.168.1.2 
  public long ipToLong(String ipAddress) { 
  
    // ipAddressInArray[0] = 192 
    String[] ipAddressInArray = ipAddress.split("\\."); 
  
    long result = 0; 
    for (int i = 0; i < ipAddressInArray.length; i++) { 
  
      int power = 3 - i; 
      int ip = Integer.parseInt(ipAddressInArray[i]); 
  
      // 1. 192 * 256^3 
      // 2. 168 * 256^2 
      // 3. 1 * 256^1 
      // 4. 2 * 256^0 
      result += ip * Math.pow(256, power); 
  
    } 
  
    return result; 
  
  } 
  
  public long ipToLong2(String ipAddress) { 
  
    long result = 0; 
  
    String[] ipAddressInArray = ipAddress.split("\\."); 
  
    for (int i = 3; i >= 0; i--) { 
  
      long ip = Long.parseLong(ipAddressInArray[3 - i]); 
  
      // left shifting 24,16,8,0 and bitwise OR 
  
      // 1. 192 << 24 
      // 1. 168 << 16 
      // 1. 1 << 8 
      // 1. 2 << 0 
      result |= ip << (i * 8); 
  
    } 
  
    return result; 
  } 
  
  public String longToIp(long i) { 
  
    return ((i >> 24) & 0xFF) +  
          "." + ((i >> 16) & 0xFF) +  
          "." + ((i >> 8) & 0xFF) +  
          "." + (i & 0xFF); 
  
  } 
  
  public String longToIp2(long ip) { 
    StringBuilder sb = new StringBuilder(15); 
  
    for (int i = 0; i < 4; i++) { 
  
      // 1. 2 
      // 2. 1 
      // 3. 168 
      // 4. 192 
      sb.insert(0, Long.toString(ip & 0xff)); 
  
      if (i < 3) { 
        sb.insert(0, '.'); 
      } 
  
      // 1. 192.168.1.2 
      // 2. 192.168.1 
      // 3. 192.168 
      // 4. 192 
      ip = ip >> 8; 
  
    } 
  
    return sb.toString(); 
  } 
} 

總結(jié)

以上就是本文關于Java編程IP地址和數(shù)字相互轉(zhuǎn)換代碼示例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出!

相關文章

  • Java讀取Properties配置文件的6種方式匯總

    Java讀取Properties配置文件的6種方式匯總

    這篇文章主要給大家介紹了關于Java讀取Properties配置文件的6種方式,java中的properties文件是一種配置文件,主要用于表達配置信息,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • 如何在 Java 中利用 redis 實現(xiàn) LBS 服務

    如何在 Java 中利用 redis 實現(xiàn) LBS 服務

    基于位置的服務,是指通過電信移動運營商的無線電通訊網(wǎng)絡或外部定位方式,獲取移動終端用戶的位置信息,在GIS平臺的支持下,為用戶提供相應服務的一種增值業(yè)務。下面我們來一起學習一下吧
    2019-06-06
  • 詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié)

    詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié)

    本篇文章主要介紹了詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Mybatis批量插入index out of range錯誤的解決(較偏的錯誤)

    Mybatis批量插入index out of range錯誤的解決(較偏的錯誤)

    這篇文章主要介紹了Mybatis批量插入index out of range錯誤的解決(較偏的錯誤),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot 如何讀取pom.xml中的值

    SpringBoot 如何讀取pom.xml中的值

    這篇文章主要介紹了SpringBoot 如何讀取pom.xml中的值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java多線程編程中的線程死鎖的問題解決

    Java多線程編程中的線程死鎖的問題解決

    線程死鎖是多線程編程中的一個常見問題,它發(fā)生在多個線程互相等待對方釋放資源的情況下,導致程序無法繼續(xù)執(zhí)行,本文就來介紹一下Java多線程編程中的線程死鎖的問題解決,感興趣的可以了解一下
    2023-08-08
  • java將html轉(zhuǎn)成圖片代碼實例(html2image)

    java將html轉(zhuǎn)成圖片代碼實例(html2image)

    這篇文章主要介紹了java將html轉(zhuǎn)成圖片的相關資料,在Java開發(fā)中,將HTML轉(zhuǎn)換為圖片可以使用html2image庫,文中通過代碼及圖文介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • 簡述Java中進程與線程的關系_動力節(jié)點Java學院整理

    簡述Java中進程與線程的關系_動力節(jié)點Java學院整理

    在 Java 語言中,對進程和線程的封裝,分別提供了 Process 和 Thread 相關的一些類。本文首先簡單的介紹如何使用這些類來創(chuàng)建進程和線程
    2017-05-05
  • java中Date日期類型的大小比較方式

    java中Date日期類型的大小比較方式

    這篇文章主要介紹了java中Date日期類型的大小比較方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java 發(fā)送帶Basic Auth認證的http post請求實例代碼

    java 發(fā)送帶Basic Auth認證的http post請求實例代碼

    下面小編就為大家?guī)硪黄猨ava 發(fā)送帶Basic Auth認證的http post請求實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11

最新評論

丰顺县| 辽阳市| 乌鲁木齐市| 苍南县| 徐汇区| 鹰潭市| 黎川县| 碌曲县| 雅江县| 阿瓦提县| 景谷| 外汇| 阜南县| 岑溪市| 都匀市| 永登县| 青龙| 陕西省| 潼关县| 漾濞| 垫江县| 平和县| 通化县| 广平县| 长治县| 称多县| 庐江县| 洛隆县| 南丹县| 株洲市| 玉山县| 白银市| 湖口县| 凤冈县| 宁晋县| 民县| 阿拉善右旗| 时尚| 齐齐哈尔市| 永寿县| 大庆市|