子網路遮罩轉換為IP範圍 在網路應用中,經常需要將子網路遮罩轉換為IP範圍,以便進行進一步的計算.以下是轉換的原理及代碼: www.2cto.com 一 子網路遮罩的作用, 就是將某個IP地址劃分為'子網編號'和'主機地址' 掩碼格式 [子網編號:26bit ]主機地址:6bit 172.16.2.64/26 [10101100 00010000 00000010 01]000000 172.16.2.96/26 [10101100 00010000 00000010 01]100000 6bit的主機地址, 可以容納63個編號. 則上面兩個掩碼的範圍是 掩碼格式 IP範圍 172.16.2.64/26 [172.16.2.64 - 172.16.2.127] 172.16.2.96/26 [172.16.2.96 - 172.16.2.127] *上一條的子集 二 演算法 www.2cto.com typedef struct{u_int32_t min;u_int32_t max;}ip_range_t;int str2iprange( ip_range_t *ipr, char *sipr){char sip[16];char smask[3];sscanf( sipr, "%[^/]/%s", sip, smask);ipr->min = ntohl(inet_addr( sip));ipr->max = (ipr->min & ~( (0x1 << (32 - atoi(smask))) - 1)) + ( (0x1 << (32 - atoi(smask))) - 1);}三 測試 www.2cto.com ip_range_t ipr;str2iprange( &ipr, "172.16.2.94/24");struct in_addr min = { htonl( ipr.min)};printf("%s - ", inet_ntoa( min));struct in_addr max = { htonl( ipr.max)};printf("%s \n", inet_ntoa( max));輸出結果:172.16.2.94 - 172.16.2.127END