#include <iostream>
// 点分十进制IP转网络字节序IP
void ip_str2uint_1(const char* pIP, unsigned int& uiIP)
{
unsigned int uiTmp[4] = { 0 };
sscanf(pIP, "%u.%u.%u.%u", &uiTmp[3], &uiTmp[2], &uiTmp[1], &uiTmp[0]);
uiIP = ((uiTmp[0] << 24) | (uiTmp[1] << 16) | (uiTmp[2] << 8) | (uiTmp[3]));
}
// 网络字节序IP转点分十进制IP
void ip_uint2str_1(unsigned int uiIP, char szIP[16])
{
sprintf(szIP, "%u.%u.%u.%u", uiIP & 0xFF, (uiIP >> 8) & 0xFF,
(uiIP >> 16) & 0xFF, (uiIP >> 24) & 0xFF);
}
// 点分十进制IP转网络字节序IP
void ip_str2uint_2(const char* pIP, unsigned int& uiIP)
{
unsigned int uiTmp[4] = { 0 };
sscanf(pIP, "%u.%u.%u.%u", &uiTmp[0], &uiTmp[1], &uiTmp[2], &uiTmp[3]);
unsigned char *pTmp = (unsigned char*)&uiIP;
for (int i = 0; i < 4; i++)
{
pTmp[i] = (unsigned char)uiTmp[i];
}
}
// 网络字节序IP转点分十进制IP
void ip_uint2str_2(unsigned int uiIP, char szIP[16])
{
unsigned char *pTmp = (unsigned char*)&uiIP;
sprintf(szIP, "%u.%u.%u.%u", pTmp[0], pTmp[1], pTmp[2], pTmp[3]);
}
int main()
{
char szIP[] = "192.168.0.110";
printf("src ip: %s\n", szIP);
unsigned int uiIP = 0;
ip_str2uint_1(szIP, uiIP);
printf("uint ip: %u\n", uiIP);
char szStrIp[16] = { 0 };
ip_uint2str_1(uiIP, szStrIp);
printf("str ip: %s\n", szStrIp);
puts("");
printf("src ip: %s\n", szIP);
uiIP = 0;
ip_str2uint_2(szIP, uiIP);
printf("uint ip: %u\n", uiIP);
memset(szStrIp, 0, sizeof(szStrIp));
ip_uint2str_2(uiIP, szStrIp);
printf("str ip: %s\n", szStrIp);
getchar();
return 0;
}
点分十进制IP和网络字节序IP互转
最新推荐文章于 2023-04-19 09:02:37 发布