Code: Select all
header = bytearray(12)
# API Version:
header[0] = 0
header[1] = 0
header[2] = 0
header[3] = 2 # docs say current apps should just use 2 here
# Reference ID:
header[4] = (refid >> 24) & 0xff
header[5] = (refid >> 16) & 0xff
header[6] = (refid >> 8) & 0xff
header[7] = (refid >> 0) & 0xff
# Message size:
header[8] = (requestLength >> 24) & 0xff
header[9] = (requestLength >> 16) & 0xff
header[10] = (requestLength >> 8) & 0xff
header[11] = (requestLength >> 0) & 0xff
# Then later on, extracting the same offsets from the same structure type
# Version number
version = ((data[0]) << 24) + ((data[1]) << 16) + ((data[2]) << 8) + ((data[3]) << 0)
# Reference ID
reference = ((data[4]) << 24) + ((data[5]) << 16) + ((data[6]) << 8) + ((data[7]) << 0)
# Message size - this tells us exactly how much data to receive for the response
responseSize = ((data[8]) << 24) + ((data[9]) << 16) + ((data[10]) << 8) + ((data[11]) << 0)