【发布时间】:2014-11-18 05:57:01
【问题描述】:
我在尝试使用以下代码将数字转换为十六进制时遇到问题。
int numconvert(string hexnum)
{
stringstream converter(hexnum);
unsigned int value = 0;
converter >> hex >> value;
return value;
}
string hexconvert(int hexnum)
{
stringstream ss;
ss << hex << hexnum;
string n;
ss >> n;
return n;
}
我使用 numconvert 将输入从 string 更改为 int,然后使用 hexconvert 将其更改为十六进制并将其存储为字符串。
一切似乎都工作得很好,但是由于某种原因,当我通过它 4096 时,它给了我 4096。我期待 1000,但我不确定它为什么会出错。我给它 4096,我注意到它返回一个 16534 的 int,然后程序将它发送到 hexconvert 并返回 4096,这在技术上是正确的,但不是我想要的。
它似乎可以很好地处理其他数字。我在这里做错了什么?
【问题讨论】:
-
您的问题不清楚。你“通过它4096”。你把它传递给什么功能?如果它“返回 16534 的 int”,我假设您的意思是
numconvert("4096"),即将(十六进制!)“4096”转换为(十进制!)16534。按设计工作。如果“程序将其发送到 hexconvert 并返回 4096”,那也是正确的。请更准确地说明您正在做什么(即添加main()并使您的示例可编译/可重现)、观察到的输出和预期输出。此外,考虑ss.str()。
标签: c++ hex decimalformat