[英]C Programming: Convert Hex Int to Char*
我的問題是我將如何轉換如下內容:
int i = 0x11111111;
一個字符指針? 我嘗試使用itoa()函數,但它給了我一個浮點異常。
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()函數 - 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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.