#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
// 实现把一个IP转换成整型,并输出,并且能把整型转换为IP地址。
// 这个功能需要一个联合类型
typedef union
{
unsigned char data[4];
unsigned int ip;
}IP;
void main(void)
{
//我当前的IP是: 169.254.142.150 (增加一个实例来判断)
char s[] = "192.168.1.123";
char filed[3];//存放部分信息
IP ip, ip2;
int i = 0, dataIndex = 0, filedIndex = 0;
while (s[i] != '\0')
{
if (s[i] != '.')
{
filed[filedIndex] = s[i];
filedIndex++;
if (dataIndex == 3 && s[i + 1] == '\0')
{
filed[filedIndex] = s[i + 1];
ip.data[dataIndex] = (unsigned char)atoi(filed);
}
}
else
{
if (filedIndex < 3)
{
filed[filedIndex] = '\0';
}
ip.data[dataIndex] = (unsigned char)atoi(filed);
dataIndex++;
filedIndex = 0;
}
i++;
}
printf("IP地址:%d.%d.%d.%d 的整型结果是:%u !", ip.data[0], ip.data[1], ip.data[2], ip.data[3], ip.ip);
//上边的结果 16885952 就是新的数据
ip2.ip = ip.ip;
printf("\r\n新的IP地址:%d.%d.%d.%d 的整型结果是:%u !", ip2.data[0], ip2.data[1], ip2.data[2], ip2.data[3], ip2.ip);
system("pause");
}
发现了一个bug,如果是短的IP就会不兼容,现在已经支持。(感谢 博友的支持)