如何对一组 IP 地址 进行排序?

咨询区

  • Cracker

我有一组如下IP地址。

192.168.1.5
69.52.220.44
10.152.16.23
192.168.3.10
192.168.1.4
192.168.2.1

我在寻找一个方法将他们排序成如下顺序。

10.152.16.23
69.52.220.44
192.168.1.4
192.168.1.5
192.168.2.1

回答区

  • Alex Aza

对 ip 地址进行排序,大概有三种方法。

  1. 使用 Version.Parse

这种方式最简单粗暴,也最有意思,参考代码如下:

static void Main(string[] args){var unsortedIps = new[] { "192.168.1.4","192.168.1.5","192.168.2.1","10.152.16.23","69.52.220.44"};var sortedIps = unsortedIps.Select(Version.Parse).OrderBy(arg => arg).Select(arg => arg.ToString()).ToList();sortedIps.ForEach(k => Console.WriteLine(k));}

输出结果:

8b5db0de620e23095dd375a0539bfdf8.png
  1. 将ip转int

字符串ip是无法进行有效排序的,但可以将其转为 int 处理,比如下面这样:

69.52.220.44 =>69 * 255 * 255 * 255 +
52 * 255 * 255 +
220 * 255 +
44
  1. 3位填充法

先将IP地址切开,然后将不足三位的部分填充 0 ,这样就方便直接对 string 进行排序,最后再拼接起来,参考如下代码:

public static class StringHelper
{public static string IpAddressLabel(string ipAddress)=> string.Join(".", ipAddress.Split('.').Select(part => part.PadLeft(3, '0')));
}

接下来简单测试下。

=> new[] {"192.168.1.100", "192.168.1.1", "192.168.1.19"}.OrderBy(ip => StringHelper.IpAddressLabel(ip));

点评区

这三种对 IP 排序的方法有点意思,学习了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode之Intersection of Two Arrays

1、题目 Given two arrays, write a function to compute their intersection. Example: Given nums1 [1, 2, 2, 1], nums2 [2, 2], return [2]. Note: Each element in the result must be unique.The result can be in any order.Subscribe to see which companies asked t…

如何为APK签名?

1.用来生成应用签名的文件①默认: debug.keystore > debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名。> 不同电脑使用此文件生成的签名不一样。那就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能…

shell 杂记一(笨鸟)

查找子串cat /tmp/debug.log | perl -e while(<>) { if ($_ ~ /hd_uid(\d)/) { print "$1\n"; } } 匹配每行"hd_uid"后面的数字if [ ... ]then ...fiexit numcase $i in1) echo 1111;;2) echo 2222;;*) echo other;;esacbasename 返回…

基于 Azure 的认知服务将文本合成语音

基于 Azure 的认知服务将文本合成语音Intro前几天发了一个 .NET 20 周年祝福视频&#xff0c;语音是通过 Azure 的认知服务合成的&#xff0c;下面就来介绍一下如何将使用 Azure 的认识服务实现将文本合成为语音Prepare你可以在 Azure Portal 上创建一个免费的语音服务&#xf…

sql查询结果集根据指定条件排序的方法

oracle认为 null 最大。 升序排列&#xff0c;默认情况下&#xff0c;null值排后面。 降序排序&#xff0c;默认情况下&#xff0c;null值排前面。 有几种办法改变这种情况&#xff1a; &#xff08;1&#xff09;用 nvl 函数或decode 函数 将null转换为一特定值 &#xff08;2…

mysql怎么改字体编码_mysql怎么改字符编码?

mysql命令行修改字符编码1、修改数据库字符编码mysql> alter database mydb character set utf8 ;2、创建数据库时&#xff0c;指定数据库的字符编码mysql> create database mydb character set utf8 ;3、查看mysql数据库的字符编码mysql> show variables like charac…

LeetCode之Move Zeroes

1、题目 Given an array nums, write a function to move all 0s to the end of it while maintaining the relative order of the non-zero elements. For example, given nums [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0]. Note: You …

七种RAID技术

想把好多硬盘组在一起使用的基本方式为&#xff1a;连接所有硬盘&#xff0c;先向第一个硬盘中写数据&#xff0c;满了之后&#xff0c;再向第二个硬盘上写数据&#xff0c;如此只是简单的连通了多个硬盘。 再此基础上发展了RAID技术&#xff1a;由独立磁盘组成的具有冗余特性的…

