Требуется преобразовать hex строки в числовые значения. Гугл посоветовал использовать strtol. казалось бы все супер, проверил несколько произвольных значений, вроде все ок, но как добавил его в рабочий код, тут все и началось. В большинстве случаев код работает. но при некоторых значениях, преобразование вместо нужного результата выдает 7FFFFFFF PHP: char pTest[MAX_PATH]; memset( pTest, 0, sizeof(pTest) ); sprintf( pTest, "%.8x", (int)strtol( "aa20b5eb", NULL, 16) ); AfxMessageBox( pTest ); п.с. Решил эту проблему другим способом: PHP: sscanf(pString + indexes[1] + 1, "%x", &extractedcrc); Но вопрос остается, почему strtol не работает?
Вангую проблему из-за signed int. http://en.wikipedia.org/wiki/Integer_%28computer_science%29#Common_integral_data_types 7FFFFFFF = 2,147,483,647
Вариант на плюсах: Code: #include <iostream> #include <sstream> int main() { unsigned int value = 0; std::stringstream ss; ss << "aa20b5eb"; ss >> std::hex >> value; std::cout << "Value: " << value << std::endl; return 0; }