String
Intro
글자 A를 메모리에 저장하는 방법은 각 문자에 대해서 대응되는 숫자를 정해놓고 이것을 메모리에 저장한다. 영어가 대소문자 합쳐서 52이므로 6비트(64가지)로 표현할 수 있다. 이를 코드체계라고 한다.
000000 -> 'a'
000001 -> 'b'
유니코드도 다시 Character Set으로 분류
- USC-2
- USC-4
- 유니코드를 저장하는 변수의 크기를 정의
- 그러나, 바이트 순서에 대해서 표준화 하지 못했음
- 다시 말해 파일을 인식 시 이 파일이 UCS-2, UCS-4인지 인식하고 각 경우를 구분해서 모두 다르게 구현해야 하는 문제 발생
Big-endian, little-endian
메모리에는 주소와 데이터가 있다.
주소는 낮은주소부터 순서가 있다.
낮은자리를 빠른주소에 저장하는 방법 little-endian
낮은 자리를 높은 주소에 저장하는 방법 big-endian
유니코드 인코딩
- UTF-8 (web)
- UTF-16(in windows, java)
- UTF-8(in unix)
다음 두 코드의 차이 이해하기
s1 = list(input())
s2 = input()
객체지향 언어에서의 문자열 처리
- 문자열 데이터를 저장, 처리해주는 클래스를 제공한다.
- string 클래스를 사용한다.
- 문자열 처리에 필요한 연산을 연산자, 메소드 형태로 제공한다.
Python에서의 문자열 처리
replace(), split(), isalpha(),find()
- 문자열은 튜플과 같이 요소값을 변경 할 수 없음
문자열 뒤집기
- 자기 문자열에서 뒤집는 방버이 있고, 새로운 빈 문자열을 만들어 소스의 뒤에서부터 읽어서 타겟에 쓰느 방법
- 자기 문자열을 이용할 경우는 swap을 위한 임시변수가 필요하며 반복 수행을 문자열 길이의 반만을 수행해야함
문자열 비교
- 파이썬에는 == 연산자와 is 연산자를 제공한다
- ==연산자는 내부적으로 특수 메서드 __eq__()를 호출