C ++使数字以十六进制显示

时间:2014-04-10 19:14:16

标签: c++ hex

我想在十六进制字母表中显示一个数字,但我不知道如何。

例如,我使用了这个号码  我希望这个号码显示为“FF FF”,但它显示为“15 15”

number是我想要转换的数字

base是所需的字母(bin,dec,oct,hex)

str是带有数字

的表

数字是我有多少位数

# include <iostream>
using namespace std;
class Number
{
    private:
        int number; 
        int base;
        int str[80];
        int digits;
        void    convert();

    public:
        Number(int n);
        Number(int n,int b);

printNumber打印数字

        void    printNumber();
};

convert是转换数字

的函数
void    Number::convert()
{
    int icount=0;
    int x=number;
    while(x!=0)
    {
        int m=x % base;
        x=x/base;
        str[icount]=m;
        icount=icount+1;
    }

位数统计我拥有的位数

    digits=icount;
}

此函数用作基数dec

 Number::Number(int n)
{
    number=n;
    base=10;
    convert();
}

此函数使用整数b作为基数

Number::Number(int n,int b)
 {
    number=n;
    base=b;
    convert();
 }

void    Number::printNumber()
{
    int i;
    for(i=digits-1;i>=0;i--)
      cout<<str[i]<<" ";
     cout<<endl;
}


int main()
{
    Number n1(255);
    Number n2(254,16);
    n1.printNumber();
    n2.printNumber();
    std::cout << "Press ENTER to continue...";
    std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
    return 0;
}

3 个答案:

答案 0 :(得分:5)

#include <iomanip>
#include <iostream>

std::cout << std::hex << number;

答案 1 :(得分:0)

int str[80];成员更改为char str[80]。 然后将str[icount]=m;方法中的行convert()更改为:str[icount]="0123456789abcdef"[m];

最后确保str为零终止,并简单地打印为字符串。

显然只是打印一个十六进制值,你可以像clcto建议的那样使用标准库,但我想这不是你的议程......

答案 2 :(得分:0)

如果您想要真正控制输出的格式,请使用旧的C风格printf()。虽然它的语法不像C ++流那样直观,但它更适合做复杂的事情。对于十六进制数字,您可以使用x转换:

#include <stdio.h>

int number = 255;
printf("Here is a hex number: %x\n", number);

上面的代码将导致

的输出
Here is a hex number: ff

现在,如果要输出数字数据,通常需要将所有位输出为十六进制,包括前导零。轻松printf()

printf("My int has the bits: 0x%08x\n", number);

将输出

My int has the bits: 0x000000ff