IPv4 주소와 서브 마스크 주소를 입력 할 수있는 작은 프로그램을 만들려고합니다.이진 문자열을 int로 변환 한 다음 BitWise AND
는
그럼 내가 AND 것, 그래서 IPv4 주소가 (바이너리 형식)에,에서 ... 이다 서브 무엇을 볼 수 있고 내가이 동작하지 않습니다 ... 좋은 작품 .. 누군가가 int로 비트 단위의 문자열을 변환하려고 여기 메신저 ..을 도울 수있는, 그래서 내가 할 수 AND,하지만 내 variabels의 iSIDs 및 iSIDr (nt 데이터 형)의 값을 얻을 해달라고
variabels subresult 및 result는 32 진수 형식의 10 진 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);
이 기간없이 분석하여 int로 IPv4 주소를 변환하는 것은 매우 잘못된 것입니다 일반적으로 – harold
여기 http://stackoverflow.com/questions/1499269/how-to-check-if- 예를 들어보기 오버 플로우 서브넷에 대한 IP를 확인하는 방법에 대한 -IP 주소가 특정 서브넷에 있음 – xanatos
int 대신 uint를 사용하십시오. IPV4 최대 값은 0xFFFFFFFF가 될 수 있습니다.이 값은 int가 오버 플로우되지만 uint는 오버 플로우됩니다. – jdweng