我输入的文本数据,如下列:解析和IP的增量地址
AX AMDBCEFG 103.12.96.0 103.12.98.255
AX AMDBDEFG 103.11.64.0 103.13.64.255
AX AMDBEEFG 103.14.24.0 103.14.24.255
我找的输出是一个新的文本文件:
AX AMDBCEFG 103.12.96.0 103.12.96.255
AX AMDBCEFG 103.12.97.0 103.12.97.255
AX AMDBCEFG 103.12.98.0 103.12.98.255
AX AMDBDEFG 103.11.64.0 103.11.64.255
AX AMDBDEFG 103.12.64.0 103.12.64.255
AX AMDBDEFG 103.13.64.0 103.13.64.255
AX AMDBEEFG 103.14.24.0 103.14.24.255
First line
从输入递增3rd Octet
只即96 to 98
。
Second line
从输入增加2nd Octet
,即只有11 to 13
。
Third line
来自输入remains same
。
我至今尝试:
我对待IP定义为字符串,然后的.
在此基础上是做的相当繁琐的事情上分裂。
string sFile = "D:\\input.txt";
string sNewFilePath = Path.Combine(@"D:\\Output", Path.GetFileName(sFile));
string[] arrLines = File.ReadAllLines(sFile);
using (StreamWriter writer = new StreamWriter(sNewFilePath))
{
foreach (string sLine in arrLines)
{
string[] arrTab = sLine.Split('\t');
string sIP1 = arrTab[2].Trim();
string sIP2 = arrTab[3].Trim();
string[] arrIP1 = sIP1.Split('.');
string[] arrIP2 = sIP2.Split('.');
int iOct1_IP1 = Convert.ToInt32(arrIP1[1]);
int iOct1_IP2 = Convert.ToInt32(arrIP2[1]);
int iOct2_IP1 = Convert.ToInt32(arrIP1[2]);
int iOct2_IP2 = Convert.ToInt32(arrIP2[2]);
int iOct1_Diff = iOct1_IP2 - iOct1_IP1;
int iOct2_Diff = iOct2_IP2 - iOct2_IP1;
if (iOct1_Diff > 0)
{
//loop & increment
//write lines to file
}
else if (iOct2_Diff > 0)
{
//loop & increment
//write lines to file
}
}
}
在继续我进一步之前,我发现我可以使用System.Net.IPAddress。
System.Net.IPAddress ip1 = System.Net.IPAddress.Parse(sIP1.Trim());
System.Net.IPAddress ip2 = System.Net.IPAddress.Parse(sIP2.Trim());
if (ip1.Equal(ip2))
{
//...
}
我的问题,是否有任何使用上述类或任何其他技术来达到此目的的首选方式?
对于对用于增量IP地址的术语缺乏了解,感到抱歉。
谢谢。
什么你想要实现吗?我不明白你的问题或你想解决什么问题。 – Jehof 2014-09-02 09:32:21
想要一个显示IP地址的开始和结束范围的输出文件(如示例所示)。 – Hassan 2014-09-02 09:36:49