我正在尝试创建一个小程序,我可以输入IPv4地址和SubMask地址。
工作得很好......
然后我会创建一个AND,所以我可以看到IPv4地址来自的SubNetwork,(二进制形式)...... 我无法让它发挥作用,有人可以帮助..
这里我试图将按位字符串转换为Int,所以我可以和AND,但我的变量iSIDs和iSIDr(int数据类型)不会得到一个值..
变量带子结果和结果是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);
EDIT / 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);
答案 0 :(得分:0)
因为int max有9个数字长度而你的ip add更长 尝试使用long:
setStyle
答案 1 :(得分:0)
我试过这个并为我工作:
var sidsub = SIDsubresult.Split('.');
var sid = SIDresult.Split('.');
var result = "";
for (int i = 0; i < sidsub.Length; i++)
{
result += (int.Parse(sidsub[i]) & int.Parse(sid[i]));
if (i + 1 != sidsub.Length) result += ".";
}