파이썬 3.6.2에서 바이트 개체를 'BQ'형식 (즉, 부호없는 char + 부호없는 long)으로 디코딩하려고합니다. 길이는 9 바이트 있어야하지만, 더 바이트를 요청하는 오류를 struct.unpack
가져옵니다 돼있 있지만, 나는 'QB'의 형식 지정자의 순서를 변경하면struct.unpack() 특정 형식의 패턴을 가진 바이트 개체에서 잘못된 길이가 필요합니다
In [96]: struct.unpack('BQ',bytesObj)
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-96-667267f631a1> in <module>()
----> 1 struct.unpack('BQ',bytesObj)
error: unpack requires a bytes object of length 16
, 그것은 길이에 대해 불평하지 않습니다 같음 :
'B'대신에 낯선 사람도 있습니다. 3 바이트에 필요한 아이폰에 증가한다 'F',하지만 오류는 동일하게 유지 : 나는 'Q'이전에 사용 형식
In [98]: struct.unpack('fQ',bytesObj)
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-98-c3792c78fd43> in <module>()
----> 1 struct.unpack('fQ',bytesObj)
error: unpack requires a bytes object of length 16
In [99]: struct.unpack('Qf',bytesObj)
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-99-78065617d606> in <module>()
----> 1 struct.unpack('Qf',bytesObj)
error: unpack requires a bytes object of length 12
상관없이, 그것의 길이를 요구 항상 같은 오류를 가져옵니다 16. 'Q'에 대한 이전 형식이없는 경우에만 제대로 작동하는 것 같습니다.
나는 뭔가를 놓친가요?
대단히 감사합니다! 또한 특수 문자를 사용하여 정렬 프로세스를 비활성화 할 수 있습니다. https://docs.python.org/3.6/library/struct.html#byte-order-size-and-alignment –