본문 바로가기
C 언어

C언어 char 타입과 ASCII 코드 완벽 이해 - 전체 아스키 코드 표, 대소문자 변환

by Best Coding 2024. 12. 21.
반응형

아스키 코드

 

 C언어에서 char 타입은 문자를 다룰 때 기본적으로 사용됩니다. 하지만 이 타입의 진정한 매력은 문자와 숫자(ASCII 코드)를 모두 다룰 수 있다는 점에 있습니다. 이번 포스팅에서는 char 타입의 개념과 ASCII 코드에 대해 심층적으로 알아보겠습니다. 


 

1. char 타입의 기본 개념

char는 1바이트(8비트) 크기의 데이터 타입으로, 주로 문자(character)를 표현하는 데 사용됩니다. 하지만 내부적으로는 정수형 데이터로 저장되며, 문자에 매핑된 숫자 값(즉, ASCII 코드)으로 동작합니다.

char의 주요 특징

  • 메모리 크기: 1바이트 (8비트)
  • 값의 범위:
    • signed char: -128 ~ 127
    • unsigned char: 0 ~ 255
  • 용도: 문자 저장 및 처리, 정수형 연산 가능

 

2. ASCII 코드란?

ASCII(American Standard Code for Information Interchange)는 문자와 숫자를 매핑한 표준 코드입니다. 예를 들어, 대문자 A는 숫자 65에, 소문자 a는 숫자 97에 매핑됩니다.

ASCII 코드의 구조

  • 0 ~ 31: 제어 문자 (줄바꿈, 탭 등)
  • 32 ~ 47: 공백과 특수 문자 ( , !, @ 등)
  • 48 ~ 57: 숫자 0 ~ 9
  • 65 ~ 90: 대문자 알파벳 A ~ Z
  • 97 ~ 122: 소문자 알파벳 a ~ z
  • 127: 삭제(DEL) 문자

 

반응형

3. ASCII 코드 전체 테이블

아래는 아스키 코드 표입니다.  코딩테스트 등에서 많이 쓰는 코드는 강조표시 했습니다. 

