c# IS-IS 网络 ID 计算器

c# IS-IS Net ID calculator

我目前是一名网络管理员,目前我们正在向我们的网络添加新路由器,其中,我们需要设置一些路由协议,我们正在使用一个名为 IS-IS 的协议,它需要一个 NET ID。

所以我想我会尝试做一个计算器,现在我已经做了大部分,除了真正有用的部分哈哈。

网络 ID 如下所示:49.0001.1720.1600.1001.00

分手; 地区前缀: 49.0001

IP地址: 1720.1600.1001

和一个 NSEL 后缀: .00

在我的计算器中我有 5 个文本框,其中 4 个用于本例中的 ip 地址,第 5 个文本框是 CIDR 值,不用于此功能。

假设用户将以下内容放入框 [172]-[16]-[1]-[1] 我不知何故需要用零填充这些值,所以它变成了这样: 172.16.1.1 ---> 172.016.001.001

完成后,我需要将 "bits" 重新排列成 3 组 ps 的 4 位数字,所以它变成了: 172.016.001.001-- -> 1720.1600.1001

剩下的我可以做,但实际 ip 和填充的重新排列,我没有任何运气.. 我试过

string tb1 = textBox1.Text.PadLeft(4, '0');

但这只是添加了零,并没有重新排列值。

我看过

var strIP = new StringBuilder(); strIP.Append(textBox1.Text);

但是还没找到怎么重新排列

TLDR: 如何让 172.16.1.1 变成 1720.1600.1001 当每个原始组 ps 是来自各个文本框。

ps。很抱歉这么长post,我想我必须解释一下自己才能让自己明白。

假设您的文本框值被命名为 octet1 .. octet4,您可以将它们组合成一个 List 来处理它们,然后连接它们并拆分它们:

var octets = new List<string> { octet1, octet2, octet3, octet4 };

var octetStr = string.Join("", octets.Select(o => o.PadLeft(3, '0')));
var ans = octetStr.Substring(0, 4)+"."+octetStr.Substring(4, 4)+"."+octetStr.Substring(8);

我正在使用 LINQ 将每个数字填充到 3 位数字,但您可以单独填充它们。

var octet1Padded = octet1.PadLeft(3, '0');
// and so on...
var octetStr = octet1Padded+octet2Padded+octet3Padded+octet4Padded;
var ans = octetStr.Substring(0, 4)+"."+octetStr.Substring(4, 4)+"."+octetStr.Substring(8);