CIDR サブネット マスクを IP マスク標準に変換する最も簡単な方法は何ですか?
CIDR のマスクが 24 だとすると、255.255.255.0 を取得する必要があります。
サイズはマスクの先頭の 2 進数 1 の数です。したがって、マスクは 0xFFFFFF00 です
– ジェイドウェン
2020 年 9 月 3 日 12:16
次のことを試してください: int MaskSize = 24; UInt32 hex = (UInt32)Enumerable.Range(0,maskSize).Sum(x => (1 << (31 - x)));文字列マスク = string.Join(".", (hex >> 24).ToString(), ((hex >> 16) & (0xFF)).ToString(), ((hex > ;> 8) & (0xFF)).ToString(), (hex & (0xFF)).ToString());
– ジェイドウェン
2020 年 9 月 3 日 12:25
次の最後の行を作成することもできます: string Mask = string.Join(".", Enumerable.Range(0, 4).Reverse().Select(x => ((hex >>(8 * x)) & 0xFF).ToString()));
– ジェイドウェン
2020 年 9 月 3 日 12:39
------------------------
次のコード スニペットを使用すると、/24 などの CIDR 表記サフィックスを同等の IPv4 ビットマスクに、またはその逆に簡単に変換できます。
public static string CidrToMask(int cidr)
{
var mask = (cidr == 0)?0:uint.MaxValue << (32 - cidr);
var bytes = BitConverter.GetBytes(mask).Reverse().ToArray();
return new IPAddress(bytes).ToString();
}
public static int MaskToCidr(string subnetMask)
{
var address = IPAddress.Parse(subnetMask);
var bytes = address.GetAddressBytes();
var cidr = 0;
foreach (var t in bytes)
{
var b = t;
while (b > 0)
{
cidr++;
b = (byte)(b << 1);
}
}
return cidr;
}
2023 年 4 月 13 日 6:43 に回答
fd1
fd1
21
2
銅バッジ 2 個
1
追加のサポート情報により、回答が改善される可能性があります。他の人があなたの答えが正しいことを確認できるように、引用やドキュメントなどの詳細を編集して追加してください。適切な回答を書く方法について詳しくは、ヘルプセンターをご覧ください。
– コミュニティ
ボット
2023 年 4 月 17 日 16:31