我有一个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;
}
答案 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);