首页 文章

C如何将Hex Integer转换为String? [重复]

提问于
浏览
-4

可能重复:如何在C中将数字转换为字符串,反之亦然

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

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

你怎么解决这个问题?

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

4 回答

  • 1

    你可以使用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>

  • 6

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

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

    Link to ideone.

  • 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
    std::string HexDec2String(int hexIn) {
      char hexString[4*sizeof(int)+1];
      // returns decimal value of hex
      sprintf(hexString,"%i", hexIn); 
      return std::string(hexString);
    }
    

相关问题