十六进制转十进制的 C++ 程序
c++server side programmingprogramming更新于 2024/10/10 19:21:00
给定一个十六进制数作为输入,任务是将给定的十六进制数转换为十进制数。
计算机中的十六进制数以 16 为基数表示,十进制数以 10 为基数,用 0 - 9 表示,而十六进制数的数字从 0 开始 - 15 其中 10 表示为 A,11 表示为 B,12 表示为 C,13 表示为 D,14 表示为 E,15 表示为 F。
要将十六进制数转换为十进制数,请按照以下步骤 −
- 我们将从右到左提取余数,然后将其与从 0 开始的幂相乘,并增加 1 直到 (位数) – 1
- 由于我们需要将十六进制转换为二进制,因此幂的基数为 16,因为八进制的基数为 16。
- 将给定输入的数字与基数和幂相乘并存储结果
- 将所有相乘的值相加以获得最终结果,该结果为十进制数。
下面给出了将十六进制数转换为十进制数的图形表示。
示例
输入: ACD A(10) 将被转换为十进制数 -: 10 X 16^2 = 2560 C(12) 将被转换为十进制数 -: 12 X 16^1 = 192 D(13) 将被转换为十进制数 -: 13 X 16^0 = 13 输出-: total = 13 + 192 + 2560 = 2765
算法
开始 步骤 1-> 声明将十六进制转换为十进制的函数 int convert(char num[]) 设置 int len = strlen(num) 设置 int base = 1 设置 int temp = 0 循环 For int i=len-1 and i>=0 and i— IF (num[i]>='0' && num[i]<='9') 设置 temp += (num[i] - 48)*base 设置 base = base * 16 结束 Else If (num[i]>='A' && num[i]<='F') 设置 temp += (num[i] - 55)*base 设置 base = base*16 结束 返回 temp 步骤 2-> 在 main() 中 声明 char num[] = "3F456A" 调用 convert(num) 停止
示例
#include<iostream> #include<string.h> using namespace std; //将十六进制转换为十进制 int convert(char num[]) { int len = strlen(num); int base = 1; int temp = 0; for (int i=len-1; i>=0; i--) { if (num[i]>='0' && num[i]<='9') { temp += (num[i] - 48)*base; base = base * 16; } else if (num[i]>='A' && num[i]<='F') { temp += (num[i] - 55)*base; base = base*16; } } return temp; } int main() { char num[] = "3F456A"; cout<<num<<"转换为 deciaml 后变为:"<<convert(num)<<endl; return 0; }
输出
如果我们运行上述代码,它将生成以下输出
3F456A 转换为 deciaml 后变为:4146538