일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 윈도우 프로그래밍
- MFC
- OpenGL
- 윈도우 구조
- 셰이더프로그래밍
- 컴퓨터 아키텍쳐
- 컴퓨터 구조
- Graphics
- 오픈지엘
- window programming
- MFC 윈도우 프로그래밍
- 그래픽스기초
- 윈도우
- 셰이더
- 그래픽스
- shader programming
- Geometry Modeling
- modeling
- 윈도우프로그래밍
- shader
- 운영체제
- Mesh Processing
- 베지에 곡선
- c4d
- bezier curve
- 렌더링
- denoising
- 핵심 API로 배우는 윈도우프로그래밍
- Win32 API
- win32
- Today
- Total
오다기리 박의 알고리즘 노트
2장. 아스키코드 vs 유니코드 본문
2장. 아스키코드 vs 유니코드
1. Windows에서의 유니코드
아스키 코드 : 초창기에는 다양한 방법으로 문자를 표현했는데, 호환 등 여러 문제가 발생했다. 이런 문제를 해결하기 위해 ANSI에서 ASCII(American Standard Code for Information Interchange)라는 표준 코드 체계를 제시했고, 현재 이 코드가 일반적으로 사용되고 있다.
유니코드 : 각 나라별 언어를 모두 표현하기 위해 나온 코드 체계이다. 유니코드는 사용중인 운영체제, 프로그램, 언어에 관계없이 문자마다 고유한 코드 값을 제공하는 새로운 개념의 코드다. 언어와 상관없이 모든 문자를 16비트로 표현하므로 최대 65,536자를 표현할 수 있다.
아스키코드 | 유니코드 | 멀티바이트 |
미국 표준 | 전세계 표준 | |
256개 문자를 1바이트로 표현 | 모든 문자를 2바이트로 표현 | 아스키코드에서 정의하지 않은 문자만 2바이트로 표현. |
SBCS (Single Byte Character Set) | WBCS (Wide Byte Character Set) | MBCS (Multi Byte Character Set) |
ANSI 인코딩 | UTF-8 인코딩 | |
_T() 매크로 사용 : 와이드문자열로 처리 char 앞에 L : wchar로 | _T() 매크로 사용 |
문자셋(Character Sets)의 종류와 특성
SBCS
문자를 표현하는 데 있어서 1바이트만을 사용하는 방식
“SBCS 기반의 문자열”, “아스키코드 기반의 문자열”
WBCS
모든 문자를 2바이트로 처리하는 문자셋
“WBCS 기반 문자열”, “유니코드 기반 문자열”
MBCS
다양한 바이트 수를 사용해서 문자를 표현하는 방식
SBCS < MBCS
유니코드에 비해 효율적
MBCS 기반의 문자열
WBCS 기반의 프로그래밍
char 대신 wchar_t 자료형
“ABC” 대신 L”ABC”
L : 이어서 등장하는 문자열을 유니코드 기반으로 표현하라
문자열 조작 함수
SBCS, MBCS 기반 함수 | WBCS(유니코드 기반) 문자열 조작 함수 |
strlen | size_t wcslen (const wchar_t* string); |
strcpy | wchar_t* wcscpy (wchar_t* dest, const wchar_t* src); |
strncpy | wchar_t* wcsncpy (wchar_t* dest, const wchar_t* src, size_t cnt); |
strcat | wchar_t* wcscat (wchar_t* dest, const wchar_t* src); |
strncat | wchar_t* wcsncat (wchar_t* dest, const wchar_t* src, size_t cnt); |
strcmp | int wcscmp (const wchar_t* s1, const wchar_t* s2); |
strncmp | int wcsncmp (const wchar_t* s1, const wchar_t* s2, size_t cnt); |
Windows 2000 이상의 운영체제는 모든 문자열을 유니코드 기반으로 처리한다.
문자열 입출력 함수
SBCS 기반 함수 | WBCS(유니코드 기반) 문자열 입출력 함수 |
printf | int wprintf (const wchar_t* format [,argument]...); ex) wprintf(L”Hello world!”); |
scanf | int wscanf (const wchar_t* format [,argument]...); |
fgets(읽기) | wchar_t* fgetws (wchar_t* string, int n, FILE* stream); |
fputs(쓰기) | int fputws (const wchar_t* string, FILE* stream); |
wprintf, fputws로 유니코드 기반으로 한글 출력하려면 _wsetlocale (LC_ALL, L”korean”); //#include “locale.h” 선언 해야함.
2. MBCS와 WBCS의 동시 지원
프로그램은 한번만 구현하고, 별다른 변경 없이 MBCS기반으로 돌아가는 형태로도, WBCS 기반으로 돌아가는 형태로도 컴파일 가능한 방법 소개
#include<window.h>
Windows 기반 프로그래밍을 하는 데 있어서 항상 포함해야 하는 헤더파일
Windows에서 정의하고 있는 자료형
#define CONST const;
typedef char CHAR;
typedef wchar_t WCHAR;
typedef CHAR* LPSTR;
typedef CONST CHAR* LPCSTR;
typedef WCHAR* LPWSTR;
typedef CONST WCHAR* LPCWSTR;-> 선언의 편리성, 확장의 용이성
MBCS와 WBCS를 동시에 지원하기 위한 매크로
매크로 기본
디버그에 유용한 매크로
__FILE__, __FUNCTION__, __LINE__, __DATE__, __TIME__
매크로 연산자 #과 ##
#은 매크로 함수의 인수를 문자열로 치환하고 ##은 두 인수를 붙여서 치환한다.
조건부 컴파일 지시자
#undef ~ : ~ 매크로명의 정의 취소
Windows에서는 MBCS와 WBCS를 동시에 수용하는 형태의 프로그램 구현을 위해 매크로를 정의함
tchar.h에 선언되어 있는 내용
MBCS와 WBCS를 동시에 지원하기 위한 함수
'운영체제' 카테고리의 다른 글
6장. 커널 오브젝트와 오브젝트 핸들 (0) | 2018.08.08 |
---|---|
5장. 프로세스의 생성과 소멸 (0) | 2018.08.08 |
4장. 컴퓨터 구조에 대한 두 번째 이야기 (0) | 2018.08.08 |
3장. 64비트 기반 프로그래밍 (0) | 2018.08.08 |
1장. 컴퓨터 구조에 대한 첫 번째 이야기 (0) | 2018.08.08 |