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#の知識を持っていますか?