ИВБО-01-22

Вариант №1

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x24 0x55 0x52 0x50, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 float
2 Структура B
3 Адрес (uint32) структуры E
4 uint16
5 Адрес (uint32) структуры F
6 int32
7 Структура G

Структура B:

Поле Описание
1 double
2 float
3 float
4 int32
5 int64
6 float
7 Адрес (uint32) структуры C
8 Массив int32, размер 3

Структура C:

Поле Описание
1 int8
2 Размер (uint32) и адрес (uint32) массива адресов (uint16) структур D

Структура D:

Поле Описание
1 uint8
2 uint64
3 Массив int32, размер 4

Структура E:

Поле Описание
1 int8
2 uint8

Структура F:

Поле Описание
1 float
2 uint8
3 int64

Структура G:

Поле Описание
1 uint32
2 Массив int32, размер 2

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'$URP\xfe\xae\xf7:B\nqP\xff\x01\xe4?p\x1aK?\x00\xabu?\xc2\x8d\xe0\x1c'
 b'\x04\xe0\x12\xea\xbez\x12\xbc\xf9y\x01\xbc\x88\x00\x00\x00F`\x92\xc0'
 b'\xf7\x90\xd2\xadJ\xdfoQ\x91\x00\x00\x00NN\x93\x00\x00\x00\xe0\xb0\xe5\xb9f+'
 b'\xe1\xcb\xf4\xbb\xa0s\xa5\xcd\xa4\x085\x0bCG\xb1`\xe0\x16D-q&\r\\'
 b'\x9b\x9d\xef\xd4\x8c\xcc\\\xe2\x92\xf9\xba\x96\xe1\xe4\x16E\x00w\xe0\t'
 b'{\xe45bK\xc5\xb4O*\xb3\x8a\x1eI\x82n\xfcR\x00k\x00{\x02\x00\x00'
 b'\x00\x84\x00\x00\x00G\x0f\x03\xe75?\x19\xbc\x8b\xbd\x05\xc38\xc6}')

Результат разбора:

{'A1': 0.001889675622805953,
 'A2': {'B1': 0.6252438136219285,
        'B2': 0.7933721542358398,
        'B3': 0.9596405029296875,
        'B4': 484478402,
        'B5': -4894714884608827388,
        'B6': -0.007902615703642368,
        'B7': {'C1': 123,
               'C2': [{'D1': 53,
                       'D2': 4906355549962453771,
                       'D3': [220623149, -274883748, 1556909268, -1158049054]},
                      {'D1': 150,
                       'D2': 711699584167372001,
                       'D3': [1647699067, 1337247051, 512406314, -59866551]}]},
        'B8': [-1064148922, -1378709257, 1366286154]},
 'A3': {'E1': 71, 'E2': 15},
 'A4': 20046,
 'A5': {'F1': 0.7105562090873718, 'F2': 25, 'F3': 9062993710395788220},
 'A6': -1176129312,
 'A7': {'G1': 3420531558, 'G2': [1939913716, 145018277]}}

Пример 2

Двоичные данные:

(b'$URPZ7[\xbfp)|\xafG\x87\xd0?\x16\x9f[\xbf\x03\x7f-?2\xb4\xb1\x0e\x02N\xd6R'
 b'a\x11\xe8\xaa\xa2%\x0f\xbf\x88\x00\x00\x00D\xf7Z\x83Z`\xc8\x96\xbc\x8a%\x96'
 b'\x91\x00\x00\x00ia\x93\x00\x00\x00T\xa8\xbb\xddh\x9ev\x8a1\xa7\xbf\x83Zg'
 b'h\xc1\x01\xb7\xfdQ\xe5\xf3\xcfM\xca\xa98\x0c\xdehF\xb9q\xb9>\x00\xd6L'
 b'\xc5\xb9\xb3dh\xdb\x9c5 9\xacR\x1aK\x16\xfeV\x8e\xe5,\x0f\xe8\xaa\xd2\x8biQL'
 b'R\x00k\x00\xfc\x02\x00\x00\x00\x84\x00\x00\x00\x1d\x83\xcb+c\xbeY'
 b'\xcb\xc1\x0fo\x8a\x19\x14\xae')

Результат разбора:

{'A1': -0.8563133478164673,
 'A2': {'B1': 0.258256837246015,
        'B2': -0.8578962087631226,
        'B3': 0.6777192950248718,
        'B4': 246527026,
        'B5': -6131631782965654014,
        'B6': -0.5591679811477661,
        'B7': {'C1': -4,
               'C2': [{'D1': 1,
                       'D2': 14577536215299521975,
                       'D3': [-569624407, 1907967592, -704627015, -1279670964]},
                      {'D1': 100,
                       'D2': 5957199217605532520,
                       'D3': [-32093414, 753241686, -760551409, 1280403851]}]},
        'B8': [-2091190460, -1765253030, -1775924548]},
 'A3': {'E1': 29, 'E2': 131},
 'A4': 24937,
 'A5': {'F1': -0.22184674441814423, 'F2': 89, 'F3': -5903065129216392757},
 'A6': -574904236,
 'A7': {'G1': 2323029608, 'G2': [-2084591823, -1050122406]}}

Вариант №2

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa 0x51 0x48 0x47, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 int16
3 float
4 Структура C
5 uint8
6 int8
7 uint16

Структура B:

Поле Описание
1 double
2 uint32

Структура C:

Поле Описание
1 uint16
2 float
3 int32
4 Адрес (uint32) структуры D
5 Структура F

Структура D:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива структур E
2 Размер (uint16) и адрес (uint16) массива uint32
3 Размер (uint16) и адрес (uint16) массива float
4 uint32

Структура E:

Поле Описание
1 uint8
2 int8
3 uint16
4 int8

Структура F:

Поле Описание
1 int32
2 int16
3 Размер (uint32) и адрес (uint32) массива int8
4 uint64

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\nQHG\xb41\xe9]\xfd\x15\xd1?E\xbe\x9bS\xf8"\xd5"\x1d?\x1cK\xd3!\xd7\xbe'
 b'8\xf3\x91\xf6a\x00\x00\x00Q\x85&RY\xfa\x02\x00\x00\x00q\x00\x00\x00\x86\x15'
 b'\xe0\xd3QH,\xda&\x02\xa0\xdc\xc8\xf7\x15\x15@O:B2\xccf\xb8\xcc2r\x9c\xec:'
 b'\xd9B-\x8c\xf8+N\x07w}\x92d?\x89\xd3-?\x03\x00>\x00\x03\x00M\x00\x02\x00Y'
 b'\x00\xea\xfe[\xc6\xa67')

Результат разбора:

{'A1': {'B1': 0.2669671456431175, 'B2': 1402715717},
 'A2': 8952,
 'A3': 0.6138127446174622,
 'A4': {'C1': 19228,
        'C2': -0.42017993330955505,
        'C3': -158207176,
        'C4': {'D1': [{'E1': 200, 'E2': -9, 'E3': 5397, 'E4': 64},
                      {'E1': 79, 'E2': 58, 'E3': 12866, 'E4': -52},
                      {'E1': 102, 'E2': -72, 'E3': 13004, 'E4': 114}],
               'D2': [3644517532, 4169936194, 1996967467],
               'D3': [0.8928602337837219, 0.6790090203285217],
               'D4': 3327917802},
        'C5': {'F1': 1378256209,
               'F2': -1447,
               'F3': [-90, 55],
               'F4': 15721019915527787910}},
 'A5': 38,
 'A6': 2,
 'A7': 56480}

Пример 2

Двоичные данные:

(b'\nQHG\x1c\x17T\xc3\x9e\x95\xd9?!\x0e_\xa6\xca\x9b5pE\xbf\xea\xb0\xb9\xbf:='
 b"\xeac=Ui\x00\x00\x00\xfc\xbd\xf7,\x01'\x02\x00\x00\x00y\x00\x00\x00\xc2\x89"
 b'\xa9B$\x85\xa198\x8f\xb7\xeb\x00\xba\x01\x04\xe5\x9b\xd9x\xa0 t&\x1dF'
 b'\xd8\xbf(\x9f8x1\x82\xc0,2\xba\xbe\xca\xeeE?N\xb0m?C\xc5\xe9\xbeJ\xb6\xad'
 b'=\x03\x00>\x00\x02\x00M\x00\x05\x00U\x00c\xd5\x89\xe6.\xa7')

Результат разбора:

{'A1': {'B1': 0.3997570903305687, 'B2': 2791247393},
 'A2': -25654,
 'A3': -0.7712433934211731,
 'A4': {'C1': 45290,
        'C2': 0.04559299722313881,
        'C3': 1430086634,
        'C4': {'D1': [{'E1': 0, 'E2': -70, 'E3': 1025, 'E4': -27},
                      {'E1': 155, 'E2': -39, 'E3': 41080, 'E4': 32},
                      {'E1': 116, 'E2': 38, 'E3': 17949, 'E4': -40}],
               'D2': [949954751, 3229757816],
               'D3': [-0.36366403102874756,
                      0.7731748819351196,
                      0.9284714460372925,
                      -0.4565831124782562,
                      0.08482034504413605],
               'D4': 3867792739},
        'C5': {'F1': 754433532,
               'F2': 9985,
               'F3': [46, -89],
               'F4': 4152746722196031938}},
 'A5': 56,
 'A6': -113,
 'A7': 60343}

Вариант №3

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x53 0x54 0x43, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint32) структуры B
2 int16
3 double
4 Размер (uint32) и адрес (uint16) массива структур C
5 uint64
6 Структура D
7 int32
8 int64

Структура B:

Поле Описание
1 float
2 uint32
3 uint16

Структура C:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива char
2 int8

Структура D:

Поле Описание
1 Адрес (uint16) структуры E
2 float

Структура E:

Поле Описание
1 int16
2 double
3 Размер (uint16) и адрес (uint32) массива int16
4 double
5 int16
6 double
7 Размер (uint32) и адрес (uint16) массива double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'DSTC\x00\x00\x002.W\xbf\xc5;h!J\xa4 \x00\x00\x00\x02\x00A\x89\xe6(\x93'
 b"X@\x0c|\x00m>U\xd8~\xc6\x06C\xa3#\xc2=\xd2\xce\xbb\x05\xab\xbf\x16I'\xf0\xec"
 b'3\xf9\xc3Tpgiej\x00\x00\x00\x03\x00\x00\x00<*\x00\x00\x00\x02\x00\x00'
 b'\x00?\xcc\xeal\x10b}\xb9X\x9f\x19y?\xce\xfe\xda\xd9\x1e6(\xbf\xc3\x82'
 b']\xd8d\xec\xf0^\x8a?\xd4\x83\x9dl\xd0Y\xd8\x00\x05\x00\x00\x00S\xbf\xc5!'
 b'\xceU\t\xf3\x08\x9a\xe0?\xec8\x01\xd1~\xee\xba\x00\x00\x00\x02\x00]')

Результат разбора:

{'A1': {'B1': -0.5870537161827087, 'B2': 4042011641, 'B3': 50004},
 'A2': 11863,
 'A3': -0.16587545037808216,
 'A4': [{'C1': 'pgi', 'C2': 42}, {'C1': 'ej', 'C2': -52}],
 'A5': 9936674241145474172,
 'A6': {'D1': {'E1': 24202,
               'E2': 0.32053313852648335,
               'E3': [-5524, 4194, 32185, 22687, 6521],
               'E4': -0.16509417679107963,
               'E5': -25888,
               'E6': 0.8818368045535501,
               'E7': [0.2421525535723259, -0.15241597238659876]},
        'D2': 0.20883366465568542},
 'A7': -972667997,
 'A8': 2576689912430134699}

Пример 2

Двоичные данные:

(b'DSTC\x00\x00\x002\x14<\xbf\xef\x82ZVoz\xc8\x00\x00\x00\x03\x00E\xb9F\xf4\xf4'
 b'\x11\xe8\x12\xfe\x00v\xbf\x05"\xf5\x8b\x0f\x1bw\xfa\x16\x92\x0c^\x1f<\x8d>x'
 b'Ba0\xb7y8\xee4nnmzxcjif\x00\x00\x00\x02\x00\x00\x00<\xa4\x00\x00'
 b'\x00\x04\x00\x00\x00>\xd0\x00\x00\x00\x03\x00\x00\x00B\xbf\xbf]PT\xb3f?\xcb'
 b'\xf3\xda:\xcd\xe58\xbf\xd3\x17\x04\x9f\x02s`\x1c\x9f\xbf\xed\x18\x1f'
 b'0\xde\xc5d\x00\x03\x00\x00\x00`\xbf\xecy@\x92\xab\xc2$\x9d?\xbf\xc2\xa9\x92'
 b'-\xedf\xe8\x00\x00\x00\x02\x00f')

Результат разбора:

{'A1': {'B1': 0.24244071543216705, 'B2': 817330488, 'B3': 60980},
 'A2': 5180,
 'A3': -0.9846622169678421,
 'A4': [{'C1': 'nn', 'C2': -92},
        {'C1': 'mzxc', 'C2': -48},
        {'C1': 'jif', 'C2': -65}],
 'A5': 13350627474496033534,
 'A6': {'D1': {'E1': 7327,
               'E2': -0.9091945604797442,
               'E3': [-16547, 20564, -19610],
               'E4': -0.8898012985865233,
               'E5': -25281,
               'E6': -0.14579989664598902,
               'E7': [0.21837928649237326, -0.2982799103572713]},
        'D2': -0.520064651966095},
 'A7': -1961944201,
 'A8': -425992532923564915}

Вариант №4

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x54 0x59 0x58 0x74, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int8
2 Массив адресов (uint32) структур B, размер 7
3 Адрес (uint32) структуры C

Структура B:

Поле Описание
1 int32
2 uint16

Структура C:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива char
2 Размер (uint16) и адрес (uint32) массива int8
3 uint64
4 Структура D

Структура D:

Поле Описание
1 int32
2 int64
3 Массив double, размер 2

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'GTYXtN\x00\x00\x00&\x00\x00\x00,\x00\x00\x002\x00\x00\x008\x00\x00'
 b'\x00>\x00\x00\x00D\x00\x00\x00J\x00\x00\x00W\x11\xb3&\x93\xa56\xca\x07\xad8'
 b'\xbe)\x9c\xa1Z\xae\x87\xdaP\x81\x99\x80mmf%\xa82\xc1\xbdz\xdcP\x98'
 b'\xd2,\xb4\xb7\xaf\x98Rgkq\x8e\x8c\xe6B\xc0\x00\x02\x00P\x00\x05\x00\x00\x00'
 b'R\xf1\xa6pH\xe6\x9d\x85\x94\r\x0bG\x1c\t\xb7\xf5H=\xb1\xef\x14\xbf\xcf\xf5'
 b'\x1b%G\\\xf0?\xca\xe0\x96\xdb\x8e\x8a@')

Результат разбора:

{'A1': 78,
 'A2': [{'B1': 296953491, 'B2': 42294},
        {'B1': -905466568, 'B2': 48681},
        {'B1': -1667147090, 'B2': 34778},
        {'B1': 1350670720, 'B2': 28013},
        {'B1': 1713743922, 'B2': 49597},
        {'B1': 2061258904, 'B2': 53804},
        {'B1': -1263030376, 'B2': 21095}],
 'A3': {'C1': 'kq',
        'C2': [-114, -116, -26, 66, -64],
        'C3': 17412728467683640724,
        'C4': {'D1': 218842908,
               'D2': 700297957700923156,
               'D3': [-0.2496675426507191, 0.20997892113253336]}}}

Пример 2

Двоичные данные:

(b'GTYXt\x9c\x00\x00\x00&\x00\x00\x00,\x00\x00\x002\x00\x00\x008\x00\x00'
 b'\x00>\x00\x00\x00D\x00\x00\x00J\x00\x00\x00X/\x8fj\xea\xa4\x9a\x86\x9cR_'
 b'\xec\xb6&\xac;\x0f\xdd\x8c\xc9|\xcd\xc7\xa2\xcb\xcf\xa9-\x07\xe3\x92'
 b'\x0e\x00}\x88@\xb3`SKKJ\xbfope\x89_\xcf\xc5\xba\x00\x03\x00P\x00\x05\x00\x00'
 b'\x00SAJv\xa4\xa4(\x92a\xcb,$?\x7f\xb28\xae?=\xff\x93\xbf\xe8\xd9\x0fG\x17'
 b'}\xe0\xbf\xea\xf4\xabY\xba\x94Z')

Результат разбора:

{'A1': -100,
 'A2': [{'B1': 797928170, 'B2': 42138},
        {'B1': -2036575649, 'B2': 60598},
        {'B1': 648821519, 'B2': 56716},
        {'B1': -914567737, 'B2': 41675},
        {'B1': -810996473, 'B2': 58258},
        {'B1': 234913160, 'B2': 16563},
        {'B1': 1616071499, 'B2': 19135}],
 'A3': {'C1': 'ope',
        'C2': [-119, 95, -49, -59, -70],
        'C3': 4704703210242740833,
        'C4': {'D1': -886299585,
               'D2': 9201479309707837331,
               'D3': [-0.7764965427886033, -0.8423668625370155]}}}

Вариант №5

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x50 0x46, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int64
2 Адрес (uint32) структуры B

Структура B:

Поле Описание
1 uint32
2 Размер (uint32) и адрес (uint32) массива char
3 Массив структур C, размер 2
4 Структура D
5 uint16
6 uint64
7 int8

Структура C:

Поле Описание
1 uint8
2 Размер (uint32) и адрес (uint16) массива uint8
3 float

Структура D:

Поле Описание
1 int16
2 uint16
3 Размер (uint16) и адрес (uint32) массива int16
4 int16
5 uint32
6 Размер (uint32) и адрес (uint16) массива double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'WPFy\x97\xabQ\xc7\xe1\x9f\xcei\x00\x00\x00uuga\xd7\x0f\xfd\x8d_\xdd4&\x1e'
 b'\\P\xef\xd03x\xf6\xe2\x12\x89~\x00\xc1\x00\xf5%\xb5\xd4\xf9\xdd\xbfN\xfbQ'
 b'\xa2L\xa6\xe2\xbf\x84\xbeG\xb1\x8c\x97\xef\xbf\xa83\x92b\\\xc7\xe5?,[\xa1'
 b'\xf0\xb1\x8d\xd6\xbfh\x18\x00\x17G\xfb\xd8\xbf\xf8\x84\xa6\xea\x8e\xc4\xe0'
 b'\xbf\x88:evn\x9f\xc6?i\xb9\x19\xc3\x04\x00\x00\x00\x0f\x00\x00\x00!\x04\x00'
 b'\x00\x00\x13\x00\x8b\xd5l\xbdM\x04\x00\x00\x00\x17\x00\x88\xe5\x06\xbf\xce'
 b'mx\xb0\x07\x00\x1b\x00\x00\x00\xfb\x10\xdb\xb0\xe8\x9d\x08\x00\x00\x00)'
 b'\x00\xddfoSD\x01\x8c\xb8\x98\xc6V')

Результат разбора:

{'A1': -3557876934414461063,
 'A2': {'B1': 3273242985,
        'B2': 'uuga',
        'B3': [{'C1': 33,
                'C2': [215, 15, 253, 141],
                'C3': -0.05782083794474602},
               {'C1': 77, 'C2': [95, 221, 52, 38], 'C3': -0.526939868927002}],
        'B4': {'D1': 28110,
               'D2': 45176,
               'D3': [23582, -4272, 13264, -2440, 4834, 32393, -16128],
               'D4': 4347,
               'D5': 2649272539,
               'D6': [-0.4683734673524924,
                      -0.5828002138440327,
                      -0.9872497045998476,
                      0.6805860448090373,
                      -0.3523983812241791,
                      -0.39033677335863226,
                      -0.5239939291970179,
                      0.1767404630758913]},
        'B5': 26333,
        'B6': 14310390727425938287,
        'B7': 86}}

Пример 2

Двоичные данные:

(b'WPF\x88\r\xc9z\xb8,=\xb2B\x00\x00\x00ktquo.\xd1\xa3_\xd4\t\xad\x8d'
 b'\xc2\x1c\xb9\x1c\xd4\xcb\xd2\x94V\xe3E\x19\x1c6$\xc4\xefAC\xea\xeb?v\x1f'
 b'\x87)\xcc\xe7\xe4\xbfpP\xc3\xe3>\xa7\xc2?\xe4\xc1\xc4\x03\x05\x00'
 b'\x00\x00\x0f\x00\x00\x00\x9d\x04\x00\x00\x00\x14\x00\xdf\x9c\xda'
 b'=\xad\x04\x00\x00\x00\x18\x00*X\xb1\xbe\x8bQ\xcd\r\x07\x00\x1c\x00'
 b'\x00\x00\xc2\xc0\x17\xffRE\x03\x00\x00\x00*\x00=\x00\xff\x1a\xea\x8a'
 b'U$\xc5\xae\xcf')

Результат разбора:

{'A1': -5603273190533427832,
 'A2': {'B1': 63226340,
        'B2': 'ktquo',
        'B3': [{'C1': 157, 'C2': [46, 209, 163, 95], 'C3': 0.10674452036619186},
               {'C1': 173,
                'C2': [212, 9, 173, 141],
                'C3': -0.3463757634162903}],
        'B4': {'D1': 20875,
               'D2': 3533,
               'D3': [7362, 7353, -13356, -27438, -7338, 6469, 13852],
               'D4': -16190,
               'D5': 1163067159,
               'D6': [0.8723465240310628,
                      -0.653295594319373,
                      0.14572893258321384]},
        'B5': 61,
        'B6': 12593511882832878335,
        'B7': -49}}

Вариант №6

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x5a 0x5a 0x4b, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint32
2 int16
3 Массив адресов (uint16) структур B, размер 8
4 int16
5 double
6 Структура C
7 Структура D
8 Размер (uint32) и адрес (uint32) массива float

Структура B:

Поле Описание
1 uint32
2 uint16

Структура C:

Поле Описание
1 double
2 Размер (uint16) и адрес (uint32) массива char

