C-将整数从十六进制转换为十进制?

C-将整数从十六进制转换为十进制?,c,C,我有一个int,其中的值应该表示十六进制值,但存储时没有0x前缀。例如,int x存储为20,但应等于32,因为它缺少0x。我如何转换它,以便计算机理解将int解释为十六进制而不是十进制 编辑:例如,我想将50转换为0x50您可以如下使用“十六进制”是您的数字,不带0x。hextr将包含实际值 // number in hex format without 0x int hex = 20; char hexStr[10]; // int to string sprintf(hexStr,"0x

我有一个int,其中的值应该表示十六进制值,但存储时没有
0x
前缀。例如,int x存储为
20
,但应等于
32
,因为它缺少
0x
。我如何转换它,以便计算机理解将int解释为十六进制而不是十进制


编辑:例如,我想将
50
转换为
0x50

您可以如下使用“十六进制”是您的数字,不带0x。hextr将包含实际值

// number in hex format without 0x
int hex = 20;
char hexStr[10];

// int to string
sprintf(hexStr,"0x%d",hex);
如果要将其用作int:

int number = (int)strtol(hexStr, NULL, 16);

基数只是写数字的一种方式。如果x被写入
0x20
32
32
treinta y dos
,则x是相同的。。。它们都只是表示相同概念数字的方式。所以这只在读或写字符串时起作用
printf(“%x”,x)
将以十六进制打印,而
printf(“%d”,x)
将以十进制打印……因此用户键入
50
或您有字符串
“50”
,并且您想要执行
int x=某些函数(该字符串)使
x==0x50
?(扰流板:有些函数是strtol
)@williamsca97当你说“intx存储为20,但应该等于32”时,你一定在调试器/IDE的监视窗口中看到了这一点。右键单击它并选择modeasdecimal(适用于大多数ide)。它将显示32。十六进制、十进制、八进制、二进制只是表示的方式。对于CPU,它都是二进制的!让我们改变你的例子,看看它是否有意义。“例如,int x存储为1F,但由于缺少0x,因此应等于31。不,这没有意义。一点也没有。请重新解释您试图执行的操作。您是说要将给定的数字(例如50(0x32))转换为另一个数字,例如80(0x50)吗?”,使新数字的十六进制数字与旧数字的十进制数字匹配?(whew,moutful)OP没有提到Int到String的转换是预期的。