将子网掩码“/”符号转换为 Cisco 0.0.0.0 标准

2023-12-02

我已经搜索过寻求帮助,但找不到我的问题的答案。

情况:我需要将“/NN”子网掩码表示法(例如IPTABLES)转换为0.0.0.0 cisco 表示法。

NN 是子掩码中“1”的数量,从最低八位位组到较高八位位组。每个八位位组都是 8 位整数。

可能的解决方案:

创建一个包含 32 个“0”的数组,并用“1”填充最后 NN 个数字,然后分组为 4 个八位字节并转换为 int.../23 掩码应类似于 0.0.1.255。

我的问题是如何在.NET 中做到这一点...我从未使用过二进制操作和转换。

你们能帮我解决这个问题吗?

更新 - 斯蒂芬的答案正确!

这是移植到.NET 的代码

        if (p.LastIndexOf("/") < 0 ) return p;
        int mask= Convert.ToInt32("0"+p.Substring(p.LastIndexOf("/")+1,2));

        int zeroBits = 32 - mask; // the number of zero bits
        uint result = uint.MaxValue; // all ones

        // Shift "cidr" and subtract one to create "cidr" one bits;
        //  then move them left the number of zero bits.
        result &= (uint)((((ulong)0x1 << mascara) - 1) << zeroBits);
        result = ~result;
        // Note that the result is in host order, so we'd have to convert
        //  like this before passing to an IPAddress constructor
        result = (uint)IPAddress.HostToNetworkOrder((int)result);
        string convertedMask = new IPAddress(result).ToString();

我一直想将一些通用地址屏蔽例程放在一起......

这是一种快速而肮脏的转换方法CIDR子网掩码的表示法:

var cidr = 23; // e.g., "/23"
var zeroBits = 32 - cidr; // the number of zero bits
var result = uint.MaxValue; // all ones

// Shift "cidr" and subtract one to create "cidr" one bits;
//  then move them left the number of zero bits.
result &= (uint)((((ulong)0x1 << cidr) - 1) << zeroBits);