Структура D:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива int8
2 uint32
3 double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'CZZK#\x1b\xa8\xae\x07o\x00L\x00R\x00X\x00^\x00d\x00j\x00p\x00vN;'
 b'\xbf\xc4\xadM\xc1\xd2$\xe0?\xe7\xc4\x14\xb1\xa8tb\x00\x02\x00\x00'
 b'\x00|\x00\x03\x00\x00\x00~\x88\xd2\x9d\xaf?\xe0X8\x16\x93\xb3\xc2'
 b'\x00\x00\x00\x02\x00\x00\x00\x81\xa4\xf6I0\xb9\x88gm\xf8{\x9a\x1do6\xc3\xa2'
 b'\xee\x05\xaf\xd4P\x00\x8a\xc7\xc1\x82\xd7T\xea\xc4.\xfb%\xf5\xe0\x93/\xfff_'
 b'\x9e\xc7\x95\x80\\(\xaa\x11il\xaeG\xda?&N\x07\xbe\x1b\xa58')

Результат разбора:

{'A1': 589015214,
 'A2': 1903,
 'A3': [{'B1': 2767604016, 'B2': 47496},
        {'B1': 1735260283, 'B2': 39453},
        {'B1': 1865860002, 'B2': 60933},
        {'B1': 2949926912, 'B2': 35527},
        {'B1': 3246577492, 'B2': 60100},
        {'B1': 788211189, 'B2': 57491},
        {'B1': 805267039, 'B2': 40647},
        {'B1': 2508217384, 'B2': 43537}],
 'A4': 20027,
 'A5': -0.16153881038579865,
 'A6': {'C1': 0.7426856489070242, 'C2': 'il'},
 'A7': {'D1': [-82, 71, -38], 'D2': 2295504303, 'D3': 0.5107689324337275},
 'A8': [0.6496281027793884, -0.15199744701385498]}

Пример 2

Двоичные данные:

(b'CZZK*\x11\xc0S*\x84\x00L\x00R\x00X\x00^\x00d\x00j\x00p\x00vd9'
 b'\xbf\xe0\xf2\xfa\x82m\x84\x9a?\xe0v\xd5u\x93\x97 \x00\x02\x00\x00'
 b'\x00|\x00\x03\x00\x00\x00~\xfb\xbb]\x91?\xe02\xb5,\x12\xd5j\x00\x00\x00\x02'
 b'\x00\x00\x00\x81M\xba/\xabI\xf0\x11\xce\xfc\xcar\xd9\xfe*\xbb\xbbE\x10\x99r'
 b'\x9bR\xfe\x849\xf4z\xa9@\x800\xf0\xc5(\x9e\x86\xae\x1d\x18\x0eUu^B8\xcad\x86'
 b'okn\xdf\xf9>6D\xa1>\xfa\x1e1')

Результат разбора:

{'A1': 705806419,
 'A2': 10884,
 'A3': [{'B1': 1304047531, 'B2': 18928},
        {'B1': 298777802, 'B2': 29401},
        {'B1': 4264213435, 'B2': 17680},
        {'B1': 2574424914, 'B2': 65156},
        {'B1': 972323497, 'B2': 16512},
        {'B1': 821085480, 'B2': 40582},
        {'B1': 2921142286, 'B2': 21877},
        {'B1': 1581398218, 'B2': 25734}],
 'A4': 25657,
 'A5': -0.5296604678552683,
 'A6': {'C1': 0.5145060821930407, 'C2': 'ok'},
 'A7': {'D1': [110, -33, -7], 'D2': 4223360401, 'D3': 0.5061899052440542},
 'A8': [0.1779961735010147, 0.4885115921497345]}

Вариант №7

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x48 0x47 0x43, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint64
2 Массив адресов (uint32) структур B, размер 4
3 uint16
4 uint32
5 int16
6 Структура C
7 int8
8 uint16

Структура B:

Поле Описание
1 double
2 uint16
3 Размер (uint16) и адрес (uint32) массива char

Структура C:

Поле Описание
1 float
2 float
3 Размер (uint32) и адрес (uint16) массива double
4 Структура D

Структура D:

Поле Описание
1 int64
2 int8
3 uint8
4 Размер (uint32) и адрес (uint32) массива int8
5 uint8
6 uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'CHGC\x07\x90_\xa2\xa2\xe1\xa7\xb0\x00\x00\x00L\x00\x00\x00_\x00\x00\x00r'
 b'\x00\x00\x00\x84\xa0\x0f,\x1d`N\xdd\xf5<8\xdd\x10\xbej\x95\x14'
 b'\x00\x00\x00\x04\x00\x94\xcdP\xfcEB\x88\x8e\x05\x11\xdc\x00\x00\x00\x02'
 b"\x00\x00\x00\xb4z\x98Z\xa2('vv?\xea\x9co=r\xbd\xfa\xa3{\x00\x02\x00\x00\x00J"
 b'bja?\xec7\xf8\xae\xcbV\xd2\xa3\xac\x00\x03\x00\x00\x00\\owz?\xb5B/\xb1o'
 b'Z`\xe9\xdf\x00\x03\x00\x00\x00okv?\xdb-n0_<xca\x00\x02\x00\x00\x00\x82'
 b'\xbf\xdc\xc6B\xfa\x0ee\x1c?\xca\xd6\x1dLL\x08\x90?\xd6\x0e\x98'
 b'\xf0\x12\x8f\xb4?\xe5)M\x17\xe7\xff\xe2\x04\xbf')

Результат разбора:

{'A1': 545040707033868208,
 'A2': [{'B1': 0.8315960121307733, 'B2': 41851, 'B3': 'vv'},
        {'B1': 0.8818324483824773, 'B2': 41900, 'B3': 'bja'},
        {'B1': 0.08304117280872836, 'B2': 59871, 'B3': 'owz'},
        {'B1': 0.42464785312490205, 'B2': 25441, 'B3': 'kv'}],
 'A3': 40975,
 'A4': 740122702,
 'A5': -8715,
 'A6': {'C1': 0.01128317415714264,
        'C2': -0.229084312915802,
        'C3': [-0.4496009294467329,
               0.20965925431670884,
               0.3446409553964671,
               0.6612916438025389],
        'C4': {'D1': -3652141923398283771,
               'D2': 17,
               'D3': 220,
               'D4': [4, -65],
               'D5': 122,
               'D6': 39002}},
 'A7': -94,
 'A8': 10279}

Пример 2

Двоичные данные:

(b'CHGC\x8c\xa0\xff\x11\xf7\xca/k\x00\x00\x00M\x00\x00\x00`\x00\x00\x00r'
 b"\x00\x00\x00\x85\xa9'\xa3\x07\xa1\xf9R9>\x1dy\xf4\xbd\x86c\xf0"
 b'\x00\x00\x00\x05\x00\x95\x03\xef=\xfb\xb9\xee\xd8p\xcc\x83\x00\x00\x00\x03'
 b'\x00\x00\x00\xbd\xcdH\xf1\x0e\xf0\xcambs?\xe9z\xa2\xb1\xb3\xb6'
 b'\xc2\xd5\xe8\x00\x03\x00\x00\x00Jvfg?\xe5P\xcc\xce\x8f\xcc\xaaR\xfe\x00\x03'
 b'\x00\x00\x00]zg\xbf\xea\xcd}\xac\xf8\xbax#q\x00\x02\x00\x00\x00pfky?\xeb\xaf'
 b'KD^\x87\x92-n\x00\x03\x00\x00\x00\x82\xbf\xd1\xdcl\xce\xc35\x94?\xcb\x9f'
 b'q\x14\xad\xac`\xbf\xe4U\x91\x08\x8d\x80\x94?\xe8\xfd\xbc\xee\xa8\xa0'
 b'\xfc\xbf\xee\xb6o\xe1\t\x90\xd8\x9aW\xe6')

Результат разбора:

{'A1': 10133379614220365675,
 'A2': [{'B1': 0.796220156740411, 'B2': 54760, 'B3': 'mbs'},
        {'B1': 0.666113284531453, 'B2': 21246, 'B3': 'vfg'},
        {'B1': -0.8375843408919783, 'B2': 9073, 'B3': 'zg'},
        {'B1': 0.8651481948220285, 'B2': 11630, 'B3': 'fky'}],
 'A3': 43303,
 'A4': 2735186425,
 'A5': 21049,
 'A6': {'C1': 0.15378552675247192,
        'C2': -0.0656203031539917,
        'C3': [-0.2790786761441606,
               0.21580327520072995,
               -0.6354451338811651,
               0.780973878984724,
               -0.9597701449643194],
        'C4': {'D1': 283513452913154160,
               'D2': -52,
               'D3': 131,
               'D4': [-102, 87, -26],
               'D5': 205,
               'D6': 18673}},
 'A7': 14,
 'A8': 61642}

Вариант №8

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x4f 0x4a 0x4f, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int64
2 Массив структур B, размер 3
3 uint16
4 Адрес (uint16) структуры C
5 Адрес (uint16) структуры D

Структура B:

Поле Описание
1 double
2 Массив char, размер 5
3 int32
4 uint64

Структура C:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива int16
2 double
3 uint8
4 uint32

Структура D:

Поле Описание
1 uint32
2 double
3 uint8
4 Массив uint16, размер 7

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'NOJO\xf6\xf2\xa02MED\xcc\xaaR\xdb\x83\nl\xe3\xbfyoemi%\x01D\\,\x81B'
 b'\x0f\x99\xb7\xe4\x0fpx\x8e\x8fr\xb4\xd8?nffsa\xb6N\xd1\x1f\xf2\xc7'
 b'\x05S\xb5\xe7q\xbb\xc0\x1b\xa9\x99\xc4\xad\x9e\xbfvusxuF\x8c\xc7\xa0\x05'
 b'~\x0b\x0c\x0eD\xf5`P\xe0e\x00x\x00KJ\xe8\xc9\x1b\x1f\xebB\x04\x00]'
 b'\x00\x00\x00\xaa\xaa\xf6\x00cW\xe5\xbf\xc0e\x91\x7f6\x12\xf3_\x7f\xe4a/\xef'
 b'\xda \xdc?\x07\xf9\x8bC\xa0\x02v\xb3\xb2\xc3\xa4c\x91\x02\x8d')

Результат разбора:

{'A1': -3727778393691720970,
 'A2': [{'B1': -0.6069386077238808,
         'B2': 'yoemi',
         'B3': 1547960613,
         'B4': 1145242073272844588},
        {'B1': 0.38601364154045026,
         'B2': 'nffsa',
         'B3': 533810870,
         'B4': 13506831523428812786},
        {'B1': -0.029959747198770037,
         'B2': 'vusxu',
         'B3': -1597535162,
         'B4': 6986565224057503237}],
 'A3': 57424,
 'A4': {'C1': [19019, -13848, 7963, 17131],
        'C2': -0.6669173258608982,
        'C3': 192,
        'C4': 914329957},
 'A5': {'D1': 2136994578,
        'D2': 0.4395053230087156,
        'D3': 7,
        'D4': [35833, 41027, 30210, 45747, 42179, 37219, 36098]}}

Пример 2

Двоичные данные:

(b'NOJO\x82F \x0b\xa3\xb6\nf\xc0\xc2\xcf\xe4\xd2\xc6\xd6\xbfuqlbh.#\x1a'
 b'\x1br\xba\x9aU\x94\x82\xa4\x19\xee\xbe\x1ch\xda\x05\xea?msmyf\xbeu\x0b*>:'
 b"Q'\x0b+\x84\x008x\x85\x1aE\xb1\xe9?nyqhs:\xc2\x89\x93\x1fJ5p\xe33\x1fB)"
 b'\xb7c\x00v\x00k\xa9%\x1c\xf0\x13\x03\x00]\x00\x00\x00\xfc@?5\x03\xbb\xec'
 b'\xbf\x7f\xfdu\x18\x9f\x1b!s\x02@vi\xacn-\xa7\xbf\xd6\xbai\xcc\x85\xd4'
 b'\x9c\xacc\x97A\x175\xda]')

Результат разбора:

{'A1': 7352890153018345090,
 'A2': [{'B1': -0.3558852419364875,
         'B2': 'uqlbh',
         'B3': 454697774,
         'B4': 1847745320731720306},
        {'B1': 0.8132144959872372,
         'B2': 'msmyf',
         'B3': 705394110,
         'B4': 37202023830075966},
        {'B1': 0.8028893964763091,
         'B2': 'nyqhs',
         'B3': -1819688390,
         'B4': 4764583982714407455}],
 'A3': 46889,
 'A4': {'C1': [-22165, 7205, 5104],
        'C2': -0.8978286781293998,
        'C3': 127,
        'C4': 2669180413},
 'A5': {'D1': 41099547,
        'D2': -0.04526849608076278,
        'D3': 214,
        'D4': [27066, 34252, 40148, 25516, 16791, 13591, 24026]}}

Вариант №9

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xcc 0x59 0x4d 0x57, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива char
2 Структура B

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива структур C
2 uint8
3 Адрес (uint16) структуры D

Структура C:

Поле Описание
1 uint64
2 int8

Структура D:

Поле Описание
1 int16
2 Массив uint16, размер 2
3 uint16
4 uint64
5 Массив int32, размер 8
6 uint16
7 Массив int64, размер 3

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xccYMW\x00\x02\x00\x00\x00\x15\x00\x00\x00\x07\x00\x00\x00\x17\xbc\x00'
 b'Vla\x91M8-w}\xd4bT~\x1e=\xf36\x12\xc7F\x82X\x80\x1ags\xe7U\xbf\xda\x07\xdb'
 b'\xc6\xb9\xf8\xa8\xc3\xcbx\xfb\x9fN\x1f\xda\x87\xc9\xc9ES\x90\r\x94'
 b'\xa8\xc8\x1b\x9c[T\x86>voo\x9ea{\xab\xf9\xfb\xbaIQ\xfeT\x0b7\rQ\x96\xbf'
 b'\xfe6\x89\x05\n\xa4\xe0{\x14\xeb\xa5`]\xdf\x92\x81\xe0\x86\xeb\x97'
 b'\x0b\x7f\x90G\xebI\xcc=$\xab\xc8\xe75\xa1+,\xa0x\x8f\xb56\x89;\xd8q\xd5r\x97'
 b'\x0f\xe5\x93\xf5i2\xdc\x18\x7f\xbcq\xad')

Результат разбора:

{'A1': 'la',
 'A2': {'B1': [{'C1': 10470086476635690082, 'C2': 84},
               {'C1': 9087769212873787206, 'C2': -126},
               {'C1': 6377126103985116607, 'C2': -38},
               {'C1': 566264680208188363, 'C2': 120},
               {'C1': 18131296523534191049, 'C2': 69},
               {'C1': 6021327633932360604, 'C2': 91},
               {'C1': 6090624224461823585, 'C2': 123}],
        'B2': 188,
        'B3': {'D1': -21511,
               'D2': [64442, 18769],
               'D3': 65108,
               'D4': 808129302208970294,
               'D5': [-1996158300,
                      -528804629,
                      -1520411169,
                      -1836982138,
                      -342422657,
                      -1874334903,
                      -868408149,
                      -924371551],
               'D6': 11052,
               'D7': [-6883594021968987176,
                      8202588289457558517,
                      7580363120598348205]}}}

Пример 2

Двоичные данные:

(b'\xccYMW\x00\x02\x00\x00\x00\x15\x00\x00\x00\x08\x00\x00\x00\x17\xef\x00_iu\t'
 b'O\xe0\xc9\xcfD\x827\xedK{\ncZk\x00\xa8\xae\xce;8\xbfp\xc0&\xce\xdf\xbeC'
 b'\xda[t\x01\xd08\xa1\x16\x05\x0f.\x89\x94\xab\x95;\xd3JU\xb7\xba\x82\x14\xc4'
 b'\xa1\xf8M.\xcc\t}\xc3\xc4\xab"eC+S\'Z\x80\xec4E\x9auKX"~\xaaI\x14Q\x98'
 b'\x11/px\xf2x\x1d\xdf\xaa\xcf\x9d&\x8c\xaep\xbb\xd2\xf9y{fR\xdf"\xc2\'\'\x00'
 b'\x83\xb9\x91\x1crV\xa4<\x91\xf1_\x8c\xf85Er\xe4\xb1\xb3\x0b\xc3\xd6\xdd\x12'
 b'\x97\xb4>\x0c\xd6ns\x1a\x86')

Результат разбора:

{'A1': 'iu',
 'A2': {'B1': [{'C1': 671002026871915063, 'C2': -19},
               {'C1': 5438952396815007912, 'C2': -82},
               {'C1': 14860533790320633550, 'C2': -33},
               {'C1': 13710041776969076792, 'C2': -95},
               {'C1': 1586691136269101973, 'C2': 59},
               {'C1': 15225075737875846340, 'C2': -95},
               {'C1': 17892008348480291780, 'C2': -85},
               {'C1': 2478461023295068800, 'C2': -20}],
        'B2': 239,
        'B3': {'D1': 13381,
               'D2': [39541, 19288],
               'D3': 8830,
               'D4': 12270361000423796592,
               'D5': [2029156381,
                      -542453859,
                      646753904,
                      -1143801479,
                      2070303455,
                      583149351,
                      8632721,
                      477255332],
               'D6': 15505,
               'D7': [-1053968790107884828,
                      -5642152972413758825,
                      -5458911583210890618]}}}

Вариант №10

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x50 0x4a 0xfe, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 Размер (uint32) и адрес (uint32) массива char
3 int32
4 Массив структур D, размер 5
5 int64
6 int64
7 float

Структура B:

Поле Описание
1 Структура C
2 int16

Структура C:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива char
2 int8
3 int8
4 int32
5 int32
6 uint64
7 int32

Структура D:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива uint8
2 Размер (uint32) и адрес (uint16) массива uint8
3 int32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'DPJ\xfe\x00\x00\x00\x05\x00\x00\x00\x8a\x8e\x1c\x98\x93wV\xb2\xce!g\x91\xd2'
 b'\x86[\xc8\x9a\x10\xf566|}A\xab\x00\x00\x00\x02\x00\x00\x00\x8f'
 b'\xb1\xf4\x14\x9d\x00\x03\x00\x91\x00\x00\x00\x03\x00\x94\x0c\xf5'
 b'\x91\x12\x00\x04\x00\x97\x00\x00\x00\x02\x00\x9b\xfa\xc2\xc0U'
 b'\x00\x04\x00\x9d\x00\x00\x00\x03\x00\xa1h\x06sw\x00\x04\x00\xa4\x00\x00'
 b'\x00\x03\x00\xa8V=\xfb\x94\x00\x03\x00\xab\x00\x00\x00\x03\x00\xae\x02X'
 b'!n\x1d\xe6\xaaG\x1aw\x9c\xc1\xff\xa7\xb6\xab?J8D?h*qvgiaysn\xa5\x96\x92'
 b'\x18\n\xd5,\xe9\x15}\xb7\x04\x18\xf9\xb6q\x1f\x8d\\%\x11L\x13\xb6\x1bI\x0e'
 b'\xe3\xa6\xf6)d')

Результат разбора:

{'A1': {'B1': {'C1': 'vgiay',
               'C2': -114,
               'C3': 28,
               'C4': -1735166122,
               'C5': -1295113881,
               'C6': 10507608609374474485,
               'C7': 909540477},
        'B2': 16811},
 'A2': 'sn',
 'A3': -1309404003,
 'A4': [{'D1': [165, 150, 146], 'D2': [24, 10, 213], 'D3': 217420050},
        {'D1': [44, 233, 21, 125], 'D2': [183, 4], 'D3': -87900075},
        {'D1': [24, 249, 182, 113], 'D2': [31, 141, 92], 'D3': 1745253239},
        {'D1': [37, 17, 76, 19], 'D2': [182, 27, 73], 'D3': 1446902676},
        {'D1': [14, 227, 166], 'D2': [246, 41, 100], 'D3': 39330158}],
 'A5': 2154596694106807489,
 'A6': -24850426309756860,
 'A7': 0.9068976044654846}

Пример 2

Двоичные данные:

(b'DPJ\xfe\x00\x00\x00\x06\x00\x00\x00\x8a:\x89\x1f\x0c\\Wr\x90S\x84p\xcb'
 b'\x9c\x94#\xa8\xdf\xb2\x9d\x9f\xa3\xff\xac_\x00\x00\x00\x02\x00\x00\x00\x90'
 b'hP\x81\xf6\x00\x03\x00\x92\x00\x00\x00\x02\x00\x95#\xc4\x05\x1b\x00\x03'
 b'\x00\x97\x00\x00\x00\x02\x00\x9a\xb7\xf7Dw\x00\x04\x00\x9c\x00\x00\x00\x03'
 b'\x00\xa0\xac\x7f\xd1\xc4\x00\x03\x00\xa3\x00\x00\x00\x02\x00\xa6'
 b'\xb1\xab\xb19\x00\x02\x00\xa8\x00\x00\x00\x03\x00\xaa\x12\xd7'
 b'\x9d\xfe\xbc\x11b\x973\x135\xad\xf10\xdc=\x8d\x94fh>\xcf\x95\xc3gxfvzk'
 b'ws\xc2\x8d\xf2\xec\x89\x88\x7f]\x7f\xb3Z\xd8+v\x12l\x1c\xc1\xe0\xc4Wt'
 b'\x89\xe5\x8f\x8d\xe3')

Результат разбора:

{'A1': {'B1': {'C1': 'gxfvzk',
               'C2': 58,
               'C3': -119,
               'C4': 520903767,
               'C5': 1922061188,
               'C6': 8127762112587554738,
               'C7': -1650482177},
        'B2': -21409},
 'A2': 'ws',
 'A3': 1750106614,
 'A4': [{'D1': [194, 141, 242], 'D2': [236, 137], 'D3': 600048923},
        {'D1': [136, 127, 93], 'D2': [127, 179], 'D3': -1208531849},
        {'D1': [90, 216, 43, 118], 'D2': [18, 108, 28], 'D3': -1400909372},
        {'D1': [193, 224, 196], 'D2': [87, 116], 'D3': -1314148039},
        {'D1': [137, 229], 'D2': [143, 141, 227], 'D3': 316120574}],
 'A5': -4895022918438537811,
 'A6': -1067110954760378776,
 'A7': 0.40543946623802185}

