我的问题是我将如何转换如下内容:
int i = 0x11111111;
到字符指针?我尝试使用 itoa() 函数,但它给了我一个浮点异常。
itoa
是非标准的。远离。
一种可能性是使用sprintf
正确的十六进制格式说明符,即x
:
char str[ BIG_ENOUGH + 1 ];
sprintf(str,"%x",value);
但是,这种计算value
数组大小的问题。您必须进行一些猜测,FAQ 12.21是一个很好的起点。
表示任何基数所需的字符数b
可以通过以下公式近似:
⌈log b (n + 1) ⌉
0x
如果需要,再添加几个来按住,然后你BIG_ENOUGH
就准备好了。
char buffer[20];
然后:
sprintf(buffer, "%x", i);
或者:
itoa(i, buffer, 16);
指向缓冲区的字符指针可以是buffer
它本身(但它是 const)或其他变量:
char *p = buffer;
像这样使用 sprintf() 函数sprintf(charBuffer, "%x", i);
——我认为会很好用。
使用该sprintf()
函数将整数转换为十六进制应该可以完成您的任务。
这是一个例子:
int i = 0x11111111;
char szHexPrintBuf[10];
int ret_code = 0;
ret_code = sprintf(szHexPrintBuf, "%x", i);
if(0 > ret_code)
{
something-bad-happend();
}