from struct import pack, unpack, error from pprint import pprint data = (1, 1, 2, 1, 1) block = pack('2IB2I', *data) pprint(block) # '\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00' print(len(block)) # == 20 print(unpack('2IB2I', block)) # works ok try: print(unpack('=2IB2I', block)) # expects len(block) == 17 except error: pass print(unpack('=2IB2I', block[:17])) # works _but_: (1, 1, 2, 16777216, 16777216) print(unpack('<2IB2I', block[:17])) # same as above print('------------------') block = pack('=2IB2I', *data) pprint(block) # '\x01\x00\x00\x00\x01\x00\x00\x00\x02\x01\x00\x00\x00\x01\x00\x00\x00' print(len(block)) # == 17 try: print(unpack('2IB2I', block)) # expects len(block) == 29 except error: pass print(unpack('=2IB2I', block)) # works ok print(unpack('<2IB2I', block)) # works ok