Вариант №11

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x52 0x48 0xd1, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint32) структуры B
2 Размер (uint32) и адрес (uint16) массива uint32

Структура B:

Поле Описание
1 Структура C
2 Массив структур D, размер 4

Структура C:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива char
2 int64
3 float

Структура D:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива uint64
2 float

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'URH\xd1X\x00\x00\x00\x06\x00\x00\x00\x92\x00ap\xbf\xcd\xf6\xe5F\rdi'
 b'\xc0z\xf1\xa5\x0eH\x04\xf0\x08\xba\xc9\xd5\xa4`\x89\x1f$W\x18\xb0'
 b'\x05\x83w\xf7\xd0 =\x97\xce\xd1\xd3]2\x87A\x11^V\xadO\xb0\xd9\xed\x9e'
 b'Q.\x06\xb3Oi4W\x9c\xbad\xf6\x1a\x18e\x01\xeb\xfahL\x02\x00\x00\x00'
 b'\x0e\x00%\xd6\xb3\xa5\x0c\x03\x8c\xa5\xa3\xa4\xb6\xbc\x03\x00'
 b'\x10\x00\x00\x00\xd3\xf0\xcd\xbe\x02\x00(\x00\x00\x00\x15\x9f\x12>\x02\x00'
 b'8\x00\x00\x00\xb98\t?\x02\x00H\x00\x00\x00\xb3\xd8\x9d\xbd\xa8XB\x16\x81\x96'
 b'\xc6_t!RU\xef!:\xf2\xd9\x05\x16u\xff\xe6\x16N')

Результат разбора:

{'A1': {'B1': {'C1': 'ap',
               'C2': -6517831207857433051,
               'C3': -0.022295301780104637},
        'B2': [{'D1': [7594209469810527679,
                       17295027696760355520,
                       2272453748062796296],
                'D2': -0.4022279679775238},
               {'D1': [17831865310049228580, 6760978150844080336],
                'D2': 0.14318497478961945},
               {'D1': [5741340061983672114, 12900049110742981040],
                'D2': 0.5360217690467834},
               {'D1': [17754520811642054991, 5505926431708092442],
                'D2': -0.07707347720861435}]},
 'A2': [373446824, 1606850177, 1431445876, 4063896047, 1964377561, 1310123775]}

Пример 2

Двоичные данные:

(b'URH\xd1`\x00\x00\x00\x06\x00\x00\x00\x9a\x00jt\xa1\xf4w]\xb9ggqp\xf64\xce'
 b'\xf6\x80w\xf7\x98t\x1bM?p\\\x822Q\xf7\xff=\x9d3\r\x88\x86\xd9ev\xb3\x88k'
 b'\\\xdc\x01\x00p\xe9\x1e\xda\xa4\xc9#mj:M\x08\xe3\xac@\x82G\xe7\x1dE'
 b'o\x9c\xedn5\xe1\xbb?\x897\x1a\x13\x05\xe5\xb0\x8a\x02\x00\x00\x00\x0e\x00$j'
 b'J;\xd2$H!\xcc\x0b\x05\xbf\x03\x00\x10\x00\x00\x00s\xf5]\xbf\x03\x00(\x00'
 b"\x00\x00'\xb1/?\x02\x00@\x00\x00\x00\xbfbR?\x02\x00P\x00\x00\x00C5\xdd>\x1cV"
 b'\x10mo\xf6*\xeeT\t\xdb\xfdf\x81\x84@K\xf4\x83\xc9\x04*\xe0\xf9')

Результат разбора:

{'A1': {'B1': {'C1': 'jt',
               'C2': 2398207286931253796,
               'C3': -0.5197112560272217},
        'B2': [{'D1': [8171614094721807521,
                       17831863047106655856,
                       9393506339966907544],
                'D2': -0.8670265078544617},
               {'D1': [951276835918270770,
                       7748640479987205768,
                       15717256416815340636],
                'D2': 0.6862968802452087},
               {'D1': [598198554282150308, 4980391057255607523],
                'D2': 0.8218192458152771},
               {'D1': [4592511864644934767, 9993739383093213065],
                'D2': 0.4320469796657562}]},
 'A2': [1829787164, 3995793007, 4258990420, 1082425702, 3380868171, 4192217604]}

Вариант №12

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x50 0x57, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint8
2 uint64
3 uint32
4 Структура B
5 Структура D
6 int8
7 uint8
8 int32

Структура B:

Поле Описание
1 int16
2 uint16
3 Массив структур C, размер 6
4 Размер (uint32) и адрес (uint16) массива float

Структура C:

Поле Описание
1 uint16
2 uint32
3 uint16
4 uint32

Структура D:

Поле Описание
1 Адрес (uint32) структуры E
2 int16
3 Размер (uint16) и адрес (uint32) массива uint8
4 Массив uint32, размер 2

Структура E:

Поле Описание
1 uint8
2 Массив uint8, размер 7
3 int16
4 int16
5 int32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'NPW\xeb\xcbWo4\xbe\xb56\xb6%\x02\x1e\x12\xdf\x9cy\xea\x12r^U\xd4\x83]\x1b'
 b'\xb85\xd1\xf6\xd7\x89{jU\xca\xed\x8e\x9c>s\x95\xe9\xf4\x93EvW\x15u\xfaBI\xb6'
 b'M\tEc\xf2S\x81@\xfd\x1a\tG5\x0fO\x95.\x07di\xeaY\x057\xde\ti\x9a'
 b'\x8b\x8e\x1d\xf6\xfa:\xc0_\x03\x00\x00\x00|\x00\x88\x00\x00\x00;\x0c'
 b'\x06\x00\x98\x00\x00\x00W\xadF\xeaj\xfc\xcb\xa7\xd4\x11\xc3O\x84\x9b'
 b"\x81\xa0\x9f\xbe\xc5\x00\x1e\xbff\xf9%?\xab\xac_\xc7\x9b\xd3q\x97Lm\xe4'"
 b'\xb0\x02p\x82\x94\xeaD\xf0\xec\\')

Результат разбора:

{'A1': 235,
 'A2': 13129881592173385675,
 'A3': 303956517,
 'A4': {'B1': -25377,
        'B2': 60025,
        'B3': [{'C1': 29202, 'C2': 2211730782, 'C3': 7005, 'C4': 4140905912},
               {'C1': 35287, 'C2': 3394595451, 'C3': 36589, 'C4': 2507357852},
               {'C1': 62697, 'C2': 1467368851, 'C3': 29973, 'C4': 3058254586},
               {'C1': 2381, 'C2': 1408394053, 'C3': 16513, 'C4': 1191779069},
               {'C1': 3893, 'C2': 120493391, 'C3': 26980, 'C4': 923097578},
               {'C1': 2526, 'C2': 2391513705, 'C3': 63005, 'C4': 1606433530}],
        'B4': [-0.311771422624588, -0.6171992421150208, 0.6483367681503296]},
 'A5': {'D1': {'E1': 171,
               'E2': [172, 95, 199, 155, 211, 113, 151],
               'E3': 27980,
               'E4': 10212,
               'E5': -2106588496},
        'D2': 3131,
        'D3': [148, 234, 68, 240, 236, 92],
        'D4': [3930500439, 2815163498]},
 'A6': -44,
 'A7': 17,
 'A8': -1685827645}

Пример 2

Двоичные данные:

(b"NPW(\xfd\xfb\xb0\x99g0f\xbc\x9d\x9cW\xf1N\xc0\x19\t\xa6'\xd9Fx\xb0\x88\x93"
 b' $O\xf3\x81h\x83\x81\xed\xd2;\xf3/\x13$l?3Y\x01u/\xc7Y\r\xbbh\xfa'
 b'\t\xac\xe6\xd2\xd2\xe2\x02\xee\xb1.\xf15\x18\xcd\x17\xa8\xed\xff\x92\xdd'
 b"\xcf\x8f6\xd6\xfe\x05f\xc3\xf0L\xdd\x02'\x99\xd4\xe3\x06\x00\x00\x00"
 b'|\x00\x94\x00\x00\x00\x84\x93\x07\x00\xa4\x00\x00\x00\x9c!\xe9[\x14\xb4'
 b'L\xb5j\xa9\xe0\x00\xea?*\xca\t\xbf\xc8v\x9d=\xc6!F\xbe\x83+\xfd>l\xb9\x9c>'
 b't\xc2j>\xb7\xadr\xb9V\xb5x\xfea\xf42%4\xe8\xf8\xf9\xd7.1\x0cIn1')

Результат разбора:

{'A1': 40,
 'A2': 13575591348273216509,
 'A3': 4049050781,
 'A4': {'B1': -16306,
        'B2': 2329,
        'B3': [{'C1': 10150, 'C2': 2960672473, 'C3': 37768, 'C4': 4082050080},
               {'C1': 26753, 'C2': 3538780547, 'C3': 62267, 'C4': 1814303535},
               {'C1': 13119, 'C2': 796197209, 'C3': 22983, 'C4': 4201167629},
               {'C1': 44041, 'C2': 3805467366, 'C3': 60930, 'C4': 904998577},
               {'C1': 52504, 'C2': 4293765143, 'C3': 56722, 'C4': 3593899983},
               {'C1': 1534, 'C2': 1290847078, 'C3': 733, 'C4': 3822360871}],
        'B4': [-0.5382410287857056,
               0.07688671350479126,
               -0.193488210439682,
               0.49447259306907654,
               0.3061021566390991,
               0.22925740480422974]},
 'A5': {'D1': {'E1': 183,
               'E2': [173, 114, 185, 86, 181, 120, 254],
               'E3': -2975,
               'E4': 9522,
               'E5': -101128140},
        'D2': -27772,
        'D3': [215, 46, 49, 12, 73, 110, 49],
        'D4': [1542005148, 3041702932]},
 'A6': 106,
 'A7': 169,
 'A8': 1072300256}

Вариант №13

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x50 0x5a, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint32
2 int8
3 Адрес (uint16) структуры B
4 int16
5 Структура E

Структура B:

Поле Описание
1 Структура C
2 int16
3 uint8
4 uint64
5 float
6 Размер (uint16) и адрес (uint16) массива double

Структура C:

Поле Описание
1 float
2 Размер (uint16) и адрес (uint32) массива адресов (uint32) структур D

Структура D:

Поле Описание
1 double
2 int16
3 Размер (uint32) и адрес (uint32) массива uint8

Структура E:

Поле Описание
1 uint32
2 Массив int16, размер 6
3 int8
4 int16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'RPZ\xc3\x8f\x92\x99\x80\x00b)(A\xcb\xe9\x90$\x1e|@=\xbd?\xdfmOX\x1d'
 b'\xfeK~\xe7\xce\xdf?\xef\\ \xbb\xe2\x08\xa0u0\x00\x00\x00\x03\x00\x00\x00\x1f'
 b'|\x96Z<?\xe5\xcf\x7f\xa7\xb8\x83\xbc\x01\xad\x00\x00\x00\x04\x00\x00'
 b'\x004\x00\x00\x00"\x00\x00\x008?\xee\x84\xc7$:\xde\x90?\x9e\x1a\x1c\xe8\xf9'
 b'\x82@?\x03\xb1+\x00\x02\x00\x00\x00J\x8ab-\xa6\xc1\x9f\x17&}<\xe5?'
 b'y\xe2\x8d\x00\x02\x00R')

Результат разбора:

{'A1': 3280966297,
 'A2': -128,
 'A3': {'B1': {'C1': 0.5144221186637878,
               'C2': [{'D1': 0.979996077498317,
                       'D2': 30000,
                       'D3': [231, 206, 223]},
                      {'D1': 0.681579425410852,
                       'D2': 429,
                       'D3': [124, 150, 90, 60]}]},
        'B2': -30110,
        'B3': 45,
        'B4': 12016060202579999973,
        'B5': 0.9761131405830383,
        'B6': [0.9537082393280389, 0.02939648792232874]},
 'A4': 10536,
 'A5': {'E1': 1103882640,
        'E2': [9246, 31808, 15805, 16351, 27983, 22557],
        'E3': -2,
        'E4': 19326}}

Пример 2

Двоичные данные:

(b'RPZo\x0b\xfb\nS\x00o\x83\x8f:Kx\x0eRV\xe0:\xb3f\xa6\x14\x12\xa0\xa3X'
 b"?3\xa2\xfffM\xa2\xfd\x95\x8d?\xd8\x15\x9a'\xab,\\9\xb1\x00\x00\x00\x07"
 b'\x00\x00\x00\x1f}\xc0\xf0\x9dQ?\xdf\x99\xdd\xbb\xdb\r\xdc)\x12\x00'
 b'\x00\x00\x05\x00\x00\x008\x00\x00\x00&\x00\x00\x00=?\xd7\xa1\xa0\x8b'
 b'\x19\xc8$\xbf\xe2R\t\xe2\xc8\x02\x8c\xbf\xe3\x18\x0b\xd8\xcc\xb9~\xbf'
 b'\x11jv\x00\x02\x00\x00\x00Oq\xad\xf7\xa1\xa4\xb4\xea\xc0a2\xa7'
 b'\xbf\x00\xd4\x07\x00\x03\x00W')

Результат разбора:

{'A1': 1863056138,
 'A2': 83,
 'A3': {'B1': {'C1': -0.5680307149887085,
               'C2': [{'D1': 0.3763184916867368,
                       'D2': 14769,
                       'D3': [255, 102, 77, 162, 253, 149, 141]},
                      {'D1': 0.4937662443664672,
                       'D2': 10514,
                       'D3': [125, 192, 240, 157, 81]}]},
        'B2': 29101,
        'B3': 247,
        'B4': 11647633456629887655,
        'B5': -0.5032352805137634,
        'B6': [0.36923993667653776, -0.5725144795724915, -0.5966853365296598]},
 'A4': -31857,
 'A5': {'E1': 978024462,
        'E2': [21078, -8134, -19610, -23020, 4768, -23720],
        'E3': 63,
        'E4': 13218}}

Вариант №14

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xef 0x58 0x53 0x51 0x42, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint16) структуры B
2 int16
3 uint8
4 uint64
5 double
6 Адрес (uint16) структуры E

Структура B:

Поле Описание
1 int32
2 Адрес (uint32) структуры C
3 double

Структура C:

Поле Описание
1 uint16
2 int32
3 float
4 float
5 Размер (uint16) и адрес (uint16) массива структур D

Структура D:

Поле Описание
1 Массив uint8, размер 4
2 uint8
3 double

Структура E:

Поле Описание
1 int16
2 Размер (uint16) и адрес (uint32) массива int8
3 uint32
4 int64
5 Массив uint16, размер 4

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xefXSQBU\x00$\xa6\xf6\xf9\xd0\xd0W\x96)\x93\xa7\x08\x85\xb5\x0cw\xbd'
 b'\xcd?j\x00m%\x1e@%\x16\xdbv\x92\xdez\xe1\xbf\xa4\x0e\xffy\xa4\xe8\x90'
 b'\x1e3\xda\xc8\xdb\xbf\xdc\xf6+N\x90\\\xbd\xcf\x00\xff\xef\xd8\xbf&6=t-'
 b'8\xbb6F\xbdE \xba=\x03\x00\x1c\x00n\x07\x05\x0bC\x00\x00\x00\x0ek\xfc'
 b'\x8c\x86\x04\xea\xbf\x8aZ\xda\x06UQo\x05\x00e\x00\x00\x00\xe1\xc4\xaf3Y\xc0'
 b"\xf8#,-s\xf8\xe3\x161'\x9d8\x14\xa8")

Результат разбора:

{'A1': {'B1': 184878958,
        'B2': {'C1': 13862,
               'C2': 942502973,
               'C3': -0.04839203879237175,
               'C4': 0.09088186174631119,
               'C5': [{'D1': [109, 37, 30, 64],
                       'D2': 37,
                       'D3': -0.5462487087851027},
                      {'D1': [164, 14, 255, 121],
                       'D2': 164,
                       'D3': -0.43413405410889405},
                      {'D1': [220, 246, 43, 78],
                       'D2': 144,
                       'D3': -0.38964819983717347}]},
        'B3': -0.8130524400361041},
 'A2': -23004,
 'A3': 246,
 'A4': 12075040751605567737,
 'A5': 0.23234451408919932,
 'A6': {'E1': 28497,
        'E2': [-118, 90, -38, 6, 85],
        'E3': 867157217,
        'E4': -544041462376382375,
        'E5': [5859, 10033, 14493, 43028]}}

Пример 2

Двоичные данные:

(b'\xefXSQBb\x00\x93^4 \t\x14\x9cU%I\x94\xecd;1l\xaf\xed\xbfu\x00\x9ao\x1c\xcb'
 b'W\xa0J\xf3z\x12[\xc4\xbf\x0fi\x1c\tw\x94\xe2\x1d\xe6\xc3P\xd5?c\x0f'
 b"\x97$\xadp2\x80\x85#\x19\xb8\xbf'\x0c\xaf\x1b`\xf4c\xdcL\x1d\x05\xd6?"
 b'?\xde\x05\x88\xf3B\x82D\x06?\xfe%\xdc>\x04\x00\x1c\x00\xe9\x11TUP\x00'
 b'\x00\x00\xd0`\xd7\x99\xed\x04\xb9\xbf\xca\xee\xf6\xa2\x05\x03\x00r\x00\x00'
 b'\x00\xa3\x93n\x9f\xfcdc\x8f\x88\x1d\xed\xd5\x08\x8f=\xda\xab\x04\x01\r')

Результат разбора:

{'A1': {'B1': 1431572969,
        'B2': {'C1': 56895,
               'C2': 1123256325,
               'C3': 0.5244828462600708,
               'C4': 0.4299773573875427,
               'C5': [{'D1': [154, 111, 28, 203],
                       'D2': 87,
                       'D3': -0.15902930262980863},
                      {'D1': [15, 105, 28, 9],
                       'D2': 119,
                       'D3': 0.3330545184358382},
                      {'D1': [99, 15, 151, 36],
                       'D2': 173,
                       'D3': -0.09413358697219976},
                      {'D1': [39, 12, 175, 27],
                       'D2': 96,
                       'D3': 0.3440621615023354}]},
        'B3': -0.09773144727603555},
 'A2': 24211,
 'A3': 52,
 'A4': 10685112640534219040,
 'A5': -0.9276638948023481,
 'A6': {'E1': 1442,
        'E2': [-54, -18, -10],
        'E3': 2674824099,
        'E4': -3031734501792062212,
        'E5': [36616, 55869, 1195, 3329]}}

Вариант №15

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x50 0x41 0x49, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива адресов (uint32) структур B
2 uint8
3 Адрес (uint32) структуры C
4 uint16
5 float

Структура B:

Поле Описание
1 int16
2 Размер (uint32) и адрес (uint16) массива char
3 double

Структура C:

Поле Описание
1 Структура D
2 Размер (uint16) и адрес (uint32) массива float
3 int8
4 int64
5 uint8
6 Размер (uint32) и адрес (uint32) массива int32

Структура D:

Поле Описание
1 uint64
2 uint64
3 Размер (uint16) и адрес (uint32) массива int16
4 float
5 uint32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'UPAI\x00\x00\x00\x03\x00O\xb5\x00\x00\x00\x87\xb2<>6\xa4\xbdeyjmbl\xc4'
 b'\x07\x00\x00\x00\x06\x00\x15?\xcc\xf5\\\xddG\x97\xb8ag\xa8\xa8\x00'
 b'\x00\x00\x02\x00+\xbf\xe7M5\xaf\nW\xd8zz\xba\x89\x00\x00\x00\x02\x00=?'
 b'\xc6o\x8b\xb0\x90h \x00\x00\x00\x1b\x00\x00\x00-\x00\x00\x00?\xf9'
 b'\x83\xa0\xba\xf9j\xf5\rd\x91\x82\xa9>\xb2\x8a\x92?v\xce\xbf\xbf\x17\xdeG?'
 b'17\x1f\xbfo%\xe2{Y\xf8.^\xc8\xb9\xcb\xd9\xb8\xb6\xbb\xf4\x9d\x0f\x91r'
 b'\xfb\x90\xea\xc6t\n\xf8\xfc\xae`\x9a\x00\x06\x00\x00\x00[>\x8fj'
 b'\x07\xaf\x8e\x1d\xf7\x00\x05\x00\x00\x00g\xcc\xf1\x86\x97\xde\xf2$O\x90'
 b'\xd6\x00\x00\x00\x03\x00\x00\x00{')

Результат разбора:

{'A1': [{'B1': -15353, 'B2': 'eyjmbl', 'B3': 0.22623787693663444},
        {'B1': -22360, 'B2': 'ag', 'B3': -0.7281750124700421},
        {'B1': -17783, 'B2': 'zz', 'B3': 0.17527910348218345}],
 'A2': 181,
 'A3': {'C1': {'D1': 17626261633971753194,
               'D2': 14300066781315621018,
               'D3': [-1661, -24390, -1686, -2803, 25745, -32087],
               'D4': 0.2801057994365692,
               'D5': 2945326583},
        'C2': [0.3487134575843811,
               0.9640921950340271,
               -0.593235433101654,
               0.6922473311424255,
               -0.9341717958450317],
        'C3': -52,
        'C4': -1042979279888691312,
        'C5': 214,
        'C6': [2069493806, 1590213067, -642206021]},
 'A4': 45628,
 'A5': 0.17836280167102814}

Пример 2

Двоичные данные:

