UNIX常用的IP表示掩碼方式轉換爲字符串的程序實現方法

一種IP的表示方式爲192.168.1.1/24,其數字24的含義爲24位掩碼,即掩碼爲255.255.255.0,程序中讀入的類似192.168.1.1/24的字符串可能需要轉換爲IP地址和掩碼兩個字符串保存或處理,即將192.168.1.1/24轉換爲192.168.1.1和255.255.255.0,一種程序的實現方法如下

<pre lang="C">
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
int main()
{
 char ip[] = "192.168.1.1/24";
 uint8_t *ipPrint = NULL;
 uint32_t ipAddr;
 uint32_t *ipPtr = &ipAddr;
 uint32_t mask = 0;
 uint32_t value = 0;
 uint32_t i = 0, j = 0;
 uint8_t *ptr = NULL;
 struct in_addr in;
 ptr = strtok(ip, "/");
 inet_aton(ptr, (struct in_addr *)ipPtr);

 ptr = strtok(NULL, "/");
 value = atoi(ptr);

 for(i = 0; i<value; i++)
 {
  j = value-i-1;
  mask |= 1<<j;
 }
 printf("%.8x\n%.8x\n",ipAddr,mask);
 in.s_addr = ipAddr;
 ipPrint = inet_ntoa(in);
 printf("%s\n",ipPrint);
 in.s_addr = mask;
 ipPrint = inet_ntoa(in);
 printf("%s\n",ipPrint);
 return 0;
}
</pre>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章