我写的十六进制到十进制的转换有效,但是会得到一些意外的结果。
预期结果:十六进制数字“ 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;
}
}
如果查看输出的第一部分,您会发现它们是正确的。
但是这里:
cout <<binNumber <<decimal;
之后立即打印decimal
,并且它尚未初始化。删除它。
(在相关说明中,请勿声明您认为将来某个时候可能需要的变量。许多错误会以这种方式潜伏。)
// 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;
}
}