把10进制的ip地址转换为16进制,如可以把"192.168.2.33"转换为0xC0A80221...
int converIntAddToHexAdd(string &intIP,char *buffer)
{
int temp = 0;
if(intIP.empty())
{
cout << "The int IP address is empty." << endl;
return -1;
}
for(string::iterator iter = intIP.begin();iter != intIP.end();iter ++)
{
if(*iter == '.')temp++;
}
if(temp != 3)
{
cout << "wrong format int IP address." << endl;
return -1;
}
string newStr = intIP + '.';
int beginMark = 0,midInt,offset = 0;
for(int num =0;num < 4;num ++)
{
temp = newStr.find_first_of('.',beginMark);
string tempStr = newStr.substr(beginMark,temp);
beginMark = temp +1;
midInt = atoi(tempStr.c_str());
if((midInt < 0)||(midInt > 255))return -1;
if(midInt >= 16)
sprintf(buffer + offset,"%x",midInt);
else
sprintf(buffer + offset,"0%x",midInt);
offset += 2;
}
return 0;
}