3

我的问题是我将如何转换如下内容:

    int i = 0x11111111;

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

4

4 回答 4

5

itoa是非标准的。远离。

一种可能性是使用sprintf正确的十六进制格式说明符,即x

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

但是,这种计算value数组大小的问题。您必须进行一些猜测,FAQ 12.21是一个很好的起点。

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

⌈log b (n + 1) ⌉

0x如果需要,再添加几个来按住,然后你BIG_ENOUGH就准备好了。

于 2012-05-26T22:32:55.157 回答
1
char buffer[20];

然后:

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

或者:

itoa(i, buffer, 16);

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

char *p = buffer;
于 2012-05-26T22:29:22.140 回答
0

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

于 2012-05-26T22:53:04.350 回答
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();
}
于 2012-05-28T14:03:53.233 回答