3

私の質問は、次のようなものを変換する方法です。

    int i = 0x11111111;

文字ポインタに?itoa()関数を使用してみましたが、浮動小数点例外が発生しました。

4

4 に答える 4

5

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準備が整います。

于 2012-05-26T22:32:55.157 に答える
1
char buffer[20];

それで:

sprintf(buffer, "%x", i);

または:

itoa(i, buffer, 16);

バッファへの文字ポインタは、bufferそれ自体(ただし、const)または他の変数にすることができます。

char *p = buffer;
于 2012-05-26T22:29:22.140 に答える
0

このように sprintf() 関数を使用すると -- sprintf(charBuffer, "%x", i); -- とてもうまくいくと思います。

于 2012-05-26T22:53:04.350 に答える
0

関数を使用し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();
}
于 2012-05-28T14:03:53.233 に答える