Linux网络编程之IP地址转换为无符号整数的方法,代码如下:(没考虑异常输入)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* 处理IP字符串 */
unsigned int aton(const char str[])
{
unsigned int rs = 0;
char *p = (char *)str;
p = strtok(p, ".");
while(p != NULL)
{
rs = (rs << 8) | atoi(p);
p = strtok(NULL, ".");
}
return rs;
}
/* 打印二进制 */
void print(unsigned int rs)
{
if(rs < 2)
{
printf("%d", rs);
return;
}
print(rs / 2);
printf("%d", rs % 2);
}
int main(void)
{
unsigned int rs;
char ip[16];
scanf("%s", ip);
/* 处理IP字符串 */
rs = aton(ip);
/* 打印十进制 */
printf("%u\n", rs);
/* 打印二进制 */
print(rs);
return 0;
}