繁体   English   中英

如何在 C++ 中将更大的十六进制数转换为十进制数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM