我要把标示ip地址的char *类型转换为DWORD类型,通过下面方法可以实现:
char *strip = "144.168.1.20";
DWORD dTest=0;
dTest=(DWORD)strip;
此时dTest的值为4315926但是,我把strip该为"192.168.1.20"或“144.168.1.2”等等,dTest的值始终为4315926请教各位这是为什么?
char *strip = "144.168.1.20";
DWORD dTest=0;
dTest=(DWORD)strip;
此时dTest的值为4315926但是,我把strip该为"192.168.1.20"或“144.168.1.2”等等,dTest的值始终为4315926请教各位这是为什么?
解决方案 »
- windows程序 滚动条
- VC++6.0EXE文件图标问题
- 关于初始化COMBOBOX的问题,请高手指点
- (在线等!)程序错误,wincore.cpp,第911行,是什么意思?
- 关于CFileDialog产生的保存对话框变成英文界面的问题
- 通过HWnd 得到 IHtmlDocument2 接口时,如果当时网页没有下载完成,会出现什么情况啊??(一定会出现的情况)
- 高手请进,希望您们的指导,衡量水平的时候,我还送我所有的200分
- (高手请进)如何用directshow实现视频捕获、视频压缩(mpeg4)、视频网络传输以及回放?
- 轻松抢高分。。。
- 在多线程中如何通过SOCKET读写 而不必使用CSocket
- listctrl 的简单问题
- 如何能让我的CLISTBOX的具有多项拖动功能
为什么一个十进制数“1032291340”等同于一个IP地址“61.135.132.12”呢?其实我刚才已经暗示过大家了,四位点分十进制形式的IP地址“61.135.132.12”代表一组32位二进制数码,如果合在一起再转换成一个十进制数的话,答案就是1032291340。转换方法很简单,就是数制的按权展开:12×2560+132×2561+135×2562+61×2563=12+33792+8847360+1023410176=1032291340(基数为256,即28)。
=====================这样系统的强制转换有问题,知道吧,
自己写一个函数进行相应的转换即可。
#include <assert.h>
#include <windows.h>
using namespace std;BOOL ConvertAddr(char *Address, DWORD &Result);int main()
{
DWORD dwRet;
char str[] = "61.135.132.12";
ConvertAddr(str, dwRet);
cout << dwRet << endl;
return 0;
}BOOL ConvertAddr(char *Address, DWORD &Result)
{
BOOL bRet = TRUE;
char *token;
DWORD dwRet = 0; token = strtok(Address, ".");
int nPower = 3;
int i;
DWORD dwPower;
while(token != NULL)
{
cout << token << endl; i = nPower;
dwPower = 1;
while(i > 0)
{
dwPower *= 256;
i--;
}
nPower--; dwRet += atoi(token) * dwPower;
token = strtok(NULL, ".");
}
Result = dwRet;
return bRet;
}