可能重复:如何在C中将数字转换为字符串,反之亦然
在C中,如何将十六进制整数转换为原始十六进制的十进制值的字符串表示?
假设我们有一个整数,其十六进制表示为 a1a56 (十进制等于 662102 )并且您想将其转换为字符串"662102"
a1a56
662102
你怎么解决这个问题?
ps:我建议一个功能性解决方案作为答案,随意拍下来(如果可能的话,礼貌地)
你可以使用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>
#include <sstream>
您可以将字符串流中的数字读取为十六进制,并将其作为十进制写回另一个字符串流:
int x; istringstream iss("a1a56"); iss >> hex >> x; ostringstream oss; oss << x; string s(oss.str());
Link to ideone.
使用最新版本的C标准(C 11),最简单的方法是使用 std::to_string 函数:
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; }
std::string HexDec2String(int hexIn) { char hexString[4*sizeof(int)+1]; // returns decimal value of hex sprintf(hexString,"%i", hexIn); return std::string(hexString); }
4 回答
你可以使用stringstreams:
或者如果你喜欢一个功能:
编辑:确保你
#include <sstream>
您可以将字符串流中的数字读取为十六进制,并将其作为十进制写回另一个字符串流:
Link to ideone.
使用最新版本的C标准(C 11),最简单的方法是使用
std::to_string
函数: