>>> lst = [0x10, 0x20, 0x30, 0x41, 0x61, 0x7f, 0x80, 0xff]
>>> bytearray(lst)
bytearray(b'\x10 0Aa\x7f\x80\xff')
>>> bytes(lst)
b'\x10 0Aa\x7f\x80\xff'
참고 공백, '0'
, 'A'
및 'a'
은 문자 그대로 표시되지만 "인쇄 할 수없는"값은 '\x##'
문자열 이스케이프 시퀀스로 표시됩니다. 만약 그 바이트들을 정수 들인의 묶음으로 생각하려고한다면, 이것은 당신이 원하는 것이 아닙니다.
고정 폭 정수 또는 부동 소수점의 동질 배열 (C와 유사)의 경우 표준 라이브러리의 array
module을 사용하십시오.
더 복잡한 데이터의 경우 >>> import array
# One megabyte of unsigned 8-bit integers.
>>> a = array.array('B', (n % 2**8 for n in range(2**20)))
>>> len(a)
1048576
>>> a.typecode
'B'
>>> a.itemsize
1
>>> a.buffer_info() # Memory address, memory size.
(24936384, 1048576)
>>> a_slice = a[slice(1024, 1040)] # Can be sliced like a list.
>>> a_slice
array('B', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
>>> type(a_slice) # Slice is also an array, not a list.
<class 'array.array'>
의 struct
module 많은 C의 struct
키워드와 같은 이기종 기록을 포장입니다. C와 달리 array
을 struct
으로 만드는 확실한 방법이 없습니다.
이러한 데이터 구조는 모두 파이썬의 Buffer Protocol을 사용합니다 (CPython에서는 최소한) 파이썬 클래스가 내부 파이썬 배열을 다른 파이썬 코드에 직접 노출 할 수있게합니다. 뭔가 복잡한 작업이 필요한 경우이 것을 배워야 할 수도 있습니다 ... 또는 NumPy을 포기하고 사용하십시오.
라이브러리를 사용할 수 있다면 [numpy'] (http://www.numpy.org/)는 최적화 된 배열과이를 조작하는 효율적인 함수를 제공합니다. 배열의 dtype 매개 변수를 사용하여 요소의 메모리 크기를 지정할 수 있습니다. – Craig
적절한 _ 유형 코드와 함께'array.array()'를 사용해보십시오. – martineau
marineau의 의견에 따라 : 표준 라이브러리의 일부인 ['array' 모듈] (https://docs.python.org/library/array.html) 문서. –