我想製作一個小程序,在那裏我可以鍵入一個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