2
我有一個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
我可能會最終這樣做。但我很好奇爲什麼我的swscanf不能正常工作。 – PaulH 2011-03-14 14:00:44
@PaulH,可能是因爲'%u'返回大於一個字節的'unsigned int'值。嘗試將'a','b','c'和'd'聲明爲'UINT',並在最後一行中屏蔽它們的低位字節。 – 2011-03-14 14:28:38
就是這樣。謝謝。 – PaulH 2011-03-14 14:51:21