私の質問は、次のようなものを変換する方法です。
int i = 0x11111111;
文字ポインタに?itoa()関数を使用してみましたが、浮動小数点例外が発生しました。
itoa
非標準です。離れてください。
1 つの可能性はsprintf
、hex ie の適切なフォーマット指定子を使用して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()
て整数を 16 進数に変換すると、タスクが完了するはずです。
次に例を示します。
int i = 0x11111111;
char szHexPrintBuf[10];
int ret_code = 0;
ret_code = sprintf(szHexPrintBuf, "%x", i);
if(0 > ret_code)
{
something-bad-happend();
}