十进制到十六进制转换c++内置函数
Posted
技术标签:
【中文标题】十进制到十六进制转换c++内置函数【英文标题】:Decimal to hex conversion c++ built-in function 【发布时间】:2013-11-30 19:22:03 【问题描述】:c++ 中是否有一个内置函数可以从用户那里获取十进制输入并将其转换为十六进制,反之亦然?我已经使用我编写的函数进行了尝试,但我想知道是否有一个内置函数可以将代码最小化一点。提前致谢。
【问题讨论】:
看看sprintf
【参考方案1】:
十进制转十六进制:-
std::stringstream ss;
ss<< std::hex << decimal_value; // int decimal_value
std::string res ( ss.str() );
std::cout << res;
十六进制转十进制:-
std::stringstream ss;
ss << hex_value ; // std::string hex_value
ss >> std::hex >> decimal_value ; //int decimal_value
std::cout << decimal_value ;
参考:std::hex
,std::stringstream
【讨论】:
读入可以直接读入整型,避免stringstreams和strings。【参考方案2】:许多编译器支持itoa
函数(它出现在 POSIX 标准中,但不在 C 或 C++ 标准中)。 Visual C++ 称之为_itoa
。
#include <stdlib.h>
char hexString[20];
itoa(value, hexString, 16);
请注意,没有十进制值或十六进制值之类的东西。数值始终以二进制形式存储。只有数字的字符串表示具有特定的基数(基数)。
当然,当值应该显示在更长的消息中时,将 %x
格式说明符与任何 printf
函数一起使用是很好的。
【讨论】:
> 数值始终以二进制形式存储。我们可以用不同的方式阅读它,例如。该值为 17,是 (17)dec 和 (11)hex。存储的值不会改变。【参考方案3】:#include <iostream>
using namespace std;
int DecToHex(int p_intValue)
char *l_pCharRes = new (char);
sprintf(l_pCharRes, "%X", p_intValue);
int l_intResult = stoi(l_pCharRes);
cout << l_intResult<< "\n";
return l_intResult;
int main()
int x = 35;
DecToHex(x);
return 0;
【讨论】:
虽然欢迎使用此代码 sn-p,并且可能会提供一些帮助,但它会是 greatly improved if it included an explanation of 如何解决这个问题。没有这个,你的回答就没有多少教育价值了——记住你是在为未来的读者回答这个问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。请不要鼓励using namespace std;
!
内存泄漏! l_pCharRes 永远不会被释放。以上是关于十进制到十六进制转换c++内置函数的主要内容,如果未能解决你的问题,请参考以下文章