-1

我有一个变量:

int a = 10;

我想将其转换为0x前面带有10as:的十六进制值0x10,并将其分配给其他变量,如何转换?

4

3 回答 3

3

使用snprintf()

char buf[128];
snprintf(buf, 128, "0x%d", a); // buf = "0x10"

然后使用sscanf()

unsigned int new_a;
if (1 == sscanf(buf, "0x%X", &new_a))
{
}
于 2013-03-04T10:28:30.150 回答
2

如果您尝试将小数重新解释为十六进制,则问题意味着将多项式重新评估A = a*10^n + b*10^(n-1) + ... + cB=a*16^n + b*16^(n-1) + ... + c

     1 1 2 3  = 1*1000 + 1 * 100 + 2 * 10 + 3
(0x) 1 1 2 3  = 1*4096 + 1 * 256 + 2 * 16 + 3 (=4387 dec)

找到具有重复模数并除以 10 的系数,并将结果与​​ 16 的适当幂相乘。(使用移位实现)。

于 2013-03-04T10:35:15.237 回答
0

这是一个代表性的问题。您可以轻松地将十进制值表示为十六进制

print("0x%x", a);

0xa这将在您的特定情况下打印出来。因为C如果您有 0xa 或 10 或 012,这无关紧要。

于 2013-03-04T10:32:10.697 回答