gpt4 book ai didi

c# - 在 C# 中计算子网掩码中的位数

转载 作者:行者123 更新时间:2023-11-30 15:41:02 25 4
gpt4 key购买 nike

我有一个任务要用 C# 完成。我有一个子网掩码:255.255.128.0。

我需要找到子网掩码中的位数,在本例中为 17。

但是,我需要能够在 C# 中执行此操作无需使用 System.Net 库(我正在编程的系统无法访问此库)。

看起来这个过程应该是这样的:

1) 将子网掩码拆分为八位字节。

2) 将八位字节转换为二进制。

3) 计算每个 Octet 中 One 的个数。

4) 输出找到的Ones的总数。

但是,我的 C# 很差。是否有人了解 C# 知识可以提供帮助?

最佳答案

比特计数算法取自: http://www.necessaryandsufficient.net/2009/04/optimising-bit-counting-using-iterative-data-driven-development/

string mask = "255.255.128.0";
int totalBits = 0;
foreach (string octet in mask.Split('.'))
{
byte octetByte = byte.Parse(octet);
while (octetByte != 0)
{
totalBits += octetByte & 1; // logical AND on the LSB
octetByte >>= 1; // do a bitwise shift to the right to create a new LSB
}
}
Console.WriteLine(totalBits);

使用了文章中最简单的算法。如果性能至关重要,您可能需要阅读这篇文章并使用其中更优化的解决方案。

关于c# - 在 C# 中计算子网掩码中的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com