(b'UPAI\x00\x00\x00\x02\x00=\xfa\x00\x00\x00o}\x87\xbfp\xb4\xa8fab\r7\x00\x00'
 b'\x00\x03\x00\x15\xbf\xcbU\xbb\xb4\xcd\xb9\xa8kllfk\x8d\x0f\x00'
 b'\x00\x00\x05\x00(\xbf\xbd\x81\x9b\xf3kQ\xd0\x00\x00\x00\x18\x00\x00\x00'
 b'-\x16\xcf\xe6\x1bJr?aw\xde\xbf\x1b\xaf9>\x8f\x97\xec?\x10\x89B?j\xc0h\xbe'
 b'\xecm.\x95NYB\xf8=M\x05\xa3\xc7\x0cy\xe0\x8a\x04?\xb0\xe4\xb2rC|\xe2\x91\xdd'
 b'\xa8\xe8\x92\x00\x03\x00\x00\x00E?Z\xed\x95[M\x0f\x86\x00\x06\x00'
 b'\x00\x00K\x14K\xdar\xb4\xbe\xe8\xe1\\\xd7\x00\x00\x00\x03\x00\x00\x00c')

Результат разбора:

{'A1': [{'B1': 3383, 'B2': 'fab', 'B3': -0.2135538704710147},
        {'B1': -29425, 'B2': 'kllfk', 'B3': -0.11525892918445568}],
 'A2': 250,
 'A3': {'C1': {'D1': 16179749282879156850,
               'D2': 4863010813770262674,
               'D3': [5839, -6629, 19058],
               'D4': 0.855187714099884,
               'D5': 1531776902},
        'C2': [0.8807352781295776,
               -0.6081424355506897,
               0.28045594692230225,
               0.5645943880081177,
               0.9169983863830566,
               -0.4617704749107361],
        'C3': 20,
        'C4': 5465807218390131036,
        'C5': 215,
        'C6': [-1790027454, -130200315, -1547236231]},
 'A4': 32135,
 'A5': -0.9402565956115723}

Вариант №16

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x4d 0x53 0x43, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint16) структуры B
2 int32
3 int64
4 Массив uint64, размер 6
5 float
6 uint64
7 uint8
8 int16

Структура B:

Поле Описание
1 int8
2 Размер (uint32) и адрес (uint16) массива структур C
3 Адрес (uint32) структуры D
4 uint8

Структура C:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива uint16
2 double

Структура D:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива uint32
2 Массив uint32, размер 5
3 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'RMSC\x00\x9c\x06\x13h\xad\x0b\xd9V\xfa6\x86d\xf6\xea\xb3;\xa5\xffD'
 b'\xf0\xef2\xd9_\xdcOW\x95\xc4\x82d\xfd\xfbX\x8d\xc4\x17\x14\x18\xa7}\x16\xe0'
 b'\x91r=\xfe\x04\x84\xd3\x8a_p8\xb3\xd8=G\x0f\xac\x18\xbe\xaa\xb5]\x91\xf3'
 b'\xce\xd65\xa6\xdcm\xf8]U\x10N\xafT\xbe\x1fg\xb0 Cl\xf5\x00\x03\x00\x00\x00Q?'
 b'\xec\xbcC\xc9\x98\xdb\xaa\x00\x03\x00\x00\x00W\xbf\xee6\xf9Y3\xbd\xfa\x1d8p'
 b'Z\x9d\xb4\xf6\\\x00\x02\x00\x00\x00yIL:\xd2\x9f\x91\xf4\\\xb8\xa2t@\x86'
 b'\xed\xc8\x1aJ\xd6"xoe\x00\x00\x00\x02\x00]\x00\x00\x00\x81\x16')

Результат разбора:

{'A1': {'B1': 101,
        'B2': [{'C1': [4174, 44884, 48671], 'C2': 0.8979815423434634},
               {'C1': [26544, 8259, 27893], 'C2': -0.9442106954792842}],
        'B3': {'D1': [490238042, 2645882460],
               'D2': [1229732562,
                      2677142620,
                      3097654336,
                      2263730202,
                      1255547512],
               'D3': 111},
        'B4': 22},
 'A2': 101935277,
 'A3': 853809237020009718,
 'A4': [16911926609844695279,
        3664065171671193028,
        9395913978566001687,
        1448091435896181106,
        4467012848929365872,
        4085847044651985944],
 'A5': -0.3334149420261383,
 'A6': 10516976974258691181,
 'A7': 248,
 'A8': 23893}

Пример 2

Двоичные данные:

(b'RMSC\x00\xac\xd0\xe7Oe\xeea}\xe2\x1c\xd6\x12\x0cH<\xcel\xc1\x1b\xc4\x88\xb68'
 b'\xfa\r \xe9\x158\x8d\x86\x9c\xfb\xe6\x92\xf3"Z\xa5s:\x03\xffZ\x922\x93'
 b'\xf81=\xe17\x89\xdf\xe8\x0e\x86\xd3`\x85\x9b\xbfL:Y\x8c\xe3v\xde\xbej'
 b'\x9bw\xf1y\xecl\xd0\xd3\xb3[\x06\x0ey\xb3k\xde\xc1\xfb\xac\x00'
 b'\x03\x00\x00\x00Q\xbf\xd3\x9c\xa7\x1dB\xd6\x98\x00\x02\x00\x00\x00W?'
 b'\xed\\\xe4\xb7\xe9\x18\xac\x00\x02\x00\x00\x00[\xbf\xd7\xd6\x94\x80\xb3\xcd'
 b'@\xa8\x15\x13\x8e\xc5\x97\xdaS\x00\x02\x00\x00\x00\x89[\xc3h\xaeC'
 b'\xf0\xceg\xf1w\x00\xb5\x98|\xdb\xf6\xe3~F\xf0\xf2\x18\x00\x00\x00'
 b'\x03\x00_\x00\x00\x00\x912')

Результат разбора:

{'A1': {'B1': 24,
        'B2': [{'C1': [27856, 54195, 23302], 'C2': -0.3064363275292208},
               {'C1': [3705, 45931], 'C2': 0.917589530182132},
               {'C1': [57025, 64428], 'C2': -0.37247192925061157}],
        'B3': {'D1': [2819953550, 3315063379],
               'D2': [1539532974,
                      1139854951,
                      4051108021,
                      2558319606,
                      3816703728],
               'D3': -14},
        'B4': 50},
 'A2': -790147227,
 'A3': -1269595209841896948,
 'A4': [5205262235825063048,
        13130519647892346168,
        10198011011946181410,
        6531753527583136402,
        3644529413848119177,
        16134161637289526683],
 'A5': -0.79776531457901,
 'A6': 10152088684072704887,
 'A7': 241,
 'A8': 31212}

Вариант №17

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x59 0x57 0x4d 0x75, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint8
2 int8
3 uint32
4 Структура B
5 Структура D
6 Массив int32, размер 3
7 int16

Структура B:

Поле Описание
1 int8
2 int64
3 float
4 Массив адресов (uint32) структур C, размер 6
5 Размер (uint16) и адрес (uint32) массива char
6 uint8
7 Размер (uint16) и адрес (uint16) массива uint8
8 uint16

Структура C:

Поле Описание
1 int32
2 uint16
3 int8

Структура D:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива double
2 int32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'GYWMu\x81\xb0\xbcqs\xa8m?\xb3I\xed\xc4\x0e\xa6,=A,1\x00\x00\x00U'
 b'\x00\x00\x00\\\x00\x00\x00c\x00\x00\x00j\x00\x00\x00q\x00\x00\x00x'
 b'\x00\x02\x00\x00\x00\x7f\x95\x00\x02\x00\x81Yv\x00\x05\x00\x00\x00\x83\xd9'
 b'S\x84\xa0\xee\x167\x91\x81\nk\xf0\x8fN@\xde~\x11\xc0\x9bx\x844\xae\x10'
 b'^\x0ceN\xba\x9b!\x12\xf2\x1f\xa4.\x9f\xa4\x1d\x11\xe2c\xec3\x8c\x14_\xce'
 b"$\x10\x89;f\x19'\r\x8c\x9b\x1btv\x10\xba\xbf\xae\x90\xfe\xf8\xc6\xc4 \xbf"
 b'\xeaesP?\xf2z?\xdei:g\xe1\x91`?\xc0\xda\xa2\x1d\x02r\x10\xbf\xde\x98X3'
 b'\xcb\xdf\xd4')

Результат разбора:

{'A1': 129,
 'A2': -80,
 'A3': 3161551784,
 'A4': {'B1': 109,
        'B2': 4590093730766038572,
        'B3': 0.0471612848341465,
        'B4': [{'C1': -1063552892, 'C2': 13486, 'C3': 16},
               {'C1': 1577870670, 'C2': 47771, 'C3': 33},
               {'C1': 317857700, 'C2': 11935, 'C3': -92},
               {'C1': 487711331, 'C2': 60467, 'C3': -116},
               {'C1': 341823012, 'C2': 4233, 'C3': 59},
               {'C1': 1712924429, 'C2': 35995, 'C3': 27}],
        'B5': 'tv',
        'B6': 149,
        'B7': [16, 186],
        'B8': 22902},
 'A5': {'D1': [-0.05969998156377465,
               -0.8248840873125822,
               0.4751726164306742,
               0.131672157444783,
               -0.47804837282410273],
        'D2': -648837984},
 'A6': [-300533871, -2130023440, -1890696994],
 'A7': 32273}

Пример 2

Двоичные данные:

(b'GYWMu\x88\xf6I\xaf\x01bE\n\xe3B\x80e\x8eKL\xbe\xfer\xa6\x00\x00\x00U'
 b'\x00\x00\x00\\\x00\x00\x00c\x00\x00\x00j\x00\x00\x00q\x00\x00\x00x'
 b'\x00\x04\x00\x00\x00\x7f\xd4\x00\x02\x00\x83d\xd0\x00\x02\x00'
 b"\x00\x00\x85\xe8C\xc2\xe2\n^\xfa\x9bb\xed\xa8'\xb7\xda\xec\x14IHj\x82+"
 b';\xe4\x01\xf15-\xc7\xf6\x05\xeb\xaaK\x01o\xa3\xd3\xf6\t\xad\x97f\xe6v\xe8'
 b'_QM\xbc\xc2\xfb\x1c\xcd7\x91NW\x9f\x9e7vaux\xeao?\xd6\xc6 Ck~\x08\xbf\xbcf'
 b'2]\n\xa5\xc0')

Результат разбора:

{'A1': 136,
 'A2': -10,
 'A3': 1236205922,
 'A4': {'B1': 69,
        'B2': 784543879319669580,
        'B3': -0.49696844816207886,
        'B4': [{'C1': 1786915643, 'C2': 58369, 'C3': -15},
               {'C1': 892192758, 'C2': 1515, 'C3': -86},
               {'C1': 1258385315, 'C2': 54262, 'C3': 9},
               {'C1': -1382586650, 'C2': 30440, 'C3': 95},
               {'C1': 1364049090, 'C2': 64284, 'C3': -51},
               {'C1': 932269655, 'C2': 40862, 'C3': 55}],
        'B5': 'vaux',
        'B6': 212,
        'B7': [234, 111],
        'B8': 25808},
 'A5': {'D1': [0.3558426531216985, -0.11093439837954744], 'D2': -398212382},
 'A6': [173996699, 1659742247, -1210389484],
 'A7': 18760}

Вариант №18

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x4e 0x58 0x47 0x21, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 float
2 int16
3 int16
4 int32
5 int16
6 int8
7 double
8 Адрес (uint16) структуры B

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива адресов (uint16) структур C
2 uint64
3 Адрес (uint16) структуры D
4 int16

Структура C:

Поле Описание
1 Массив uint32, размер 2
2 int16

Структура D:

Поле Описание
1 Массив float, размер 5
2 uint32
3 int32
4 Размер (uint32) и адрес (uint16) массива int32
5 float
6 int8
7 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'MNXG!\x0b\xd5\x80>R;J\x8ao\x9c\xe0\xf0H\x0cy\x00n\x19\xb3\xff&\x80\xbf'
 b'\x82\x00e\x93\xe9 \x0c\x1b\xc6\xffZ\n\x8c\xda\xdfL9\x0c\xe7\x91\x85X\xc9g'
 b'R\x04\xb9\xfb\x19\xd8*l\x1e\x00(\x002\x004\x85\xa7\x8a\xf8\x83'
 b'\xa9\x02\x13\x1b\xd6\x96\xccj _\x0c\xe3\x1e\x15\xc1\xe1xp\x9e\x881?\x1f\x88'
 b'\xb6>E\x9d\x88>\x96\xa9\xed>\xab5\x03?\x02\x86\xe3\\\xd0\x17\x8a"\x06\x00'
 b'\x00\x00B\x00\xb4S\xf1\xbe<x\x03\x00\x00\x00<\x00\x00\x00[T\xc2\x99\xc7n'
 b'h\xdfZ\x00\tW')

Результат разбора:

{'A1': 0.2516253888607025,
 'A2': 15186,
 'A3': -30134,
 'A4': -253715345,
 'A5': 3144,
 'A6': 121,
 'A7': -0.007886884358575763,
 'A8': {'B1': [{'C1': [552178533, 4291173132], 'C2': 2650},
               {'C1': [1289738892, 2447838265], 'C2': 22661},
               {'C1': [72509385, 3625581497], 'C2': 27690}],
        'B2': 16098238671593034843,
        'B3': {'D1': [0.6934908628463745,
                      0.356507271528244,
                      0.266824871301651,
                      0.4641844630241394,
                      0.5125376582145691],
               'D2': 1558414850,
               'D3': 579475408,
               'D4': [-1968732876,
                      44663800,
                      -1764353261,
                      1595960012,
                      354345740,
                      1886970305],
               'D5': -0.47134172916412354,
               'D6': 60,
               'D7': 120},
        'B4': 22281}}

Пример 2

Двоичные данные:

(b'MNXG!?^o\xbfa\xf1\xb0\x9c\n\x06\nF;\xd5\xe4\x00\x94Z\xa7\xf8#\x8e?'
 b'\x8e\x00\xd3\xcf\x10\xb5\xd5\xc2\x1d\x95\x0f7fh}\xce2\xc8\x08\x8e'
 b'\xe1\x13%\x97\xb9\n\xb59\xd9\x80\xa0\x86\xdc.\xee)\x02c\x89\xd9'
 b'\xc3\xbb\x1e\x00(\x002\x00<\x00\xa0\xa5C1\xe6\x13q\xe0\x08\x18\xbc\x0c\x13.'
 b'\xe6\xfb\xbcHj\x04M8l\xeb\xfc\xbf\x8c\xbe\x91V2\xbfWw\xed=\x82\xf3<\xbf\xbc|'
 b'@?\xbc\xf8\xb3\xa3\xa0\x8e\xfa\x9e\x06\x00\x00\x00N\x004\x1dl>'
 b'\xe1\x89\x04\x00\x00\x00F\x00\x00\x00\x0bn$\xf5\xb5\x8b\x7f\x1df\x00\n\x00')

Результат разбора:

{'A1': -0.9350318312644958,
 'A2': -3743,
 'A3': -25424,
 'A4': 1175062026,
 'A5': -10949,
 'A6': -28,
 'A7': 0.014717047316773701,
 'A8': {'B1': [{'C1': [3037777875, 2501755605], 'C2': 14095},
               {'C1': [3464325222, 2382940210], 'C2': 5089},
               {'C1': [179935013, 2161719733], 'C2': -31072},
               {'C1': [703475420, 3649659650], 'C2': -17469}],
        'B2': 2125571162760310283,
        'B3': {'D1': [-0.27490222454071045,
                      -0.6966333985328674,
                      0.11595027893781662,
                      -0.7380906343460083,
                      0.7519032955169678],
               'D2': 2746480828,
               'D3': -1627746656,
               'D4': [826516896,
                      -529460250,
                      213653512,
                      -68801005,
                      74074300,
                      -345229235],
               'D5': 0.2305801510810852,
               'D6': -31,
               'D7': -119},
        'B4': 10}}

Вариант №19

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x53 0x49 0x52 0x6b, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 int32
3 Размер (uint16) и адрес (uint16) массива адресов (uint32) структур E
4 int32
5 uint32

Структура B:

Поле Описание
1 uint16
2 int64
3 uint64
4 Адрес (uint32) структуры C

Структура C:

Поле Описание
1 Массив char, размер 7
2 int8
3 float
4 Размер (uint32) и адрес (uint32) массива int8
5 Адрес (uint32) структуры D

Структура D:

Поле Описание
1 uint16
2 int8

Структура E:

Поле Описание
1 int16
2 float
3 uint32
4 int64
5 Массив int8, размер 4

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'FSIRk\x87q\x9a\x0b1\x90\xba\x9et>\xcaI\x8b\n\xb0\x89\x98\xf6\x00'
 b'\x00\x001\xeb\x90\xe1\x8a\x00\x02\x00u.\xa6E2j\x8c\xd2\xac2">\x04\xb3=mqo'
 b'trzg\xcd?d\x83m\x00\x00\x00\x03\x00\x00\x00+\x00\x00\x00.E&\xbfu\xc1&B'
 b'\x95\x118\xd2\xfb%\xbc\t\xe9g[\xab\xd9\xca\xe3`\x83\xbf\x03\x86'
 b'\xdd\x11\xb5\x0b\xacS\x7f\x8eO\xf5\x892 \x98H6P\x00\x00\x00I\x00\x00\x00_')

Результат разбора:

{'A1': {'B1': 34673,
        'B2': -7346723869448833986,
        'B3': 14576334546989062390,
        'B4': {'C1': 'mqotrzg',
               'C2': -51,
               'C3': 0.892630398273468,
               'C4': [50, 34, 62],
               'C5': {'D1': 1203, 'D2': 61}}},
 'A2': -342826614,
 'A3': [{'E1': 17702,
         'E2': -0.959978461265564,
         'E3': 1117065528,
         'E4': -3243957617039939749,
         'E5': [-85, -39, -54, -29]},
        {'E1': 24707,
         'E2': -0.5137766003608704,
         'E3': 297077676,
         'E4': 6016684101263241760,
         'E5': [-104, 72, 54, 80]}],
 'A4': 782648626,
 'A5': 1787613868}

Пример 2

Двоичные данные:

(b"FSIRk\xe5'^[\xe7\xd4\xfb\xf7\xb8\rR\xa8\xa0\x97-g\x89B\x00\x00\x0031"
 b'\xf0\xd0D\x00\x02\x00w\xcd\x81\xe9\xfd\xdf\xe6a\x9ed\xa3hY\xdfZ\xa4\x98hkpot'
 b'rgn\xbfu\x92\xfe\x00\x00\x00\x05\x00\x00\x00+\x00\x00\x000sK?7\xc1'
 b'I\xbd\xde\xae\x15\xbbL\x91\xc7\xa6\x84&F>\x1aK\xb3\x89\xd8?l\x99_b'
 b'\x11\xb1\xa5\xcd\xe7:\x80Y\x0c\xd5=G\xe1"U\x00\x00\x00K\x00\x00\x00a')

Результат разбора:

{'A1': {'B1': 58663,
        'B2': 6799282964392294413,
        'B3': 5956187078359746882,
        'B4': {'C1': 'hkpotrg',
               'C2': 110,
               'C3': -0.959274172782898,
               'C4': [100, -93, 104, 89, -33],
               'C5': {'D1': 23204, 'D2': -104}}},
 'A2': 837865540,
 'A3': [{'E1': 29515,
         'E2': 0.7177930474281311,
         'E3': 3185487381,
         'E4': -4950421603708819898,
         'E5': [62, 26, 75, -77]},
        {'E1': -30248,
         'E2': 0.9242152571678162,
         'E3': 1645326757,
         'E4': -3609852253389925059,
         'E5': [71, -31, 34, 85]}],
 'A4': -847123971,
 'A5': 3756417438}

Вариант №20

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc4 0x51 0x4a 0x4e, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int8
2 Массив uint8, размер 2
3 int16
4 uint32
5 Структура B
6 int8

Структура B:

Поле Описание
1 int8
2 int64
3 Массив структур C, размер 4
4 float
5 int8
6 Адрес (uint16) структуры D
7 Массив int64, размер 4
8 double

Структура C:

Поле Описание
1 uint32
2 float
3 int8
4 int16

Структура D:

Поле Описание
1 uint8
2 uint16
3 Размер (uint16) и адрес (uint32) массива double
4 Размер (uint32) и адрес (uint32) массива uint8
5 int16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b"\xc4QJN\x19\xaaH\xd1'vV\xba?\r?\xfd\x99\xd7\n6O\x80\xa5\x1d\xad\x8f?z"
 b'\xb7%\x84\x99\xd9\xbf\x0f\x94\xdd\xbf(\xd3\tS#\x983K\x81]?\x0f\xde\xa2'
 b'\xf9\r\xe3\x962bM?u\x07\xd1\x9f\xd8\x92\xbfk\xed34\x00\x9c\xbe\xe3\xa4'
 b'\x0c\xc6y\xc9\xd9>\xdc~P\x0c\xeb,\x12\x91\xd6\x84"Q\x08IX\x95r\x0fQ\xfcH\x94'
 b'\xdd?\xea\x1c\xe9P\xd6\x99\xd4\xd3\xbf\xb4B\xe2\x8cU`\xb0?\xeaZ\xee\xa7\xb8'
 b'\xc5\x86?\xe0\xc4\x1a\xb0g\xff \xbf\xe8\xa9\xc04\x8b\xb6@?\xd1!T&\xf6'
 b'\xa9\\\xb9X[\x82\xf0\x00\x05\x00\x00\x00r\x00\x00\x00\x02\x00\x00\x00'
 b'\x9aR\x98')

Результат разбора:

{'A1': 25,
 'A2': [170, 72],
 'A3': -11993,
 'A4': 1985395263,
 'A5': {'B1': 13,
        'B2': 4611010742365605760,
        'B3': [{'C1': 2770185615,
                'C2': 0.9793570637702942,
                'C3': -124,
                'C4': -26151},
               {'C1': 3205469405,
                'C2': -0.6594701409339905,
                'C3': 83,
                'C4': 9112},
               {'C1': 860586333,
                'C2': 0.5619908571243286,
                'C3': -7,
                'C4': 3555},
               {'C1': 2519884365,
                'C2': 0.9571505188941956,
                'C3': -97,
                'C4': -10094}],
        'B4': -0.921588122844696,
        'B5': 52,
        'B6': {'D1': 91,
               'D2': 33520,
               'D3': [-0.0791455834017849,
                      0.8236001277747824,
                      0.5239385075983343,
                      -0.7707215334209607,
                      0.2676592236045019],
               'D4': [185, 88],
               'D5': 21144},
        'B7': [-4691726012013491751,
               4529634207507098642,
               -7938012010270668456,
               -7678057569913891619],
        'B8': 0.8160292223809003},
 'A6': -45}

