将子网掩码“/”符号转换为 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 标准 的相关文章

随机推荐

  • 在 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 位整数 可