10진수 16진수 char형 설명
0 00 NUL 널 문자
1 01 SOH 시작 헤더
2 02 STX 시작 텍스트
3 03 ETX 텍스트 끝
4 04 EOT 전송 종료
5 05 ENQ 문의
6 06 ACK 확인 응답
7 07 BEL 벨(비프음)
8 08 BS 백스페이스
9 09 TAB 수평 탭
10 0A LF 줄 바꿈
11 0B VT 수직 탭
12 0C FF 폼 피드
13 0D CR 캐리지 리턴
14 0E SO 출력 전환
15 0F SI 입력 전환
16 10 DLE 데이터 링크 탈출
17 11 DC1 장치 제어 1 (XON)
18 12 DC2 장치 제어 2
19 13 DC3 장치 제어 3 (XOFF)
20 14 DC4 장치 제어 4
21 15 NAK 부정 확인 응답
22 16 SYN 동기식 대기
23 17 ETB 블록 끝
24 18 CAN 취소
25 19 EM 미디어 끝
26 1A SUB 대체 문자
27 1B ESC 이스케이프
28 1C FS 파일 구분자
29 1D GS 그룹 구분자
30 1E RS 레코드 구분자
31 1F US 유닛 구분자
32 20 SPACE 공백
33 21 ! 느낌표
34 22 " 따옴표
35 23 #
36 24 $ 달러 기호
37 25 % 퍼센트 기호
38 26 & 앤퍼샌드
39 27 ' 홑따옴표
40 28 ( 왼쪽 괄호
41 29 ) 오른쪽 괄호
42 2A * 별표
43 2B + 더하기 기호
44 2C , 쉼표
45 2D - 하이픈
46 2E . 마침표
47 2F / 슬래시
48 30 0 숫자 0
49 31 1 숫자 1
50 32 2 숫자 2
51 33 3 숫자 3
52 34 4 숫자 4
53 35 5 숫자 5
54 36 6 숫자 6
55 37 7 숫자 7
56 38 8 숫자 8
57 39 9 숫자 9
58 3A : 콜론
59 3B ; 세미콜론
60 3C < 작음 기호
61 3D = 등호
62 3E > 큼 기호
63 3F ? 물음표
64 40 @ 골뱅이 기호
65 41 A 대문자 A
66 42 B 대문자 B
67 43 C 대문자 C
68 44 D 대문자 D
69 45 E 대문자 E
70 46 F 대문자 F
71 47 G 대문자 G
72 48 H 대문자 H
73 49 I 대문자 I
74 4A J 대문자 J
75 4B K 대문자 K
76 4C L 대문자 L
77 4D M 대문자 M
78 4E N 대문자 N
79 4F O 대문자 O
80 50 P 대문자 P
81 51 Q 대문자 Q
82 52 R 대문자 R
83 53 S 대문자 S
84 54 T 대문자 T
85 55 U 대문자 U
86 56 V 대문자 V
87 57 W 대문자 W
88 58 X 대문자 X
89 59 Y 대문자 Y
90 5A Z 대문자 Z
91 5B [ 왼쪽 대괄호
92 5C \ 백슬래시
93 5D ] 오른쪽 대괄호
94 5E ^ 캐럿
95 5F _ 밑줄
96 60 ` 그레이브 액센트
97 61 a 소문자 a
98 62 b 소문자 b
99 63 c 소문자 c
100 64 d 소문자 d
101 65 e 소문자 e
102 66 f 소문자 f
103 67 g 소문자 g
104 68 h 소문자 h
105 69 i 소문자 i
106 6A j 소문자 j
107 6B k 소문자 k
108 6C l 소문자 l
109 6D m 소문자 m
110 6E n 소문자 n
111 6F o 소문자 o
112 70 p 소문자 p
113 71 q 소문자 q
114 72 r 소문자 r
115 73 s 소문자 s
116 74 t 소문자 t
117 75 u 소문자 u
118 76 v 소문자 v
119 77 w 소문자 w
120 78 x 소문자 x
121 79 y 소문자 y
122 7A z 소문자 z
123 7B { 왼쪽 중괄호
124 7C | 수직 바
125 7D } 오른쪽 중괄호
126 7E ~ 틸드
127 7F DEL 삭제

 

4. ASCII 코드와 char의 관계

C언어에서 char는 ASCII 코드와 밀접한 관계를 가집니다. 문자 리터럴은 내부적으로 정수형 ASCII 값으로 변환됩니다.

 

예제: 문자와 ASCII 값 간 변환

 
#include <stdio.h>

int main() {
    char c = 'A'; // 문자 'A'
    printf("문자: %c, ASCII 값: %d\n", c, c);

    int ascii = 66; // ASCII 값 66
    printf("ASCII 값: %d, 문자: %c\n", ascii, ascii);

    return 0;
}

 

출력결과

문자: A, ASCII 값: 65
ASCII 값: 66, 문자: B

 

5. char 타입의 활용

char 타입은 단순히 문자를 저장하는 데 그치지 않고, 다양한 작업에서 유용하게 활용됩니다.

 

5.1 문자 배열과 문자열

C언어에서 문자열은 char 타입의 배열로 표현됩니다. 각 문자에 해당하는 ASCII 코드가 배열에 저장됩니다.

#include <stdio.h>

int main() {
    char str[] = "Hello";
    for (int i = 0; str[i] != '\0'; i++) {
        printf("문자: %c, ASCII 값: %d\n", str[i], str[i]);
    }
    return 0;
}

 

출력 결과
문자: H, ASCII 값: 72
문자: e, ASCII 값: 101
문자: l, ASCII 값: 108
문자: l, ASCII 값: 108
문자: o, ASCII 값: 111
 
 
 

5.2 대소문자 변환

대문자를 소문자로, 또는 소문자를 대문자로 변환할 때 ASCII 값을 활용할 수 있습니다.

#include <stdio.h>

int main() {
    char upper = 'A'; // 대문자
    char lower = upper + 32; // 소문자로 변환
    printf("대문자: %c, 소문자: %c\n", upper, lower);

    lower = 'z'; // 소문자
    upper = lower - 32; // 대문자로 변환
    printf("소문자: %c, 대문자: %c\n", lower, upper);

    return 0;
}

 

 

출력결과

대문자: A, 소문자: a
소문자: z, 대문자: Z

 

반응형

댓글