코딩/기타 정보글

아스키코드(ASCII Code) 정리, 활용

lee1201zxc 2024. 2. 11. 19:49
300x250

 

728x90

아스키코드 정리

 

 

오늘은 아스키 코드에 대하여 알아보겠습니다.

아스키코드는 미국 국제 표준 협회(ANSI)에서 1963년 표준화한 정보교환 부호체계입니다.

 

 

ANSI 로고

 

 

아스키코드는 7비트로 128(2^7) 개의 부호가 지정되어 있습니다.

1바이트는 8비트인데 7비트만 쓰이는 이유는

나머지 1비트는 패리티 비트라고 오류 검출에 쓰이기 때문입니다.

 

 

아래는 아스키코드 표입니다.

아스키코드 표

 

대문자 A는 65

소문자 a는 97입니다.

이 둘은 기억해 둡시다.

 

아스키코드를 활용하면 문자와 숫자 변환이 가능해집니다.

숫자를 이용해 문자 출력이 가능해지며

문자를 이용해 숫자 출력이 가능해집니다.

 

아래 예시를 보겠습니다.

 

#include<iostream>
using namespace std;
int main()
{
    cout<<(char)65; // A 출력
}

숫자 65를 char형으로 출력하고 있습니다.

이렇게 되면 65에 대응하는 아스키코드가 출력이 됩니다.

출력 값

 

반대로도 해보겠습니다.

#include<iostream>
using namespace std;
int main()
{
    cout<<(int)'A'; // 65 출력
}

이 경우에는 문자 'A'를 int형으로 출력하니 A에 대응하는 65가 출력이 됩니다.

 

 

 

 

활용

 

 

아스키코드는 문자를 활용한 문제에 활용됩니다.

#include<iostream>
using namespace std;
int main()
{
    int a[26]={0,};
    string s="abbcccdz";
    for(int i=0; i<(int)s.size(); i++)
    {
        a[s[i]-'a']++;
    }
    for(int i=0; i<26; i++)
    {
        cout<<a[i]<<' ';
    }
}

 

이 코드는 문자열 s에 어떤 문자가 몇 번 쓰였는지 알려주는 코드입니다.

여기서 9번 줄이 핵심인데

일단 배열 a의 0번째 인덱스는 a의 개수, 1번째는 b의 개수, 25번째는 z의 개수를 의미합니다.

s[i]-'a'에서 'a'는 65를 의미합니다. 그래서 만약 s[i]값이 'a'(65)라면 s[i]-'a'값은 0이 되어

s[0]++가 됩니다. 즉 a의 개수가 늘어납니다. 이를 이용하여 각 소문자가 얼마나 쓰였는지

체크할 수 있습니다.

 

소문자의 개수(왼쪽 부터 a~z의 개수를 의미함

 

위에서는 소문자만 있는 경우였는데

만약 대문자와 소문자가 섞여있다면?

조건을 추가해 주면 됩니다.

문자가 소문자 범위(97~122)에 있다면 -'a'를 해주고

대문자 범위(65~90)에 있다면 -'A'를 해줘서 배열에 넣어 줄 수 있습니다.

 

 

아스키코드를 이용한 백준 문제를 알려드리겠습니다.

백준 2744 : 대소문자 바꾸기(브론즈 5)

 

 

이상 아스키코드에 대하여 알아보았습니다.

아스키 코드!

728x90