바이트와 바이트배열
1. 바이트와 바이트 배열
파이썬에서 2진수 데이터를 처리할 때 주로 사용되는 데이터 유형은 바이트(bytes
)와 바이트 배열(bytearray
)입니다. 이 두 자료형은 바이너리 데이터를 효율적으로 다루기 위해 설계되었으며, 시퀀스 자료형의 특성을 가지고 있습니다.
1.1 바이트 (Bytes)
bytes
타입은 불변(immutable)한 바이트 시퀀스를 나타냅니다.
# 생성
example = b'hello'
# 인덱싱
print(example[0]) # 출력: 104 (아스키 코드로 'h')
print(example[1]) # 출력: 101 (아스키 코드로 'e')
# 슬라이싱
print(example[1:4]) # 출력: b'ell'
# 멤버 확인
print(b'h' in example) # 출력: True
# 연결 및 반복
example2 = b' world'
print(example + example2) # 출력: b'hello world'
print(example2 * 2) # 출력: b' world world'
bytes
객체는 아스키 코드로만 구성된 문자열을 처리할 수 있습니다. 유니코드 문자(예: 한글)는 바이트 객체로 직접 변환할 수 없습니다.
b = b'하하' # 에러 발생
b = b'하하' # 에러 발생
1.2 바이트 배열 (Bytearray)
bytearray
는 가변(mutable)한 바이트 시퀀스를 나타내며, bytes
와 유사한 방식으로 사용됩니다.
# 생성
example = bytearray(b'hello')
# 인덱싱
print(example[0]) # 출력: 104 (아스키 코드로 'h')
print(example[1]) # 출력: 101 (아스키 코드로 'e')
# 슬라이싱
print(example[1:4]) # 출력: bytearray(b'ell')
# 멤버 확인
print(b'h' in example) # 출력: True
# 연결 및 반복
example2 = bytearray(b' world')
print(example + example2) # 출력: bytearray(b'hello world')
print(example2 * 2) # 출력: bytearray(b' world world')
# 내장 함수
print(len(example)) # 출력: 5
print(min(example)) # 출력: 101 (아스키 코드로 'e')
print(max(example)) # 출력: 111 (아스키 코드로 'o')
# 가변성 활용
example[0] = 74 # 'h'를 'J'로 변경
print(example) # 출력: bytearray(b'Jello')
1.3 바이트와 바이트 배열의 활용
bytes
와 bytearray
는 파일 입출력, 네트워크 통신, 바이너리 데이터 처리 등 다양한 상황에서 사용됩니다. 바이트 배열은 바이트 시퀀스의 내용을 변경할 수 있어, 동적인 바이너리 데이터 처리에 유용합니다.
{"packages":["numpy","pandas","matplotlib","lxml"]}