转换为十六进制并删除最后两位数字

时间:2015-12-29 10:50:49

标签: c++

Hello让我说我将1314173089编号为十进制,将0x4E54B0A1编号为十六进制。当我使用printf时,它使用0x%X正确转换为十六进制。我真的想以某种方式将我的数字转换为十六进制,然后从十六进制数中删除例如最后两位数,因此它将是0x4E54B0为十六进制,但在十进制中它应为5133488并且我想要将十进制数存储在int中以用于其他事情 - 有人能帮我一把吗?到目前为止,我只能打印它,但我不知道我将如何自己做这样的十六进制函数..

2 个答案:

答案 0 :(得分:7)

简单地除以0x100

#include <iostream>

int main()
{
    const unsigned int a = 0x4E54B0A1;
    std::cout << "0x" << std::hex << a / 0x100 << std::endl;
}

这会打印0x4e54b0

答案 1 :(得分:1)

unsigned int hexFunction(const unsigned int a) {
    return a / 0x100;
}

int main()
{
    const unsigned int a = 0x4E54B0A1;
    unsigned int hex = hexFunction(a);
    std::cout << "Hex = 0x" << std::hex << hex;
    std::cout << "\tDec = " << std::dec << hex << std::endl;
    return 0;
}