Преобразовать int в символ ASCII - PullRequest
57 голосов
/ 07 января 2011

У меня есть

int i = 6;

, и я хочу

char c = '6'

путем преобразования.Любой простой способ предложить?

РЕДАКТИРОВАТЬ: также мне нужно сгенерировать случайное число и преобразовать в символ, затем добавить «.txt» и получить доступ к нему в ifstream.

Ответы [ 10 ]

261 голосов
/ 07 января 2011

Простой способ:

char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char aChar = digits[i];

Безопасный путь:

char aChar = '0' + i;

Общий способ:

itoa(i, ...)

Удобный способ:

sprintf(myString, "%d", i)

C ++ путь: (взято из ответа Dave18)

std::ostringstream oss;
oss << 6;

Путь босса:

Джо, напиши мне конвертер целых чисел в

Путь студента:

char aChar = '6';

Путь Джо:

char aChar = '6';// int i = 6;

Способ Насы:

// Ожидание ответа со спутника ...

Путь пришельца: '9'

// Приветствия.

Божий путь:

Брух, я построил это

Путь Питера Пэна:

char aChar;

switch (i)
{
  case 0:
    aChar = '0';
    break;
  case 1:
    aChar = '1';
    break;
  case 2:
    aChar = '2';
    break;
  case 3:
    aChar = '3';
    break;
  case 4:
    aChar = '4';
    break;
  case 5:
    aChar = '5';
    break;
  case 6:
    aChar = '6';
    break;
  case 7:
    aChar = '7';
    break;
  case 8:
    aChar = '8';
    break;
  case 9:
    aChar = '9';
    break;
  default:
    aChar = '?';
    break;
}

Путь Санта-Клауса:

//Wait till Christmas!
sleep(457347347);

Гравитационный путь:

// Что

'6' (Джерси) Mikes '™ way:

//

ТАК:

Ребята, как мне избежать чтения руководства для начинающихна C ++?

Мой путь:

или шоссе.

Комментарий: я добавил Handyпуть и путь C ++ (чтобы иметь полную коллекцию), и я сохраняю это как вики.

Редактировать: доволен?

24 голосов
/ 07 января 2011

Это будет работать только для int-цифр 0-9, но ваш вопрос, кажется, предполагает, что этого может быть достаточно.

Работает путем добавления значения ASCII char '0' к целой цифре.

int i=6;
char c = '0'+i;  // now c is '6'

Например:

'0'+0 = '0'
'0'+1 = '1'
'0'+2 = '2'
'0'+3 = '3'

Редактировать

Непонятно, что вы имеете в виду, «работать на алфавиты»? Если вы хотите 5-ю букву алфавита:

int i=5;
char c = 'A'-1 + i; // c is now 'E', the 5th letter.

Обратите внимание, что, поскольку в C / Ascii A считается 0-й буквой алфавита, я делаю минус 1, чтобы компенсировать обычно понимаемое значение 5-й буквы.

Отрегулируйте в зависимости от конкретной ситуации.
test-test-test! любой код, который вы пишете)

10 голосов
/ 07 января 2011

Просто к вашему сведению, если вам нужно больше, чем однозначные числа, вы можете использовать sprintf:

char txt[16];
int myNum = 20;
sprintf(txt, "%d", myNum);

Тогда первая цифра будет в символе в txt [0] и т. Д.1005 * (Это подход на языке C, а не подход на языке C ++. Способ на языке C ++ заключается в использовании потоков строк.)

4 голосов
/ 18 августа 2016

Мой способ сделать эту работу:

    char to int
    char var;
    cout<<(int)var-48;

    int to char
    int var;
    cout<<(char)(var|48);

И я пишу эти функции для преобразований

int char2int(char *szBroj){
    int counter=0;
    int results=0;
    while(1){
        if(szBroj[counter]=='\0'){
            break;
        }else{
            results*=10;
            results+=(int)szBroj[counter]-48;
            counter++;
        }
    }
    return results;

}

char * int2char(int iNumber){
    int iNumbersCount=0;
    int iTmpNum=iNumber;
    while(iTmpNum){
        iTmpNum/=10;
        iNumbersCount++;
    }
    char *buffer=new char[iNumbersCount+1];
    for(int i=iNumbersCount-1;i>=0;i--){
        buffer[i]=(char)((iNumber%10)|48);
        iNumber/=10;
    }
    buffer[iNumbersCount]='\0';
    return buffer;

}
2 голосов
/ 09 апреля 2013

Вот как я преобразовал число в код ASCII. 0, хотя 9 в шестнадцатеричном коде 0x30-0x39. 6 будет 0x36.

unsigned int temp = 6;
or you can use unsigned char temp = 6;
unsigned char num;
 num = 0x30| temp;

это даст вам значение ASCII для 6. Вы делаете то же самое для 0 - 9

для преобразования ASCII в числовое значение Я придумал этот код.

unsigned char num,code;
code = 0x39; // ASCII Code for 9 in Hex
num = 0&0F & code;
2 голосов
/ 07 января 2011
0 голосов
/ 01 апреля 2017

Полагаю, что

std::to_string(i)

может справиться с работой, это перегруженная функция, я могу быть любого числового типа

0 голосов
/ 31 октября 2012
          A PROGRAM TO CONVERT INT INTO ASCII.




          #include<stdio.h>
          #include<string.h>
          #include<conio.h>

           char data[1000]= {' '};           /*thing in the bracket is optional*/
           char data1[1000]={' '};
           int val, a;
           char varray [9];

           void binary (int digit)
          {
              if(digit==0)
               val=48;
              if(digit==1)
               val=49;
              if(digit==2)
               val=50;
              if(digit==3)
               val=51;
              if(digit==4)
               val=52;
              if(digit==5)
               val=53;
              if(digit==6)
               val=54;
              if(digit==7)
               val=55;
              if(digit==8)
               val=56;
              if(digit==9)
                val=57;
                a=0;

           while(val!=0)
           {
              if(val%2==0)
               {
                varray[a]= '0';
               }

               else
               varray[a]='1';
               val=val/2;
               a++;
           }


           while(a!=7)
          {
            varray[a]='0';
            a++;
           }


          varray [8] = NULL;
          strrev (varray);
          strcpy (data1,varray);
          strcat (data1,data);
          strcpy (data,data1);

         }


          void main()
         {
           int num;
           clrscr();
           printf("enter number\n");
           scanf("%d",&num);
           if(num==0)
           binary(0);
           else
           while(num>0)
           {
           binary(num%10);
           num=num/10;
           }
           puts(data);
           getch();

           }

Я проверяю свое кодирование и работает ли оно хорошо. Позвольте мне знать, полезно ли оно. Спасибо.

0 голосов
/ 08 января 2011

"У меня есть int i = 6; и я хочу преобразовать char c = '6'. Любой простой способ предложить?"

Всего 10 номеров. Поэтому напишите функцию, которая принимает int от 0 до 9 и возвращает код ascii. Просто посмотрите в таблицу ascii и напишите функцию с помощью ifs или select.

0 голосов
/ 07 января 2011

Альтернативный способ, но нестандартный.

int i = 6;
char c[2];
char *str = NULL;
if (_itoa_s(i, c, 2, 10) == 0)
   str = c;

Или используя стандартный строковый поток c ++

 std::ostringstream oss;
 oss << 6;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...