将整数转换为0x等效(Hex)

时间:2016-11-23 21:18:39

标签: c bcd

我有一个1991年的整数输入。如何将输入转换为0x1991而不是7C7?我已经编写了将十六进制转换为十进制的代码(答案将是6545)

int ui = 0x202;
int BCD(int value) //Converting 0xhex to decimal 
{
    int result = 0;
    result <<= 4;
    result |= ui % 10;
    ui /= 10;

    return value;
}

3 个答案:

答案 0 :(得分:6)

const int input = 1991;
int i = input;
int f = 1;
int result = 0x0;
while( i > 0 )
{
    int d = i % 10;
    result += d * f;
    f *= 16; 
    i /= 10;
}

printf("0x%x", result ); // 0x1991

答案 1 :(得分:2)

您使用ui作为输入并将结果存储在result中,但随后返回value;您应该使用value作为输入并返回result

答案 2 :(得分:1)

使用0x前缀构建一个字符串,然后扫描它。

int var, value = 1991;
char tmp[100];
sprintf(tmp, "0x%d", value);
if (sscanf(tmp, "%i", &var) != 1) /* error */;
printf("%d ==> %s ==> %d\n", value, tmp, var);