IP地址字符串转二进制程序
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#define PEER_PTP_DOMAIN_ADDRESS "224.0.0.107"
uint32_t IPStr_to_Uint32(const char* Buf)
{
char Buf_Temp[16] = {'\0'};
int i = 14 , dix= 0 , temp = 0, coefficient = 1;
union IP{
uint32_t IPADDR;
uint8_t IPADDR_U8[4];
}IP_U;
IP_U.IPADDR = 0;
strcpy(Buf_Temp, Buf);
i = strlen(Buf_Temp);
while(i >= 0){
if(Buf_Temp[i] != '\0'){
if(Buf_Temp[i] >= '0' && Buf_Temp[i] <= '9'){
temp += (Buf_Temp[i] - '0') * coefficient;
coefficient *= 10;
}
if(Buf_Temp[i] == '.' || i == 0) {
IP_U.IPADDR_U8[dix] = temp;
coefficient = 1;
dix++;
temp = 0;
}
}
i--;
}
return IP_U.IPADDR;
}
int main(void)
{
printf("%x\n", IPStr_to_Uint32(PEER_PTP_DOMAIN_ADDRESS));
return 0;
}