Пример 2

Двоичные данные:

(b'\xc4QJN`\x18\x91\x08\\b2|\x89\xf6x\x84\xd3N\x98\x99\xd3\xbd\xa7\xb0\xb7\\?_'
 b'1#\xa6\xfa8;\x08c9\xbe\x81*(\xa9\r\x13>9\xc0\x7f\xbf\x109\xaf\x9f\x93\x94I'
 b'\xfc@\x84>\xa9\x91\xef\xf1\x99\x04>\x9b(v\xad\x00\x94\xae"i\xfa"@\xa1J^\xe3@'
 b'!\xca\xf1\xd1\xe1W\x08\xbe\x12\x027\xf9,\xa7W\xe4\xd8\x8f\xb0dI\xbf\xae@'
 b'\x96\n\t\xd6`\x1f\xbf\xc3\xee\x157^wx\xbf\xe6\xa0\x80\xe0>\x15\xb4\xbf\xea'
 b'\xae\x1e1Y\x1f\x16\xbf\xc7|h\x12\xca\xa7\x88lz\xb0?-\x00\x04\x00\x00\x00'
 b'r\x00\x00\x00\x02\x00\x00\x00\x92\x95\xc0')

Результат разбора:

{'A1': 96,
 'A2': [24, 145],
 'A3': 2140,
 'A4': 1647475849,
 'A5': {'B1': -10,
        'B2': 8684298315998286781,
        'B3': [{'C1': 2813376348,
                'C2': 0.8718435168266296,
                'C3': -90,
                'C4': -1480},
               {'C1': 990405433,
                'C2': -0.252274751663208,
                'C3': -87,
                'C4': 3347},
               {'C1': 1043972223,
                'C2': -0.5633801817893982,
                'C3': -97,
                'C4': -27756},
               {'C1': 1241268356,
                'C2': 0.3311915099620819,
                'C3': -15,
                'C4': -26364}],
        'B4': 0.30304306745529175,
        'B5': -83,
        'B6': {'D1': 176,
               'D2': 16173,
               'D3': [-0.15570321277203525,
                      -0.7070927028404896,
                      -0.8337546314078021,
                      -0.1834840862041427],
               'D4': [108, 122],
               'D5': -27200},
        'B7': [-5899036038864527030,
               6837379173161488865,
               6271471465669327148,
               -6388385927626988471],
        'B8': -0.059086502766984905},
 'A6': 31}

Вариант №21

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xad 0x58 0x52 0x58 0x4b, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Массив char, размер 7
2 Размер (uint32) и адрес (uint32) массива адресов (uint16) структур B
3 Адрес (uint32) структуры C
4 Адрес (uint32) структуры E
5 double
6 Массив int8, размер 3

Структура B:

Поле Описание
1 int8
2 uint64
3 uint16

Структура C:

Поле Описание
1 Структура D
2 uint64
3 int16

Структура D:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива int32
2 uint16
3 uint8
4 int16
5 uint8

Структура E:

Поле Описание
1 int64
2 int8
3 Массив float, размер 5
4 float
5 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xadXRXKrlebujs\x00\x00\x00\x02\x00\x00\x00=\x00\x00\x00I\x00\x00\x00_'
 b'\xbf\xa9{V\x03/\x82\xe0\x19\xe0\x87\x8e\x08\x98_{\xfb\xb2\\\xf4'
 b"\xfc\xb2\xa4\x8f\x93\x93>\xe7\xf1\xc0\xa5\x16\xba\x00'\x002\xbe\xd9\x1d"
 b'\xc3h\xa8\x81h\x00\x00\x00\x02\x00A\x99z\xba\xa8\xd1ZG\xb5\xae\xdah5\xfe'
 b'\x02(\xb4P\xd3a\x1c\xf2\xfa\xf9P\xca\xbf 1\x0b\xbf^\xe6w\xbe\x89J\x84'
 b'\xbfC,\xf6\xbfN\xdb*\xbfY\xe0\xedB')

Результат разбора:

{'A1': 'rlebujs',
 'A2': [{'B1': -114, 'B2': 619349934871829748, 'B3': 64690},
        {'B1': -92, 'B2': 10345774667388797093, 'B3': 5818}],
 'A3': {'C1': {'D1': [-1093067325, 1755873640],
               'D2': 39290,
               'D3': 186,
               'D4': -22319,
               'D5': 90},
        'C2': 5167228400551984642,
        'C3': 10420},
 'A4': {'E1': 5824105520083695952,
        'E2': -54,
        'E3': [-0.625748336315155,
               -0.8707041144371033,
               -0.2681466341018677,
               -0.7624047994613647,
               -0.8080316781997681],
        'E4': -0.8510883450508118,
        'E5': 66},
 'A5': -0.049769103897920663,
 'A6': [25, -32, -121]}

Пример 2

Двоичные данные:

(b'\xadXRXKsctqfrt\x00\x00\x00\x02\x00\x00\x00=\x00\x00\x00Q\x00\x00\x00g'
 b'\xbf\xde\xcdwq\x18y\xf0\x85\x83\xb1\xf2`}\xa60Z\x8b\xb19,\xa2E"I\xfc1\xd3'
 b"\x1b)ZZ\xd0\x00'\x002\x1e\x0e\xc6~\x98t\xcb\xab\xdd\x19\xd2M\xf0\xc2\x16"
 b'$\x00\x00\x00\x04\x00A9\xd6\xc8\xdb\xa9!\xe8\x1c9\xb1\x8avp\xd5\xe1[\xab'
 b'\xf3\xbb\xe7ws2\xb9\xa3\xbfa\xe3$\xbf)\x9a\x9c?\x0b\xba\x80\xbe\xed\x02u'
 b'\xbe\xa6\x1d\x04>\xd1\xc3\x11\x18')

Результат разбора:

{'A1': 'sctqfrt',
 'A2': [{'B1': -14, 'B2': 6952896126337659193, 'B3': 11426},
        {'B1': 69, 'B2': 2470783161514797402, 'B3': 23248}],
 'A3': {'C1': {'D1': [504284798, -1737176149, -585510323, -255715804],
               'D2': 14806,
               'D3': 200,
               'D4': -9303,
               'D5': 33},
        'C2': 16725306550842192085,
        'C3': -7845},
 'A4': {'E1': -6056290471067307335,
        'E2': -93,
        'E3': [-0.8823721408843994,
               -0.66251540184021,
               0.5458145141601562,
               -0.46290937066078186,
               -0.3244401216506958],
        'E4': 0.40969136357307434,
        'E5': 24},
 'A5': -0.48129068417065834,
 'A6': [-123, -125, -79]}

Вариант №22

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x43 0x4f 0x57 0xb0, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 Структура C
3 double
4 uint16
5 int32
6 float
7 double

Структура B:

Поле Описание
1 int8
2 uint64
3 uint32
4 int8

Структура C:

Поле Описание
1 Массив uint32, размер 3
2 Массив структур D, размер 4
3 Размер (uint16) и адрес (uint16) массива uint16
4 uint32
5 int64
6 Структура E

Структура D:

Поле Описание
1 uint64
2 int8

Структура E:

Поле Описание
1 int8
2 int64
3 int32
4 int32
5 Размер (uint32) и адрес (uint16) массива float
6 int32
7 Размер (uint32) и адрес (uint16) массива double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'KCOW\xb0\x90\xd1k\x14\xda\xc0\xaaf\xf7\x13\x9b\tR\xdal\xb4o-\xe9'
 b'\x18\xf2\x02\xa7\x07\x83v/\x05\xf49YMQ\xbdF\xb0\xf1\x8dI}D\xa5e2\xa6;\xf2'
 b'\xc9:;@S^1\xbd\x9d\xbc\xffEpK+\x03\x00\x8e\x00P\xa9"\x1e\xd0(\x0e\x93\xe0'
 b'\x98\x0c\xcb\xae\x90\xd3\xf9g!?\x00\xe8\xf7\xe1\x9a\x08\x1by\xbdS'
 b'\x02\x00\x00\x00\x94\x00\x9f\xd3*7\x02\x00\x00\x00\x9c\x00\xbaH\xb9\xd8'
 b'-\xfe\xe3\xbf\x9dV\x0erVb\xac\xf6s\xbf\xc0\x08\x11m`L\x93\xbfZHF3\xe5J'
 b'\x95\x90\x9d<l\xb8\t?h\xee\xe8\x81\xd7\xa1\xc9?\xe8J\xaa\xac|\xe1\xc8?')

Результат разбора:

{'A1': {'B1': -112, 'B2': 17827123920261901265, 'B3': 1376361235, 'B4': -38},
 'A2': {'C1': [762295404, 49420521, 1988298663],
        'C2': [{'D1': 13641769791901664559, 'D2': 70},
               {'D1': 7324335673883619760, 'D2': 50},
               {'D1': 5998859827339738022, 'D2': 94},
               {'D1': 5435921714919619889, 'D2': 43}],
        'C3': [18522, 13126, 19173],
        'C4': 505588048,
        'C5': -3815506693982377776,
        'C6': {'E1': -82,
               'E2': -1729312844199373936,
               'E3': 144368119,
               'E4': 1404926235,
               'E5': [0.019233981147408485, 0.5379703044891357],
               'E6': 925553567,
               'E7': [0.200251520569384, 0.19438131743353115]}},
 'A3': -0.6247777207265905,
 'A4': 22173,
 'A5': 1649832462,
 'A6': -0.9529826641082764,
 'A7': -0.018846041352170273}

Пример 2

Двоичные данные:

(b'KCOW\xb0\x9co\xc1\xc1\xe2l\xa6\xb8\xdakx\xb5\x82;\xbf\xb1\xae\xc5\x07'
 b"\x1aw\xf8\x06\xf0t\x84\xd8Ii\xaf'\xb5O\x1d7\xf0\xa9\x88\xa1P[e\xea"
 b'\x11y\xd0\xac?\xed\x14\xaa\x1b\xd2\xbd\xf8M\xe0\xdb\xe9\xb5\x9cV\x02'
 b'\x00\x8e\x00\xcf\x83\xc4\xd3/G\x04\x92\x89\xca\x8d\xfd9\x1b\x80\x84\xf5'
 b'[\r\xec\xeeC\xb3?\x9e\xf4\x8bX$\x02\x00\x00\x00\x92\x00l\t%\xe0\x02\x00'
 b'\x00\x00\x9a\x00\x08F\x89\xb7\xe8\x9b\xc7?\xc0\xf8.\x93\xa1\xb3\xbfJ'
 b'f>\xde\x08\x11-c\x10\xec?p\x9eM\x1d7}\xae=\xbb\t!\xbf\xd0\xafC\xcd\xd8\xb2'
 b'\xbb\xbf \x8f>\x0b\xf8\xe8\xb5\xbf')

Результат разбора:

{'A1': {'B1': -100, 'B2': 15760529882574078319, 'B3': 2192930923, 'B4': 59},
 'A2': {'C1': [3316560319, 4168555015, 2222256134],
        'C2': [{'D1': 2112105932311316952, 'D2': 55},
               {'D1': 16890006379388512752, 'D2': 17},
               {'D1': 1993428794272960633, 'D2': -46},
               {'D1': 11292188771271702717, 'D2': 86}],
        'C3': [40560, 7501],
        'C4': 3552871375,
        'C5': -176262118188497105,
        'C6': {'E1': 57,
               'E2': -1230593909566701541,
               'E3': -1639992509,
               'E4': 609782772,
               'E5': [0.0851997658610344, -0.6290547251701355],
               'E6': -534443668,
               'E7': [-0.10819773684823919, -0.08558607363243853]}},
 'A3': 0.1844454666302655,
 'A4': 63680,
 'A5': -1281256658,
 'A6': 0.22489450871944427,
 'A7': 0.8770004158216371}

Вариант №23

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x9f 0x44 0x42 0x59, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint16
2 int16
3 Структура B
4 Адрес (uint32) структуры D
5 double
6 int64

Структура B:

Поле Описание
1 uint16
2 Массив адресов (uint16) структур C, размер 2
3 uint32
4 uint16

Структура C:

Поле Описание
1 double
2 int8
3 uint64
4 int16
5 int64
6 int32

Структура D:

Поле Описание
1 Массив char, размер 7
2 int32
3 int16
4 Адрес (uint16) структуры E
5 int64
6 Массив int8, размер 5
7 int32
8 uint8

Структура E:

Поле Описание
1 float
2 uint8
3 Размер (uint32) и адрес (uint16) массива int8
4 Размер (uint16) и адрес (uint32) массива uint16
5 uint32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\x9fDBY_Y\x9c\xf6/Z\x00(\x00GJ\\m\xd0V"\x00\x00\x00\x87?\xe2\xd8m\x87\xb6#f'
 b'\x9d?\xc6`\x9f\x19/B\xbf\xc8\xc9Y\x93\x91\x7f\xe0i\xfd\xbd\x1e\x90\xc8\x1c6'
 b'\xed\x1f{\x9c\x970\x80$\xd4|\x16\xffQ\x87\xf4\xbf\xefK\xb1C\xe1\x10\xc8\xf1'
 b'\xdcUi\xd6\xbc\xf7b\xbe\x9c\x06\xed\x15\x1f,\x1e\x90\xf5f\x93\xe4\x1a6+\xc8'
 b'\x9f #;\x9a36\x04\x0fH>\xf6\x96V:\x00\x00\x00\x02\x00f\x00\x05\x00\x00\x00h='
 b'\xb0\x8d\x81zvmizze\xf1\x07\xcb\xe8\x8ct\x00r\xc5\x91B).>\xc5\xd2x\x13'
 b'd\x10\xeeU\xdf{\x0b\xc6')

Результат разбора:

{'A1': 24409,
 'A2': -25354,
 'A3': {'B1': 12122,
        'B2': [{'C1': -0.19364471154676632,
                'C2': 105,
                'C3': 18283803669375497965,
                'C4': 8059,
                'C5': -7163203355377632234,
                'C6': -11433996},
               {'C1': -0.9779898000492944,
                'C2': -15,
                'C3': 15876712432378798782,
                'C4': -25594,
                'C5': -1363149037857868442,
                'C6': -1813767626}],
        'B3': 1247571408,
        'B4': 22050},
 'A4': {'D1': 'zvmizze',
        'D2': -251147288,
        'D3': -29580,
        'D4': {'E1': 0.48161572217941284,
               'E2': 58,
               'E3': [43, -56],
               'E4': [40736, 9019, 39475, 13828, 3912],
               'E5': 1034980737},
        'D5': -4210511431977744942,
        'D6': [120, 19, 100, 16, -18],
        'D7': 1440709387,
        'D8': 198},
 'A5': 0.5889194155325697,
 'A6': -7115750767933706430}

Пример 2

Двоичные данные:

(b'\x9fDBY|\t\xaa\xfc[\xe2\x00(\x00G\xd23R\xf0\xf9\x99\x00\x00\x00\x88'
 b'?\xe9c\xa4\x19\x86;\xd6\xf1\x82j\xe9\x80\xe3*O\xbf\xe86\xcd\xb3\xa7\xc7$'
 b"\x8c\xf6\xc4\x03\x14\xd3\xca\x1e\xf4\xf6\x8e\xb0P\xc3\x0bxU-O\x19'\x83\xfa?"
 b'\xe9\xdb\xcf\x19l\xde\x14\xe80B4\x89\xd6\xf2la5\x1c\x0f\xe9\xe5+:\xcf'
 b'\x14>\x10\x17\x07{P\xd0\xdbn\xa1&\xd5\x9c\x80\x92\xc2\xeby\xbe_\x8cm\xc2'
 b'\x00\x00\x00\x03\x00f\x00\x05\x00\x00\x00i\x8d\xd3\\\xbfuhopual3K+\x9e\xc3'
 b'\x9c\x00s\xef,\x8b[\xb2\x9e\xb9>G\xc3\x16H\x91A\xac\xeb\xbd9')

Результат разбора:

{'A1': 31753,
 'A2': -21764,
 'A3': {'B1': 23522,
        'B2': [{'C1': -0.7566898831266582,
                'C2': -116,
                'C3': 17781340616753028852,
                'C4': -2418,
                'C5': -5741875070866477745,
                'C6': 422020090},
               {'C1': 0.808082151087492,
                'C2': -24,
                'C3': 3477399628904819809,
                'C4': 13596,
                'C5': 1146699553975505982,
                'C6': 269944699}],
        'B3': 3526578928,
        'B4': 63897},
 'A4': {'D1': 'uhopual',
        'D2': 860564382,
        'D3': -15460,
        'D4': {'E1': -0.21830911934375763,
               'E2': 194,
               'E3': [80, -48, -37],
               'E4': [28321, 9941, 40064, 37570, 60281],
               'E5': 2379439295},
        'D5': -1212440973714474690,
        'D6': [71, -61, 22, 72, -111],
        'D7': 1101851581,
        'D8': 57},
 'A5': 0.793413209774253,
 'A6': -1044154612474238385}

Вариант №24

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xb7 0x5a 0x49 0x4a 0x4a, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 float
2 Массив адресов (uint16) структур B, размер 4
3 Массив char, размер 6
4 uint16
5 Структура D
6 uint16
7 Адрес (uint32) структуры E
8 Массив uint16, размер 2

Структура B:

Поле Описание
1 int32
2 Адрес (uint32) структуры C

Структура C:

Поле Описание
1 uint64
2 int32
3 uint64

Структура D:

Поле Описание
1 uint8
2 int8

Структура E:

Поле Описание
1 int64
2 Размер (uint32) и адрес (uint16) массива uint8
3 int16
4 double
5 int16
6 float

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xb7ZIJJd\xc3\xfc>9\x00U\x00q\x00\x8d\x00urtnep\xc5&\x8a\xc6+'
 b'\xe2\x98\x00\x00\x00\x0e\xc3\xf6\x93\x8d{\xb7\xc0t\xe7eCj\xdfO/\xd0\x99\x0f'
 b'\xac\x14\xae\x9b\x91\x9e\xcb\x11\xca%\x00\x00\x003\xa0\xc8\xee\xa5\xe5\xc6'
 b'w\xd6\xcc\xb6\xd2\xa4s}\x07\x11Sg8odH\xe5A\x00\x00\x00\x12\xc0\xf9'
 b'\xea\xb0<\x85\xdb)PP\x8a\xa2\xea\xd6\xaf\x9d\xa1#o\xa8\xa0\xa3\xdb]\x00\x00'
 b'\x00\xd4\xbe\xc0K\x9fu\xcc\xe9\x84\x1e\xe3\xeb\x85\xca\xba;\xd6XHoi\xddy'
 b"oy\x00\x00\x00\xf1\xacUw\xaa\xa3\x9b'\x9ek\x1c\x03\x00\x00\x00\x95\x00\x9e+"
 b'\xde\x16\x99\xac\x1d]\xe5\xbffru\xea1\xbe')

Результат разбора:

{'A1': 0.4936782121658325,
 'A2': [{'B1': -904803426,
         'B2': {'C1': 4856542261824420749,
                'C2': 793763690,
                'C3': 10492171160698984912}},
        {'B1': -448240529,
         'B2': {'C1': 8630838236740624435,
                'C2': -759771946,
                'C3': 4064308521330373540}},
        {'B1': -610033496,
         'B2': {'C1': 15818115996762882066,
                'C2': -1974448087,
                'C3': 8008422261026908834}},
        {'B1': 1870257513,
         'B2': {'C1': 16846969633117355732,
                'C2': -337437052,
                'C3': 8018756813681511045}}],
 'A3': 'urtnep',
 'A4': 9925,
 'A5': {'D1': 138, 'D2': -58},
 'A6': 57899,
 'A7': {'E1': 2047904348522130039,
        'E2': [241, 172, 85],
        'E3': 11166,
        'E4': -0.667616688828925,
        'E5': 29286,
        'E6': -0.17374594509601593},
 'A8': [49934, 37878]}

Пример 2

Двоичные данные:

(b'\xb7ZIJJ\xdf\x8c\x9e=9\x00U\x00q\x00\x8d\x00lojhwk5\x93j\xf2\x9e'
 b'\xab\x97\x00\x00\x00\xe8\xec(U\x8cx-\xe7\x1b\xb2\xfd\xc47\xc1\xcc'
 b'!\x12\x1e\xc2\x9a\xabor@\x15lZi%\x00\x00\x00m\x95={\xe3;\xfa\x9dWy+'
 b'\x9d^\x1c\xd9\x9a\x18\x07\xe4\x00\xc7gi\x94A\x00\x00\x00\x93\x8b\xa4'
 b'H\xf7\x82\x95!\x04\xddQ\x0b{\x17\xf4\xd7\xf1\xebz\x02\xff\xe4$8]\x00\x00'
 b'\x00m\x11y\x1d;%A9\x1a\x170\xb4c\x0c\x7f\xbe\xe0\xe5AN\xbc\xf8\xc8'
 b'\xa9y\x00\x00\x00}\x11\x08\x83\x18I\xaa8\xf5\xf0\x02\x00\x00\x00\x95'
 b'\x00\x82\x0f\xec\x16\x92\x8f\xf17\xd6?\x15m\xeb%\xf6\xbe')

Результат разбора:

{'A1': 0.07741712778806686,
 'A2': [{'B1': 1767533589,
         'B2': {'C1': 14194697433454049420,
                'C2': 567066935,
                'C3': 4643896948598906386}},
        {'B1': -1805031481,
         'B2': {'C1': 11383476856343598445,
                'C2': -1658095273,
                'C3': 64184096948558942}},
        {'B1': 941942015,
         'B2': {'C1': 2419984373368785811,
                'C2': 189914372,
                'C3': 178714559177299835}},
        {'B1': -1446446916,
         'B2': {'C1': 4125619669475856749,
                'C2': -1271916774,
                'C3': 5639040961876003939}}],
 'A3': 'lojhwk',
 'A4': 37685,
 'A5': {'D1': 106, 'D2': -14},
 'A6': 43934,
 'A7': {'E1': -1083897831290797304,
        'E2': [125, 17],
        'E3': 3970,
        'E4': 0.3471645261819123,
        'E5': 27925,
        'E6': -0.48075804114341736},
 'A8': [60648, 21800]}

