【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.mzph.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 会作为构造函数的一部分给出。指针应初始化为一个不存在…