인코딩
과 문자를 해독하는 디코딩
을 하기 위해서는 미리 정해진 기준을 바탕으로 입력과 해독이 처리되어야 한다영문 알파벳을 사용하는 대표적인 문자 인코딩으로 7 비트로 모든 영어 알파벳을 표현할 수 있다
0xxxxxxx // 맨 앞 바이트가 0으로 시작하면 한 바이트짜리 ASCII문자이다.(7bit)
UTF-8과 UTF-16의 차이점
인코딩 방식의 차이를 의미
UTF- 뒤에 등장하는 숫자는 비트(bit)
UTF-8에서는 한글은 3 바이트, UTF-16에서는 2 바이트를 차지
특징
1. 가변 길이 인코딩
2. 유니코드 한 문자를 나타내기 위해 8bit(1bytes)기반으로 4 bytes까지 사용
3. 바이트 순서가 고정됨
4가지 패턴
0xxxxxxx // 000000-00007F
110xxxxx 10xxxxxx // 000080-0007FF
1110xxxx 10xxxxxx 10xxxxxx // 000800-00FFFF
11110zzz 10zzxxxx 10xxxxxx 10xxxxxx // 010000-10FFFF
1110xxxx 10xxxxxx 10xxxxxx # x 안에 순서대로 값을 채워넣습니다.
11101100 10111101 10010100 // UTF-8로 표현된 '코'
let encoder = new TextEncoder(); // 기본 인코딩은 'utf-8'
encoder.encode('코') // Uint8Array(3) [236, 189, 148]
0xxxxxxx // ASCII
01100010 // UTF-8로 표현된 'b'
특징
1. 코드 그대로 바이트로 표현 가능, 바이트 순서가 다양함
U+ABCD라는 16진수를 있는 그대로 이진법으로 변환하면 1010-1011-1100-1101 이고,
이 이진법으로 표현된 문자를 16 bits(2 bytes)로 그대로 사용하며,
바이트 순서(엔디언)에 따라 UTF-16의 종류도 달라진다
비트맵(래스터)
- 픽셀 기반
- 사진과 같이 색상의 조합이 다양한 이미지에 적합
- 확대에 적합하지 않암, 이미지가 깨짐
- 큰 크기의 이미지는 큰 파일 사이즈를 가짐
- 이미지의 복잡도에 따라 벡터로 변환하는 것에 오랜 시간이 걸림
- jpg, gif, png 등이 널리 쓰임
벡터
- Shape 기반
- 로고, 일러스트와 같이 제품에 적용되는 이미지에 적합
- 품질 저하없이 모든 크기로 확대 가능하며, 해상도의 영향을 받지 않음
- 큰 크기의 벡터 그래픽은 작은 파일 사이즈를 유지할 수 있음
- 쉽게 래스터 이미지로 변환 가능
- svg 포맷은 현대의 브라우저에서 대부분 지원