我正在编写一个C程序,其中有两个十六进制数字,即num1=25
和num2=71
。我想把它们合并为num3=2571
,然后将2571
转换为十进制数。我该怎么做?请帮忙,谢谢!
只需将数字移动并组合即可
int num1,num2,num3;
num1=0x25;
num2=0x71;
num3=(num1<<8)|(num2);
printf("%x %d",num3,num3);
你需要将25(0025)后跟71(0071)放入一个变量中,因此你需要将第一个数字左移8位(0025到2500),然后与num2组合。逻辑或是组合的等效方式,因此使用|
符号。|
符号。 - Nerdy数字并不以“十进制”或“十六进制”存储,这只是人类可见的写法。赋值十六进制如 num1 = 0x25
或者十进制如 num1 = 37
并没有区别: num1
将会持有相同的值。
num3 = 256 * num1 + num2;
你的问题没有说明如果这两个十六进制数是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