C编程:将十六进制Int转换为Char *

Bhu*_*bus 3 c int char

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

    int i = 0x11111111;
Run Code Online (Sandbox Code Playgroud)

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

dir*_*tly 5

itoa是非标准的。远离。

一种可能性是使用sprintfhexa即适当的格式说明符x并执行:

char str[ BIG_ENOUGH + 1 ];
sprintf(str,"%x",value);
Run Code Online (Sandbox Code Playgroud)

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

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

⌈log b(N + 1)⌉

0x如果需要的话,再添加几个以容纳,然后BIG_ENOUGH就可以了。