카메라 개발자 공부방(SW)

[16장] 아스키 코드(ASCII) 본문

Langauge/C

[16장] 아스키 코드(ASCII)

luckmart 2021. 10. 5. 16:54
반응형

오늘은 아스키코드에 대한 이야기를 해보겠습니다.

문자를 표시하기 위해서 프로그래밍 언어에선 특정 비트를 어떤 문자로 표현할지 미리 다 약속이 되어있답니다.

예를 들어

1100001는 'A' 문자 ~

그다음 1100002는 'B' 문자

그다음 1100003는 'C' 문자라고 

이미 다 약속이 되어 있는데 그것을 정리한 표가 ASCII 테이블입니다.

 

ASCII는 미국정보교환표준부호의 약자로 미국 표준 협회(ASA)가 주도한 x3 위원회가 개발하고,
표준화가 되어서 현재 까지 널리 사용 중에 있습니다.

출력가능한 아스키 코드(출처 위키피디아)

아스키코드는 위의 표와 같이 출력 가능한 문자와 아래와 같이 그렇지 못한 문자들의 집합으로 구성됩니다.

 

제어 문자 아스키 코드(출처 위키피디아)

이번에는 코드를 보겠습니다.

#include <stdio.h>

int main()
{
    char val = 'A';
    printf("%c %x %d\n", val, val, val); 
    return 0;
}

// 실행결과
// A 41 65

1000001(hex=41)은 A라는 문자에 매핑이 되어 있기 때문에

%c 서식 문자로 출력하면 A 문자가 출력되고, 정수로 표현하면 65가 출력이 됩니다~!

이런 아스키 테이블 표의 값을 활용해서 문자열 값을 처리를 할 수 있는데요

다음 예제에서 1) 특정 문자를 제외시키거나, 2) 대소문자로 문자를 변경시켜보겠습니다.

#include <stdio.h>

int main()
{
    char buf[8] = {"ab!def"};
    for (int k = 0; k < 8; k++) {
        if ('a' <= buf[k] && buf[k] <= 'z')
            buf[k] += 32;
        printf("%c", buf[k]);
    }
    return 0;
}

// 실행결과
// AB!DEF

소문자를 대문자로 출력하는 예제입니다.

#include <stdio.h>

int main()
{
    char buf[8] = {"ab!def"};
    for (int k = 0; k < 8; k++) {
        if ('a' <= buf[k] && buf[k] <= 'z')
            printf("%c", buf[k]);
    }
    return 0;
}
// 실행결과
// ABDEF

특정 문자를 제외한 예제입니다.

 

'Langauge > C' 카테고리의 다른 글

[18장] 구조체  (0) 2021.10.07
[17장] 동적메모리와 저장소  (0) 2021.10.06
[15장] 문자열 라이브러리(string.h)  (0) 2021.10.04
[14장] 배열과 문자열  (0) 2021.10.03
[13장] 포인터의 포인터(pointer of pointer)  (0) 2021.10.02
Comments