如何从字符串转换后返回十六进制值

时间:2013-10-03 17:21:20

标签: c++ binary hex strtol

我正在尝试在此方法中返回十六进制值。不知道我哪里错了。不确定如何在不使用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;
}

3 个答案:

答案 0 :(得分:1)

您可以使用stringstream代替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();
}

答案 1 :(得分:0)

使用std::stringstream

std::stringstream ss;
ss<< std::hex << x;
std::string res= ss.str();

答案 2 :(得分:0)

如果我理解你的问题,你想要将十六进制值作为字符串返回,对吧?如果是,那么:

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

希望这有帮助!