преобразование строки в сетевой адрес - PullRequest
2 голосов
/ 12 марта 2011

У меня есть приложение 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

1 Ответ

1 голос
/ 12 марта 2011

Windows имеет inet_addr () , но, похоже, не поддерживает UNICODE:

#include <winsock2.h>

std::string address = "169.254.255.255";
unsigned long ip = inet_addr(address.c_str());
...