Вариант №25

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x49 0x44, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint64
2 int8
3 int64
4 Структура B
5 float
6 float

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива адресов (uint16) структур C
2 Структура D
3 int8
4 Адрес (uint16) структуры E
5 int16
6 uint32
7 Адрес (uint32) структуры F
8 int8

Структура C:

Поле Описание
1 uint8
2 Массив int16, размер 4
3 uint64
4 uint32

Структура D:

Поле Описание
1 uint32
2 uint32

Структура E:

Поле Описание
1 double
2 float
3 uint8
4 Массив int16, размер 2

Структура F:

Поле Описание
1 uint32
2 double
3 Размер (uint32) и адрес (uint32) массива double
4 double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'FID\xe1\x8bu\xd6\x80T8\xe7\x84\x93\x81\t\xae\x01p\xe6M\x00\x00\x00\x02'
 b'\x00\x00\x00d\x98W^D\x19C\x95\x97\x1a\x00h\xcc\xb7\x17\x07t\xb6\x00\x00\x00'
 b'\x91b\xbdJ\x0c/\xbe\xba\xcb\x99\xbf\xe7\x99\x13\rQ\x130\xd6\xba'
 b'\xad\x82\x19\xc6Y>\xdfX\xba\x88f\xae\xae\x08!\xbc\xeb\xe4\xb9\xf3\x19\r\xe1Q'
 b"\x19T\xbe\x06{\xf5\x12\x01\x00:\x00O\xbf\xe1\x025\x18'\xa3\x86\xbfF]\x1d"
 b'\xfe\xdb\xc3\xbf2\xbf\xe1qv|.<\xee\xbf\xd0\xb8\xa9\x9d\x06\xddl\xbf\xe8\xb9'
 b'2w\x9d0:M\x05\\\x8b\xbf\xdb\xff\x7fB+t\xb4\x00\x00\x00\x03\x00\x00\x00'
 b'y\xbf\xedi\xfb\x94.\x13\xe0')

Результат разбора:

{'A1': 16252213244433021159,
 'A2': -124,
 'A3': -7817956835185334707,
 'A4': {'B1': [{'C1': 191,
                'C2': [-6247, 4877, 20755, 12502],
                'C3': 13451550709239070431,
                'C4': 1488619622},
               {'C1': 174,
                'C2': [-20984, 8636, -5148, -17933],
                'C3': 1805346764079021574,
                'C4': 2079658497}],
        'B2': {'D1': 2555862596, 'D2': 423859607},
        'B3': 26,
        'B4': {'E1': -0.5315194579862783,
               'E2': -0.774858295917511,
               'E3': 254,
               'E4': [-9277, -16590]},
        'B5': -13129,
        'B6': 386364598,
        'B7': {'F1': 1292197003,
               'F2': -0.43746930562867736,
               'F3': [-0.5451004434015922,
                      -0.26127090773248685,
                      -0.7726070724688789],
               'F4': -0.91918734494595},
        'B8': 98},
 'A5': -0.0493280254304409,
 'A6': -0.36483457684516907}

Пример 2

Двоичные данные:

(b"FID'b\xcd\x9bI\x05(K\xb9\x9e\x8bu|]\x04\xeb\xf6\x00\x00\x00\x02\x00\x00\x00d"
 b'\x80\xae\xf5\x98r\xab\xecG\xa3\x00h\xa3\xee\xf7$q%\x00\x00\x00'
 b'\xa1\x8a\xbe\xe7S5\xbd5\x06DVBk\xdb\xc9#\xc6\x12\x9cr7F[\xdd\xac\x10e2'
 b'\xbfIQJ\xb0\xaa\xbe:\xcf\xbb\xb9\x9bGKc*\xcb\xdd\x97\xb9RRe2\x00:\x00O'
 b"\xbf\xad5o'5\xc6@?<\xd3\xb3\x0e-\x84T'?\xee)x\x82\\Z\x0c\xbf\xe36"
 b'J\xa6\xc8\x04\xb2\xbf\xe3\xab\x92\xc1\xb6\xf2\xaa?\xe5P\x10\x9c+\x02'
 b'\x1e\xbf\xea\x1f\xf1\x11\xfa\xf7\xc8\x01\x08v\xb8\xbf\xef#\xfb\xe9\xb4\xbd'
 b'&\x00\x00\x00\x05\x00\x00\x00y\xbf\xe3t\x00;1e(')

Результат разбора:

{'A1': 2838056782025533515,
 'A2': -71,
 'A3': -7022390016957158410,
 'A4': {'B1': [{'C1': 86,
                'C2': [17003, -9271, 9158, 4764],
                'C3': 8230124204417880165,
                'C4': 851396945},
               {'C1': 74,
                'C2': [-20310, -16838, -12357, -18021],
                'C3': 5137308835406256057,
                'C4': 1381131570}],
        'B2': {'D1': 2158949784, 'D2': 1923869767},
        'B3': -93,
        'B4': {'E1': -0.05704829553259261,
               'E2': 0.7376052737236023,
               'E3': 14,
               'E4': [11652, 21543]},
        'B5': -23570,
        'B6': 4146360613,
        'B7': {'F1': 17331896,
               'F2': -0.973142582375577,
               'F3': [0.9425623460873012,
                      -0.6003773934791268,
                      -0.6146940024842327,
                      0.6660235452801009,
                      -0.8163991309336263],
               'F4': -0.6079102665054608},
        'B8': -118},
 'A5': -0.4518066942691803,
 'A6': -0.04419542849063873}

Вариант №26

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x46 0x57 0x4f 0xb5, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива структур B
2 Массив char, размер 6
3 Адрес (uint16) структуры C
4 uint16
5 int8
6 float

Структура B:

Поле Описание
1 int64
2 uint8
3 int16

Структура C:

Поле Описание
1 int16
2 Адрес (uint32) структуры D
3 uint64
4 Массив uint32, размер 3
5 Структура E
6 Размер (uint32) и адрес (uint16) массива uint8

Структура D:

Поле Описание
1 uint8
2 Массив float, размер 3
3 uint64

Структура E:

Поле Описание
1 uint16
2 int16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'CFWO\xb5\x00\x00\x00\x05\x00\x1ayfhcfi\x00h\x98\x0c\xb1\xbe\xd4Y7\xb7s'
 b"'\xc1H&J\x85n\xb0w\x0f\xfal\xde\xb0\x08\xbb\x89\x04\xd9\x97\xb6\xa2\x87r"
 b'\xefF\x8eln1\xbd,\xef\x93\xdb\x1e\xf4+\xc6\x869\x01\x90\x94\x1d\xedJ\n'
 b'\xf3J\xcc\x88\x1a\xe0?C\xbb\xad>\x10\xd7\x15>\x94%\xda\xb5\x9fa8c-'
 b'\xa6\xb5\xae\x8f%\x07\x00\x00\x00Q \x84,\x82\xc0*K\xae?v\x8dk\xfd\xfd'
 b'\xef\x83&\xa7\xd3\xd87\x7f\xf6\x0b\x00\x00\x00\x02\x00f')

Результат разбора:

{'A1': [{'B1': -5227791031354373499, 'B2': 110, 'B3': -20361},
        {'B1': 1151352358438484873, 'B2': 4, 'B3': -9833},
        {'B1': -5286514084869140884, 'B2': 110, 'B3': 12733},
        {'B1': 3237969226429115334, 'B2': 134, 'B3': 14593},
        {'B1': -8028759330708065462, 'B2': 204, 'B3': -30694}],
 'A2': 'yfhcfi',
 'A3': {'C1': 9479,
        'C2': {'D1': 224,
               'D2': [0.7645824551582336,
                      0.14144547283649445,
                      0.28935128450393677],
               'D3': 13087285936971949749},
        'C3': 2343046646220868526,
        'C4': [1064734059, 4261277571, 648532952],
        'C5': {'E1': 14207, 'E2': -2549},
        'C6': [174, 143]},
 'A4': 38924,
 'A5': -79,
 'A6': -0.4147431552410126}

Пример 2

Двоичные данные:

(b'CFWO\xb5\x00\x00\x00\x02\x00\x1agfyfhw\x00I\xfcQ\xc1\xbe\x96"Um7'
 b'\xb6\xff\x97\x8d\xe8\xd3u\xc1\xfdV:l\xbbt\\B=\xdb\n\xb6\x88\xbe\x93\x99&?Ck'
 b'7>\xcc\xf8l\xc3\x1d\xc7x\xe3\x13\xb6\x11\x06h\x06\xb2\x0er\x00\x00\x000t'
 b'\xe5\xa5\xd6?K\xf9\xf6\xd3\x97\x0f\xe1\xac\x00\xb3c\x13\xfe\xdaI\x10'
 b'\x81\x90\n\x00\x00\x00\x04\x00E')

Результат разбора:

{'A1': [{'B1': 7869960082728806611, 'B2': 117, 'B3': -15875},
        {'B1': 6213398188277908029, 'B2': 219, 'B3': 2742}],
 'A2': 'gfyfhw',
 'A3': {'C1': 3698,
        'C2': {'D1': 136,
               'D2': [-0.288277804851532,
                      0.7633547186851501,
                      0.40033280849456787],
               'D3': 14059612933740279313},
        'C3': 8423321017669908982,
        'C4': [3549892577, 2885727075, 335469129],
        'C5': {'E1': 4225, 'E2': -28662},
        'C6': [6, 104, 6, 178]},
 'A4': 64593,
 'A5': -63,
 'A6': -0.29323068261146545}

Вариант №27

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x48 0x48 0x57, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint64
2 int32
3 Размер (uint16) и адрес (uint16) массива char
4 uint32
5 Структура B
6 int16
7 Массив int32, размер 2
8 uint16

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива адресов (uint32) структур C
2 uint16
3 int8
4 Структура D

Структура C:

Поле Описание
1 double
2 int16

Структура D:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива uint16
2 uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'DHHW\xedcH\x9c\xcbO"$\xad\x0fk\xc2\x02\x007\x00\xce\x95\x99D\x03\x00\x00\x00'
 b'W\x00\x0en\xaf\x03\x00\x00\x00c\x00\x00\x00\xf8\xe2)\xcd\x9f\x13\xe8'
 b'\xfe\r\x048\xc9<\xc2xud\xa1Q9\xdf\x92\xd7?\x1c\xe7\x90\xe8nG\x01'
 b'\xc6\xcb?\xf1\xa3|\xe8\x17O\xd4\xde\xd8\xbf\xcd/9\x00\x00\x00C\x00\x00\x00M'
 b'\x00\x00\x00\xad\xa7,/+!')

Результат разбора:

{'A1': 2603731270492513261,
 'A2': -1033171027,
 'A3': 'xu',
 'A4': 1150916046,
 'A5': {'B1': [{'C1': 0.3683393535379962, 'C2': -6372},
               {'C1': 0.21698013294173224, 'C2': -23567},
               {'C1': -0.38860042308773024, 'C2': 12237}],
        'B2': 28174,
        'B3': -81,
        'B4': {'D1': [42925, 12076, 8491], 'D2': 58104}},
 'A6': -13015,
 'A7': [-18345057, -919075827],
 'A8': 49724}

Пример 2

Двоичные данные:

(b'DHHW\x9ekf2\xf0\x8dj\xc1\x1b\xc7\x0ei\x02\x007\x00\x83\t\x17\x0e'
 b'\x03\x00\x00\x00W\x00eH\x0c\x04\x00\x00\x00c\x00\x00\x00*\xa5{z\xac\xed%'
 b'\x8f\xd1wjc[\xd9nd`Jn\xf8\x8a\x15\xea\xbf\x06\x7f\x8cp\xbf\xac\x99'
 b'\x11\xea?\xbf\xa6p\x01\x00\xb5\xe20\xd3?\xf3\xf79\x00\x00\x00C\x00\x00\x00M'
 b'\x00\x00\x00\x18\x1a\x94>~\xe1\xac\xc3')

Результат разбора:

{'A1': 13937108059628661662,
 'A2': 1762576155,
 'A3': 'nd',
 'A4': 236390787,
 'A5': {'B1': [{'C1': -0.8151297428287982, 'C2': 32518},
               {'C1': 0.8146484731655774, 'C2': -22849},
               {'C1': 0.2998587386682834, 'C2': -2061}],
        'B2': 18533,
        'B3': 12,
        'B4': {'D1': [6680, 16020, 57726, 50092], 'D2': 42282}},
 'A6': 31355,
 'A7': [-1893339732, 1667921873],
 'A8': 55643}

Вариант №28

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xe3 0x4d 0x57 0x4a 0x50, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint16
2 int64
3 Размер (uint32) и адрес (uint16) массива структур B
4 uint32
5 Структура D
6 float
7 int8
8 int64

Структура B:

Поле Описание
1 Массив char, размер 8
2 Структура C
3 uint32
4 int64

Структура C:

Поле Описание
1 uint64
2 uint64
3 int32
4 Размер (uint32) и адрес (uint32) массива int16

Структура D:

Поле Описание
1 uint64
2 int16
3 Размер (uint16) и адрес (uint32) массива float

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xe3MWJP\xdb\xb9*\xa1A\xcck\x185C\x00\x00\x00\x02\x00D`\xdb\xe3\xb8\xd3\xa2m'
 b'<\xe5I\xc85\xced\x00\x02\x00\x00\x00\xa4?\x00K\xdd\xcf\x0e\t(\x7f\xddQ'
 b"\x80C\x98\x86\x16TcKh\xa9\xce\xd6\x8bT\xedlnvqdvzbiW\x94dM\xd7\x97\xbf'"
 b'\xc6\xaa:cP\xf0&J\xa3L\x91}\x00\x00\x00\x02\x00\x00\x006\xc3\x900\x9f'
 b'\xb9Y\xb4d\xd8\xf4~\xefzdncfvpm\xe4K\xa8\xb1\xe4K\xd4\xd4\x12\xd7\x80\xa1'
 b'i\x18\x03\x84^3_\x1c\x00\x00\x00\x05\x00\x00\x00:\xe8x\xa9\x07d+S\xca'
 b'\x8b\x18\xf63>\x87r\xba>\xad\r\xf3')

Результат разбора:

{'A1': 56249,
 'A2': 3071808767069271363,
 'A3': [{'B1': 'nvqdvzbi',
         'B2': {'C1': 6310779263345213223,
                'C2': 14315318563784631882,
                'C3': -1555263107,
                'C4': [-26490, 5716]},
         'B3': 3281006751,
         'B4': -5090839558536003857},
        {'B1': 'zdncfvpm',
         'B2': {'C1': 16450427545893721300,
                'C2': 1357695243416765316,
                'C3': 1580424988,
                'C4': [25419, 26793, -12586, -29868, -4756]},
         'B3': 3900221703,
         'B4': 7217954957173519923}],
 'A4': 1625023416,
 'A5': {'D1': 15249871396542203957,
        'D2': -12700,
        'D3': [0.2645471692085266, 0.33799704909324646]},
 'A6': 0.5011575818061829,
 'A7': -49,
 'A8': 1011384120960450627}

Пример 2

Двоичные данные:

(b'\xe3MWJP:G\x89\x83\x8d\xf1\xbc\x97\t\xe6\x00\x00\x00\x02\x00@\x948\x07'
 b'6<\x07z2\xec\xe0V\xa3\xb3\xac\x00\x02\x00\x00\x00\xa0\xbf\r\xb4\x12\xa2L\xeb'
 b'ZR\x1eY\xf7E\x14{\x99gd\x90vb\xad4ebfvylrgi\xe1P\xfdt\xdd-R\xc6\xf3\xbdX'
 b'\xe5) \x96\n\x03\x91S\x00\x00\x00\x03\x00\x00\x006+\x00\x9f\x88z\xb9\xd0\x8e'
 b'\xcd\xcf\xddptulimabz\x93\x87\xd8\xb82\x9c\xc2\xd9\xc3\xce\t\xa9\xafX^\x02'
 b'\x85\xd0\x18\xfa\x00\x00\x00\x02\x00\x00\x00<\x9b\xfcU\xf7\xcf\xb9\xb3\n'
 b'\x18\x82f\xe2\xbe\x98S/\xbf.08')

Результат разбора:

{'A1': 14919,
 'A2': -8537824399173678618,
 'A3': [{'B1': 'ebfvylrg',
         'B2': {'C1': 7629468293259930962,
                'C2': 14336010228349870230,
                'C3': 168005971,
                'C4': [5243, -26265, 25744]},
         'B3': 721461128,
         'B4': 8843328655075564912},
        {'B1': 'tulimabz',
         'B2': {'C1': 10630703731066061529,
                'C2': 14109225306994269698,
                'C3': -2049959686,
                'C4': [30306, -21196]},
         'B3': 2617005559,
         'B4': -3478552381224753438}],
 'A4': 2486699830,
 'A5': {'D1': 4325560326253729443,
        'D2': -19540,
        'D3': [-0.29750964045524597, -0.6804232597351074]},
 'A6': -0.553528904914856,
 'A7': -94,
 'A8': 5542623075152557893}

Вариант №29

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x46 0x52 0x51, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Массив адресов (uint16) структур B, размер 5
2 Структура C
3 Адрес (uint16) структуры D
4 Массив int64, размер 8

Структура B:

Поле Описание
1 int16
2 uint32

Структура C:

Поле Описание
1 uint8
2 Массив char, размер 7

Структура D:

Поле Описание
1 Массив float, размер 3
2 double
3 Структура E
4 int64

Структура E:

Поле Описание
1 uint16
2 uint8
3 uint64
4 int32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'HFRQX\x00^\x00d\x00j\x00p\x00\xcezzcevehv\x00i\xa6\x16C1+\xac\x95'
 b"\xfdn\xdc\xc1>V\xec\xb5\xa8*o\xbd\x1a1\xe8\xd7\x8a\x87\xae\x12'^\x9bU"
 b"C\x8b{\xd4+=E\x96C\x94m\x16Rj\xe1A:\xbc9\x94\xbf(\x12'\x11\x1b\xe6\x03"
 b'D{\x87\xd2\xbe\xd0\x9c\x98\x97\xc0\x89\x92\x02\x95u\xbbs\x10\x99\x13'
 b'\x0b\xff\x99\xf1)\x97\xd5lJ\x0b\xea\xff\xf9v\x91\x11\xd3\xbdfsx\xbdA\x0c'
 b'\x16\xbe8ip\x9c\x16\x1e\xd5\xbf\x82\x10B\x93$\x0f+\xdd\x12\x9b\xe6v\xf1\xec'
 b'e\x81\x9d\xdf8\x11\x1d\xce\x83')

Результат разбора:

{'A1': [{'B1': -12098, 'B2': 3231160476},
        {'B1': -28023, 'B2': 3145045250},
        {'B1': 4211, 'B2': 4278915993},
        {'B1': -3687, 'B2': 1825937193},
        {'B1': 2890, 'B2': 1996095466}],
 'A2': {'C1': 206, 'C2': 'zzceveh'},
 'A3': {'D1': [-0.10306084901094437, -0.06065692752599716, -0.1465311199426651],
        'D2': -0.32996144559151075,
        'D3': {'E1': 4226,
               'E2': 66,
               'E3': 16616895991233062035,
               'E4': 1710027126},
        'D4': -8949183449732768383},
 'A4': [-7661701375485106583,
        -5337796630800470275,
        -2889005170041083224,
        6168627636524189578,
        -7618615936169571517,
        4747192383021356099,
        2815357520350657594,
        -3276514671835342063]}

Пример 2

Двоичные данные:

(b'HFRQX\x00^\x00d\x00j\x00p\x00\xd4anzkrksv\x00\x08\xca\xc1\x84X:G\xa2'
 b'y\x19\x0b(G\x1ey;\xf2\xd5\x96\xf4\xa1\xb6\xa8o\xb5\x00\xee\xb4'
 b"\x0c\x9f\xeb\x9a\xae\xb8cM\xc1\xd4'\x15>\xa6\x8a\x10\x18\xb0n\xe8\xb2UC\xaa"
 b'\x11\xe0\xf6\xe63\xc9\x9d)\x14\x15#\xd0V\xab\xd6\xb5oO@ WO\x07\x17'
 b'\xc76\x96\x08T.<\x98\xcf\x8c\x05\xa8\xce\x98\xaf\xdc\xfa\xbej\t\xac>\xe6\r'
 b'\xc5>\x19^{\xbf\x90A\xcd\xfaq\xd0\xbd\xbf[\xdb\xaf\x0fb\xdc\xd5\x99g,'
 b'B\x0f\x91\xbb\xb7\x07\x1d\xc0%\x9c;\x16\r')

Результат разбора:

{'A1': [{'B1': -21674, 'B2': 1332721110},
        {'B1': 8256, 'B2': 386355031},
        {'B1': 14023, 'B2': 777259158},
        {'B1': -26564, 'B2': 2818936015},
        {'B1': -26418, 'B2': 3204111535}],
 'A2': {'C1': 212, 'C2': 'anzkrks'},
 'A3': {'D1': [0.33600932359695435, 0.3848716616630554, -0.9819045662879944],
        'D2': -0.11646187184419987,
        'D3': {'E1': 56155,
               'E2': 175,
               'E3': 4768300015894159887,
               'E4': -1212444401},
        'D4': 943006713814981895},
 'A4': [-6753364964359943672,
        4285489811383064953,
        8045881541006906866,
        -7283553095417724747,
        1524420925580359854,
        -1698226392068872642,
        -1804008234239699534,
        -3448889713293932237]}

Вариант №30

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x54 0x50, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint16
2 int16
3 uint16
4 int8
5 Адрес (uint16) структуры B

Структура B:

Поле Описание
1 Структура C
2 int32
3 int32

Структура C:

Поле Описание
1 uint16
2 Размер (uint16) и адрес (uint32) массива адресов (uint16) структур D
3 Массив uint8, размер 6

Структура D:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива uint8
2 double
3 double
4 uint32
5 Массив float, размер 2
6 uint8
7 uint32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'NTP\xe5A\x97O\x0b#\xd8\x00`\x9c\x1f\x1d\x00\x03\x00\x0c\xbf\xea\xf9q\x15'
 b'\xd8\xe1\x86?\xd3|\xa3&|\x19D\tZ\xd9?\xbf0H\xb1?lNmP\xdbT\xb2\xd6'
 b'\xf3\x85L\x00\x03\x004?\xe8\x88o}\x10\xbb\xbe\xbf\xe7\xb0\xa9Y\xf3\x9eZ|'
 b'?\xc1\x9a>\x9b\xeaT<\x9d\\\xfeDs^Q\xf8\x00\x0f\x007S\xbd\x00\x02'
 b'\x00\x00\x00\\\x0c\x03\xa8a\xf9\x8a\xd0\xc3\xdfP\x112o\xef')

