【go】IP相關工具類

文章目錄

      • 1.判斷ipv4 or ipv6
      • 2.計算cidr格式ip所含IP個數
      • 3.計算兩個ip區間所含ip個數

1.判斷ipv4 or ipv6

// return int 0:錯誤的ip 4:ipv4 6:ipv6
func CheckIp(ip string) int {if ip == "" {return 4}out := net.ParseIP(ip)if out == nil {return 0}if strings.Contains(out.String(), ".") {return 4}if strings.Contains(out.String(), ":") {return 6}return 0
}

2.計算cidr格式ip所含IP個數

func CountIPs(cidr string) (int64, error) {_, ipNet, err := net.ParseCIDR(cidr)if err != nil {return 0, err}mask := ipNet.Maskones, bits := mask.Size()numIPs := int64(1 << uint(bits-ones))//fmt.Printf("CIDR IP: %s\n", ipNet)//fmt.Printf("子網掩碼: %s\n", mask.String())//fmt.Printf("IP個數: %d\n", numIPs)return numIPs, err
}

3.計算兩個ip區間所含ip個數

func ipToInt(ip net.IP) int64 {ip = ip.To4()if ip == nil {return 0}ipParts := strings.Split(ip.String(), ".")ipInt := int64(0)for i := 0; i < 4; i++ {part, _ := strconv.ParseInt(ipParts[i], 10, 64)ipInt += part << ((3 - uint(i)) * 8)}return ipInt
}func main() {startIP := "183.62.142.241"endIP := "183.62.145.233"// ip格式校驗start := net.ParseIP(startIP)if start == nil {log.Fatal("Invalid start IP address")}end := net.ParseIP(endIP)if end == nil {log.Fatal("Invalid end IP address")}startInt := ipToInt(start)endInt := ipToInt(end)count := endInt - startInt + 1fmt.Printf("Number of IPs between %s and %s: %d\n", startIP, endIP, count)
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697042.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697042.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697042.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C1475D Cleaning the Phone 題解

文章目錄 C1475D Cleaning the Phone 題解Cleaning the Phone題面翻譯題目描述輸入格式輸出格式樣例 #1樣例輸入 #1樣例輸出 #1 提示算法&#xff1a;貪心代碼&#xff1a; C1475D Cleaning the Phone 題解 link Cleaning the Phone 題面翻譯 題目大意&#xff1a; 有 n …

【學習iOS高質量開發】——協議與分類

文章目錄 一、通過委托與數據源協議進行對象間通信1.委托模式2.要點 二、將類的實現代碼分散到便于管理的數個分類之中1.如何實現2.要點 三、總是為第三方類的分類名稱加前綴1.為什么總是為第三方類的分類名稱加前綴2.要點 三、勿在分類中聲明屬性1.勿在分類中聲明屬性的原因2.…

Android進階(二十九) 走近 IntentFilter

文章目錄 一、什么是IntentFilter &#xff1f;二、IntentFilter 如何過濾隱式意圖&#xff1f;2.1 動作測試2.2 類別測試2.3 數據測試 一、什么是IntentFilter &#xff1f; 如果一個 Intent 請求在一片數據上執行一個動作&#xff0c; Android 如何知道哪個應用程序&#xf…

網頁數據的解析提取(XPath的使用----lxml庫詳解)

在提取網頁信息時&#xff0c;最基礎的方法是使用正則表達式&#xff0c;但過程比較煩瑣且容易出錯。對于網頁節點來說&#xff0c;可以定義id、class或其他屬性&#xff0c;而且節點之間還有層次關系&#xff0c;在網頁中可以通過XPath或CSS選擇器來定位一個或多個節點。那么&…

Maven管理項目,本地倉庫有對應的jar包,但還是報找不到

文章目錄 業務場景錯誤提示分析過程解決辦法 業務場景 settings.xml種配置了私服&#xff0c;但是有些依賴私服上沒有&#xff0c;通過同事拷貝過來的。但是用maven打包時報紅了。 錯誤提示 Idea Maven錯誤&#xff1a;was cached in the local repository, resolution will…

RecycleView結合ItemTouchHelper實現拖動排序

最近項目中需要實現對某一類條目進行拖動排序功能&#xff0c;實現技術方案就是利用ItemTouchHelper綁定RecyclerView、ItemTouchHelper.Callback來實現UI更新&#xff0c;并且實現動態控制是否開啟拖動功能。其中&#xff0c;ItemTouchHelper是Google在androidx包中添加的&…

int128的實現(基本完成)

雖然有一個聲明叫_int128但是這并不是C標準&#xff1a; long long 不夠用&#xff1f;詳解 __int128 - FReQuenter - 博客園 (cnblogs.com) 網絡上去找int128的另類實現方法&#xff0c;發現幾乎都是在介紹_int128的 然后我就自己想了個辦法&#xff0c;當時還沒學C&#xf…

Spring Boot中實現列表數據導出為Excel文件

點擊下載《Spring Boot中實現列表數據導出為Excel文件》 1. 前言 本文將詳細介紹在Spring Boot框架中如何將列表數據導出為Excel文件。我們將通過Apache POI庫來實現這一功能&#xff0c;并解釋其背后的原理、提供完整的流程和步驟&#xff0c;以及帶有詳細注釋的代碼示例。最…

關于設備連接有人云的使用及modbus rtu協議,服務器端TCP調試設置

有人云調試 調試過程問題1. 關于modbus rtu協議,實質上有三種modbus基本原理modbus 格式2. 關于modbus crc16通信校驗3. 關于在ubuntu阿里云服務器端,監聽網絡數據之調試mNetAssist之前的一個項目,再拿出來回顧下。 調試過程 先 要在有人云,用手機號注冊一個服務賬號,官網顯…

家的情感記憶:如何用壁紙講述你的墻故事?

1、方小童在線工具集 網址&#xff1a; 方小童 該網站是一款在線工具集合的網站&#xff0c;目前包含PDF文件在線轉換、隨機生成美女圖片、精美壁紙、電子書搜索等功能&#xff0c;喜歡的可以趕緊去試試&#xff01;

HarmonyOS—使用預覽器查看應用/服務效果

DevEco Studio為開發者提供了UI界面預覽功能&#xff0c;可以查看應用/服務的UI界面效果&#xff0c;方便開發者隨時調整界面UI布局。預覽器支持布局代碼的實時預覽&#xff0c;只需要將開發的源代碼進行保存&#xff0c;就可以通過預覽器實時查看應用/服務運行效果&#xff0c…

探索分布式強一致性奧秘:Paxos共識算法的精妙之旅

提到分布式算法&#xff0c;就不得不提 Paxos 算法&#xff0c;在過去幾十年里&#xff0c;它基本上是分布式共識的代名詞&#xff0c;因為當前一批常用的共識算法都是基于它改進的。比如&#xff0c;Fast Paxos 算法、Cheap Paxos、Raft 算法等。 由萊斯利蘭伯特&#xff08;L…

Spring6學習技術|AOP

學習材料 尚硅谷Spring零基礎入門到進階&#xff0c;一套搞定spring6全套視頻教程&#xff08;源碼級講解&#xff09; AOP AOP&#xff08;Aspect Oriented Programming&#xff09;是一種設計思想&#xff0c;是軟件設計領域中的面向切面編程&#xff0c;它是面向對象編程的…

AIDL的工作原理與使用示例 跨進程通信 遠程方法調用RPC

AIDL的介紹與使用 AIDL&#xff08;Android Interface Definition Language&#xff09;是Android中用于定義客戶端和服務端之間通信接口的一種接口定義語言。它允許你定義客戶端和服務的通信協議&#xff0c;用于在不同的進程間或同一進程的不同組件間進行數據傳遞。AIDL通過…

深入探討YUV圖像處理:理論原理與OpenCV實踐

文章目錄 導言YUV模型的原理使用OpenCV處理YUV圖像1. 讀取YUV圖像2. 將YUV圖像轉換為RGB圖像3. 將RGB圖像轉換為YUV圖像 結語 導言 導言&#xff1a; 在圖像處理領域&#xff0c;YUV色彩模型因其對亮度和色度的分離而被廣泛使用&#xff0c;特別在視頻編碼和實時通信中發揮了巨…

算法項目(3)—— 從零實現KNN、樸素貝葉斯垃圾郵件分類

本文包含什么? 項目運行的方式項目代碼,自己實現KNN算法以及樸素貝葉斯算法.代碼介紹運行有問題? csdn上后臺隨時售后.項目說明 本文主要是自己從0實現KNN算法以及樸素貝葉斯算法.然后使用英文垃圾郵件數據集進行垃圾郵件分類.常見的代碼均調用sklearn庫來實現,本文自行實現…

AI推介-大語言模型LLMs論文速覽(arXiv方向):2024.01.01-2024.01.10

1.Pre-trained Large Language Models for Financial Sentiment Analysis 標題:用于金融情感分析的預訓練大型語言模型 author:Wei Luo, Dihong Gong date Time:2024-01-10 paper pdf:http://arxiv.org/pdf/2401.05215v1 摘要&#xff1a; 金融情感分析是指將金融文本內容劃分…

從零學習Linux操作系統第二十八部分 shell腳本中的執行流控制

一、什么是執行流、循環執行流 執行流&#xff1a;改變執行順序&#xff0c;使之更方便操作者 循環執行流&#xff1a;根據腳本是執行流再某一個狀態下進行循環執行&#xff0c;進行多次執行后再往下走&#xff08;for語句&#xff09; for語句 作用 為循環執行動作 for語句…

opencv判斷灰化情況

目的 先說說理論&#xff1a; 在圖像處理中&#xff0c;用RGB三個分量&#xff08;R&#xff1a;Red&#xff0c;G&#xff1a;Green&#xff0c;B&#xff1a;Blue&#xff09;&#xff0c;即紅、綠、藍三原色來表示真彩色&#xff0c;R分量&#xff0c;G分量&#xff0c;B分…

LeetCode LCR 055.二叉搜索樹迭代器

實現一個二叉搜索樹迭代器類BSTIterator &#xff0c;表示一個按中序遍歷二叉搜索樹&#xff08;BST&#xff09;的迭代器&#xff1a; BSTIterator(TreeNode root) 初始化 BSTIterator 類的一個對象。BST 的根節點 root 會作為構造函數的一部分給出。指針應初始化為一個不存在…