web-dev-qa-db-ja.com

Cで整数を文字に変換する方法は?

たとえば、整数が97の場合、文字は「a」、または98から「b」になります。

3
Derpster13

Cでは、intcharlongなどはすべてintegersです。

それらは通常、メモリサイズが異なるため、_INT_MIN_から_INT_MAX_のように範囲が異なります。 charcharの配列は、文字と文字列を格納するためによく使用されます。整数は多くのタイプで保存されます:intは、速度、サイズ、および範囲のバランスで最も人気があります。

ASCIIは、最も人気のある文字エンコーディングですが、他にも存在します。 ASCII 'A'のコードは65、 'a'は97、 '\ n'は10などです。ASCIIデータは最も頻繁に保存されますchar変数内。C環境でASCIIエンコーディングを使用している場合、以下のすべてが同じ値を整数変数に格納します。

_int i1 = 'a';
int i2 = 97;
char c1 = 'a';
char c2 = 97;
_

intcharに変換するには、単純な代入:

_int i3 = 'b';
int i4 = i3;
char c3;
char c4;
c3 = i3;
// To avoid a potential compiler warning, use a cast `char`.
c4 = (char) i4; 
_

intの範囲は通常charよりも広いため、この警告が表示され、情報が失われる可能性があります。キャスト_(char)_を使用すると、情報の潜在的な損失が明示的に指示されます。

整数の値を出力するには:

_printf("<%c>\n", c3); // prints <b>

// Printing a `char` as an integer is less common but do-able
printf("<%d>\n", c3); // prints <98>

// Printing an `int` as a character is less common but do-able.
// The value is converted to an `unsigned char` and then printed.
printf("<%c>\n", i3); // prints <b>

printf("<%d>\n", i3); // prints <98>
_

_%hhu_を印刷するときの_unsigned char_の使用やキャストなどの印刷に関する追加の問題がありますが、後で使用します。 printf()にはたくさんあります。

11
chux
char c1 = (char)97;  //c1 = 'a'

int i = 98;
char c2 = (char)i;  //c2 = 'b'
1
nhgrif

整数をcharにキャストすると、必要な処理が実行されます。

char theChar=' ';
int theInt = 97;
theChar=(char) theInt;

cout<<theChar<<endl;

'a'と97の違いは、それらを相互に操作する方法以外にはありません。

1
DanChianucci

プログラムはASCIIをアルファベットに変換します

#include<stdio.h>

void main ()
{

  int num;
  printf ("=====This Program Converts ASCII to Alphabet!=====\n");
  printf ("Enter ASCII: ");
  scanf ("%d", &num);
  printf("%d is ASCII value of '%c'", num, (char)num );
}

プログラムはアルファベットをASCIIコードに変換します

#include<stdio.h>

void main ()
{

  char alphabet;
  printf ("=====This Program Converts Alphabet to ASCII code!=====\n");
  printf ("Enter Alphabet: ");
  scanf ("%c", &alphabet);
  printf("ASCII value of '%c' is %d", alphabet, (char)alphabet );
}
0
Amol Damodar
void main ()
 {
    int temp,integer,count=0,i,cnd=0;
    char ascii[10]={0};
    printf("enter a number");
    scanf("%d",&integer);
     if(integer>>31)
     {
     /*CONVERTING 2's complement value to normal value*/    
     integer=~integer+1;    
     for(temp=integer;temp!=0;temp/=10,count++);    
     ascii[0]=0x2D;
     count++;
     cnd=1;
     }
     else
     for(temp=integer;temp!=0;temp/=10,count++);    
     for(i=count-1,temp=integer;i>=cnd;i--)
     {

        ascii[i]=(temp%10)+0x30;
        temp/=10;
     }
    printf("\n count =%d ascii=%s ",count,ascii);

 }
0
kannadasan