Cで「\ 003」をintに変換するには? 次のコードがあります。
void* message="\003";
char* bptr;
printf("%ld",strtol((char*)message,&bptr,10));
出力として 0 を表示しています。
文字列リテラル"\003"
は、2 文字からなる文字列を指定します。最初の値は 3 で、2 番目は暗黙の'\0'
ヌル文字ターミネータです。
通常、値が 3 の文字は印刷可能な文字ではありません。特に、それは数字ではありません'3'
。
int
その文字列から値を抽出する場合3
は、次のようにします。
int result = ((char*)message)[0];
しかし、それは特に役立つことではないようです。
(1) なぜmessage
asvoid*
ではなく asを宣言したのかchar*
、(2) なぜ制御文字を含む文字列を使用し'\003'
て整数値を表しているのか疑問に思う必要があります3
。
整数値を文字列として表す通常の方法は、整数3
を"3"
ではなく として表し'\003'
ます。確かに (小さな) 整数値を 1 バイトとして表すことはできますが、それは通常、文字列や配列ではなく、 1 つのchar
またはオブジェクトを使用します。unsigned char
最後に、任意の数値を一連のバイトとして表現する方法がありますが、それを行う場合、表現の詳細を私たちに伝えていません。たとえば、整数値を表す文字列は何1000
ですか?