[英]How to convert an extra larger hex number to decimal number in C++
我正在尝试将超大的十六进制数转换为 C++ 中的十进制数。
例如:
十六进制:abc6a806bf5ac415016905a8de6e026c
十进制:228329470036614264874173405720560403052
我想从上面的例子中得到小数 % 60 = 52 。
我知道我可以做类似的事情
int(abc6a806bf5ac415016905a8de6e026c, 16) % 60
在蟒蛇
但我不知道如何在 C++ 中实现
您不能将abc6a806bf5ac415016905a8de6e026c
转换为整数类型,因为这会溢出。
但是,如果您想要的只是x % 60
,那么您可以在将“abc6a806bf5ac415016905a8de6e026c”转换为整数时执行所有以 60 为模的操作:
#include <string>
constexpr unsigned int to_int_mod(const std::string &hex, unsigned int m) {
unsigned int x = 0;
for (auto c : hex) {
x *= 16;
if (c >= '0' && c <= '9') {
x += c - '0';
} else {
x += c - 'a' + 10;
}
x = x % m;
}
return x;
}
#include <iostream>
int main() {
std::string hex = "abc6a806bf5ac415016905a8de6e026c";
std::cout << hex << " % 60 = " << to_int_mod(hex, 60) << std::endl;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.