簡體   English   中英

十進制轉十六進制 C++

[英]Decimal to Hex in C++

我已經編寫了這個程序來獲得一個數字和一個基數作為兩個輸入,然后在給定的基數中打印數字,當基數小於 10 時它工作得很好,但是當我輸入像 16 這樣的基數時,而不是打印單詞“A”代表 10,或 F 代表 15,程序打印單詞的 ASCII 值,但我想要單詞本身。


#include <iostream>
using namespace std;

int base(int n, int t);

int main()
{
    char ch;
    do {
        int n=0, t=0;
        base(n,t);
        
        cout << "\n\nDo you want to continue?(y/n)";
        cin >> ch;
    } while (ch=='y');

}

int base(int n, int t)
{
    cout << "\nPlease enter the number : ";
    cin >> n;
    cout << "\nPlease enter the base : ";
    cin >> t;
    
    int i=80;
    int x[i];
    int m=n;
    

    for (i=1; n>=t ;i++) 
    {
        int rem;
        rem = n%t;
        n = n/t;


    if (rem>9)
    { 
        switch (char(rem)) 
        {
            case 10 :
                rem = 'A';
                break;
            case 11 :
                rem = 'B';
                break;
            case 12 :
                rem = 'C';
                break;
            case 13 :
                rem = 'D';
                break;
            case 14 :
                rem = 'E';
                break;
            case 15 :
                rem = 'F';
                break;
        }
    } 
    

    x[i]=rem;
    }
    

    cout << "The number " << m << " in base " << t << " is = ";
    cout << n;
            

    for (int j=(i-1); j>0; j--)
        cout << x[j];
        

    return 0;

}

我知道這是因為我已將 x[i] 聲明為 integer,所以這就是它發生的原因,但我不知道如何解決此問題。

要將 ASCII 代碼打印為字符,可以將其轉換為 char。 所以,而不是

cout << x[j];

你可以做

cout << static_cast<char>(x[j]);

但是,您目前將 10 以下的數字保留為數字,這在轉換為 char 后將是錯誤的。 如果它小於 10,你可以通過在 rem 中添加'0'來解決這個問題。

另一種可能性是將 x 的類型從 int 更改為 char; 這樣,您就不必施法了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM