0

我试图在这个方法中返回一个十六进制值。不知道我哪里错了。不知道如何在不使用 cout 的情况下将值放入十六进制。一直没能找到解决办法。输入值总是 32 位长

它就像我想返回hex << x,但那不是一个选择。

string StringToHex (myInstruction* RealList, int Pos)
{
    string result = "11111111110000000000110011001100";
    unsigned long x = strtoul(result.c_str(), &pEnd, 2);
    cout<< hex << x<<endl;
    return  x;
}
4

3 回答 3

1

您可以使用 astringstream而不是cout.

cout只是默认创建的一种特殊的 ostream,它连接到程序的标准输出。您可以创建其他写入不同事物的 ostream 对象。std::stringstream写入其中的一个std::string

#include <sstream>

std::string to_hex() {
  unsigned int x = 256;

  std::stringstream s;
  s << std::hex << x;
  return s.str();
}
于 2013-10-03T17:27:03.997 回答
0

如果我理解您的问题,您想将十六进制值作为字符串返回,rigt?如果是这样,那么:

std::string intToHexStr (int val)
{
    std::stringstream sstr;
    sstr << hex << val;
    std::string result;
    sstr >> result;
    return result;
}

希望这可以帮助!

于 2013-10-03T17:37:51.123 回答
0

利用std::stringstream

std::stringstream ss;
ss<< std::hex << x;
std::string res= ss.str();
于 2013-10-03T17:28:32.893 回答