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

我的问题是如何转换像:

int i = 0x11111111; 

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

itoa是非标准的。 远离。

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

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

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

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

⌈日志b (n + 1)⌉

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

 char buffer[20]; 

然后:

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

要么:

 itoa(i, buffer, 16); 

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

 char *p = buffer; 

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

这是一个例子:

 int i = 0x11111111; char szHexPrintBuf[10]; int ret_code = 0; ret_code = sprintf(szHexPrintBuf, "%x", i); if(0 > ret_code) { something-bad-happend(); } 

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