Как преобразовать шестнадцатеричную строку в длину без знака?

#c #mfc #hex #data-conversion #unsigned-long-long-int

#c #mfc #шестнадцатеричная #преобразование данных #unsigned-long-long-int

Вопрос:

У меня есть следующее шестнадцатеричное значение

 CString str;
str = T("FFF000");
  

Как преобразовать это в в unsigned long ?

Ответ №1:

Вы можете использовать strtol функцию, которая работает с обычными строками C. Он преобразует строку в длинную, используя указанную базу:

 long l = strtol(str, NULL, 16);
  

подробности и хороший пример:
http://www.cplusplus.com/reference/clibrary/cstdlib/strtol /

Комментарии:

1. Я думаю, что он действительно может захотеть stroul или stoul поскольку он хочет unsigned long .

Ответ №2:

 #include <sstream>
#include <iostream>

int main()
{

    std::string s("0xFFF000");
    unsigned long value;
    std::istringstream iss(s);
    iss >> std::hex >> value;
    std::cout << value << std::endl;

    return 0;
}
  

Комментарии:

1. Разве это не должно быть std::setbase(16) или std::hex ?