【问题标题】:Uncleared Answer of Hexadecimal to decimal conversion十六进制到十进制转换的未明确答案
【发布时间】:2020-02-19 12:05:29
【问题描述】:

我写的十六进制到十进制数的转换是有效的,但得到了一些意想不到的结果。

预期结果:十六进制数“0000000F”,输出为十进制“15”

就我而言

1] 如果 "0000000F" 是 HEX 值并且它的转换是 "1532"

2] 如果 "000000FF" 是 HEX 值并且它的转换是 "25532"

我不确定编程的哪一部分是错误的?每次我得到“32”后的任何十进制值结果。谁能建议如何解决这个问题?

#include <iostream>
using namespace std ;
#include <sstream>

int wmain() {
while(1)
{
int binNumber ;
unsigned int decimal;
string hexString = "0000000F"; //you may or may not add 0x before
stringstream myStream;
myStream <<hex <<hexString;
myStream >>binNumber;
cout <<binNumber <<decimal;
//return 0;
}
}

【问题讨论】:

  • 您将decimal 发送至cout。但是decimal 已声明但未初始化;也许它的值恰好是 32?

标签: c++ visual-studio type-conversion hex decimal


【解决方案1】:

如果您查看输出的第一部分,您会发现它们是正确的。

但是在这里:

cout <<binNumber <<decimal;

您在之后立即打印decimal,它是未初始化的。
删除它。

(在相关说明中,不要声明您认为将来某个时候可能需要的变量。许多错误都是这样潜伏的。)

【讨论】:

  • @Adderbill 为什么你的代码中有&lt;&lt; decimal?如果它的值为0,除了输出0 被添加,你还能期待什么?
  • @感谢您的回复,我在您的建议和运行之前完成了
【解决方案2】:
// Correct code  
 #include <iostream>
 using namespace std ;
 #include <sstream>

int wmain() {
while(1)
{
 int binNumber ;
 // unsigned int dummy=0;
  string hexString = "000000FF"; //you may or may not add 0x before
 stringstream myStream;
 myStream <<hex <<hexString;
 myStream >>binNumber;
 cout <<binNumber ;
  //return 0;
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多