uint8_t нужен uint16_t для хранения значений из stringstream

Чтение IP-адреса из argv заставляет меня конвертировать его в uint32_t

эта функция сделает так:

uint32_t convert_string_ip_to_uint32_t (const string & string_ip)
{
    stringstream s(string_ip) ;
    uint16_t a,b,c,d; //to store the 4 ints
    char ch; //to temporarily store the '.'
    s >> a >> ch >> b >> ch >> c >> ch >> d ;
    std::cout << a << "  " << b << "  " << c << "  "<< d << std::flush;;
    return ((uint32_t) a << 24 | b << 16 | c << 8 | d);
}

Но когда я изменяю тип данных a,b,c и d на uint8_t, результат будет размытым. Зачем? например, string_ip = '192.168.1.10'

0 ответов

Другие вопросы по тегам