C ++如何将Hex Integer转换为String?

时间:2012-10-12 02:27:58

标签: c++

  

可能重复:
  How to convert a number to string and vice versa in C++

在C ++中,如何将十六进制整数转换为原始十六进制的十进制值的字符串表示形式?

我们假设我们有一个整数,其十六进制表示为a1a56(十进制等于662102)并且您想将其转换为字符串“662102”

你会如何解决这个问题?

ps:我建议一个功能性的解决方案作为答案,随时拍下来(如果可能的话,礼貌地)

4 个答案:

答案 0 :(得分:6)

您可以将字符串流中的数字读取为十六进制,并将其作为十进制写回不同的字符串流:

int x;
istringstream iss("a1a56");
iss >> hex >> x;
ostringstream oss;
oss << x;
string s(oss.str());

Link to ideone.

答案 1 :(得分:3)

您可以使用stringstreams:

int x = 0xa1a56;
std::stringstream ss;
ss << x;
cout << ss.str();

或者如果你更喜欢一个功能:

std::string convert_int(int n)
{
   std::stringstream ss;
   ss << n;
   return ss.str();
}

修改:确保#include <sstream>

答案 2 :(得分:3)

使用最新版本的C ++标准(C ++ 11),最简单的方法是使用std::to_string函数:

#include <iostream>
#include <string>

int main()
{
  /* Convert: */
  std::string s { std::to_string(0xa1a56) };

  /* Print to confirm correctness: */
  std::cout << s << std::endl;
  return 0;
}

答案 3 :(得分:1)

std::string HexDec2String(int hexIn) {
  char hexString[4*sizeof(int)+1];
  // returns decimal value of hex
  sprintf(hexString,"%i", hexIn); 
  return std::string(hexString);
}