У меня есть приложение Visual Studio 2008 C ++, в котором я хотел бы преобразовать IP-адрес из строки широких символов в точечно-четырехзначной записи в адрес (аналогично inet_aton
);
I 'я делаю это:
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