首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 將長整型轉換為 IP 地址的實現方法

     編輯:Java 相關知識

在網絡編程中,IP 地址常以 32 位長整型存儲以節省空間並提高比較效率。本文提供一個將 Long 類型轉換為標準點分十進制 IP 字符串的工具方法。

核心實現

/**
 * 將長整型解析為 IP 地址
 * @param num 32 位長整型 IP
 * @return 標準 IPv4 字符串
 */
public static String int2iP(Long num) {
    if (num == null) return null;
    
    long[] octets = new long[4];
    octets[0] = (num >>> 24) & 0xFF;
    octets[1] = (num >>> 16) & 0xFF;
    octets[2] = (num >>> 8) & 0xFF;
    octets[3] = num & 0xFF;
    
    return String.format("%d.%d.%d.%d", octets[0], octets[1], octets[2], octets[3]);
}

原理解析

  • IPv4 地址佔 32 位,可拆分為 4 個 8 位字節
  • 使用無符號右移 >>>> 配合掩碼 0xFF 提取各字節
  • 高位在前(大端序),依次為第 24-31、16-23、8-15、0-7 位

改進建議

原代碼中存在冗余移位操作(如 >>> 0),建議簡化為上述版本。同時增加空值檢查,增強健壯性。

應用場景

  • 數據庫存儲 IP 地址時使用 BIGINT 或 INT UNSIGNED
  • 日誌分析、流量統計等高性能場景
  • IP 地址範圍查詢、地理位置匹配
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved