Я знаю, что есть тонны учебников онлайн о том, как конвертировать из строки в шестнадцатеричную. Ну, у меня проблема с этим.Как конфертировать из двоичной строки из 32 символов в шестнадцатеричный?
Мой код (см. Ниже) работает до 31 символа, и я не могу задуматься о том, почему. Всякий раз, когда есть 32 символа, он просто высвечивается при 7fffffff.
мне нужно, чтобы иметь возможность ввода что-то вроде «111111111100000000001010101000»
Должно быть легко исправить просто не уверен, где
Моя попытка (компилируется):
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int Base = 2;
long x;
char InputString[40];
char *pEnd = NULL; // Required for strtol()
cout << "Number? ";
cin >> InputString;
x = strtol(InputString, &pEnd, Base); // String to long
cout << hex << x << endl;
return 4;
}
ваше решение имеет смысл, однако, нет никакой известной библиотеки для любой прогулки или strtoul – cmonnats23
@ cmonnats23 Я отредактировал свой ответ. Используйте 'strtoul', если у вас нет' long long'. – cnicutar
Каковы же минусы при создании x unsigned и использовании strtoul? например, почему это было бы плохо? также, не уверен, когда был выпущен C++ 11, но на VS2012 strtoll недоступен. если у меня нет чего-то другого, я должен #include – cmonnats23