【问题标题】:How to plus hex( No output)? [duplicate]如何加十六进制(无输出)? [复制]
【发布时间】:2021-03-02 16:59:02
【问题描述】:

我的代码:

#include <iostream>

using namespace std;
int main() {
    unsigned int  a = 0x0009, b = 0x0002;
    unsigned int  c = a + b;
    cout << c;
}

现在

c = 11

我想要这个:

c = 000B

我该怎么办?

【问题讨论】:

  • cout &lt;&lt; std::hex &lt;&lt; c?除非您指定宽度并提供填充符,否则您不会得到 000
  • 检查 c++ iomanip
  • 存储在c 中。你可以选择在任何你想要的基础上显示它。
  • @yui 你已经有了。 c中存储的值是十进制的11,或者十六进制的0xB,或者八进制的013,或者二进制的0b1011。这些都是相同的值,只是表示方式不同。
  • this 回答你的问题了吗?

标签: c++ hex std number-formatting


【解决方案1】:

当你这样做时

int main() {
    unsigned int  a = 0x0009, b = 0x0002;
    unsigned int  c = a + b;
}

那么c11的值,它也有0x000B的值。在使用11 作为基础的表示中,它的值也为10

110x000B(和 10)是相同值的不同表示。

当您使用std::cout 时,默认情况下该数字将打印为十进制。您选择在屏幕上打印值的表示形式对c 的实际值没有任何影响。

【讨论】:

  • 我不想以十进制存储。我想以十六进制存储
  • @yui 它很可能在内部以二进制格式存储。您要解决的真正问题是什么?
  • @yui 你不能选择它在内部的存储方式。你为什么要那个?
  • @idclev463035818 我的想法,因为我必须继续以十六进制计数。
  • @yui 以十六进制计数与以十进制计数完全相同。您添加1,值会增加1。您将两个数字相加,结果是这两个数字的总和。为什么必须“继续以十六进制计数”?
【解决方案2】:

据我了解,您希望以十六进制特定格式XXXX 检索结果。

计算加法与任何数字基数相同,您只需要使用(这里我显示)您的格式的结果。

你可以这样做,例如:

#include <iostream>
#include <iomanip>


std::string displayInPersonalizedHexa(unsigned int a)
{
    std::stringstream ss;
    ss << std::uppercase<<  std::setfill('0') << std::setw(4) << std::hex<< a;
    std::string x;
    ss >>x;
    //std::cout << x;
    return x;
}
int main() {
    unsigned int  a = 0x0009, b = 0x0002;
    unsigned int  c = a + b;
    // displays 000B
    std::cout << displayInPersonalizedHexa(c) << std::endl;

    // adds c=c+1
    c=c+1;
    // displays 000C
    std::cout << displayInPersonalizedHexa(c) <<  std::endl;
    
   //0xC+5 = 0x11
    c=c+5;
    // displays 0011
    std::cout << displayInPersonalizedHexa(c) <<  std::endl;
}

这将输出

000B
000C
0011

【讨论】:

  • 谢谢。但我不想输出 c。我只想将000B 存储在c 中,而不是将11 存储在c
  • c 是一个无符号整数。你会有数字。如果你想有000B,你应该有另一种类型(例如字符串)。我修改了代码,现在你可以拥有一个包含000B 的字符串变量。适合吗?
猜你喜欢
  • 2012-03-13
  • 2017-01-23
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 2018-07-26
相关资源
最近更新 更多