十六进制到十进制的未明确答案

问题描述 投票:0回答:2

我写的十六进制到十进制的转换有效,但是会得到一些意外的结果。

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

就我而言

1,如果“ 0000000F”是十六进制值,并且其转换是“ 1532”

2]如果“ 000000FF”是十六进制值,并且其转换是“ 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;
}
}
c++ visual-studio type-conversion hex decimal
2个回答
1
投票

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

但是这里:

cout <<binNumber <<decimal;

之后立即打印decimal,并且它尚未初始化。删除它。

(在相关说明中,请勿声明您认为将来某个时候可能需要的变量。许多错误会以这种方式潜伏。)


0
投票
// 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;
}
}
© www.soinside.com 2019 - 2024. All rights reserved.