整数値を、10進数字列に変換する関数。

たとえば、値 13 が 数字列 “13” に変換される。

文字(数字)と数値、われわれ人間には、それらの表現はともにシンボル(記号的意味)でしかないので、全く同じにみえる。しかし、コンピュータの世界では違う。

文字(数字)と数値が、コンピュータの内部では異なる表現になっているから。

コンピュータ内部での文字表現を、文字コードという。もっともよく使われている文字コードはアスキーコード。プログラマを目指すひとなら、真剣にアスキーコード表を見てほしい。

アスキーコードでは、たとえば、文字の 1 は、16進数値 31、つまり2進数値の 110001 で表現される。すなわち、コンピュータの内部では、文字の 1 は 10進数値の 49 と同じ。

こんなわけで、「文字、文字列、数字、数字列」 と 「値、数値、整数値」とは混同しないでほしい。

<関数名>
  int2sz —- 整数値を10進数字列へ変換する

<形式>
  void int2sz(char *str, int num);

<引数>
  str  (出力) 10進数ASCIZ文字列
  num (入力) 変換したい整数値(マイナスでもOK)

<関数値>
  なし

<注意事項>
  マイナスの整数値が、マイナス記号が先頭につく数字列に変換される。
  例: -100 → ”-100″

用例
  char str[15];
  int2sz(str, 12345);

<関数本体>
  int2sz.c

<説明>
 再帰法を使用。先行の数字については自分自身を呼出して対応し、最終桁だけを変換して処理する。
 なお、ASCIZ文字列とは、最後にヌル(Null) コードで終了する文字列のこと。

C言語の標準関数 sprintf() が使える環境であれば、本関数と同じことを
    sprintf(str, “%d”, num);
で書くのはふつうだね。ただ、マイコンへの組込み等、プログラムの容量を少しでも減らしたいならば本関数も有用かな。

Comments are closed.

Post Navigation