我有一个Visual Studio 2008 C ++应用程序,我想将IP地址从点分四位表示法中的宽字符字符串转换为地址(类似于inet_aton
);
我这样做:
DWORD StringToAddress( const std::wstring& address )
{
BYTE a = 0, b = 0, c = 0, d = 0;
swscanf( address.c_str(), L"%u.%u.%u.%u", &a, &b, &c, &d );
return d << 24 | c << 16 | b << 8 | a;
}
不幸的是,当我提供类似169.254.255.255
的地址时,第三个四元组出现在swscanf
0
而不是255
。
我做错了吗?有没有好办法解决这个问题?
谢谢, PaulH
答案 0 :(得分:1)
Windows有inet_addr(),但它似乎不支持UNICODE
:
#include <winsock2.h>
std::string address = "169.254.255.255";
unsigned long ip = inet_addr(address.c_str());