C编程:将Hex Int转换为Char *

时间:2012-05-26 22:27:25

标签: c char int

我的问题是如何转换类似的内容:

    int i = 0x11111111;

到字符指针?我尝试使用itoa()函数,但它给了我一个浮点异常。

4 个答案:

答案 0 :(得分:4)

itoa是非标准的。远离。

一种可能性是使用sprintf和正确的hexa格式说明符,即x并执行:

char str[ BIG_ENOUGH + 1 ];
sprintf(str,"%x",value);

然而,这个计算value数组大小的问题。你需要做一些猜测,FAQ 12.21是一个很好的起点。

表示任何基数b中的数字所需的字符数可以通过以下公式近似:

  

⌈log b (n + 1)⌉

如果需要,再添加几个来保留0x,然后BIG_ENOUGH就绪了。

答案 1 :(得分:0)

char buffer[20];

然后:

sprintf(buffer, "%x", i);

或者:

itoa(i, buffer, 16);

缓冲区的字符指针可以是buffer本身(但它是const)或其他变量:

char *p = buffer;

答案 2 :(得分:0)

使用像这样的sprintf()函数 - sprintf(charBuffer, "%x", i); - 我认为会很好用。

答案 3 :(得分:0)

使用sprintf()函数将整数转换为十六进制应该可以完成您的任务。

以下是一个例子:

int i = 0x11111111;

char szHexPrintBuf[10];

int ret_code = 0;

ret_code = sprintf(szHexPrintBuf, "%x", i);

if(0 > ret_code)
{ 
   something-bad-happend();
}