C 如何将int的值转换为十六进制值并将其分配给变量?

C 如何将int的值转换为十六进制值并将其分配给变量?,c,int,C,Int,我有一个变量: int a = 10; 我想将其转换为一个十六进制值,在10前面加上0x作为:0x10,并将其分配给其他变量,如何转换它?使用: 然后使用sscanf()将其读回: 这是一个代表性问题。您可以很容易地将十进制值表示为十六进制 print("0x%x", a); 它将在您的特定情况下打印出0xa。对于C来说,如果您有0xa、10或012,那么它是无关紧要的。如果您试图将十进制重新解释为十六进制,那么问题意味着重新计算多项式a=a*10^n+b*10^(n-1)+…+ctoB=a

我有一个变量:

int a = 10;
我想将其转换为一个十六进制值,在
10
前面加上
0x
作为:
0x10
,并将其分配给其他变量,如何转换它?

使用:

然后使用
sscanf()
将其读回:


这是一个代表性问题。您可以很容易地将十进制值表示为十六进制

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

它将在您的特定情况下打印出
0xa
。对于
C
来说,如果您有0xa、10或012,那么它是无关紧要的。

如果您试图将十进制重新解释为十六进制,那么问题意味着重新计算多项式
a=a*10^n+b*10^(n-1)+…+c
to
B=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的适当幂。(通过移位实现)。

那么,您想将
10
转换为
0x10
,即
16
?您好,是的,我想将10转换为0x10,有办法吗\u分配是什么意思?是否要将0x10分配给另一个值?是的,首先将10转换为0x10,然后将0x10分配给另一个变量是否要将10转换为16、11转换为17,。。。还是10比a,11比b?我毫不怀疑这是用户想要的解决方案。他不想要表示的值,而是赋值。@Zeta,怎么不把它赋值给a的hex?我不想打印出来,我想把10转换成0x10@user2131316:所以您想将
10
转换为
0x10==16
,对吗?@user213136,这不会将其打印出来,而是将其存储在
hex\u of_a
中。存储到U8的要求稍微简化了这一点,因为这将系数的数量限制为2。例如,dec中的数字“100”在U8中不再适合作为十六进制。
print("0x%x", a);
     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)