我有一个任务要在 C# 中完成。我有一个子网名称:192.168.10.0/24
我需要找到子网掩码,在本例中为 255.255.255.0。
但是,我需要能够在不使用 System.Net 库的情况下在 C# 中执行此操作(我正在编程的系统无法访问该库)。
看起来这个过程应该是这样的:
1) 将子网名称拆分为数字和位。
2)将位推入我在 SO 上找到的这个(感谢将子网掩码“/”表示法转换为 Cisco 0.0.0.0 标准):
var cidr = 24; // e.g., "/24"
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);
但是,我遇到的问题是我无法访问我正在工作的系统中包含 IPAddress.HostToNetworkOrder 命令的库。另外,我的 C# 很差。有没有人有 C# 知识可以提供帮助?