Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 바이트(Bytes) 객체와 문자열(String)의 차이 완벽 정리

컴퓨터는 오직 바이트 단위의 데이터만 저장할 수 있기 때문에, 다양한 형식의 데이터를 모두 바이트 형태로 변환해야 합니다. 예를 들어 이미지는 PNG, JPEG 등의 형식으로 바이트화되어 저장되고, 음악 파일은 .WAV, .MP3 등의 형식으로 저장됩니다. 이러한 파일 형식을 생성하고 관리하는 소프트웨어가 데이터를 바이트로 변환하는 작업을 수행하는 것입니다.

파이썬에서 바이트(bytes) 객체는 사람이 직접 읽을 수 없는 바이트 값들의 연속입니다. 반면 문자열(string)은 사람이 읽을 수 있는 문자들의 연속입니다. 문자가 컴퓨터에 바이트 형태로 저장되기 전에는 반드시 인코딩(encoding) 과정을 거쳐야 합니다.

인코딩(Encoding)

문자열을 디스크에 저장하기 전에는 먼저 인코딩해야 합니다. 파이썬에서는 encode() 함수를 사용하여 문자열을 바이트로 변환할 수 있습니다. 아래 예제에서는 ASCII 인코딩 방식을 적용합니다.

예제

print('Best Tutorials'.encode('ASCII'))

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

b'Best Tutorials'

출력 앞에 붙은 b 접두사는 해당 데이터가 일반 문자열이 아니라 바이트 객체임을 나타냅니다.

디코딩(Decoding)

반대로 디스크에서 바이트 데이터를 읽어올 때, 사람이 읽을 수 있는 형태로 만들려면 디코딩 과정이 필요합니다. 파이썬에서는 decode() 함수를 사용하여 인코딩된 바이트를 다시 문자열로 변환할 수 있습니다.

예제

print(b'Best Tutorials'.decode('ASCII'))

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Best Tutorials

참고로 파이썬 3에서는 별도로 인코딩 방식을 지정하지 않으면 기본적으로 UTF-8이 사용됩니다. UTF-8은 전 세계 대부분의 문자를 표현할 수 있어 실무에서 가장 널리 쓰이는 인코딩 방식입니다.

핵심 정리

  • 문자열은 문자의 연속이지만, 바이트 객체는 바이트의 연속입니다.
  • 문자열은 사람이 읽을 수 있고(human-readable), 바이트는 기계가 읽을 수 있는(machine-readable) 형태입니다.
  • 바이트는 디스크에 직접 저장되지만, 문자는 저장되기 전에 반드시 인코딩 과정을 거쳐야 합니다.