У меня есть сценарий C ++, который включает в себя строковые представления потенциальных шестнадцатеричных чисел.В более поздней части сценария я хотел бы преобразовать эти потенциальные шестнадцатеричные числа в двойные для некоторой арифметики в базе 10. Чтобы попытаться выполнить это преобразование, я использую функцию.
double MyFunction(string input)
{
double Number;
stringstream ss(input);
ss >> hex >> Number;
return Number;
}
КогдаМой скрипт выполняется, кажется, что полученная преобразованная строка рассматривается только как десятичное число.Если исходная строка была "fc" или "b5", она говорит, что преобразованное число равно -9.25596e + 061.Но если строка была "33" (которая должна быть 0x33), она рассматривает ее как десятичную 33. Я пробовал ее без ">> hex" и с добавлением префикса "0x" к строке перед преобразованием (так какКомпиляция, кажется, понимает 0xF так же, как и 16), но не повезло.
Я понимаю, что компьютер хранит все как двоичное, и что база, в которой просматривается число, не сохраняется, но я просто непонять, что здесь не так.Почему он, по-видимому, настаивает на чтении строки в базе 10 и игнорировании любого экземпляра AF?
Любая помощь будет оценена.