Результат разбора:

{'A1': 58689,
 'A2': -26801,
 'A3': 2851,
 'A4': -40,
 'A5': {'B1': {'C1': 21437,
               'C2': [{'D1': [156, 31, 29],
                       'D2': -0.8429494311049417,
                       'D3': 0.3044822574451198,
                       'D4': 156948799,
                       'D5': [-0.6886091828346252, 0.9230716824531555],
                       'D6': 80,
                       'D7': 3679761110},
                      {'D1': [243, 133, 76],
                       'D2': 0.7666547243769555,
                       'D3': -0.7403151280277129,
                       'D4': 2084553114,
                       'D5': [0.30452215671539307, 0.019209381192922592],
                       'D6': 68,
                       'D7': 1935561208}],
               'C3': [12, 3, 168, 97, 249, 138]},
        'B2': -792469680,
        'B3': 288518127}}

Пример 2

Двоичные данные:

(b'NTP\xcc*\xd3X\xe8z7\x00e\xad4\xbee\x07\x00\x05\x00\x0c\xbf\xe2\xfb'
 b'\x14\xec!\xa0\x94?\xe7\x8d\x1b\xee\x13\xbe\xec\x9355\xa9?\x00\xcf\xbb\xbfC/'
 b'\x05\xfb\xfb$\xaak\x7f\n\xfb\x16\x12\x95\x00\x06\x006?\xc8\xde\x92'
 b'\x8eg\x12\xa0?\xba\xd1o\xdd%\xff\x00\x8b~\xd6\xe5\xbe\x8e5\xc6?C\xa9 \xdeqWx'
 b'\xda\x00\x11\x00<:\x7f\x00\x02\x00\x00\x00a\xdb\xe7\x1f\x05\xf6\x05\x90'
 b'\x020\tm\xe7s\x15')

Результат разбора:

{'A1': 52266,
 'A2': -11432,
 'A3': 59514,
 'A4': 55,
 'A5': {'B1': {'C1': 14975,
               'C2': [{'D1': [173, 52, 190, 101, 7],
                       'D2': -0.5931496250095898,
                       'D3': 0.7359752321189865,
                       'D4': 2469737897,
                       'D5': [0.5031697154045105, -0.7624362111091614],
                       'D6': 251,
                       'D7': 4213484139},
                      {'D1': [127, 10, 251, 22, 18, 149],
                       'D2': 0.19429237321141546,
                       'D3': 0.10475825451976206,
                       'D4': 2340345573,
                       'D5': [-0.277754008769989, 0.7642993927001953],
                       'D6': 222,
                       'D7': 1901557978}],
               'C3': [219, 231, 31, 5, 246, 5]},
        'B2': -1878904823,
        'B3': 1843884821}}

Вариант №31

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x4b 0x42, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива структур B
2 Адрес (uint32) структуры C
3 int8
4 Массив char, размер 2
5 Адрес (uint16) структуры F
6 uint8
7 uint8
8 int8

Структура B:

Поле Описание
1 int8
2 int8

Структура C:

Поле Описание
1 int64
2 int32
3 uint8
4 Адрес (uint16) структуры D
5 Структура E

Структура D:

Поле Описание
1 uint32
2 uint16

Структура E:

Поле Описание
1 double
2 uint64
3 int16
4 int32
5 uint16

Структура F:

Поле Описание
1 Структура G
2 uint64
3 int64
4 Структура H
5 uint16

Структура G:

Поле Описание
1 uint16
2 double

Структура H:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива int16
2 Размер (uint32) и адрес (uint32) массива uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'CKB\x02\x00\x15\x00\x00\x00\x1f\x00\x00\x00KerX\x00\xa0Y\xe8\x86\xf4\xe8'
 b'6\xb1X\xd0\x0c\x98{8\x86\x0f\xd6i\x1d\xca\xf1\xb9sE\x97\xe2\x19\x00\x80\xc3'
 b"\xcec\xe1'\xc2?\x947?\r\xe4\xe7\xf1\xb3\xf7\x9d\x9ds\xcf\x14V\xcfk\xae"
 b'\x00\x99Ip\x0b\x85\x9b>\x85(#\x0e\x00Ua\x08\x959h\xf8lI\x9a\x11\xc5?\x96\x83'
 b'\x13k\xe0\x1c\x0f\x98]\x16\xa9\xb9\xc4\xe17\xfa\x04\x00\x00\x00F\x00'
 b'\x00\x00\x05\x00\x00\x00N\x00\x00\x00\xba\xb8')

Результат разбора:

{'A1': [{'B1': -122, 'B2': -12}, {'B1': -24, 'B2': 54}],
 'A2': {'C1': -1023973624873253320,
        'C2': -1757056071,
        'C3': 226,
        'C4': {'D1': 214980785, 'D2': 31640},
        'C5': {'E1': 0.1418420541135923,
               'E2': 12966399768837175188,
               'E3': -25097,
               'E4': 349139869,
               'E5': 53078}},
 'A3': 75,
 'A4': 'er',
 'A5': {'F1': {'G1': 14741, 'G2': 0.16459969125020568},
        'F2': 10957008168610399126,
        'F3': -416616205463775651,
        'F4': {'H1': [-20885, -26368, 28745, -31477],
               'H2': [16027, 10373, 3619, 21760, 2145]},
        'F5': 47290},
 'A6': 160,
 'A7': 89,
 'A8': -24}

Пример 2

Двоичные данные:

(b'CKB\x02\x00\x15\x00\x00\x00\x1f\x00\x00\x00\xedmoV\x00\xfd0x\xc1\x82\x0e'
 b'\xcb?.\x82\xd9\xdf\t\x97\xfe1E8}N\x89B`\xfa\xffM\x19\x00\x90\xd6'
 b'\x18\x84>\xd8\xc1?t\xc1u\x1c\xa5\x94\xeb\xb1+\x8a,\x87L\x96V\xbb\xe8\xe0'
 b't\x98\x91\x19b\xa8\xc6\xcf\xe9\x91\x86b\x99i\xc1\xc6d\xa1\xec\xfe'
 b'\xd2\x0c\xeb?7\xbe\xda4\x13\xe4\xfd\x17\xdf\x81\x10Q\xc4/\x0b\x18'
 b'\x02\x00\x00\x00F\x00\x00\x00\x06\x00\x00\x00J\x00\x00\x00\xb2R')

Результат разбора:

{'A1': [{'B1': -63, 'B2': -126}, {'B1': 14, 'B2': -53}],
 'A2': {'C1': -8552760961697448297,
        'C2': -368574,
        'C3': 77,
        'C4': {'D1': 3649187391, 'D2': 2527},
        'C5': {'E1': 0.13941174936342238,
               'E2': 12820504201108242804,
               'E3': -30165,
               'E4': -1773369556,
               'E5': 47958}},
 'A3': -19,
 'A4': 'mo',
 'A5': {'F1': {'G1': 50881, 'G2': 0.8453154543868036},
        'F2': 1728788603122400823,
        'F3': 1732531001874219487,
        'F4': {'H1': [-7960, -26508],
               'H2': [6545, 43106, 53190, 37353, 25222, 27033]},
        'F5': 21170},
 'A6': 253,
 'A7': 48,
 'A8': 120}

Вариант №32

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x55 0x44, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int32
2 Структура B
3 int32
4 uint16

Структура B:

Поле Описание
1 Массив адресов (uint32) структур C, размер 2
2 int16
3 Адрес (uint16) структуры D
4 uint8
5 uint16

Структура C:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива int64
2 Размер (uint16) и адрес (uint32) массива int32
3 int16
4 float

Структура D:

Поле Описание
1 int16
2 int32
3 Размер (uint16) и адрес (uint16) массива uint16
4 uint64
5 uint8
6 double
7 Размер (uint32) и адрес (uint32) массива double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'CUD<]\x03\xf2\x00\x00\x004\x00\x00\x00`V\x05\x00\x92\x98\x9dm\xe4\xf7J\x8bg!'
 b'\x8c\x11SR\x9f}4\x93\xc4\t\x17~n=\x94\x94\xc8@4\x85\xce\xdd/\xa6'
 b'\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x02\x00\x00\x00,&\xed\xbe:1\xca'
 b'\xf6\x99\x8de]\x07\x13=<p\xbe+\xaf\x8f\xc8C\xca9\x89\xfc\xa9-\xb2\xe8'
 b'\x00\x00\x00\x02\x00\x00\x00H\x00\x02\x00\x00\x00X\xc0f=M\xdd\x18'
 b'\x95\xae\x0c\xb9M\x82\xbf\xdb\xcc\xe3\xadTt\xfc\xbf\xef\x88_\x8c*\xeb&?\xd9'
 b'\t\x0c\xf6\xd4\x7f\xc0\x1d\xfdn\xd90\xdd\x00\x03\x00t\x8c\xd4b\xdcB\x83*O'
 b'q\xbf\xed\x93/\x01"\x03\xd4\x00\x00\x00\x03\x00\x00\x00z')

Результат разбора:

{'A1': 1012728818,
 'A2': {'B1': [{'C1': [-8353804219467352941, -4320896535702432620],
                'C2': [-935316347, -824365146],
                'C3': 9965,
                'C4': -0.18183055520057678},
               {'C1': [-677354802450590915, 4355189934505576515],
                'C2': [-902198788, -1456622872],
                'C3': -16282,
                'C4': 0.050259679555892944}],
        'B2': 22021,
        'B3': {'D1': 7677,
               'D2': 1859727581,
               'D3': [38318, 3257, 19842],
               'D4': 10147844558520789583,
               'D5': 113,
               'D6': -0.9242167493940721,
               'D7': [-0.43438045431851413,
                      -0.9853971231126237,
                      0.3911774073076195]},
        'B4': 152,
        'B5': 40301},
 'A3': -453555573,
 'A4': 26401}

Пример 2

Двоичные данные:

(b'CUD\xdf|\xc3q\x00\x00\x004\x00\x00\x00`\xc3N\x00\xae\x9a\xe4\x96\x13\xec'
 b'\xdf:S`\xd4\x86\xe3\x86\xf9V\xc70\x0b>\xda\x89\x00iLL\x88@7+\x14\x8e\x1f\xc2'
 b'\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x02\x00\x00\x00,\xc7<>\xe2\xe0\x7f'
 b'y\xa5Ssw\xed\xed\x9a\x9a\x17ao?\r\x10\x84\x9cN.\xd6\x14\xfbN\xfa'
 b'\x00\x00\x00\x02\x00\x00\x00H\x00\x02\x00\x00\x00X\x85I>\xe8\x1e\xf6'
 b'\x8bE\x0e\xa9\x1b\xee\x89\xfa\x7fM\xbf\xe3\xa9\x9aa|B\xea\xbf\xd4'
 b'\x93$\x1c\xd2\xac\xf0\xbf\xe8k\xe5\xe3)K\xcc?\x99\xe1\xcdq\xd5.\x00?\xe1'
 b'\xb8\xbd\x82\xde\xd8\xd4?Q\xda\xdf\xabE\x04\x00\x19\xba\xcecT\x99'
 b'\x00\x05\x00t\xf6\xb5A\x1b\xebR\x9aM8\xbf\xe7\xee\xf6\xef\x11_'
 b'\x92\x00\x00\x00\x06\x00\x00\x00~')

Результат разбора:

{'A1': -545471631,
 'A2': {'B1': [{'C1': [-3132566321941264592, 810325264925543500],
                'C2': [-2009057493, 344858562],
                'C3': -14532,
                'C4': 0.44311901926994324},
               {'C1': [8765504005144964506, -7343293536977219452],
                'C2': [-1672597802, 352014074],
                'C3': -31415,
                'C4': 0.4533612132072449}],
        'B2': -15538,
        'B3': {'D1': 6586,
               'D2': -832351079,
               'D3': [35653, 3753, 7150, 35322, 32589],
               'D4': 17777186692282882637,
               'D5': 56,
               'D6': -0.7479204816145162,
               'D7': [-0.6144534973155633,
                      -0.3214807778810629,
                      -0.7631711422676459,
                      0.025275430748747496,
                      0.553801303488195,
                      0.001089781214503427]},
        'B4': 154,
        'B5': 58518},
 'A3': 334290746,
 'A4': 21344}

Вариант №33

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x52 0x59 0x70, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int64
2 Размер (uint16) и адрес (uint16) массива адресов (uint16) структур B
3 float
4 uint32
5 Структура C
6 float
7 int16
8 float

Структура B:

Поле Описание
1 int8
2 uint32
3 int32

Структура C:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива char
2 Структура D
3 int8
4 Структура E
5 double
6 int64

Структура D:

Поле Описание
1 double
2 Массив uint8, размер 2
3 int32

Структура E:

Поле Описание
1 int16
2 uint16
3 Массив uint16, размер 2
4 double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'WRYp\xac\x1b\x81\xc7\xc6\xefE\x10\x02\x00k\x00"\xeaK>\xb1\x18\xee\xfd'
 b'\x04\x00\x00\x00o\x00\x00\x00d\xee\xe8\x89\xa5\xe4\xe4\xbf*\xce\xd82 E \xe7'
 b'\x16\xd4E\xf8\xe8\xfdB\x80\x81r)\xf83\xcf?\xf0\x88\x1e\xdc\xaf\x0e\xb1?\xfc'
 b'w\xb0\xf8\x07\xfa\xc7H\x0e*\xaa>\x0b\x9a!X,?\x82\xc1C\x90\xea\xff\xe1'
 b'\xc70\x8e\x02\x845\x8a\xec\xc1I\x1fY\x00b\x00ahwd')

Результат разбора:

{'A1': 1172606915029572524,
 'A2': [{'B1': -126, 'B2': 3935323073, 'B3': 818405887},
        {'B1': -114, 'B2': 2318763010, 'B3': 524927468}],
 'A3': 0.19913533329963684,
 'A4': 4260239537,
 'A5': {'C1': 'ahwd',
        'C2': {'D1': -0.6529109662582866, 'D2': [42, 206], 'D3': 1159738072},
        'C3': 32,
        'C4': {'E1': 5863,
               'E2': 17876,
               'E3': [59640, 17149],
               'E4': 0.24377347968858132},
        'C5': 0.06663035511022364,
        'C6': 5244435203240261628},
 'A6': 0.3323521018028259,
 'A7': -26101,
 'A8': 0.6732197403907776}

Пример 2

Двоичные данные:

(b'WRYpN\xcb\xef\x18\xe6\x13\x15%\x04\x00}\x00\x7f\x9a\x03?\xbfI-\x8b'
 b'\x05\x00\x00\x00\x85\x00\x00\x00\x1a\xf1\xc9\xda\xe8!\xe2\xbf07\xeb\x95'
 b'dSH\x99%N\x1c\x1c\x05\xf4\xe6 `*N\xbb2\xd3?\nw\xf6\xe7#g\xe6\xbf\x830\xc8bY'
 b'O\xda\xf8\x8f\xfdS?*(\x18AL\xbf\x9d"6a$\x12 \xc7G\x8d\x8e\xd2\xdd\x14\x18'
 b'^\x8d\x1c\xd2\x1f\xd1\x01\xac\x99\x13}T!\x1e\x95x\xe6\xe3dQ\xb5Y\x00b'
 b'\x00k\x00t\x00uvrin')

Результат разбора:

{'A1': 2672063832896031566,
 'A2': [{'B1': -99, 'B2': 610350626, 'B3': 1204232210},
        {'B1': -115, 'B2': 350081678, 'B3': 479026712},
        {'B1': -46, 'B2': 2885800223, 'B3': 1417483161},
        {'B1': 33, 'B2': 3866662174, 'B3': -1252956957}],
 'A3': 0.5140761733055115,
 'A4': 2335001023,
 'A5': {'C1': 'uvrin',
        'C2': {'D1': -0.5666393540591657, 'D2': [48, 55], 'D3': 1399100907},
        'C3': 72,
        'C4': {'E1': 9625,
               'E2': 7246,
               'E3': [1308, 59124],
               'E4': 0.29997141488411394},
        'C5': -0.7000903635523354,
        'C6': -515011962052530045},
 'A6': 0.8280877470970154,
 'A7': 10282,
 'A8': -0.7978682518005371}

Вариант №34

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x43 0x4a, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 float
2 Размер (uint16) и адрес (uint16) массива адресов (uint32) структур B
3 uint32
4 uint16
5 double
6 uint64
7 Структура C
8 uint16

Структура B:

Поле Описание
1 uint64
2 uint16

Структура C:

Поле Описание
1 int64
2 Адрес (uint16) структуры D
3 Размер (uint32) и адрес (uint32) массива char
4 int16
5 float
6 uint8
7 Адрес (uint32) структуры E
8 float

Структура D:

Поле Описание
1 uint16
2 double
3 int64

Структура E:

Поле Описание
1 Массив int16, размер 2
2 Массив uint64, размер 3
3 float
4 int32
5 Массив uint8, размер 5
6 double
7 int64
8 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'MCJ\xa7\xdcd\xbf\x03\x00b\x00\x92\xe2\x00\x9c{Pj\xb5\xa7\xa9#O\xe2?\t\xb5/'
 b'<)\xd3\xa0[\x9a~\xc5\xff\x07\xd5\xae]n\x00\x02\x00\x00\x00\x80'
 b'\x00\x00\x00\x02\x95\xea m?\xbd\x82\x00\x00\x00\xddn\xf1\xbe\xd4TU\x07Ph'
 b'\xedM\xb8\xcb\xdb\xf5\x96I\xca/\xbf\xea\x1d<\x19\xce\xb3?\xeaL'
 b'\xda\x9d\x94\xdeX\xc7D\x00\x00\x00N\x00\x00\x00X\x00\x00\x00\tY'
 b'\xc4\x91\xe8\xabl\x16\xd6?\xfb\x14\xf9\xbd\n\x92\x0b\xfauv6B\x16\xc7/\xb4'
 b'?\xff\x13L\xbf\x1f<\xf4dV\x92B\xd6\xef0\xc7\x88@\xcf\xe3\xd4z\xf4\x0fH\xbfjf'
 b'\xb8\x8c\xa6\xd1~*^\x00AZ\xe2d\xcf\xdd\xbfVm\x91\xf8#\x8c\xbfc?')

Результат разбора:

{'A1': -0.8939918875694275,
 'A2': [{'B1': 14679568667466794837, 'B2': 62939},
        {'B1': 4331876523461724566, 'B2': 52761},
        {'B1': 16038617733892030387, 'B2': 51032}],
 'A3': 2617303698,
 'A4': 20603,
 'A5': 0.5721605599953083,
 'A6': 6602509227782026505,
 'A7': {'C1': 6750567121807572634,
        'C2': {'D1': 22793,
               'D2': 0.34511868274628577,
               'D3': -429088764649204485},
        'C3': 'uv',
        'C4': -27390,
        'C5': 0.9262834787368774,
        'C6': 189,
        'C7': {'E1': [16950, -14570],
               'E2': [2287630784497955887,
                      17282073816362972220,
                      8850949646970308400],
               'E3': -0.7814934253692627,
               'E4': -1934072214,
               'E5': [166, 209, 126, 42, 94],
               'E6': -0.4657833300089038,
               'E7': 7187617616428625238,
               'E8': 63},
        'C8': -0.4715489447116852},
 'A8': 21716}

Пример 2

Двоичные данные:

(b'MCJ\x0f8Y?\x03\x00b\x00.nz\x13\x0eJ\xb0\xb6O\x9c\x9a\xa5\xde?d\xcc\xc1'
 b')r;\x0e\xc5\xc6!|\xa3\xa5i\x01Bn\x00\x02\x00\x00\x00\x80\x00\x00\x00\xfd'
 b'\x0c\xa0\x94\x07>\x01\x82\x00\x00\x00\xf6k\xc0\xbd\x99/\xd1"\x11\xb5\x93ikm'
 b'\xec\xfd\x96^\xfeN\xf7\xb7&\xbe\xed\x9a\xc0\x7f-\xca\xdd\x11H\xc7'
 b'\xb5\xa7D\x00\x00\x00N\x00\x00\x00X\x00\x00\x00:>\xcc\xb0\x9afD\x1f\xee\xbf'
 b'\xb4|\xb4\xfb\xa2\t\x9e\xbezu\xf0Q\x8a\x9e\x9f)B\x1d\xb5\xc3/Z\x05I'
 b'\x0c\xb4\x9c\xc7)\xaa\xa6\xbb>\xab\x9a\xc9Z\xa8\xf7\nA\xbe\xf1\xc9#\x08\xad('
 b"\xe3\x16O06\xec\xaa'\x85\xdc\xbf\x9c\x16K\xden\n\xf9\x9c\xb0")

Результат разбора:

