解析转换程序通信消息体中IP地址时,经常会将其在整数和字符串两种方式转换,于是将转换方式总结一下。
#include <iostream>
#include <arpa/inet.h>
#include <stdio.h>
using namespace std;
int main()
{
//将整数IP转换为字符串表示的IP
int dwAddr = inet_addr("127.0.0.1");
cout << "NO1 :IP的整数形式 " << dwAddr <<endl;
//将字符串形式的IP转换为整数形式表示,方法一
struct in_addr inAddr;
inAddr.s_addr = dwAddr;
cout << "NO2: IP的字符串形式 " << inet_ntoa(inAddr) << endl;
//将字符串形式的IP转换为整数形式表示,方法二
unsigned char *pch = (unsigned char*)&dwAddr;
char szIPAddr[64] = {0};
sprintf(szIPAddr, "%d.%d.%d.%d", *pch, *(pch+1), *(pch+2),*(pch+3));
cout << "NO3: IP的字符串形式 " << szIPAddr << endl;
return 1;
}
打印输出:
NO1 :IP的整数形式 16777343
NO2: IP的字符串形式 127.0.0.1
NO3: IP的字符串形式 127.0.0.1