У меня есть две строки для добавления. Строки - это значения HEX. Я конвертирую строки в long long, добавляю и возвращаюсь в строку. Но эта операция не работает.Unsigned long long неправильное заданное значение после добавления
Код:
unsigned long long FirstNum = std::strtoull(FirstString.c_str(), NULL, 16);
unsigned long long SecondNum = std::strtoull(SecondString.c_str(), NULL, 16);
unsigned long long Num = FirstNum + SecondNum;
std::cout << " " << FirstNum << "\n+ " << SecondNum << "\n= " << Num << "\n\n";
Я получил
13285923899203179534
+ 8063907133566997305
= 2903086959060625223
Любой человек может объяснить мне это волшебство? Как я могу это исправить?
Назад к шестнадцатеричному значению с помощью
std::stringstream Stream;
Stream << std::hex << Num;
return Stream.str();
У вас есть простой случай переполнения здесь. Эти numvers не соответствуют 64-битным целым числам. – SergeyA
@SergeyA хорошо. Я думаю, что это моя ошибка. Спасибо. – ventaquil