Advertisement
mr1302

Untitled

Apr 20th, 2022
1,072
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.44 KB | None | 0 0
  1. import struct
  2.  
  3.  
  4. def createDict(data):
  5.     A1 = struct.unpack('<b', data[:1])[0]
  6.     A2addr = struct.unpack('<I', data[1:5])[0] - 4
  7.     A3 = struct.unpack('<B', data[5:6])[0]
  8.     A4 = struct.unpack('<b', data[6:7])[0]
  9.     A5 = struct.unpack('<q', data[7:15])[0]
  10.     A6 = struct.unpack('<q', data[15:23])[0]
  11.     B1 = struct.unpack('<H', data[A2addr:A2addr + 2])[0]
  12.     B2size = struct.unpack('<I', data[A2addr + 2:A2addr + 6])[0]
  13.     B2addr = struct.unpack('<H', data[A2addr + 6:A2addr + 8])[0] - 4
  14.     B3 = struct.unpack('<b', data[A2addr + 8:A2addr + 9])[0]
  15.     B4 = struct.unpack('<d', data[A2addr + 9:A2addr + 17])[0]
  16.     B5 = [i[0] for i in struct.iter_unpack('<h', data[A2addr + 17:A2addr + 33])]
  17.     B6 = struct.unpack('<f', data[A2addr + 33:A2addr + 37])[0]
  18.     B7 = struct.unpack('<I', data[A2addr + 37:A2addr + 41])[0]
  19.     B8size = struct.unpack('<I', data[A2addr + 41:A2addr + 45])[0]
  20.     B8addr = struct.unpack('<I', data[A2addr + 45:A2addr + 49])[0] - 4
  21.     B8 = [i[0] for i in struct.iter_unpack('<f', data[B8addr:B8addr + 4 * B8size])]
  22.     B2 = []
  23.     Clen = struct.calcsize('<IIHHfH')
  24.     for i in range(B2size):
  25.         C1size = struct.unpack('<I', data[B2addr + i * Clen:B2addr + i * Clen + 4])[0]
  26.         C1addr = struct.unpack('<I', data[B2addr + i * Clen + 4:B2addr + i * Clen + 8])[0] - 4
  27.         C2 = struct.unpack('<H', data[B2addr + i * Clen + 8:B2addr + i * Clen + 10])[0]
  28.         C3addr = struct.unpack('<H', data[B2addr + i * Clen + 10:B2addr + i * Clen + 12])[0] - 4
  29.         C4 = struct.unpack('<f', data[B2addr + i * Clen + 12:B2addr + i * Clen + 16])[0]
  30.         C5 = struct.unpack('<H', data[B2addr + i * Clen + 16:B2addr + i * Clen + 18])[0]
  31.         C1 = [i[0] for i in struct.iter_unpack('<H', data[C1addr:C1addr + 2 * C1size])]
  32.         D1 = struct.unpack('<h', data[C3addr:C3addr + 2])[0]
  33.         D2 = struct.unpack('<Q', data[C3addr + 2:C3addr + 10])[0]
  34.         C3 = {'D1': D1, 'D2': D2}
  35.         C = {
  36.             'C1': C1,
  37.             'C2': C2,
  38.             'C3': C3,
  39.             'C4': C4,
  40.             'C5': C5
  41.         }
  42.         B2.append(C)
  43.  
  44.     A2 = {
  45.         'B1': B1,
  46.         'B2': B2,
  47.         'B3': B3,
  48.         'B4': B4,
  49.         'B5': B5,
  50.         'B6': B6,
  51.         'B7': B7,
  52.         'B8': B8
  53.     }
  54.  
  55.     return {
  56.         'A1': A1,
  57.         'A2': A2,
  58.         'A3': A3,
  59.         'A4': A4,
  60.         'A5': A5,
  61.         'A6': A6,
  62.     }
  63.  
  64.  
  65. def main(data):
  66.     data = data[4:]
  67.     return createDict(data)
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement