【问题标题】:C++ make numbers appear in hexadecimal [duplicate]C ++使数字以十六进制显示[重复]
【发布时间】:2014-05-24 16:33:04
【问题描述】:

我想让一个数字出现在十六进制字母中,但我不知道怎么做。

例如我使用了数字 255.我希望数字显示为“FF FF”,但它显示为“15 15”

数字是我要转换的数字

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

str 是带数字的表格

digits 是我有多少位数

# 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 数我的位数

    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;
}

【问题讨论】:

    标签: c++ hex


    【解决方案1】:
    #include <iomanip>
    #include <iostream>
    
    std::cout << std::hex << number;
    

    【讨论】:

    • 可能是针对 OP 的特定设置,值得一提的是std::ostringstream
    • 其实也可以!并且 cmaster 告诉的内容也有效!感谢大家的帮助! :'D
    【解决方案2】:

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

    最后确保str 以零结尾,并简单地打印为字符串。

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

    【讨论】:

      【解决方案3】:

      如果您想真正控制输出的格式,请使用旧的 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-12
        • 2014-12-20
        • 1970-01-01
        • 2016-06-28
        • 2011-04-08
        • 2017-09-28
        • 1970-01-01
        • 2015-11-04
        相关资源
        最近更新 更多