2013-04-22 54 views
0

不知道我缺少什麼。 我試圖確定一個IP地址172.27.12.32的IP地址20.0.0.0和255.255.252.0的範圍落在比較2在C中的字符串格式的IP地址

什麼我做的是以下幾點:

std::string one("200.0.0.0"); 
std::string two("172.27.12.32"); 
std::string three("255.255.255.255"); 

long one_addr = inet_addr(one.c_str()); 
long two_addr = inet_addr(two.c_str()); 
long three_addr = inet_addr(three.c_str()); 

one_addr等於200 two_addr等於537664428 three_addr等於4294967295

two_addr大於one_addr但172.27.12.32不在範圍如果最小的IP地址是200.0.0.0

如何確定172.27.12.32是否不在200.0.0.0和255.255.255.255的範圍內?

+2

將c標籤更改爲C++,給定使用'std :: string'。 – hmjd 2013-04-22 21:53:13

+1

爲什麼我有一種感覺,你有任務錯誤。我想你會被問到IP地址1是否在IP地址2內掩碼3 – evilruff 2013-04-22 21:54:56

+0

全部3個IP地址 – reza 2013-04-22 21:56:05

回答

0

inet_addr() function返回in_addr_t結構實例:

in_addr_t inet_addr(const char *cp); 

這往往是一個typedef一個32位整數,在每個架構上並不總是很長。

在任何情況下,請考慮將20.0.0.0255.255.252.0轉換爲in_addr_t值。然後將這些結果與您感興趣的價值進行比較。你會期待什麼?