簡體   English   中英

C編程:將Hex Int轉換為Char *

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM