- 리스트에서 bytearray 만들기
>>> elements = [0, 200, 50, 25, 10, 255]
>>> values = bytearray(elements)
>>> values
bytearray(b'\x00\xc82\x19\n\xff')
- bytearray의 element를 변경
>>> values[0] = 5
>>> values[1] = 0
bytearray는 mutable 오브젝트이므로 element의 값을 변경할 수 있다.
- bytearray의 내용 출력
>>> for v in values:
... print v
...
5
0
50
25
10
255
>>>
일반 리스트와 동일하게 iterate 할 수 있다.
- 문자열로 bytearray 만들기
>>> data = bytearray(b"abc")
>>> data
bytearray(b'abc')
>>> for d in data:
... print d
...
97
98
99
>>>
문자열로 bytearray를 만들때는 문자열 앞에 ‘b’를 붙여줘야 한다.
- bytearray slice
>>> values = [5,10,15,20]
>>> arr = bytearray(values)
>>> arr
bytearray(b'\x05\n\x0f\x14')
>>> arr[0:2]
bytearray(b'\x05\n')
>>> arr[0:2] = [100, 0, 0]
>>> arr
bytearray(b'd\x00\x00\x0f\x14')
>>> for v in arr:
... print v
...
100
0
0
15
20
>>>
리스트와 동일하게 bytearray를 slice 할 수 있고, mutable이기 때문에 slice의 내용을 변경할 수도 있다.
- Occurence Count
>>> arr = bytearray(b"aabbcccc")
>>> arr.count(b"c")
4
>>>
bytearray내의 각 element를 돌며 특정 패턴이 매치하는 횟수를 셀 수도 있다. count()의 argument는 byte 오브젝트여야만 한다. 즉 ‘b’로 시작하는 문자열 스트링이거나 0~255 사이의 정수값이어야 한다.
- Find pattern
>>> data = bytearray(b"python")
>>> data.find(b"on")
4
>>> data.find(b"java")
-1
>>>
bytearray 내에서 특정 문자열을 검색할 수도 있다. 이 경우 일치되는 문자열의 가장 왼쪽 인덱스를 리턴한다. 일치되는 문자열이 없으면 -1을 리턴한다.
- In operator
>>> data = bytearray([100,20,10,200,200])
>>> data
bytearray(b'd\x14\n\xc8\xc8')
>>> 200 in data
True
>>> 0 in data
False
>>>
in operator는 bytearray 내에 특정 element가 존재하는가를 확인한다.
- Merge
>>> left = bytearray(b"Hello ")
>>> right = bytearray(b"World")
>>> left+right
bytearray(b'Hello World')
>>>
list같이 “+”를 사용해 두개의 bytearray를 하나로 합칠 수 있다.
- bytearray를 list로 변환
>>> init = [100,255,255,0]
>>> init
[100, 255, 255, 0]
>>> b = bytearray(init)
>>> b
bytearray(b'd\xff\xff\x00')
>>> result = list(b)
>>> result
[100, 255, 255, 0]
>>>
byte값들의 리스트 (0~255 사이의 숫자)는 bytearray로 변환할 수 있다. 반대로 bytearray를 list로 변환도 가능함
- Append, del, insert
>>> vals = bytearray()
>>> vals.append(0)
>>> vals.append(1)
>>> vals.append(2)
>>> vals
bytearray(b'\x00\x01\x02')
>>> del vals[0:1]
>>> vals
bytearray(b'\x01\x02')
>>> vals.insert(1,3)
>>> vals
bytearray(b'\x01\x03\x02')
>>>
List와 동일하게 append, del, insert를 사용할 수 있다.
- ValueError
>>> values = bytearray([1000,2000,3000])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: byte must be in range(0, 256)
>>>
bytearray에 삽입되는 값은 0~255 범위여야만 한다. 범위 외의 값을 넣으려고 하면 ValueError가 발생
- 치환
>>> val = b"aaabbb"
>>> val.replace(b"bbb",b"ccc")
'aaaccc'
>>>
Buffer protocol은 String과 같은 메소드를 지원한다. String에서처럼 replace()를 사용할 수 있다. 단 argument는 bytes 오브젝트, 즉 “b” 문자열을 사용해야만 함
- Compare
>>> val1 = b"desktop"
>>> val1
'desktop'
>>> val2 = bytearray(b"desktop")
>>> val2
bytearray(b'desktop')
>>> val1 == val2
True
>>>
'b' 문자열은 bytes 오브젝트이다. bytes 오브젝트를 비교하려면 ‘==‘를 사용함
- Start, end
>>> val = b"users"
>>> val.startswith(b"user")
True
>>> val.endswith(b"s")
True
>>>
bytes 오브젝트를 string과 같이 다룰 수 있음. startswith와 endswith 역시 사용 가능. 단 argument는 bytes 오브젝트여야만 함
- Split, join
>>> data = b"cat,dog,fish,bird"
>>> data
'cat,dog,fish,bird'
>>> elem = data.split(b",")
>>> elem
['cat', 'dog', 'fish', 'bird']
>>> len(elem)
4
>>> res = b",".join(elem)
>>> res
'cat,dog,fish,bird'
>>>
좋은정보 감사합니당 덕분에 파이썬 바이트어레이 더욱 이해할수 있게 되었어요 ~
답글삭제좋아요.
답글삭제필요한것만 딱딱 정리 잘되어있네요! 도움이 많이 됬습니다. 감사드려요!
답글삭제감사합니다.
답글삭제