如何将两个十六进制数字合并为一个数字,然后将其转换为十进制。?
How to merge two Hex numbers to one number and then convert it into decimal.?
我正在编写一个 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 组合。逻辑或等价于组合,因此 |
符号。
数字不会存储为 "decimal" 或 "hexadecimal",这是它们供人类查看的方式。分配一个值,如十六进制 num1 = 0x25
或十进制 num1 = 37
没有区别:num1
将保持相同的值。
num3 = 256 * num1 + num2;
您的问题没有说明如果两个十六进制数是 25
和 7
,您希望发生什么。答案是 2507
还是 257
?如果是后者,
num3 = 16 * num1 + num2;
在任何一种情况下,我的第一段的推论都适用:数字不是 "decimal" 或 "hexadecimal" 直到你打印它们。
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
我正在编写一个 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 组合。逻辑或等价于组合,因此 |
符号。
数字不会存储为 "decimal" 或 "hexadecimal",这是它们供人类查看的方式。分配一个值,如十六进制 num1 = 0x25
或十进制 num1 = 37
没有区别:num1
将保持相同的值。
num3 = 256 * num1 + num2;
您的问题没有说明如果两个十六进制数是 25
和 7
,您希望发生什么。答案是 2507
还是 257
?如果是后者,
num3 = 16 * num1 + num2;
在任何一种情况下,我的第一段的推论都适用:数字不是 "decimal" 或 "hexadecimal" 直到你打印它们。
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