如何编译 dotnet/runtime 源代码

前言最近&#xff0c;准备为 dotnet/runtime 修改 issue&#xff0c;但是在 clone 代码后&#xff0c;发现要编译成功&#xff0c;远没有想象中那么容易。因此&#xff0c;将整个过程进行记录&#xff0c;以供大家参考。以下操作都是在 Windows 10 下完成。0.环境准备详见官方文…

网站高可用方案

前端&#xff1a;vanish squid等代理缓存动态数据缓存&#xff1a;对于不是经常变化的用memcached 如果跟微博差不多的场景可以用redis数据库&#xff1a;为了备份和恢复&#xff1a;可以用主从 对于主-》从-》从 有个参数log_slave_update参数决定后面两个从是否写日志一主多从…

Android:源码环境编译自定义的APP到ROM(System Image)中

有时候我们需要在源码环境中增加自己的应用或模块&#xff0c;随ROM一起发布。 下面讲述相关步骤: 1. 首先可以在SDK环境下进行编码设计&#xff08;如果你的APP不涉及到emulator无法模拟的硬件的话) 也可以参考另一篇文章&#xff0c;直接在Eclipse中调试系统级应用源代码&…

jenkins maven testng selenium自动化持续集成

准备环境 首先我们新建一个maven的工程&#xff0c;并且在pom.xml中配置好我们依赖的一些jar包 <dependencies><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>2.46.0<…

LeetCode之Excel Sheet Column Number

1、题目 Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, return its corresponding column number. For example: A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 Credits: Special thanks to ts f…

java程序 开发工具_15款Java程序员必备的开发工具

如果你是一名Web开发人员&#xff0c;那么用膝盖想也知道你的职业生涯大部分将使用Java而度过。这是一款商业级的编程语言&#xff0c;我们没有办法不接触它。对于Java&#xff0c;有两种截然不同的观点&#xff1a;一种认为Java是最简单功能***大的编程语言之一&#xff0c;另…

C# 实例解释面向对象编程中的开闭原则

在面向对象编程中&#xff0c;SOLID 是五个设计原则的首字母缩写&#xff0c;旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特C马丁(Robert Cecil Martin)提出的许多原则的子集&#xff0c;在他2000年的论文《设计原则与设计模式》中首次提出…

SQLite编译问题

从http://www.sqlite.org/主页上获得了SQLite的源文件&#xff0c;还没有时间研究就在编译上发生了不小的问题。 首先是碰到是&#xff0c;编译之后&#xff0c;只产生了sqlite3.dll文件&#xff0c;不产生对应的lib库文件。 查看了下sqlite3.h代码&#xff0c;发现了SQLITE_AP…

回首程序员4年时光

犹记得在2010年9月只身一人来上海找实习机会&#xff0c;因为自己的算法和数据结构基础很牢固&#xff0c;很容易找到了一家100多人的外资公司&#xff0c;这家公司是开发儿童英语学习虚拟社区的。做的产品是基于Flash实现的&#xff0c;产品含有很多课件&#xff0c;益智游戏&…

LeetCode之Number Complement

1、题目 Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation. Note: The given integer is guaranteed to fit within the range of a 32-bit signed integer.You could assume no leading…

mysql的调试与分析_mysql日志管理分析调试实例_MySQL

以下的文章主要介绍的是MySQL 操作日志查看的实际操作步骤以及对其实际操作步骤的具体描述&#xff0c;假如你在实际操作中遇到相似的情况&#xff0c;但是你却不知道对其如何正确的解决&#xff0c;那么以下的文章对你而言一定是良师益友。刚接触MySQL不久&#xff0c;发现缺少…

.NET 7 预览版 1 发布

宣布 .NET 7 预览版 1Jeremy 2022 年 2 月 17 日今天&#xff0c;我们很高兴地宣布 .NET 历史上的下一个里程碑。在庆祝社区和 20 年创新的同时&#xff0c;.NET 7 Preview 1 标志着迈向 .NET 下一个 20 年的第一步。ASP.NET Core Preview 1 和 EF7 Preview 1 也在今天发布。.N…