C 程序将小数转换为十六进制

C++ program to convert decimal to hexadecimal

本文关键字:十六进制 转换 小数 程序      更新时间:2023-10-16

我写了一个程序,通过使用开关命令将其转换为十六进制,但如果我使用char,则该程序效果不佳!没有切换,我将无法处理9个上方的数字。我希望你确实了解我,因为我的语言不太好。

所以这是我的程序

顺便说一句,如果将其 int而不是char,则可以正常工作,但它变为11而不是B

#include <iostream>
using namespace std;
int main()
{
    int n, i, c=0, t;
    char a[50];
    cout << "Enter a decmail number :n";
    cin >> n;
    t = n;
    for (i = 0; t > 0; i++)
    {
        if (a[i] % 16 > 9)
        {
            switch(a[i])
            {
                case 10 : a[i] = 'A'; break;
                case 11 : a[i] = 'B'; break;
                case 12 : a[i] = 'C'; break;
                case 13 : a[i] = 'D'; break;
                case 14 : a[i] = 'E'; break;
                case 15 : a[i] = 'F'; break;
            }
        }
        else
        {
            a[i] = t % 16;
        }
        t = t / 16;
    }    
    cout << n << " In hexdecmail = ";
    for(c = i - 1; c >= 0; c--)
    {
        cout << a[c];
    }
}

这里的问题是1与'1'不同。1是第一名,而" 1"是一个字符常数。要将1转换为" 1",您必须将" 0"添加到数字。因此您可以更改行 a[i] = t%16;a[i] = t%16 + '0';

另外,您还需要将其放在t%16上,而不是将IF条件和开关箱放在[I]上,因为尚未设置[I]。休息应该可以正常工作。

编辑:要了解从数字到角色常数工作的对话如何工作,您需要了解角色在内部的表示。

每个字符(如A-Z,A-Z,0-9)和特殊字符的分配数在0到256之间。该编号称为字符的ASCII值。您可以在此处找到所有ASCII值的列表。

" 0"的ASCII值是48。" 1"的ASCII值是49,'2'为50,依此类推。现在,您拥有的是数字(您可以通过t%16来获得)。说这是3。要将其转换为ASCII代码(51),您必须添加48。同样,可以通过添加48来将0-9之间的所有数字转换为其ASCII值。这是因为数字的ASCII值是连续的。

通常很难记住ASCII值48。因此,您可以写入" 0",这在内部表示48.

我希望这会有所帮助。