数字不存储为“十进制”或“十六进制”,这就是它们的书写方式以供人类查看。分配一个值,如十六进制 num1 = 0x25 或十进制 num1 = 37 没有区别:num1 将保持相同的值。
num3 = 256 * num1 + num2;
你的问题没有说明如果两个十六进制的humbers 是25 和7 会发生什么。答案是2507 还是257?如果是后者,
num3 = 16 * num1 + num2;
无论哪种情况,我第一段的推论都适用:数字不是“十进制”或“十六进制”,直到您打印它们。
printf ("Decimal %d", num3);
printf ("Hexadecimal %x", num3);
如果这两个数字是人类可读格式的字符串,这个问题就更有意义了!
#include<stdio.h>
#include<string.h>
int main()
{
char num1[] = "25";
char num2[] = "71";
char num[20];
int num3;
strcpy (num, num1);
strcat (num, num2);
printf ("Hexadecimal string %s\n", num);
sscanf(num,"%x", &num3);
printf ("Decimal number %d\n", num3);
return 0;
}
程序输出:
Hexadecimal string 2571
Decimal number 9585