int型をchar型に変換する方法【数字化 数値の文字列化】

int型の整数値やfloat型の実数値を文字列や文字型の数字に変換する方法を紹介します。

目次

数値から数字に変換する

int型の数値をchar型の数字に変換する方法です。

数値を文字型の数字に変換する場合には次のように、'0' + 数値という式を用います。

int i = 8;
char c = '0' + i;
printf("%c", c); // '8'
変換可能な数字は09までの数値に限られます。

解説

原理は単純です。

文字'0''1'の内部表現はそれぞれ4849という連番の整数値となっています。

int a = (int)'0'; // a == 48
int b = (int)'1'; // b == 49

ということは、文字'0'に数値1を足せば、演算結果は49となり、結果として文字'1'の数値と同じ値が導き出されることになります。

int a = (int)'0'; // a == 48
int b = (int)'1'; // b == 49
int A = a + 1;    // A == 49
char c = A;       // c == '1'

文字'2'の場合も同じです。文字'0'(数値: 48)の連番として数えると、文字'2'の内部値は50となるはずです。

文字定数数値による表現
'0'48
'1'49
'2'50
'3'51
'4'52
'5'53
'6'54
'7'55
'8'56
'9'57

これらを踏まえて先程の'0' + 8例を説明しましょう。今回の例では、文字'0'に数値8を足していますから、演算結果はchar型の内部表現で56ということになります。そしてこの56という整数値は文字'8'の数値に相当します。

こうして'0' + 8は文字'8'に変換されるのです。

この原理を応用すれば、逆に「数字を数値に変換する('9'9)」ようなことも可能となります。少し考えてみてください。正解は以下のページが参考になります。

char型をint型に変換する方法

int型からchar型へのキャストについて

キャスト演算子による変換は、内部表現の複製のみが行われる点に注意して利用してください。

int i = 9;
char c = (char)i;
printf("%c", c); // '\t' ('9'に変換されるわけではない)

整数値9を文字型にキャストした場合、文字型の内部表現0x09に変換されます。

ASCIIコード表上では、0x09は水平タブ(\t)に相当します。そのため上記の例では数値9は数字'9'ではなくタブ文字'\t'に変換されてしまいます。

数値を数字に変換する方法については、本ページの「# 数値から数字に変換する」を参考にしてください。

数値から文字列に変換する

整数値や実数値を文字列に変換する方法については、以下のページを参考にしてください。

【C言語】数値を文字列に変換する方法【int/float → char*/char[]】

広告