// Note that the result is in host order, so we'd have to convert
//  like this before passing to an IPAddress constructor
result = (uint)IPAddress.HostToNetworkOrder((int)result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将子网掩码“/”符号转换为 Cisco 0.0.0.0 标准 的相关文章

  • 实用程序库中应包含哪些内容[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 随着我的项目越来越多 我发现我经常从一个项目到另一个项目 从一个客户到另一个客户重复许多常见的任务 因此 我开始组装一个 实用程序 库 这是这些
  • ASP.NET MVC 中 ModelState.AddModelError 中的关键参数有什么意义?

    我在我的控制器中添加了验证检查来修改ModelState如果验证失败 例如 private bool ValidateMoney string raw string name decimal min decimal max try var
  • 该组件没有由 uri 标识的资源

    我想创建一个通用数据网格以在我的所有视图 用户控件上使用 这是我的结构 Class Library called Core Class called ViewBase public class ViewBase UserControl pu
  • EasyNetQ 模型关闭

    我使用 EasyNetQ 实现了一个简单的 RabbitMQ 客户端 连接后 我收到一条通知 队列模型关闭 这是我的代码 var bus RabbitHutch CreateBus String Format host 0 hostName
  • 有谁知道一种更快的方法来执行 String.Split() 吗?

    我正在读取 CSV 文件的每一行 并且需要获取每一列中的各个值 所以现在我只是使用 values line Split delimiter where line是保存由分隔符分隔的值的字符串 衡量我的表现ReadNextRow我注意到它花费
  • 如何获取Winforms窗体标题栏高度的大小?

    因此 如果它是工具窗口或可最小化的表单 我希望能够以编程方式获取其高度 这可能吗 如果是这样怎么办 您可以使用以下方法确定工具窗口和普通表单的标题栏高度 Rectangle screenRectangle this RectangleToS
  • 在 C# 中使用通配符解析相对路径

    在 C 中 如果我有一个目录路径和一个带通配符的相对文件路径 例如 c foo bar and blah cpp 有没有一种简单的方法来获取绝对文件路径列表 例如 c foo blah a cpp c foo blah b cpp 背景 有
  • .NET“默认行终止符”?

    有什么方法可以弄清楚 NET 使用什么作为其 默认行终止符 例如 StringBuilder AppendLine String 的文档表示 附加指定字符串的副本 后跟默认行终止符 NET 中的几个与文本相关的类引用相同的概念 有什么方法可
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 取消任务

    我尝试运行一个关于取消任务的简单示例 如下所示 CancellationTokenSource tokenSource2 new CancellationTokenSource CancellationToken token2 tokenS
  • 当操作系统显示语言为非英语时获取本地时区标识符

    奇怪的是 TimeZone CurrentTimeZone StandardName根据计算机显示语言返回本地化名称 我想要一个可以提供给的程序化标识符TimeZoneInfo在下面的代码中 TimeZoneInfo timeZoneInf
  • 为什么 new String("Hello") 在 C# 中无效?

    制作背后的逻辑 原因是什么 String s new String Hello World 在 C 中非法 错误是 string String char 的最佳重载方法匹配有一些无效参数 我对 API 文档不感兴趣 我感兴趣的是为什么这是非
  • 如何消除字符串中的所有换行符?

    我需要删除字符串中出现的所有换行符 来自数据库 我使用下面的代码来做到这一点 value Replace r n Replace n Replace r 我可以看到至少有一个角色的行为就像行尾一样幸存了下来 字符代码是8232 http w
  • 由于索引无效,无法加载计数器名称数据 -Exception

    我使用 C 和 WPF 操作系统是 windows 7 Professional 和 Visual Studio 2012 SQL Server 2012 我在wpf中使用了Devexpress Grid 我想使用 ADO Net 服务器模
  • Windows 7 任务栏:捕获缩略图

    是否可以从 Win7 任务栏捕获 实时 缩略图 我想在我的应用程序中显示 另一个窗口的 预览 但如何使用 NET 提取这些预览 Yes MSDN 杂志解释了如何 http msdn microsoft com en us magazine
  • 在 SQL 2005+ 中,CLR 存储过程是否优于 TSQL 存储过程?

    我目前的观点是否定的 更喜欢 Transact SQL 存储过程 因为它们是重量更轻且 可能 性能更高的选项 而 CLR 过程允许开发人员进行各种恶作剧 然而最近我需要调试一些写得非常糟糕的 TSQL 存储过程 像往常一样 我发现许多问题是

随机推荐

  • 在 Python 中使用 mysql.connector 处理格式参数失败

    我不明白这个插入语句我做错了什么 我收到的错误是 Failed processing format parameters s err mysql connector errors ProgrammingError Failed proces
  • Inno Setup [Code] 部分变量到 [Registry]

    我的 Inno 安装程序有问题 我正在使用分辨率检测脚本 Code 此处的部分 INNO设置 如何获取主显示器的分辨率 现在我想把xres and yres价值观 Registry 我的安装程序的部分如下所示 Root HKCU Subke
  • C# NPOI 将单元格样式设置为文本/字符串 1-19 格式化为日期/禁用任何格式

    我正在创建一个Excel 当我编写一些值示例1 19时 当我打开Excel文档时 我看到1 19 但是如果我单击它 那么Excel会尝试将其格式化为日期 有没有办法强制工作表不使用任何公式或格式 我查了一下 数据格式是字符串 private
  • Android:即使我在 DatePicker 之外触摸,DatePicker 也会设置值

    我有一个 TextView 当我触摸 TextView 时 它会调用 Date 和 TimePicker 首先 我显示 DatePicker 一旦选择了日期 我就可以设置该值 设置值后 我将从 TimePicker 获取时间 就像 Date
  • 如何在 Stripe (Rails) 中创建费用和客户

    我正在构建一个基于订阅的应用程序 我想通过 Stripe 订阅向客户收费 我正在尝试在提交表单后创建客户和费用 然而 只创建了代币 而不创建费用和客户 因此 表单成功通过 但在 Stripe 仪表板中 测试费用和客户不存在 这是我的控制器
  • 如何在 iOS8 中使用 IOKit 获取设备的序列号作为 IOPlatformSerialNumber 给出 nil 值

    我想知道如何使用获取设备的序列号IOKit在iOS8中 我用了UIDevice serialNumber我可以在 iOS 6 和 7 中获取序列号 在 iOS 8 中 值为platformSerialNumber来了nil在下面一行中 CF
  • CakePHP HTML Helper:链接中的图像被转义?

    从 Cake 1 2 更新到 1 3 我在链接元素中嵌套了一个图像 两者都是由 HTML 帮助程序生成的 然而 嵌套图像的标记被转义了 lt to gt 等等 我知道 HTML 助手现在默认会转义一些东西 但我无法让它改变这种行为 这是生成
  • 当我清除应用程序数据后,它不再起作用

    我正在使用 xamarin 表单制作一个应用程序 我在我的手机上测试了它 然后 apk 就在那里 但是当我清除android上的数据时 我的应用程序不再打开 有人看到了吗 问题是什么 是的 这很正常Xamarin Android在调试模式下
  • SQL Server 架构审计?

    我们有一个 SQL Server 2008 Enterprise 数据库 它有两种不同的模式 一种是我们维护的锁定模式 另一种是我们允许外部开发团队根据自己的需要添加和修改的开放模式 通常这对我们来说效果很好 但一个特定的团队喜欢把事情搞砸
  • Android getResources/getIdentifier 不返回 ID

    我有这样的代码 String s replace menu data imageid png int RID this getApplicationContext getResources getIdentifier s drawable
  • 获取数据帧中每行中的前 n 个值及其出现的列名称

    我有一个像这样的数据框 df pd DataFrame a 1 2 1 b 4 6 0 c 0 4 8 a b c 1 4 0 2 6 4 1 0 8 对于每一行 我需要 both n 在本例中为两个 最高值和相应的列 按降序排列 row
  • C# 相当于 C 中的 DllMain (WinAPI)

    我有一个较旧的应用程序 大约 2005 年 它接受 dll 插件 该应用程序最初是为 Win32 C 插件设计的 但我有一个可用的 C dll 模板 我的问题 我需要进行一些一次性初始化 这在 Win32 C dll 中将在 DllMain
  • 计算午夜后两次之间的持续时间

    如何计算两次之间的持续时间 var start moment 17 00 HH mm var end moment 02 15 HH mm moment duration end diff start asHours outputs 14
  • 使用 Python 中的 Requests 库发送“用户代理”

    我想发送一个值 User agent 使用 Python Requests 请求网页时 我不确定是否可以将其作为标头的一部分发送 如下面的代码所示 debug verbose sys stderr user agent User agent
  • Xcode 中的 Git 提交模板

    我已经添加到全局 git 配置中 git config global commit template gitmessage 创建了 gitmessage file one line summary of changes Because re
  • Cocoa:限制鼠标在屏幕上

    我正在为 OSX 开发一个信息亭模式应用程序 在某些情况下 会连接另一个屏幕 我的应用程序在一个屏幕上全屏运行 使用 self window contentView enterFullScreenMode s withOptions NSD
  • 使用 FastAPI 解析来自 Slack 的传入 POST 请求

    我正在构建一个 FastAPI 服务器来接收 slacklash 命令发送的请求 使用下面的代码 我可以看到以下内容 token BLAHBLAH team id BLAHBLAH team domain myteam channel id
  • 通过命令行从 unittest.TestCase 运行单个测试

    在我们的团队中 我们定义大多数测试用例如下 一门 框架 课程ourtcfw py import unittest class OurTcFw unittest TestCase def setUp Something Other stuff
  • 在映射返回中反应渲染数组

    我有一个正在渲染一些结果的反应组件 我遇到的问题是 result participants 这是一个数组 因此地图渲染两个名称时没有任何空格 我发现很难插入这些空格 result participants 是一个字符串数组 如果长度 gt
  • 将子网掩码“/”符号转换为 Cisco 0.0.0.0 标准

    我已经搜索过寻求帮助 但找不到我的问题的答案 情况 我需要将 NN 子网掩码表示法 例如IPTABLES 转换为0 0 0 0 cisco 表示法 NN 是子掩码中 1 的数量 从最低八位位组到较高八位位组 每个八位位组都是 8 位整数 可