programing

int를 ASCII 문자로 변환합니다.

coolbiz 2022. 7. 4. 23:18
반응형

int를 ASCII 문자로 변환합니다.

있습니다

int i = 6;

그리고 나는 원한다

char c = '6'

환산해서제안할 수 있는 간단한 방법이 있나요?

EDIT: 또한 난수를 생성하고 문자로 변환한 다음 .txt를 추가하여 ifstream에서 액세스해야 합니다.

간단한 방법:

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;

Nasa의 방법:

//위성으로부터의 회신을 기다리는 중...

Alien's way: '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' (Jersey) Mikes'™ 방법:

//

방법:

여러분, 어떻게 하면 C++ 초보 가이드를 안 읽을 수 있을까요?

마이웨이:

고속도로나.

코멘트:Handy way와 C++ way(완전 컬렉션)를 추가하여 Wiki로 저장합니다.

편집: 만족하십니까?

이것은 int-digits 0 ~9 에 대해서만 동작합니다만, 당신의 질문으로 충분하다고 생각됩니다.

char의 ASCII 값을 추가하여 동작합니다.'0'정수 자릿수로 변환합니다.

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

예를 들어 다음과 같습니다.

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

편집

'알파벳을 위해 일한다'는 게 무슨 뜻인지 잘 모르겠어요?알파벳의 다섯 번째 문자를 원하는 경우:

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

C/ASCII에서 A는 알파벳의 0번째 문자로 간주되기 때문에 일반적으로 이해되는 5번째 문자의 의미를 보완하기 위해 마이너스 1을 사용합니다.

특정 상황에 따라 적절히 조정하십시오.
(및 test-test-test! 코드 작성 시)

참고로 한 자리 이상의 숫자를 원하는 경우 sprintf를 사용할 수 있습니다.

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

그 후 첫 번째 숫자는 txt[0]의 문자입니다.

(이것은 C++ 어프로치가 아닌 C 어프로치입니다.C++ 방법은 스트링 스트림을 사용하는 것입니다).

그런 것 같아요

std::to_string(i)

오버로드된 함수이기 때문에 int, double, float 등 임의의 숫자 타입으로 작업을 수행할 수 있습니다.

이렇게 해서 숫자를 ASCII 코드로 변환했습니다.16진수 코드의 0~9는 0x30-0x39 입니다.6은 0x36이 됩니다.

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

6의 ASCII 값이 표시됩니다.0 - 9 에 대해서도 같은 처리를 합니다.

ASCII를 수치로 변환하기 위해 이 코드를 생각해 냈습니다.

unsigned char num,code;
code = 0x39; // ASCII Code for 9 in Hex
num = 0&0F & code;

이 일을 하는 방법은 다음과 같습니다.

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;
}

이토아()

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

          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();

           }

내 코딩이 정상인지 확인하고 도움이 되는지 알려주세요.고마워요.

"int i = 6이고 변환으로 char c = '6'을 원합니다.제안할 수 있는 간단한 방법이 있나요?"

숫자가 10개밖에 없어요.0에서 9까지의 int를 취하여 ASCII 코드를 반환하는 함수를 작성합니다.ASCII 표에서 찾아보고 if 또는 select case를 사용하여 함수를 작성합니다.

다른 방법이야 하지만 비표준이지

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;

대학 공부를 하면서 발견한 데이터를 수집하여 다음과 같은 결과를 얻었습니다.

입력은 공백으로 구분된 여러 정수로 이루어진 단일 행으로 구성됩니다.엔트리의 끝은 번호 -1로 식별되며, 이 번호는 처리되지 않습니다."

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    char numeros[100]; //vetor para armazenar a entrada dos numeros a serem convertidos
    int count = 0, soma = 0;

    cin.getline(numeros, 100);

    system("cls"); // limpa a tela

    for(int i = 0; i < 100; i++)
    {
        if (numeros[i] == '-') // condicao de existencia do for
            i = 100;
        else
        {
            if(numeros[i] == ' ') // condicao que ao encontrar um espaco manda o resultado dos dados lidos e zera a contagem
            {
                if(count == 2) // se contegem for 2 divide por 10 por nao ter casa da centena
                    soma = soma / 10;
                if(count == 1) // se contagem for 1 divide por 100 por nao ter casa da dezena
                    soma = soma / 100;


                cout << (char)soma; // saida das letras do codigo ascii
                count = 0;

            }
            else
            {
                count ++; // contagem aumenta para saber se o numero esta na centena/dezena ou unitaria
                if(count == 1)
                    soma =  ('0' - numeros[i]) * -100; // a ideia é que o resultado de '0' - 'x' = -x (um numero inteiro)
                if(count == 2)
                    soma = soma + ('0' - numeros[i]) * -10; // todos multiplicam por -1 para retornar um valor positivo
                if(count == 3)
                    soma = soma + ('0' - numeros[i]) * -1; /* caso pense em entrada de valores na casa do milhar, deve-se alterar esses 3 if´s
        alem de adicionar mais um para a casa do milhar. */
            }
        }
    }

    return 0;
}

댓글은 포르투갈어로 되어있지만 이해해주셔야 할 것 같아요.질문이 있으시면 linkedin으로 메시지를 보내 주세요.https://www.linkedin.com/in/marcosfreitasds/

언급URL : https://stackoverflow.com/questions/4629050/convert-an-int-to-ascii-character

반응형