我想制作一个小程序,在那里我可以键入一个IPv4地址和一个SubMask地址。二进制字符串int和然后BitWise AND
做工精细...
然后我会作出AND,这样我就可以看到子网的IPv4地址是在(二进制形式)... ,我不能让它开始工作,有人可以帮助..
这里我尝试按位字符串转换成int,这样我就可以做出和AND,但我variabels iSIDs和iSIDr(int数据类型)不得到的值..
的variabels子结果和结果是32位二进制形式的十进制IPv4转换地址,所以BitWise字符串...
string SIDsubresult = subresult;
SIDsubresult = SIDsubresult.Replace(".", "");
string SIDresult = result;
SIDresult = SIDresult.Replace(".", "");
int iSIDs = Convert.ToInt32(SIDsubresult);
int iSIDr = Convert.ToInt32(SIDresult);
Console.Write(iSIDr & iSIDs);
编辑/ UPDATE
只是让所有有我开始写代码.. 我的代码之前的代码之前就和代码是在这里
var split = (from p in ipv4add.Split('.') select int.Parse(p)).ToArray();
string result = string.Format("{0}.{1}.{2}.{3}",
Convert.ToString(split[0], 2).PadLeft(8, '0'),
Convert.ToString(split[1], 2).PadLeft(8, '0'),
Convert.ToString(split[2], 2).PadLeft(8, '0'),
Convert.ToString(split[3], 2).PadLeft(8, '0'));
var subsplit = (from s in subnetmaske.Split('.') select int.Parse(s)).ToArray();
string subresult = string.Format("{0}.{1}.{2}.{3}",
Convert.ToString(subsplit[0], 2).PadLeft(8, '0'),
Convert.ToString(subsplit[1], 2).PadLeft(8, '0'),
Convert.ToString(subsplit[2], 2).PadLeft(8, '0'),
Convert.ToString(subsplit[3], 2).PadLeft(8, '0'));
string SIDsubresult = subresult;
SIDsubresult = SIDsubresult.Replace(".", "");
string SIDresult = result;
SIDresult = SIDresult.Replace(".", "");
int iSIDs = Convert.ToInt32(SIDsubresult);
int iSIDr = Convert.ToInt32(SIDresult);
Console.Write(iSIDr & iSIDs);
转换的IPv4地址解析它没有时间为int是非常错误的,通常溢出 – harold
例如,见这里http://stackoverflow.com/questions/1499269/how-to-check-if- an-ip-address-is-within-a-particular-subnet关于如何检查子网的IP – xanatos
使用uint而不是int。 IPV4的最大值可以是0xFFFFFFFF,这会溢出一个int,但不是uint。 – jdweng