ip转换为数值 数值转换为ip c++
2009-07-13 13:53
134 查看
#include "stdafx.h" #include <iostream> #include <string> //#include <windows.h> using namespace std; int IPToValue(const string& strIP) { //IP转化为数值 //没有格式检查 //返回值就是结果 int a[4]; string IP = strIP; string strTemp; size_t pos; size_t i=3; do { pos = IP.find("."); if(pos != string::npos) { strTemp = IP.substr(0,pos); a[i] = atoi(strTemp.c_str()); i--; IP.erase(0,pos+1); } else { strTemp = IP; a[i] = atoi(strTemp.c_str()); break; } }while(1); int nResult = (a[3]<<24) + (a[2]<<16)+ (a[1]<<8) + a[0]; return nResult; } string ValueToIP(const int& nValue) { //数值转化为IP //没有格式检查 //返回值就是结果 char strTemp[20]; sprintf( strTemp,"%d.%d.%d.%d", (nValue&0xff000000)>>24, (nValue&0x00ff0000)>>16, (nValue&0x0000ff00)>>8, (nValue&0x000000ff) ); return string(strTemp); } int main(void) { //对于218.92.189.40转化后-631456472 //cout<<hex<<-631456472 <<endl;//输出da5cbd28 string strIP= "218.92.189.40"; cout<<dec<<IPToValue(strIP)<<endl; //cout<<hex<<IPToValue(strIP)<<endl; cout<<ValueToIP(-631456472)<<endl; //IP为:218.92.176.82转化后 -631459758 strIP= "218.92.176.82"; cout<<dec<<IPToValue(strIP)<<endl; //cout<<hex<<IPToValue(strIP)<<endl; cout<<ValueToIP(-631459758)<<endl; return 0 ; }
也可以使用现成的win socket函数,以下代码使用vc6.0通过:
#include "stdafx.h" #include <iostream> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") using namespace std; int main(void) { cout<<(int)htonl(inet_addr("218.92.189.40"))<<endl;//输出-631456472 struct in_addr addr; addr.S_un.S_addr = ntohl(-631456472); cout<<inet_ntoa( addr )<<endl;//输出218.92.189.40 return 0 ; }
相关文章推荐
- ip转换为数值 数值转换为ip c++
- C/C++中int/long/float/double数值类型与字符串互相转换
- MySQL如何有效的存储IP地址及字符串IP和数值之间如何转换
- C++之string类型的使用和与数值类型之间的转换
- c++中字符串与数值的相互转换
- 解决PHP函数ip2long转换IP时数值太大而产生负数的办法
- C/C++中int/long/float/double数值转换
- C/C++中int/long/float/double数值类型与字符串互相转换
- [Tip: _itow]数值和字符串相互转换(C++ 数据类型转换技巧)
- C/C++的数值类型隐式类型转换
- 任意进制的数值转换 C++版
- 解决PHP函数ip2long转换IP时数值太大而产生负数的办法
- 字符串类型ip同数值类型ip转换
- C/C++中字符串与数值相互转换
- C++中string对象与数值相互转换
- 解决PHP函数ip2long转换IP时数值太大而产生负数的办法
- 探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
- C++数值类型与string的相互转换
- [C/C++]_[十六进制字符串转换数值并写入文件]
- PHP函数ip2long转换IP时数值太大而产生负数