{'A1': 0.8485116362571716,
 'A2': [{'B1': 7884511655761093329, 'B2': 65004},
        {'B1': 13701841189131411094, 'B2': 39661},
        {'B1': 14359747056148250560, 'B2': 42933}],
 'A3': 326790702,
 'A4': 18958,
 'A5': 0.47885766281874975,
 'A6': 14199352036658629732,
 'A7': {'C1': 4756198841613296070,
        'C2': {'D1': 15930,
               'D2': -0.9413167957295854,
               'D3': -4711317564570698572},
        'C3': 'zu',
        'C4': 3325,
        'C5': 0.13240289688110352,
        'C6': 1,
        'C7': {'E1': [20976, -24950],
               'E2': [6498627969966287263,
                      12261550936342415621,
                      12131230212411014054],
               'E3': -0.18851839005947113,
               'E4': 136563185,
               'E5': [173, 40, 227, 22, 79],
               'E6': -0.4456271332900057,
               'E7': -7135660663299696996,
               'E8': -80},
        'C8': -0.09395591914653778},
 'A8': 12185}

Вариант №35

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x59 0x46, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива char
2 Массив структур B, размер 2
3 int8
4 Адрес (uint32) структуры C

Структура B:

Поле Описание
1 int64
2 int8

Структура C:

Поле Описание
1 Адрес (uint32) структуры D
2 Размер (uint32) и адрес (uint16) массива int8
3 uint16
4 int64

Структура D:

Поле Описание
1 int32
2 int64
3 uint16
4 Массив double, размер 5

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'FYF\x00\x07\x00\x00\x00 \x92\xba\xb0Q\xec\x8c\x04\x10oGO,\xb14\xc5D\x1a$\xbd'
 b'\x00\x00\x00cyadjjsr\x1c\x1c\xfdF\xfd\x15\x9a\x9b$\xdf\x0et8\xbd?\xc2\x85'
 b'=EM\x93\xb8?\xef\xf5\xda\xb6\xd1\x03\xda?\xe7\x83\xd1\xe1\x01g\xb0?\xe8\x95'
 b"\xa1+QZ\x96\xbf\xed\xcc.\xf7{\xa7\xe2&(\xf1\xaa\xa5\xdc\x00\x00\x00'\x00"
 b'\x00\x00\x06\x00]\xe9\x7f\xfbyY\x06\xa4\xa1\x97\xe2')

Результат разбора:

{'A1': 'yadjjsr',
 'A2': [{'B1': -7873787132596452336, 'B2': 111},
        {'B1': 5138374839459202074, 'B2': 36}],
 'A3': -67,
 'A4': {'C1': {'D1': 471661894,
               'D2': -210091816473653644,
               'D3': 14525,
               'D4': [0.1446911419290282,
                      0.99876151758519,
                      0.734841289008946,
                      0.7682653280306393,
                      -0.9311747392323435]},
        'C2': [38, 40, -15, -86, -91, -36],
        'C3': 59775,
        'C4': -326131612940920862}}

Пример 2

Двоичные данные:

(b'FYF\x00\x03\x00\x00\x00 \x8f\x8f\xcd\xe6\x8f\x8b\xd6.>Z9\x08\xc7a\xf9'
 b'\xdb\x04>\x8e\x00\x00\x00_ity\xa4*\xcb\x81\xe2\xef\xdc\xdd\xda\x1f\xcd\xb4Y'
 b'j\xbf\xe5\xa6u\x04\xcbr"?\xef\x9a8\xe1\x92;\xf4\xbf\xd9h\xf0\xcf\x9a\x03'
 b'\xcc\xbf\xdf\xf0\x90\xba\xaf\x93H?\xe2n\x00\xba\x8a*\x8c\xc3\x974\x01}"\x00'
 b'\x00\x00#\x00\x00\x00\x06\x00Y\x93.\x80\x1e\xf5;\xc4%\xea\x81')

Результат разбора:

{'A1': 'ity',
 'A2': [{'B1': -8102030814481754578, 'B2': 62},
        {'B1': 6501237189521300228, 'B2': 62}],
 'A3': -114,
 'A4': {'C1': {'D1': -1540699263,
               'D2': -2094212456298590796,
               'D3': 22890,
               'D4': [-0.6765694707533536,
                      0.9875759511650117,
                      -0.39703007005306,
                      -0.4990579436401288,
                      0.5759280818322892]},
        'C2': [-61, -105, 52, 1, 125, 34],
        'C3': 37678,
        'C4': -9214658150510761343}}

Вариант №36

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xec 0x4c 0x45 0x52, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива char
2 int32
3 int32
4 Адрес (uint32) структуры B
5 Массив адресов (uint16) структур D, размер 2
6 Массив uint64, размер 4
7 Массив double, размер 4
8 int32

Структура B:

Поле Описание
1 uint64
2 Структура C
3 int8

Структура C:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива uint8
2 uint16

Структура D:

Поле Описание
1 uint8
2 double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xecLER\x00\x06\x00\x00\x00^\x8c\xcf\x07\x86\xbd\xee\xe6\xd4\x00\x00'
 b'\x00g\x00z\x00\x83<\xee\x1eQ*\xc6\x8d}]\xc1\xb5\x90\xf3O\x92\x9e\xd4\xd7'
 b'\xea\xa7\xc8\xbd\xb7\xdd\x10/\xe8\xeb\x86\xc0R\xb8?\xe9\xe6\x17\xfcQ'
 b'\t@\xbf\xda\xa4\x8d\x9dQ\xcc\x00\xbf\xc45\x8f\x0cL"0?\xed0\x94\xa0\xe7'
 b"\x1c\xb6\x83[62nrkrio2^>\xc5\xed'G\xa0\x10\x07\x15\x00\x00\x00\x03\x00"
 b'\x00\x00dw\xf5dk\xbf\xcc\x1am\xc8%\xbbP\xa3?\xe0\xbbZ\x08\xac\xc7\xb8')

Результат разбора:

{'A1': 'nrkrio',
 'A2': -1932589178,
 'A3': -1108416812,
 'A4': {'B1': 14262098783533795093,
        'B2': {'C1': [50, 94, 62], 'C2': 30709},
        'B3': 100},
 'A5': [{'D1': 107, 'D2': -0.21955654404470204},
        {'D1': 163, 'D2': 0.5228700799400405}],
 'A6': [4390480020691651965,
        6755880550194451102,
        15336985062381828061,
        1166406926787957432],
 'A7': [0.8093376091058317,
        -0.41629352915987283,
        -0.15788448429545232,
        0.9121802466042002],
 'A8': -2091174350}

Пример 2

Двоичные данные:

(b'\xecLER\x00\x05\x00\x00\x00^U]\x1e=\\\x82\xa4\xe6\x00\x00\x00g\x00z'
 b'\x00\x83\xe9\xd3\x0e%\xca\xad|O\xef\xf9\x13\x91\xfc\x17zlC\xd9\xd1\xc1h\xa1'
 b'\x01\x13\x8f:-\xcd\x87\x00\xd3w\xbf\xe7\x84\x90\xd9T\xb4\x84?\xe5\xd7&C\x13'
 b'\xff"\xbf\xe9\xd8U\xc6\xf9D\n\xbf\xdb\x88w1\x18\x93\x98\x83K03xexpe\xe6'
 b'\x1d7W5\xc9\x19e\x12\x80?\x89\x00\x00\x00\x04\x00\x00\x00c\x95p\x83\x07\xbf'
 b'\xd9!\x98\xf2\xca\xbb8\xc0?\xe1\x12\xeeg\x874&')

Результат разбора:

{'A1': 'xexpe',
 'A2': 1432165949,
 'A3': 1552065766,
 'A4': {'B1': 3875656876221808521,
        'B2': {'C1': [230, 29, 55, 87], 'C2': 38256},
        'B3': -125},
 'A5': [{'D1': 7, 'D2': -0.39267562589786875},
        {'D1': 192, 'D2': 0.5335609457048391}],
 'A6': [16848826186400103503,
        17291873761986312812,
        4889169499101659411,
        10320611856829436791],
 'A7': [-0.7349323506110896,
        0.6825133619422312,
        -0.807658089275834,
        -0.43020419878512817],
 'A8': -2092224461}

Вариант №37

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x53 0x54 0x4e 0x9e, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива char
2 double
3 Адрес (uint16) структуры B
4 Структура D
5 Адрес (uint32) структуры E
6 uint64
7 int8

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива адресов (uint32) структур C
2 double

Структура C:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива int8
2 int32

Структура D:

Поле Описание
1 int64
2 uint16
3 int8

Структура E:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива uint16
2 Массив int8, размер 5
3 int64
4 int16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'USTN\x9e\x00\x03\x00\x00\x00-?\xd5+zw\x90\xf0\xc4\x00|\x9c\xdf\xe8\xdf\x1eRC'
 b'3\xe4\xb8\xa9\x00\x00\x00\x98:\x9f\x9b8\xff\xcei\n\x8eqhf{a\xae\x00'
 b'\x00\x00\x03\x00\x00\x000\x0eFW\xcb\x84\xe0\xfa\x00\x00\x00\x03\x00\x00'
 b'\x00?\x06FMN}m\xbb\x00\x00\x00\x03\x00\x00\x00N\x05VY\x8dY\x8c\x97'
 b'\x00\x00\x00\x03\x00\x00\x00]\xfa\x8bN8\x00\x00\x003\x00\x00\x00B'
 b'\x00\x00\x00Q\x00\x00\x00`\x00\x00\x00\x04\x00\x00\x00l?\xe9&B\xd7\xa9\x94`'
 b'\x9dA\xb9\xbah\xa7\xdcy{\xb5\xefn\x00\x00\x00\x06\x00\x8c\x19b'
 b'\x16\xfe\xd5\xbd\xf1M\rD\xd8\x9f\x13\x05\xe7')

Результат разбора:

{'A1': 'qhf',
 'A2': 0.3307787101400772,
 'A3': {'B1': [{'C1': [123, 97, -82], 'C2': 239491019},
               {'C1': [-124, -32, -6], 'C2': 105270606},
               {'C1': [125, 109, -69], 'C2': 89545101},
               {'C1': [89, -116, -105], 'C2': -91533768}],
        'B2': 0.7859205448300024},
 'A4': {'D1': -7142734439002258637, 'D2': 58552, 'D3': -87},
 'A5': {'E1': [40257, 47546, 26791, 56441, 31669, 61294],
        'E2': [25, 98, 22, -2, -43],
        'E3': -4759938611768942829,
        'E4': 1511},
 'A6': 4224265644609005834,
 'A7': -114}

Пример 2

Двоичные данные:

(b'USTN\x9e\x00\x03\x00\x00\x00-\xbf\xe4\xbeX#e\x8c\x08\x00Uv\xa8+\xaf\xdc\xbeU'
 b'\xa3\xd8\x0b\xf8\x00\x00\x00q\\\xa3\xfb\x00\xf5M\x87\x06%yge=o\x00\x00'
 b'\x00\x02\x00\x00\x000\xe4\xbdK\xeb\xac\x1c\xf0\x00\x00\x00\x03\x00\x00\x00'
 b'>\x87P\x19\xaf\x00\x00\x002\x00\x00\x00A\x00\x00\x00\x02\x00\x00\x00'
 b'M\xbf\xde!\xd1R\xb2(\x84\xc6\xc9\x04?a\x00\x10\x9d\x1e\xb3\x1b'
 b'\xa3\x00\x00\x00\x06\x00e5 \x03^\x08\x8esQ\xf7C\x14\xf1\x91\x14q')

Результат разбора:

{'A1': 'yge',
 'A2': -0.6482353869763537,
 'A3': {'B1': [{'C1': [61, 111], 'C2': -457356309},
               {'C1': [-84, 28, -16], 'C2': -2024793681}],
        'B2': -0.47081406665586933},
 'A4': {'D1': 8550131926885619107, 'D2': 55307, 'D3': -8},
 'A5': {'E1': [50889, 1087, 24832, 4253, 7859, 7075],
        'E2': [53, 32, 3, 94, 8],
        'E3': -8182105975577841263,
        'E4': 5233},
 'A6': 6675455054227277574,
 'A7': 37}

Вариант №38

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x47 0x47 0x43, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int8
2 Структура B
3 int8
4 Структура E
5 int64
6 int16
7 Размер (uint16) и адрес (uint32) массива float

Структура B:

Поле Описание
1 float
2 Структура C
3 uint64
4 float

Структура C:

Поле Описание
1 uint8
2 uint8
3 Размер (uint16) и адрес (uint16) массива адресов (uint16) структур D
4 float

Структура D:

Поле Описание
1 int16
2 uint16

Структура E:

Поле Описание
1 Массив char, размер 8
2 Массив int8, размер 2
3 Размер (uint32) и адрес (uint16) массива int8
4 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'DGGC\xf8\x88\x14\xa0\xbeK\x19\x05\x00U\x00!:\x0c\xbf<M\xe6\xc8.'
 b'\xb1\xe0\xf5\xd8Y[?7epktqzat>r\x02\x00\x00\x00_\x00\xd2K3\xdb7l,uZ\x89w\x02'
 b'\x00a\x00\x00\x00\xda\xca\x08\x01\xf6\xea\xf9\x93\x19\xeeit"\xa4\nF\xbb2t'
 b'\xe2A\x00E\x00I\x00M\x00Q\x00\xdd\x01GE\xbe\xbet\x01\x0c\xbe')

Результат разбора:

{'A1': -8,
 'A2': {'B1': -0.3126566410064697,
        'B2': {'C1': 75,
               'C2': 25,
               'C3': [{'D1': -13606, 'D2': 264},
                      {'D1': -5386, 'D2': 37881},
                      {'D1': -4583, 'D2': 29801},
                      {'D1': -23518, 'D2': 17930},
                      {'D1': 12987, 'D2': 57972}],
               'C4': -0.5477619767189026},
        'B3': 17717355748572679484,
        'B4': 0.856839656829834},
 'A3': 55,
 'A4': {'E1': 'epktqzat', 'E2': [62, 114], 'E3': [-35, 1], 'E4': -46},
 'A5': 6518164878993863499,
 'A6': 30601,
 'A7': [-0.3716222941875458, -0.1367242932319641]}

Пример 2

Двоичные данные:

(b'DGGCxRfm>\x0c|\x04\x00Q\x00Jy\xd5>\xd5(\xb8\x9f\x8dw\x0cI\xd2s:\xbf\xafqfru'
 b'krdg\x11\x94\x03\x00\x00\x00Y\x00N/\xf4\xf3\x11#\n\xbe\x1d$3\x02'
 b'\x00\\\x00\x00\x00x29\x0e!\xc7w\xa6/\x8a\xb2\x0f\x1bPU\xccA\x00E\x00I\x00M'
 b"\x00\x0b&'\xc3|^\xbeu\xd2!>")

Результат разбора:

{'A1': 120,
 'A2': {'B1': 0.23183563351631165,
        'B2': {'C1': 12,
               'C2': 124,
               'C3': [{'D1': 12920, 'D2': 3641},
                      {'D1': -14559, 'D2': 42615},
                      {'D1': -30161, 'D2': 4018},
                      {'D1': 20507, 'D2': 52309}],
               'C4': 0.41694098711013794},
        'B3': 5263713514643007701,
        'B4': -0.7283297777175903},
 'A3': -81,
 'A4': {'E1': 'qfrukrdg', 'E2': [17, -108], 'E3': [11, 38, 39], 'E4': 78},
 'A5': 2143161618416268335,
 'A6': 13092,
 'A7': [-0.2172728031873703, 0.15802939236164093]}

Вариант №39

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x55 0x42 0x9d, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 float
2 Размер (uint32) и адрес (uint16) массива char
3 int16
4 uint8
5 uint64
6 Адрес (uint16) структуры B
7 Структура D
8 float

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива адресов (uint32) структур C
2 Размер (uint32) и адрес (uint16) массива float
3 int32

Структура C:

Поле Описание
1 int8
2 double

Структура D:

Поле Описание
1 Массив int16, размер 5
2 double
3 uint8
4 uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'KUB\x9d\x81%G\xbd\x06\x00\x00\x004\x00Og]gb\x023\xc5\x9b\xc5\xce`\x00\xf3'
 b'\xcf`\xd3\x9bc\x009f\x8bD<\x8e\xcb\xa8\x19\xe6?\xfa1\xfc\xd0m\x96\xbebood'
 b'ucJLqek\x1c)\xde?\xa6\xf2\xce:\xe1%B\xe9\xbf:\x00\x00\x00C\x00\x00\x00'
 b'\xc9:>?k\xcc\x7f\xbf/\x05\xdc>\x02\x00\x00\x00L\x00\x00\x00\x03\x00\x00\x00'
 b'T\x00~\xee\xbaX')

Результат разбора:

{'A1': -0.04861975088715553,
 'A2': 'booduc',
 'A3': 26447,
 'A4': 93,
 'A5': 14899486213491810919,
 'A6': {'B1': [{'C1': 74, 'C2': 0.47125921714702623},
               {'C1': -90, 'C2': -0.7893247031228994}],
        'B2': [0.7430844902992249, -0.999212920665741, 0.42972704768180847],
        'B3': 1488645758},
 'A7': {'D1': [-12301, -11424, 25499, 14592, -29850],
        'D2': 0.6906322456069423,
        'D3': 250,
        'D4': 64561},
 'A8': -0.2938065528869629}

Пример 2

Двоичные данные:

(b'KUB\x9d\xdbu\x89<\x05\x00\x00\x004\x00\xc02\xb3\x10\xb7\xb3l\x9d\xd9u'
 b'\x0c[\x00\xb1\x16I\xef\x05\xf2s\xe4\xa5\x0b\xf8\x10"SE6\xe8?\x11\xa9Nzt\xd0>'
 b'raxrm\x88 \xad+4\xe1\xf5\xa4\xbf\xa2\x8cz3\xc8\xd13\xe5\xbf9\x00\x00\x00B'
 b'\x00\x00\x00\xc80\xfe>\xe0\xdfG>\x02\x00\x00\x00K\x00\x00\x00\x02'
 b'\x00\x00\x00S\x00GJy\xc8')

Результат разбора:

{'A1': 0.016779830679297447,
 'A2': 'raxrm',
 'A3': 12992,
 'A4': 179,
 'A5': 897862970887091984,
 'A6': {'B1': [{'C1': -120, 'C2': -0.040938413256151884},
               {'C1': -94, 'C2': -0.6625756178071511}],
        'B2': [0.49646592140197754, 0.1951899528503418],
        'B3': -931575225},
 'A7': {'D1': [5809, -4279, -3579, -7053, 2981],
        'D2': 0.7566248534863282,
        'D3': 17,
        'D4': 20137},
 'A8': 0.4071386456489563}

Вариант №40

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc2 0x49 0x5a 0x44, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint32) структуры B
2 Массив char, размер 6
3 Адрес (uint16) структуры D
4 double
5 uint8
6 Размер (uint16) и адрес (uint32) массива float
7 int16

Структура B:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C
2 float
3 uint16
4 float
5 int32

Структура C:

Поле Описание
1 int32
2 int16
3 Размер (uint16) и адрес (uint16) массива uint16

Структура D:

Поле Описание
1 int32
2 uint64

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xc2IZDG\x00\x00\x00lhkoqdY\x00\x94\xfd\x19\xb1\\\x06\xd3?\x90\x02\x00e'
 b'\x00\x00\x00o\x10O\x12yM\xe1.v\x9df\xe9X~\x03\x00!\x00Ct\xd5O)*7H=\xb5\x02'
 b"\x001\x00'\x00\x00\x005\x00\x00\x00\x02\x00?\x00\xd2\xc2<\xbf6k\x95\xde\xb7"
 b'\xbe+\xd6z\xee\x85l\x84\x0f\xcc~Y^/\xb5\xf8\x8c\x90\xbc`\xbf\xc4\x12=>')

Результат разбора:

{'A1': {'B1': [{'C1': -379150986, 'C2': 32344, 'C3': [4687, 19833, 12001]},
               {'C1': 1211574825, 'C2': -19139, 'C3': [29763, 20437]}],
        'B2': -0.7373477220535278,
        'B3': 27446,
        'B4': -0.35912004113197327,
        'B5': -293939669},
 'A2': 'lhkoqd',
 'A3': {'D1': 260336773, 'D2': 10158068174585167564},
 'A4': 0.2972633103854261,
 'A5': 144,
 'A6': [-0.8778772354125977, 0.18464189767837524],
 'A7': 4207}

Пример 2

Двоичные данные:

(b'\xc2IZDw\x00\x00\x00npkoeo\x89\x00\xf0\xaa\x9b\x0b\xaf}\xbf?^\x02\x00\x95'
 b"\x00\x00\x00\xff|\xe7\x82\x9b\x87\rK[=\n \x02\x00!\x00\xfc\x12\xa0'5"
 b'\x18P<\xc1ei\xffTP\x1a\x89\xa1\xdd\x06\x00/\x00\xb4ehU\xf7f`i\xbc\t\xef'
 b'f\x03\x00E\x00\xc3m|e\xa9\xa7\xd9\xfb[\xf5\xe5B\x06\xff\x04\x00U\x00%'
 b'\x00\x00\x00;\x00\x00\x00K\x00\x00\x00]\x00\x00\x00\x04\x00g\x00k'
 b'\xbf\xa7=\xa5\xf1\x8d\xdf\x12\xbe\xe3\xb5q\x8d\xcd\nN\x05\xc6\x92\xb8'
 b'\x17\xc3e\x8a\xd6\xde\xc2\xf5\xbe\xd4\xe7\xcd>')

Результат разбора:

{'A1': {'B1': [{'C1': 1029393165, 'C2': 8202, 'C3': [33511, 34715]},
               {'C1': -1994764204,
                'C2': -8799,
                'C3': [4860, 10144, 6197, 15440, 26049, 65385]},
               {'C1': 163342688, 'C2': 26351, 'C3': [26036, 21864, 26359]},
               {'C1': 1122366811,
                'C2': -250,
                'C3': [28099, 25980, 42921, 64473]}],
        'B2': 0.08190806955099106,
        'B3': 61861,
        'B4': -0.1434309035539627,
        'B5': -1921927709},
 'A2': 'npkoeo',
 'A3': {'D1': 89000653, 'D2': 15459280559493649094},
 'A4': 0.12301153214836424,
 'A5': 94,
 'A6': [-0.48000234365463257, 0.40215933322906494],
 'A7': 31999}