일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AppSW
- working set
- URP
- Specular
- 가상 바이트
- 작업 집합
- Rim Light
- Toon Shader
- C언어
- 메모리 누수
- ColorGradingLutPass
- Three(Two) Tone Shading
- Cartoon Rendering
- VR
- Cell Shader
- Virtual Byte
- Cell Look
- Windows Build
- OculusMotionVectorPass
- 게임 수학
- ASW(Application SpaceWarp)
- 프로그래밍 기초
- Private Bytes
- 3d
- URP로 변경
- 벡터
- 개인 바이트
- Today
- Total
WinCNT
문자와 문자열 본문
데이터를 어떻게 해석할 것인가
1. 문자 집합과 문자열은 다르다
다른 걸 어떻게 알 수 있지?(해석의 단초)
Null Terminate
문자열 조작 실수 중에 오버플로우 문제
10바이트 배열에 문자 10개를 넣으면 버그가 발생한다...
(하도 실수를 많이해서 _s가 붙은 함수가 생김)
2. 문자 --> 문자를 해석하는 단위
1바이트 --> char burffer[10]
2바이트 --> wchar wBuffer[10]
4바이트 --> int intBuffer[10]
멀티바이트와 유니코드
멀티바이트 : 문자를 해석할 때 해석할 때마다 바이트 수가 다름
유니코드 : 문자를 해석할 때 고정 바이트로 해석함
(고정 바이트의 크기는 2byte 혹은 4byte)
사실 유니코드 자체는 유니코드는 국제표준 문자표일 뿐이지만
VS의 문자 집합 설정에는 유니코드라고 되어 있다...
3. Visual Studio의 문자 집합 설정
tchar.h를 살펴보자
char, char set, string...
인코딩, 디코딩...
숫자를 프로그래머가 알아보기 쉽게 define함
(#define, const, enum 등)
#define MSG_CHAT 0xAA
const short MSG_MOVE = 0x02
숫자를 정의할 때 대역(그룹)을 나눔으로써 프로토콜을 정의할 수 있다
TCHAR
#ifdef UNICODE
typedef WCHAR TCHAR;
#else
typedef CHAR TCHAR;
#endif
VS의 문자 집합 설정은 TCHAR를 어떻게 정의할 것인지를 알려줄 뿐
유니코드와 멀티바이트
유니 바이트, 멀티 바이트?
유니 코드, 멀티 코드?
왜 하나는 코드고 하나는 바이트인가?
유니코드의 원래 의미는 국제표준 문자표, 즉 일종의 코드 참조 테이블이다
하지만 Visual Studio의 문자 집합 설정의 유니코드는 고정 바이트로 해석한다는 뜻이다
유니코드에서는 유니코드 페이지를 살펴보고 문자를 해석한다
그리고 UTF-16, UTF-32는 고정 바이트로 해석
UTF-8
UTF-8은 가장 많이 사용되는 1~4바이트 가변 길이(!!) 유니코드(!!!) 인코딩
유니코드는 국제표준 문자표이고 UTF-8은 인코딩 방식이다
즉, 참조하는 테이블은 유니코드이지만 해석하는 바이트는 가변 길이이다
UTF-8은 1바이트(char)로 넣고 해석할 때 코드 페이지로 잘 해석해줘야 한다
예를 들어 "안abcd녕 " 이란 글자를 UTF-8로 저장한다면
ec95 8861 6263 64eb 8595 3f0a 로 저장된다
(굵은 글자가 코드 페이지 역할을 한다)
출처) https://redisle.tistory.com/m/14
문자 집합(Character Set) | 인코딩 방식 | 특징 |
CP437(Code Page 437) (www.ascii-codes.com/) |
ASCII | 7비트 고정길이 인코딩 영문자만 표현 가능 |
KS X 1001(KSC 5601-1987) | EUC-KR | 2바이트 고정길이 인코딩 한글 2,350자 밖에 지원하지 않는다 한자는 4,888자 지원 |
통합형 한글 코드(Unified Hangul Code) | CP949(MS949) | 모든 한글(11,172자) 지원 모든 한글을 지원하기 위해 Microsoft 주도로 만들어진 문자 집합이면서 인코딩 방식이다 EUC-KR의 상위집합(SuperSet)으로 모든 EUC-KR 문자를 포함한다 표준은 아니지만 한때 표준처럼 사용되었음(특히, 윈도우 기반 운영체제에서) |
유니코드(Unicode) (www.unicode.org/charts/) (유니코드 한글 실라버스) |
UTF-8 | 1~4바이트 가변길이 인코딩 ASCII 인코딩과 호환성을 가짐 동아시아권 문자들이 3바이트로 표현 |
UTF-16 | 2 or 4byte 고정길이 인코딩 한글이 2byte로 고정 |
|
UTF-32 | 4byte 고정길이 인코딩 모든 문자가 동일하게 4byte임 |
SSS
'게임 프로그래밍(학습 내용 정리) > 네트워크 프로그래밍' 카테고리의 다른 글
네트워크 통신의 모델 (0) | 2022.05.09 |
---|---|
데이터 드리븐과 메시지 큐 (0) | 2022.05.09 |
소켓과 포트, Stateless와 Stateful (0) | 2022.05.09 |
TCP/IP 계층 구조 (0) | 2022.05.02 |
네트워크로 데이터를 송신하는 과정 (0) | 2022.04.26 |