ИНБО-09-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\x04MRWY\x00Vb\x1bo\xe0\x8a\x1b\xc3?\xe6\xb7\x93\xbfE\x95\xc2\xbd\xddmXz\xfc'
 b'\xa0j\xf1\xe2\xfcU\xbd\xa4{\x19zx,Y{#%\xc2\x9a.\xbf\x9dM\x11\xac\xdf\xa3@'
 b'\x0f\x91\\cz\xa1\x98\xf2\xa9\xdc=\xce\xfcQ\xd1Fs\xc1\xb0\xac\x88\x10O\x1a'
 b'&i\xa5\xb2\xdfsHC\x8e\xfe\xfaH \x8dl\xa5\x00\x00\x00\x02\x00\x16\x00\x00'
 b'\x00.S\xb8\xc5\xd5\xb2{>\xd9D\xafF\x19*\x12\xefa\x8d\x80\xea&\x98\x08'
 b'v\xda\xbe\xd8c\xba\xf3\x00\x02\x00\x00\x00F\x9b\xd0\x87\xc3\xb8\xab\x04'
 b'mF&\x1e\xf4')

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

{'A1': {'B1': {'C1': 18499,
               'C2': 2399074888,
               'C3': 546139301,
               'C4': [{'D1': -0.10811871290206909, 'D2': 8862134547943455829},
                      {'D1': -0.08031291514635086, 'D2': 8824852232662099394}],
               'C5': {'E1': -26066,
                      'E2': -0.028614307571760422,
                      'E3': 1121779364520892658,
                      'E4': 43484,
                      'E5': 0.1010671928524971},
               'C6': [1404618197,
                      2994421465,
                      1152337433,
                      705884001,
                      2374036006,
                      2550691546],
               'C7': -0.42263585329055786},
        'B2': {'F1': -13,
               'F2': [15079867678026663952, 5699910513584168819],
               'F3': [2614134723, 3098215533, 1176903412]}},
 'A2': 1645965280,
 'A3': 35355,
 'A4': 195,
 'A5': 0.7099093185212768}

Пример 2

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

(b'\x04MRWY\x00b\xe1\x01\x18\xfb\n8\xd3\xbf\xee\x13+\xcf\x9ca\xc4?@qg\xad\x97'
 b'\x0c\xf7\xe7W| \xbd\x8b\xfa\x8d\xcb\x99\xbc\xfdE\xfb\xb8U\xbe\x84q\x03\x06@'
 b'\x11B,\x0b\x10\x88\x95\xe2\xbf\xeb\x1cr}j\r\xc2o#\x1erx\xc1O\xed\x9cf?;'
 b'\xb4\x03A\x11.\xe6q9\x80\xa4\xca\rj\xc4\x94\xd2U3(3\x14.\xd7\xe8'
 b'\xaa\xf7\xc2f\x00\x00\x00\x03\x00\x16\x00\x00\x00:\xb7(s\x1d3n'
 b'\xde\xe5\x92\x0ek\nw.\xfc\x8e[\xd5\x9a\xc5\xedw\x8a\x98<\xfd=~\xb4\x00'
 b'\x02\x00\x00\x00R f\x14\x9fH\x1f\x8b\\\x18M\x0cV')

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

{'A1': {'B1': {'C1': 10291,
               'C2': 338614248,
               'C3': 2868363878,
               'C4': [{'D1': 0.7517303824424744, 'D2': 12508480748922567712},
                      {'D1': -0.06834898144006729, 'D2': 14670965057122973781},
                      {'D1': -0.2586747109889984, 'D2': 450378938641485960}],
               'C5': {'E1': -27166,
                      'E2': -0.8472225617883213,
                      'E3': 8008278039395913709,
                      'E4': 40038,
                      'E5': 0.7332155108451843},
               'C6': [3072881437,
                      862904037,
                      2450418442,
                      1999568014,
                      1540725445,
                      3984034456],
               'C7': 0.030913110822439194},
        'B2': {'F1': -76,
               'F2': [4688580254346346660, 14559410562901628211],
               'F3': [543560863, 1210026844, 407702614]}},
 'A2': -520021765,
 'A3': 2616,
 'A4': 211,
 'A5': -0.9398402266406767}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'TRDG\x1f>\x00\xa6\x97\x00\xc4\xa5\xab_4\xfb3D+p\xe7\\\r&TqHi\xdc\x1b&\xb1'
 b"\xfa'\x02\x96d\xa3\x890\x1a\x9e`\xd6\xbeZ\xf0\xc7\xf6=\x996\xf4.\x10\xf1"
 b'\xc0\xc7\n\x00"\x00\x94O\x93u\x90E\xdf\xbf\xa2\x1e~:\x02\x00:\x00\x00\x00'
 b'\xbb\x11a\xe7I\x198\xc1>\x9a5)\x9e\x9d\x08S\x85v)z\x049\xde\x964\x0e\xf5|'
 b'U\x15?\x1f\xc3\xd3=\xf8\xe6A?\x84x\xfe\xda\xbcm\x82(z\x0bF\x89P\xc8\xa8\x8dn'
 b'>\x03\xcc\x87\xe7\t\x03:\x86\xde\xfd\x0b\\U[WP\x00\x00\x00Z\x00')

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

{'A1': {'B1': -0.4886208675572956,
        'B2': 981343906,
        'B3': [{'C1': 4914547820753298884,
                'C2': 8166193863164653611,
                'C3': [26952, 7132, -20186, 10234]},
               {'C1': -7054272498612529662,
                'C2': 4464975915712960096,
                'C3': [13977, 12020, -3824, -14400]}]},
 'A2': -90,
 'A3': {'D1': 87,
        'D2': {'E1': 4539, 'E2': 11114533377083565921},
        'D3': {'F1': 2644388149,
               'F2': 4108543078569431816,
               'F3': 238327518,
               'F4': -11,
               'F5': [0.5833356380462646,
                      0.10339950770139694,
                      0.7574305534362793],
               'F6': -620857212,
               'F7': [679636412,
                      2303069050,
                      2376648784,
                      3422764654,
                      50980743,
                      4259219002,
                      1532320779]}}}

Пример 2

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

(b'TRDG\x1fX\x003\xb1\x000\xf85!--"\xff;\xbb\xefB\xba\xc7\xa5`\x0c\\'
 b'\xff\x0b"\xc2\xb0G\xcd\xeb9\xeeZ\xe9H\xaf?\x02N\xd1\x02\xcc>A\x13\x81<p\xa7%'
 b'G\xa0[\xb4\xa4\xbedx\xb3\xf5\xd0\xd0\xfd\xbc\xd0Z\x88\xc2\x85\x94'
 b'\x91\x0f\x04N\x9cJ\n\x00"\x00:\x00\x10\xbf\xaauY\xde\xda\xbf \xc0\xd0\xa0'
 b'\x03\x00R\x00\x00\x00\xc5~}\x08Z\xb0\xf8\x8d..0;\x1c\x84u\x853\x83'
 b'\xc2\xaaH\x93TB\xfc\x0eV\x04\xcaa>R\x1cr\xbf\xe8\xef=?\x9e\xbf\x1f'
 b'\xc2\xd9\xccKd\xbfG\xb9\xab\xea\x9e\x15 \\\xccL\x98\xf7\x83\xe5!H\x81\xa1'
 b'\xa3\x8f\x8f\x18\xc4\xa8j\x00\x00\x00t\x00')

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

{'A1': {'B1': -0.4198211335269528,
        'B2': 2698035232,
        'B3': [{'C1': -62437772975802320,
                'C2': 6964192001599191867,
                'C3': [23564, 3071, -15838, 18352]},
               {'C1': -5816142341995893811,
                'C2': 4701419373494927935,
                'C3': [-32493, 28732, 9639, -24505]},
               {'C1': -742117139495472037,
                'C2': -4429190380948434736,
                'C3': [-27515, 3985, 19972, 19100]}]},
 'A2': 51,
 'A3': {'D1': -88,
        'D2': {'E1': 32453, 'E2': 3327753273923471485},
        'D3': {'F1': 2216442672,
               'F2': -7833823799409408651,
               'F3': 251413076,
               'F4': 86,
               'F5': [0.22049719095230103,
                      -0.9457446336746216,
                      0.7419419288635254],
               'F6': -1038106722,
               'F7': [1682689241,
                      2881046463,
                      538287850,
                      2555169884,
                      568689655,
                      2745270600,
                      3289943951]}}}

Вариант №3

Задача №12

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

Структура A:

Поле Описание
1 Структура B
2 uint32
3 int64

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\tWSK\x02\x00\x00\x00G\x00\x15\t+J\xa4\xd1PJ\xa5[\x00\xb6?c\x89\xe7\x82\x8b'
 b'\x05!\x16i0Y\xa3\xb1\x86\xc6!%\xea\x0e\xbf>\xb2pT_\\W\xa6\xb3\xf0m\x14\x11'
 b'07h\xac>U\x8fH\xa2(\xd1]\x0cO\xd3#\x00\x00\x005\x00\x00\x00a\xaeY\x15|'
 b'\x16\x02\x18\x88\xb5l,i\xa44\xbf\xb1\xfe\x0c\xbf\xaa\xd7\x08?\xe5\xc5C>8'
 b'\x83`\xa1\x06\x00\x00\x00O\x00\x00\x00`4\x00(\x7f\xf0\xd2\xda?\xe2m')

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

{'A1': {'B1': [{'C1': 566658737,
                'C2': -0.5582602620124817,
                'C3': -19906,
                'C4': -1102354589633522576},
               {'C1': 806425709,
                'C2': 0.3367325961589813,
                'C3': -28843,
                'C4': -3220341611466022328}],
        'B2': 5355010460492695829,
        'B3': 165,
        'B4': {'D1': [-0.7056336998939514,
                      -0.5507612824440002,
                      0.5345407724380493,
                      0.19118459522724152],
               'D2': {'E1': [56, 131, 96, 161],
                      'E2': [44641, 5465, 5756, 6146, 46472, 11372],
                      'E3': 96,
                      'E4': 0.4191247216949734},
               'D3': 28130},
        'B5': -74,
        'B6': 63},
 'A2': 2196212067,
 'A3': -6676251744699087477}

Пример 2

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

(b'\tWSK\x02\x00\x00\x00G\x00\x91\xebb,\xce\xf3*y\x85[\x00\xe7\xfe\x12\xdf\r!*'
 b'\xe0\xdf\xd9\x90\x8d\xac\xdc\xa9\xaf!\x0cF\x05U\xbf \xd4\xed\xb7\xda'
 b'pL\xc5\xddVa\\IW\x04\x97\x13\xbfc\x8b5\xdc#!\xd3\xf2\x8a.#\x00\x00\x005'
 b'\x00\x00\x00\x89]\xf7_\xb0/\xae\xe1V\x8c\xd8E~hI\xbf\xa7,\xd9>\xb4'
 b'\r\xda\xbc\xd5\x82[\xbf\x07\xef\xc3\xe0\x06\x00\x00\x00O\x00\x00\x00v\xfc({&'
 b'\xafc\xd1?p\x97')

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

{'A1': {'B1': [{'C1': 203534249,
                'C2': -0.8321117162704468,
                'C3': -11232,
                'C4': 6259375989216425965},
               {'C1': 1464425569,
                'C2': -0.5765230655670166,
                'C3': -29853,
                'C4': 3353759861138775093}],
        'B2': 8731058894444620689,
        'B3': 133,
        'B4': {'D1': [-0.7867506742477417,
                      0.42416879534721375,
                      -0.026617862284183502,
                      -0.8574650883674622],
               'D2': {'E1': [7, 239, 195, 224],
                      'E2': [23945, 24567, 12208, 57774, 35926, 17880],
                      'E3': 118,
                      'E4': 0.2717092395584044},
               'D3': 38768},
        'B5': -25,
        'B6': 254},
 'A2': 554557202,
 'A3': -2545504036101038038}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZNTO\x18tykotmlbn|\xa9\xc7\xa8vsZF\xc9\xccj\xdc\x96\xeam\x83\xc5\x93'
 b'\xe1\xc4t\xfc7\xaf\xe91\xcb\xcauFzr@\xd2\xba\n\xb1\xfbmX\xd9\x1b'
 b'M\xcf\x13\x18\x8c\x00\xf6r#d\xdf\xe9\x00\x05\x00\x00\x00h\r\xc0\x82\xed?\xcd'
 b'\x9eE##0\xd8\x00\x00\x00\x05\x00m?\xee\xafbbC\x83\n3\x99\x04\xc8g\xfd\x11j'
 b'\x87{vs\xe3\xd3')

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

{'A1': 24,
 'A2': {'B1': 'tykotmlb',
        'B2': 1853663687,
        'B3': {'C1': 43126, 'C2': 29530},
        'B4': 1187630186,
        'B5': [{'D1': -36, 'D2': 10874624662962430404, 'D3': 1962686383},
               {'D1': -23, 'D2': 3588184133173146176, 'D3': 3535407793},
               {'D1': -5, 'D2': 7879286259377443608, 'D3': 2348873330}],
        'B6': 593813481,
        'B7': [103, -3, 17, 106, -121]},
 'A3': 230720237,
 'A4': 0.23139251914688574,
 'A5': [123, 118, 115, 227, 211],
 'A6': 0.958909217759442,
 'A7': 865666248}

Пример 2

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

(b'ZNTO\xb7aplmmiyh,\xc3\xeb\x15C\x92\x92<\xfc\xea\xaa\xfd\xef\xb1&'
 b'\xb2h\xf5\x8d\xd1H\xc4\xf3\xe7\xb0\xc3\xadpW\xfc\xc6\xcf\xa5\xab\xd7'
 b'n\xa5\xaaj\xfe\xabO\xb1\x9c\x84\xbb\x83,\xbd\xdd\x19\x1cz\xf7\xf9'
 b'\x00\x06\x00\x00\x00hQ^\x02\xc9?\xcc\x14\x06\x04\xe0\xd4\x00\x00\x00'
 b'\x00\x02\x00n?\xae\x1b\xabge\xa0`\xbc4oKp\xfe\x88;J\xa7 \x17')

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

{'A1': 183,
 'A2': {'B1': 'aplmmiyh',
        'B2': 751037205,
        'B3': {'C1': 17298, 'C2': -28100},
        'B4': 4243237629,
        'B5': [{'D1': -17, 'D2': 12765086357694304584, 'D3': 3304318896},
               {'D1': -61, 'D2': 12497585709131998635, 'D3': 3614352810},
               {'D1': 106, 'D2': 18350848730904968067, 'D3': 750640409}],
        'B6': 477820921,
        'B7': [112, -2, -120, 59, 74, -89]},
 'A3': 1365115593,
 'A4': 0.21936106908984243,
 'A5': [32, 23],
 'A6': 0.05880485188646456,
 'A7': 3157552971}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x0bHSXTP/\xbf\xea\xb5\x9a\xf1h\x02\xee\x00\x00\x00\x18\x00\x9blqr\xbf\x11OA'
 b'\xf2l*\x8d\xf5-\xd7\xd3:\x0f\xdb\xaf\x1a=\xee\xc5\xf4\x89s\xab\xcf\x1cX-'
 b'l\xea\xfd\x93r\xa5\x87\xef\xdb\x9f1ZP\x11T`\xd7\x1f\xea\xc6"B\xbc\x01\xedR,_'
 b'\x93\xda~Z\xbb\xfe5\xfd\xc9\xd0\xc1\'\xbe\xd6\xb1I"*9\xa6\x9f\xa8\xcbf'
 b'\\\xde\xb2\xc6\xa3\x00\x03\x00\x00\x00\x15\xbfF\x1f\xff\xbfX\x935\xbe[W\xc5>'
 b'\xc5\xb6\x8c\xbf\x15_)=\x82!R\xbf\x01\xe9\xac\xbf@)\xe3V\xe5\x8eo\xd1'
 b'\xaa\xe3\x89\x1fY&\x9dz>\x8a \xc2o\x9b\x9e{\xb2\xb3\xae')

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

{'A1': 20527,
 'A2': -0.8346686091391271,
 'A3': {'B1': -0.5676155686378479,
        'B2': [{'C1': 17468383843855488979, 'C2': 58},
               {'C1': 1142699457711621620, 'C2': 137},
               {'C1': 8334983256024640746, 'C2': 253},
               {'C1': 10624736474183737137, 'C2': 90},
               {'C1': 5769485372541102790, 'C2': 34},
               {'C1': 4808720620922363795, 'C2': 218},
               {'C1': 9104796297184790992, 'C2': 193},
               {'C1': 2863962469978745401, 'C2': 166}],
        'B3': {'D1': -6942075185086418234, 'D2': -93},
        'B4': 'lqr',
        'B5': [-0.7739257216453552,
               -0.8459962010383606,
               -0.21420200169086456,
               0.3861583471298218,
               -0.5834832787513733,
               0.06354011595249176,
               -0.5074717998504639,
               -0.7506391406059265],
        'B6': 1457884783,
        'B7': 3517637513},
 'A4': {'E1': [31, 89, 38, -99, 122, 62, -118],
        'E2': 32,
        'E3': 14010588070755349422}}

Пример 2

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

(b'\x0bHSXT\xd4X\xbfj\xbf\n\x90\xb6&\x00\x00\x00\x00\x1a\x00\x9daosja?N'
 b'\xd1\x16\x01\xc1N\x1b\xbap\x1b\xdc"\x94\t\xd0\xb3\xb8\x1d\xe5v\xbfi\r;w'
 b'\xb9im\xf0\xc0\x1f\xdcN\xa7d]\x00\xdf\x9bbx\x13\xf1\xea\x0f\xc6\xce\xbb\xf1'
 b'PL\xdd$\x8eC\x0f\x1b\x1aq\x91\xbd\x0eN\x8apk\xb9\x15\xcd\xde|\x89\x8a'
 b'\xaf\x04\xc7\xbe\x82\x7fn\xc2?Gn\x00\x05\x00\x00\x00\x15=\xa6)\xab=\xef\xac'
 b'\xf1\xbfx\x0em\xbf#en;\x8c\xdfB>\x88\xf7\xd8\xbf|2V\xbf\x08\xc9Y\x92a\xb7'
 b'\x0e:\x86\\a>\xbb^\x9c\x07\x9f\x1a\xba\xbb\xab\x079\x91\x83\x9a?')

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

{'A1': 54360,
 'A2': -0.0032649237015831556,
 'A3': {'B1': 0.8078778982162476,
        'B2': [{'C1': 126468145542077404, 'C2': 34},
               {'C1': 10667286662710420854, 'C2': 191},
               {'C1': 7569771934077513200, 'C2': 192},
               {'C1': 2295796390902431967, 'C2': 155},
               {'C1': 7095443142657165006, 'C2': 187},
               {'C1': 17388482673962271503, 'C2': 27},
               {'C1': 1905464358529305200, 'C2': 107},
               {'C1': 13336792226983414447, 'C2': 4}],
        'B3': {'D1': -4053659130756186297, 'D2': 110},
        'B4': 'aosja',
        'B5': [0.08113416284322739,
               0.11702907830476761,
               -0.9689701199531555,
               -0.6382664442062378,
               0.0042990753427147865,
               0.2675158977508545,
               -0.9851430654525757,
               -0.5343223214149475],
        'B6': -1839089906,
        'B7': 981884001},
 'A4': {'E1': [62, -69, 94, -100, 7, -97, 26],
        'E2': 186,
        'E3': 13522910249945897535}}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'MUTQ\xdbG\x8c\x9ewP}\xc0\xbd\x00\x02\x00LD\xa3fhc?\xb8`\xdc\xc77\xaeppj'
 b'\xbf\xb6\xa2 \xb3\xfa\x9d`\xc9\xf2s\xaef\xc8?\xd57\xe9^A\xa3\x10\x00\x00'
 b'\x00R\xb8\xfb\xd0a\xd1\xf5?\xe2q\x07Q\x86\xe2\x1e\x00\x00\x00cix\xc0`'
 b'\xd6\xdbW=\x1a\xae\x91?p\xba\xb3\x00\x02\x00Nb\xd0\x13\x9a\x8d?E\x01-<\x9a3L'
 b'\x00\x02\x00_')

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

{'A1': {'B1': 5155669908721090749, 'B2': 'ix'},
 'A2': 1151559272,
 'A3': 99,
 'A4': 0.09522800315579061,
 'A5': 28778,
 'A6': -0.08841137308137581,
 'A7': [{'C1': [51698, 29614, 26312],
         'C2': 0.33153757290578856,
         'C3': {'D1': 87,
                'D2': 0.037764135748147964,
                'D3': 0.9403488039970398,
                'D4': [-16288, -10533]}},
        {'C1': [47355, 53345, 53749],
         'C2': 0.5762974350282695,
         'C3': {'D1': -115,
                'D2': 0.7695491909980774,
                'D3': 0.0188232883810997,
                'D4': [25296, 5018]}}]}

Пример 2

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

(b'MUTQ\xdb\xcfq\xaa\xe0\xc1\xb8\x9bV\x00\x04\x00L\x1c\xfeN2\xa2\xbf\xd6'
 b'\x153\x19\xc9}\xa4\x12\x92?\xb1\xf7\xf5\x96\xfb\x15p"\xca\xa7DA\xce\xbf\xe1'
 b'\xa3\xd6}e\xfb\x9c\x00\x00\x00T>\x14\xe2\xc5\x05D\xbf\xc7`\xcak\x9a\x9b\xb0'
 b'\x00\x00\x00eciatPs\xcb\x0e\x8e\xbfb\x8e)\xbf\x14\xb9U\x00\x02\x00P\xb4\x99@'
 b'w\x83?\x04\xc4\xec?\x00\xc4*\x00\x02\x00a')

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

{'A1': {'B1': 14947916520518884182, 'B2': 'ciat'},
 'A2': 486428210,
 'A3': 162,
 'A4': -0.34504392164486775,
 'A5': 4754,
 'A6': 0.07018980918936335,
 'A7': [{'C1': [8906, 42820, 16846],
         'C2': -0.551249737662022,
         'C3': {'D1': -114,
                'D2': -0.8849816918373108,
                'D3': -0.5809529423713684,
                'D4': [20595, -13554]}},
        {'C1': [15892, 58053, 1348],
         'C2': -0.1826413178834776,
         'C3': {'D1': -125,
                'D2': 0.518629789352417,
                'D3': 0.5029932260513306,
                'D4': [-19303, 16503]}}]}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b";GKX.\xf0P\x92rkaa\xa7:\x7fD\xf31\x00M\x00D\xd3\xef\x81\x0f\xb18'-Y\x00"
 b'J\x03\xc2\xf7\x8e\xe7 \xa9\xab\x93\xa4\x17:\x8f\xc5\xe5\xff\x95\xc0|'
 b'Y\x02\x00\x00\x00!\x00\x00\x00\xfd\xac\xca0\x16B\xccP\xd6\xc44'
 b'\xb4\x0b\xf6\xbc`\x174\x0cl\x02\x00\x00\x00=\x00\x00\x00P\xf8vt[\xae\xd1'
 b'?\xac>}>\xb7\xd0\xe7\xbfb\xa5\xe8:\x9f\x7f\xef\xd4_\x9e:\xc6\xae\x1f\x18'
 b'\xbf\xc1\xd7\x94_k\x80\xf0\xf0\xa4\xf3\x1c*dM\xee?pg\xcb\xf1\xe0h\xd0'
 b'\xbf"\xa4h\xc3\x87z\xef\xbf(C\xd5-\x107\xe6?')

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

{'A1': -1840189394,
 'A2': 'rkaa',
 'A3': {'B1': 1149188775,
        'B2': 243,
        'B3': [{'C1': 1501347989,
                'C2': [12369454030457913859, 18439361468283987091]},
               {'C1': 1812739095,
                'C2': [5822101081358511357, 6970716853391115478]}],
        'B4': -11452,
        'B5': {'D1': 33263, 'D2': 45327, 'D3': 56, 'D4': 11559}},
 'A4': {'E1': 0.27626692174442713,
        'E2': -0.7442280025952264,
        'E3': 42338,
        'E4': 15080,
        'E5': 14283903302590496671,
        'E6': -0.5942333936691284,
        'E7': 17361517762166708161,
        'E8': [0.9469471762200681,
               -0.25640128720043887,
               -0.983707315118526,
               0.6942215819527506]},
 'A5': 74}

Пример 2

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

(b';GKX\xc6\xd0\xf1\xa9jxbz\x8f\x0e\x9fk}1\x00M\x00?\xf6\x94\xbaT\r\xe5'
 b'\xb2kY\x00\xdfc\x15\xf7\xb8\xc4\x06H/7\xb5\xcf\xc4)Q[\xe8K\xd3\xb8'
 b'\xd9\x02\x00\x00\x00!\x00\x00\x00H\xb8\x10\xd9\x0c\\7Q\xc3\xc6\xc4'
 b'\x97\xe9\x9c\x8e\xbc\x14\xe0\xb7\xc5\x02\x00\x00\x00=\x00\x00\x00X\x85\x03'
 b'\xd1\x04\\\xec?xq#\xc4am\xe1?\x82\x90\x0f\x9eJ\xee<\xc7\xfb\xecZk0\x99N'
 b'?8C\xb7%\x00\xabA\xea\x9cZ\xa6\xa4\xb7\xd5\xe7\xbf\xa8Mo\x17/?\xe8\xbf`t;'
 b'[\xaf\x96\xbf?Pl\xdap?\xdb\xc8\xbf')

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

{'A1': -1443770170,
 'A2': 'jxbz',
 'A3': {'B1': 1805586063,
        'B2': 125,
        'B3': [{'C1': -642198709,
                'C2': [3406980560092337507, 16743065279517406519]},
               {'C1': -977805292,
                'C2': [5852247451042363464, 13586969652910933699]}],
        'B4': -2497,
        'B5': {'D1': 47764, 'D2': 3412, 'D3': 229, 'D4': 27570}},
 'A4': {'E1': 0.8862327654170867,
        'E2': 0.5446022826031784,
        'E3': 36994,
        'E4': -25073,
        'E5': 7735755876085853770,
        'E6': 0.8070249557495117,
        'E7': 16879960895482446648,
        'E8': [-0.7448385444466399,
               -0.7577128846846124,
               0.1233930204138729,
               -0.19419091234599017]},
 'A5': -33}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'VTHU^t\x00\x00\x00z\x00\x00\x00\x9e\x14\x0b\x86Q\x98]\xcd\xad\x90\x0b'
 b'.\xeb\xfa\xcb\xdfI\xbf\xfb\rz\x84t\xd6\xbf7?\x1a\xb4\xeb\xf8\xa8\xb5\xb3\xec'
 b'\xf0\xf4\xae\xda\xba\xa1\xc50<\x1e\xed\xb2\x1ea\xf2\x0f\xd9\x9f<\x13!&#i'
 b'\x16\xf2L\xe5\xd4\x04\xe1!\x05`\x91\xce}\xb3\x00\x02\x00\x00\x00\xa9R|s\xdf'
 b'\xbf\x12\x00\x05\x00\\kO\xe2%\xdci3R@O<~=\x84\x00\x00\x00\x06\x00f\x00\x00'
 b'\x00a\xe4\xf1\xf9\x00\x00\x00l?\x8c\x0c\x86n\x00\x04\x00\x85\xfb '
 b'^\xe3\xe1\x9d\xbfX\x0c\xf9\x00\x00\x00\x02\x00\x8e\x00\x00\x00\x89\\n'
 b')\x00\x00\x00\x90\xa3\xc9\xe4\x11')

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

{'A1': 116,
 'A2': [{'B1': {'C1': 18, 'C2': [82, 124, 115, 223, 191]},
         'B2': -28,
         'B3': 61945,
         'B4': {'D1': 861028431,
                'D2': 0.015517596155405045,
                'D3': [107, 79, -30, 37, -36, 105]}},
        {'B1': {'C1': 110, 'C2': [63, 140, 12, 134]},
         'B2': 92,
         'B3': 28201,
         'B4': {'D1': 1591992733, 'D2': -0.8439479470252991, 'D3': [-5, 32]}}],
 'A3': 1444395790509133229,
 'A4': [-8067302716444254391,
        -4613078573451520321,
        3980929959974185141,
        -5481741712720479583,
        -4237821145821077919,
        -1004344913949417178,
        2551595893810123780,
        -2224490828623086157],
 'A5': [41929, 58385]}

Пример 2

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

(b'VTHU^\x1e\x00\x00\x00v\x00\x00\x00\x9f\x8f)\x8c(\xefy27\xc8\xb1/!\x90\x87'
 b'H\xacA\xcb\x84\x11\xc4NR\xa6l4\xd9\xd6\xd1\x08\xfb+\xb0\xaar\x89\xbb\x87'
 b'4\xfd\x8b\xc6\xa0p&9\xde\xa1\xb7\r\x0e@\x8a\xefU\xf5\x81\xf2\xa2Q\x95\xe8'
 b'\xed\x0c\x8e\x8c\nQ/\x15d\xca\x00\x02\x00\x00\x00\xaa\x11\xfc\x99\x00'
 b'\x02\x00\\\xed\xe1.VD\xeb5\xf3O\xbe\xa2\xd0\xeb\x00\x00\x00\x05\x00c\x00\x00'
 b'\x00^\xef\xe6r\x00\x00\x00h\x11^\x1b\x16\xcfy\xb3\xce\x00\x07\x00\x81?I\xc2'
 b'\xac\x917#(?M\xf1\xbd\x00\x00\x00\x04\x00\x8d\x00\x00\x00\x889\xc6_\x00\x00'
 b'\x00\x914Cw\xb3')

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

{'A1': 30,
 'A2': [{'B1': {'C1': -103, 'C2': [17, 252]},
         'B2': -17,
         'B3': 58994,
         'B4': {'D1': -348785841,
                'D2': -0.3180001676082611,
                'D3': [-19, -31, 46, 86, 68]}},
        {'B1': {'C1': -50, 'C2': [17, 94, 27, 22, 207, 121, 179]},
         'B2': 57,
         'B3': 50783,
         'B4': {'D1': -1858657496,
                'D2': 0.804469883441925,
                'D3': [63, 73, -62, -84]}}],
 'A3': -8130813544796442057,
 'A4': [-3985352374040966996,
        4741028244580356774,
        7797096371538426667,
        -5716630841111137027,
        -8374830053510750559,
        -5256529519699864075,
        -9083019027161748212,
        -8175147879785732918],
 'A5': [13379, 30643]}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'RKUTs\xbfy\x06\xc7\x1dQJ\xfc\x00\x00\x00\x02\x00(\x91AB\t\x00\x00\x000\x00'
 b'\x00\x00\x81W\x17\\\x18\xf5\xc0\x8a\x16!\x1fF\xc6\xf5\x0e\xbb\xea\x0f'
 b'\x07\xf0z4c\xe6\x02\x12:CUh\xb8\r\xcd\x0e7;\n\xa4 `6^\xf9\xc6\x87\xc0Qke\xca'
 b"\x00\x00\x00\x04\x00,\x16Q\xbc\xb6\x05\xfe\xc6\xf0Im\x9d\xb6\xb3'"
 b'*\xc3\xa6\xed\xf8a\xf7\xb3\x86b@(\xfa\xe8\xfb\xdd*N\xea\xad\xc2\xf7\xd2B'
 b'\xba\x86\tj!U\x9d?%\xf6\x9f\xf36\xbf\xcc\x1e\xc6\x04\xb7\xb0\xc8N\x00\x06'
 b'\x00\x00\x00i\xbfI\xc5\x06L\xd2\xd6\x19\xd6\x87=N')

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

{'A1': 13797066385686350588,
 'A2': [{'B1': 31, 'B2': 70}, {'B1': 198, 'B2': 245}],
 'A3': -1857994231,
 'A4': {'C1': 133200436,
        'C2': [1676018194,
               977491304,
               3087912206,
               926616228,
               543176286,
               4190537664,
               1365992906],
        'C3': [14, -69, -22, 15],
        'C4': {'D1': 1608274031918630640,
               'D2': 5291058545245498051,
               'D3': [-90, -19, -8]}},
 'A5': {'E1': 1436368677,
        'E2': 4137677622,
        'E3': -0.21968913297985737,
        'E4': 78,
        'E5': [1643623302,
               1648371962,
               3908820266,
               1324002754,
               4157751994,
               2248763937],
        'E6': -0.7881625890731812,
        'E7': 5535722298453474638},
 'A6': 6275585868036082198,
 'A7': 33}

Пример 2

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

(b'RKUTs\x80J\x7f\x8a\xaa\xb9-\xce\x00\x00\x00\x02\x00(*\xaakX\x00\x00\x00/\x00'
 b'\x00\x00\x80L0\xe6\x9e?\xcf#\xf7$\xc8\xbd4#\xd0\x9fmh\xb5\xd7\xa8$\xa2\xfc{>'
 b'\xae\x9c\xf4\xd9\xd5C\xe7\xcf\xe5\x02\x0e\x08\x1aX\xe5\x08.!\xae\x06'
 b'\xe9\r\x0f\x00\x00\x00\x03\x00,uC\x07\xa2\xa0\xc2\xb9\x1c\xcb\xceM'
 b'x\xbe\x8e\x0c3\x7f\xb4\xb8\x97\x8f\x03\xf1f)8Vk\xbbr\xd3v\x05\xc6x'
 b"\x1f\x8b\x94'\x84PP;\xb1\xd3l\x9bE\x9bAt?\xc6 B@\x16\xb9\xc0\xfd\x00\x06\x00"
 b'\x00\x00h\xbfg\x03|}1\xef@`\x92\xfaO')

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

{'A1': 9244341418677841358,
 'A2': [{'B1': 200, 'B2': 189}, {'B1': 52, 'B2': 35}],
 'A3': 715811672,
 'A4': {'C1': 1756747688,
        'C2': [614661243,
               1051630836,
               3654632423,
               3487891982,
               135944421,
               137241006,
               115936527],
        'C3': [-48, -97, 109],
        'C4': {'D1': 8449605720940394780,
               'D2': -3760983457819390925,
               'D3': [127, -76, -72]}},
 'A5': {'E1': 2983423131,
        'E2': 1167802740,
        'E3': 0.17285946015677034,
        'E4': -3,
        'E5': [2542732273,
               1713977430,
               1807446739,
               1980089976,
               529241127,
               2219855931],
        'E6': -0.9023969173431396,
        'E7': 9021254588377004623},
 'A6': 5490141513114395639,
 'A7': 36}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'~CHRO\x00\x00\x00:\xc9\x00I\x00\\\x00o\xb4\x98\xde\xc6\xbd?\xd6\xea'
 b'\xec\xce\xbezd[\x99G\x07\x10?\xd0\x91x\xf8\xf1\xb04?\xe0\xc3\x8e\xbe\xe0'
 b'\xe9P\xbf\xea>\x1d(\xc9\xe2@\xc2_\xd0_\x82\xf4\xa1\xe1yucymle>\xa7\x0f'
 b'\xf5\xbfnA\t\x00\x07\x00B\x11\xb4\xc7biup\xbd\x99\x11\x14\xbf\x124.'
 b'\x00\x04\x00X<~\x88seec>\x13U\xb8>\x87(\x0e\x00\x04\x00kt8`')

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

{'A1': {'B1': 3261059167, 'B2': -2097896991},
 'A2': -55,
 'A3': [{'C1': 0.32629361748695374,
         'C2': -0.9306798577308655,
         'C3': 'yucymle',
         'C4': 4532,
         'C5': 199},
        {'C1': -0.07473960518836975,
         'C2': -0.5711086988449097,
         'C3': 'biup',
         'C4': 15486,
         'C5': 136},
        {'C1': 0.1438816785812378,
         'C2': 0.2639774680137634,
         'C3': 'seec',
         'C4': 29752,
         'C5': 96}],
 'A4': [{'D1': -1265049914, 'D2': -67, 'D3': 0.3580886858925736},
        {'D1': 1536771847, 'D2': 16, 'D3': 0.2588789397329976}],
 'A5': [0.5238717773529888, -0.8200822636272918]}

Пример 2

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

(b'~CHRO\x00\x00\x00:}\x00I\x00]\x00p\xf2\xa0f\x8e\x9b\xbf\xc0Re\x9f\x95\x11'
 b'\x90\xdc/:\xdb\xaa\xbf\xecEq\x1f\x84m8?\xef\xbe\xe5\x92,< \xbf\xea\xf7+\xcf-'
 b'\x11\x08\x80\xac\x95\x9d\x0f\xa2-\x12slcbtuf\xbfI\xc4\x97=\xfbQ'
 b'\xc0\x00\x07\x00B\xd8:\xb5sjboy=\x85\xf5,\xbe\xab\xa9\x00\x00\x05\x00'
 b'XH\xdd\xc8sspl?HyL>w~\xd4\x00\x04\x00l\x14\xd5\xd9')

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

{'A1': {'B1': 2158794141, 'B2': 262286610},
 'A2': 125,
 'A3': [{'C1': -0.7881559729576111,
         'C2': 0.12271451950073242,
         'C3': 'slcbtuf',
         'C4': 55354,
         'C5': 181},
        {'C1': 0.06540903449058533,
         'C2': -0.33527374267578125,
         'C3': 'sjboy',
         'C4': 18653,
         'C5': 200},
        {'C1': 0.7831008434295654,
         'C2': 0.24169474840164185,
         'C3': 'sspl',
         'C4': 5333,
         'C5': 217}],
 'A4': [{'D1': -224369010, 'D2': -101, 'D3': -0.12751455585579352},
        {'D1': -600884517, 'D2': -86, 'D3': -0.8834767928669072}],
 'A5': [0.9920528273522713, -0.8426722570807508]}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'QUKJ\xd4\xa6\xe0\xbe\x03\x00\x00\x00\x17\x00\x00\x00\xfd\xacU|'
 b'\x00\x00\x00\x00\xe3\xe8\xf9\xc6y?\x06Pq\xb7n\xbe7\x82\xf3\x04\x00\x00\x00#'
 b'\x00\x00\x00\xe4rA\xbf\xee\x8c\x7f\x1d\x8c\x8f\xca\x8d\xcc\xbc\xe7+\x03'
 b'\x00\x00\x00<\x00\x00\x00HLZ\xbf$\x8d\x01pK1\xbc\x84\x8c\xc8\xcd\x89\x03'
 b'\x00\x00\x00T\x00\x00\x00\xee\x8e`\xbe\x0f\x1e\xa6\x85\x7f[\xe9\xe0\x8a'
 b"\xfe\x07\x96>\xe7V\x19\xbf\x88\x06-?\xa3\x80\xa6>\xdf!\x7f\xbf'\x00?\x00"
 b'W\x00\x10Pe\xa3\x11\xfb\xcf\xc6\xda\xca\x04\x00\x00\x00l\x00\x00\x00'
 b'21\x9b\x01\xd1\x89*\xf9F\xb3\xe3/\x1a\x91\x88;s2\xec\xbfp\xcbx\x85')

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

{'A1': -0.4387727975845337,
 'A2': [-102178048, 104823238, 1857515856],
 'A3': 253,
 'A4': 21932,
 'A5': {'B1': -0.9966105818748474,
        'B2': [{'C1': [190, 55, 130, 243],
                'C2': -0.7556593418121338,
                'C3': -8229607537113068306,
                'C4': 204},
               {'C1': [188, 231, 43],
                'C2': -0.8527264595031738,
                'C3': -8882170165010002652,
                'C4': 140},
               {'C1': [200, 205, 137],
                'C2': -0.21929523348808289,
                'C3': -2240158736378880497,
                'C4': 138}],
        'B3': {'D1': 20496,
               'D2': 14617214137157133157,
               'D3': [0.2930297255516052,
                      -0.5989822745323181,
                      0.6758809089660645,
                      0.3252001702785492],
               'D4': 12594,
               'D5': 12918286542254965147},
        'B4': 12259,
        'B5': -0.8811584627879114,
        'B6': 52080,
        'B7': 34168}}

Пример 2

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

(b'QUKJ\x9aV1\xbf\x03\x00\x00\x00\x17\x00\x00\x00\x8e\x97\x1c|\x00\x00\x00L'
 b'\xa8\x850I\xf5O\xe3Ar\xbb\xfa\xd55\x88\x03\x00\x00\x00#\x00\x00\x00\xe7y'
 b'7?\x83a\xc8D:Qty\tr_V\x03\x00\x00\x00;\x00\x00\x00\xfb]j>\x16\x1c'
 b'\x1b\xa7\x1e\x97\x93aa\xf2#?~\x04\x00\x00\x00S\x00\x00\x00}F\x7f?2\xa2G>i'
 b'\x81\tY\xe7\xb6\xd6\t>P\xc0\xe9>\xc0\xd2`?/\x0f\xc2\xbdj@N\xbe&\x00>\x00'
 b'W\x00\x1er\xe1\x04\xb2\xddy2\x1f\xbb\x04\x00\x00\x00l\x00\x00\x00'
 b'\x93\x15l\xb0\xc27\xc5l\xb8E\x93\x06\xc6v\x8f\x93\x84\xdf\xe2?0G\x14x')

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

{'A1': -0.6927276849746704,
 'A2': [814065740, -481299127, -88378815],
 'A3': 142,
 'A4': 7319,
 'A5': {'B1': -0.20141759514808655,
        'B2': [{'C1': [213, 53, 136],
                'C2': 0.7167038321495056,
                'C3': 8751709286591652227,
                'C4': 9},
               {'C1': [114, 95, 86],
                'C2': 0.22887413203716278,
                'C3': 7031129601163861014,
                'C4': 97},
               {'C1': [242, 35, 63, 126],
                'C2': 0.9971693158149719,
                'C3': 6415801433182413362,
                'C4': 231}],
        'B3': {'D1': 29214,
               'D2': 13483551308362417377,
               'D3': [0.13460811972618103,
                      0.456545352935791,
                      0.8782157897949219,
                      -0.09475552290678024],
               'D4': 5523,
               'D5': 5023884978631651436},
        'B4': 1683,
        'B5': 0.5897848970450574,
        'B6': 18224,
        'B7': 30740}}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'^EIIF\x00\x02\x00\x00\x00U\x00\x03\x00\x00\x00mC\x00\x05\x00\x00\x00s'
 b'\xbct\xec\xd7s\x08*\x97\x00\x02\x00\x00\x00\x9b\x88?3~\xbf\xde;\xf9\xe3\xeb'
 b'V\xb8\x82\x8b\x8cI=?\x0c\xc4rcL\xd23\x8e\xbf\xc9\x1e\xb4\xe2\x1f\xaf`'
 b':\xb7\xa25\x06\xce\xf9\ttouom\x00\x00\x00&\xe2\x80\x9fG\x00\x02\x00'
 b':\x00\x00\x00<+\xb6h\x8d\x00\x05\x00Py\x0f`\xc8v\x0e\xc2\xfb\xe5\xf9\xc6'
 b'\x9d\x83nj+\x96RJ(\x0c[\x8c\xa4[\xb7\r\x18w\xef\xcaleX\x8e\xd5\xfe}\x08'
 b'-R\xa0\x80\x16\xeaC\xd9n\x7f\xa3')

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

{'A1': [{'B1': {'C1': 2285843326,
                'C2': -0.4724106527113281,
                'C3': -9039977580828095292},
         'B2': 3800080199,
         'B3': 'rc'},
        {'B1': {'C1': 1288844174,
                'C2': -0.19624959031295486,
                'C3': 4231028723569064201},
         'B2': 733374605,
         'B3': 'touom'}],
 'A2': {'D1': [30991, 24776, 30222],
        'D2': 67,
        'D3': [-4396667750255328402,
               7650373672194542683,
               -8312418170462242833,
               -3860599349535441283,
               589217975552633411]},
 'A3': 3161779415,
 'A4': 115,
 'A5': 8,
 'A6': 10903,
 'A7': [-9874, 32675]}

Пример 2

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

(b'^EIIF\x00\x02\x00\x00\x00X\x00\x04\x00\x00\x00p\x19\x00\x03\x00\x00\x00x'
 b'S@\xc3\xd3\x9e\xfa\x8d\x12\x00\x02\x00\x00\x00\x90\x01\xb6$\x0f?\xe6'
 b'U\xd0\xe7\xfaqJK\xcf\x97$wT\xa6\x12qgzG\xb2O\xdb?\xe2\x16\xce\xb6\xda\x0e'
 b'\x96\x9f\x1dQ\x0bl\r\x8e\tlhdvhta\x00\x00\x00&M\x9f"M\x00\x03\x00:'
 b'\x00\x00\x00=\xd7\xe8\xdbu\x00\x07\x00Q\xdbH\xf1,\xb4\x03\xc6\x0f'
 b'\xd9\xb7\x94\xff\xbb\x04\x91V\x9f\xfc\xed9i\xef\xadf\xdc\xfb j[(\xe6\xf0'
 b'lE\xe1\x8e')

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

{'A1': [{'B1': {'C1': 28713999,
                'C2': 0.697975590784645,
                'C3': 5462751055900354066},
         'B2': 1302274637,
         'B3': 'qgz'},
        {'B1': {'C1': 1202868187,
                'C2': 0.5652841159175803,
                'C3': -6981334737855082999},
         'B2': 3622361973,
         'B3': 'lhdvhta'}],
 'A2': {'D1': [56136, 61740, 46083, 50703],
        'D2': 25,
        'D3': [-2758572420665929386,
               -6918394096701690522,
               -2523387525043001616]},
 'A3': 1396753363,
 'A4': 158,
 'A5': -6,
 'A6': -29422,
 'A7': [27717, -7794]}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xf1FMZC\xc0\xf1\xb1d>\xb8\x9a?\x02\x00\x19\x00\x00\x00\x94\xc6\xfb=A'
 b'\x00ul\x0c\x93:\xe2J\xae\xc3\x93\x02M\x93.So\xc4$\xf8\x87\x1eL\xcd'
 b'\n\x90\xb5\x1a\x93f\x93\xc9\x9a\xc0\xad6\x00\x8f\x89)\xde\xcc\xd5\xff&Z9\xd1'
 b"\xbf\x02\x00\x00\x00\x1b\x00\x1b\x0c\xebe>\x14\xfe\x1dY{\x93\x8c'I\xba\xf2Q"
 b'\x17\x90\x9ez\xea\x82R\x8c(\x81mr\x02\x00?\x00Z\n\xe2\xec\xc3%\xe1\xef'
 b'?\xe3\x9e\x86v\x93=\x18\xed\xf1\x95\x8fy\xc8\x96\xc5d\x98\x88\xa7\x1d')

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

{'A1': 0.026093459030094968,
 'A2': 'ul',
 'A3': 0.12293735146522522,
 'A4': {'B1': -0.2691254978993498,
        'B2': [{'C1': -27892,
                'C2': 5549160159525921338,
                'C3': -8649122658265125229},
               {'C1': 19486,
                'C2': 10621338514124442317,
                'C3': -8534602534000485687}],
        'B3': 3099,
        'B4': {'D1': [-21, 101, 62, 20, -2, 29],
               'D2': 31577,
               'D3': 1227328659,
               'D4': -70,
               'D5': 20978,
               'D6': 10111288056991354903,
               'D7': 1919779112,
               'D8': [41, -34]},
        'B5': 90,
        'B6': 0.996233828226708,
        'B7': 17084472889987997411,
        'B8': {'E1': 2039453169, 'E2': 2136826736317667016}}}

Пример 2

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

(b'\xf1FMZC\x98\x8f\xa4\xa9a+\xda?\x02\x00\x19\x00\x00\x00.\xfdM?A\x00er\x88'
 b'\xf7\x12\x0f\xbaH\x03?\xf2\x92"f\xdf\xa4\x8ao|\xf8\xa7y\x9a\xb8\\@\xcc'
 b'S\x9a5r\xb3YZ"7Q\xeb\x03\xae\x16\xf6\x00p\x93z\xe9\xbf\x02\x00\x00'
 b'\x00\x1b\x00\xad\nS`7\x82\xa0\xa2\xef\xd99\xa5\xde\xe29\x03\xa3\x96\xbfi('
 b'K\x18\x08n\x98\x16\x90J\x02\x00?\x00\xcb"\x08\n\x8e\xb8^\xeb?( \xa8'
 b"\x84k\xe9\xc7\xdbC\xd3\xd5j\xe5YB\xdaR\x86\x0e'")

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

{'A1': 0.4088977963131071,
 'A2': 'er',
 'A3': 0.8046444654464722,
 'A4': {'B1': -0.7962128818105068,
        'B2': [{'C1': -2168,
                'C2': 10588594957239062290,
                'C3': -541435213929028062},
               {'C1': 31143,
                'C2': 3862491767141873818,
                'C3': -1490349380998679694}],
        'B3': 2733,
        'B4': {'D1': [83, 96, 55, -126, -96, -94],
               'D2': 55791,
               'D3': -488725191,
               'D4': 57,
               'D5': -23805,
               'D6': 7928613855065390998,
               'D7': 1250956952,
               'D8': [3, -82]},
        'B5': -53,
        'B6': 0.8553126119807113,
        'B7': 15836883262668021800,
        'B8': {'E1': 1792398147, 'E2': 2814334507560360421}}}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x15ZNU\xff^\xbd\x83;\xd5`\x9e\r8>\x1e\x0exvyzqhwa\x00\x00\x00'
 b'\x02\x00\x00\x00Z\x00\x00\x00r=4L[\xe5\xcaE?hA\xb1\x00\x03\x00)M\x9f(7'
 b'{P\x9b\x90G\xb8\xc5^\x9d\xed\x9a\x0b\xbe\x9d\xb7k\x00\x02\x00BRO\xe1\x0c'
 b'\xbbl\x9d$\xd5Y\xb3I\xd0\x11\x00,\x00D\xb3$y[R\xd84B\xc9X`C\x81\xbd'
 b'\xf6a\xe9\xf7\x1b\x94\x95F\xa5N9Y\x8d\xa0\xf0F`\x12Xe\xbf\x11=\xdeL\xe0 \xe5'
 b'\xd0\x8c\x1e\xf3\xb2\x14\x00\x00\x00\x05\x00\x00\x00^')

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

{'A1': {'B1': -10568317,
        'B2': 15317,
        'B3': 1620970808,
        'B4': 0.154352068901062,
        'B5': 'vyzqhwa',
        'B6': [{'C1': 0.9072523713111877,
                'C2': [-27, -54, 69],
                'C3': 5593233480974637968,
                'C4': 71,
                'C5': -72,
                'C6': 3311312365},
               {'C1': -0.30803999304771423,
                'C2': [-102, 11],
                'C3': 5931206679070547236,
                'C4': -43,
                'C5': 89,
                'C6': 3007959057}]},
 'A2': {'D1': [10756466515409210784, 17313631449381191441, 4458085206651687052],
        'D2': 519287316,
        'D3': [3005512027, 1389900866, 3378012227, 2176710241, 3925285780]},
 'A3': 0.044018130749464035}

Пример 2

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

(b'\x15ZNU\xec\xa1\x91\x90/^d\x89J\xb3\xbfA\t\xa9zqwfjto\x00\x00\x00'
 b'\x02\x00\x00\x00Z\x00\x00\x00j?^\x83b\x1fa\xbfP\xfa\xaa\x00\x02\x00)\xc2'
 b"\xa3\xf3\xbd\x8c\xf4>\x01\xda\xc8\x9d~\xaa\xf4J\xa0\xc7>\xe3'v\x00\x03\x00A"
 b"ey\x0e\xc7\x01\xae'\x02\xfb\xe9\xd4~n-\x00+\x00D_\xe9\xd9j\xedx\xc5P:\xc8"
 b"6\x1c\x8f\xfd!R\x08\x00\x08Z\xb2\xc8\xb9\xca\x11l&\xe2\x11&'\xe7\xda\xb3"
 b'\xa4\xd2UZ\x85\x9b\x00\x00\x00\x03\x00\x00\x00^')

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

{'A1': {'B1': -324955760,
        'B2': 12126,
        'B3': 1686719155,
        'B4': -0.7540536522865295,
        'B5': 'zqwfjto',
        'B6': [{'C1': -0.8163248300552368,
                'C2': [31, 97],
                'C3': -4421422413708509695,
                'C4': -38,
                'C5': -56,
                'C6': 2642324212},
               {'C1': 0.4436604380607605,
                'C2': [74, -96, -57],
                'C3': 7311891717902182146,
                'C4': -5,
                'C5': -23,
                'C6': 3565055533}]},
 'A2': {'D1': [10375485752736745562, 12882751011620136674, 1235719024519914706],
        'D2': 1431995803,
        'D3': [1609161066, 3984115024, 986199580]},
 'A3': 0.8691922426223755}

Вариант №15

Задача №12

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

Структура A:

Поле Описание
1 Структура B
2 double
3 double
4 uint16
5 uint64
6 int16
7 Массив структур E, размер 2

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ZRRQ\xd3\xe5\xda?\x86\xb2 3\xbb8\xb2\x1bK\x0b\xa2\xe6\xbfDP\x9d'
 b'\xdd\xb8\xb0\xdd\xbf\xd5PZ?Zh\xe4\xbc\xc1\x16\x86\xb9}\xe8\xb1\xdcz\xdfj'
 b"\x0b\x08\x11')FZtfQ\x88\x07\x95\xd7l<:\xf0\x88Q\xee\x9b\xcdp\xc9?\xe8\x94"
 b'{qF\x90\xd9\xbf\xd0\xab\xc7^\x05\xf8[\xfc\xc0\xcf\xf2\x036X7\x02\x00\x88'
 b'\x00\x00\x00\x02\x00\x8c\x00mu\xc6\xbeMOiep\x8b\x1e\x02\x00\x8e\x00\x00\x00'
 b'\x04\x00\x92\x00\x9bh\x0f@Y\xb9\xbc\xcd\xfb\x9d{Jy\x9c\xd6\x1f\xa0\x06(}Z<')

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

{'A1': {'B1': 2252331749,
        'B2': 3140690098,
        'B3': {'C1': -0.7072807757336426,
               'C2': {'D1': -0.463911262913147,
                      'D2': 0.8527958989143372,
                      'D3': [26714, 48356, 5825, 47494],
                      'D4': 822715600730187901,
                      'D5': 7382624946551722248,
                      'D6': 81}},
        'B4': 17310214555922925448},
 'A2': 0.19875497926535624,
 'A3': -0.3994308574895755,
 'A4': 43984,
 'A5': 14970242633312853703,
 'A6': 1010,
 'A7': [{'E1': 22582,
         'E2': 55,
         'E3': [40443, 19067],
         'E4': [121, 156],
         'E5': 7307459065717093741},
        {'E1': 35696,
         'E2': 30,
         'E3': [8150, 1696],
         'E4': [40, 125, 90, 60],
         'E5': -3621816207334741861}]}

Пример 2

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

(b'ZRRQ\xd3\x00B)\xa7~\x9aI\xec\x16\xdb>\xfc3\xcd\xe0\xbf dE\x08n\xd8\xb7'
 b'?J\xbe\t\xbf\x84\xe8\xde\xd7\x8f&\x8a\xa8[\xe7\xd4\x056\x14\xa7\t3\xfa\x9a'
 b'\xc7\xb2\x98\xadM\xfe\x82\xf5\xcd\x04D\xcc\xab\x17\xc0\x08vK-\x07'
 b'\xc0?\x0c\xc4p\r7F\xea\xbfl\x05\xf5.%ps\x95\x03\xc8\xb3\xd2\xbd5'
 b'\xf8\x04\x00\x88\x00\x00\x00\x03\x00\x90\x00@\xf4KI\xbfd\xc9r2\xf5`\x04\x00'
 b'\x93\x00\x00\x00\x03\x00\x9b\x00\xd7ps^\xed\xfb7\x15n\x8f\x8e00bD\xe0'
 b"\x94\xe6\xdc2\x97\x1b'\xa3Wt\xb9_\x15\x14")

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

{'A1': {'B1': 2804498944,
        'B2': 3964246654,
        'B3': {'C1': -0.5250492026014821,
               'C2': {'D1': 0.09314620687418129,
                      'D2': -0.5380598306655884,
                      'D3': [59524, 55262, 9871, 43146],
                      'D4': 695546889710659419,
                      'D5': 5597297805511817779,
                      'D6': -2}},
        'B4': 1705681476400313730},
 'A2': 0.12521902260420426,
 'A3': -0.8210711729535674,
 'A4': 1388,
 'A5': 14412527555550981877,
 'A6': -11597,
 'A7': [{'E1': 13757,
         'E2': 248,
         'E3': [36718, 12430, 25136, 57412],
         'E4': [148, 230, 220],
         'E5': 8271252963373872192},
        {'E1': 62770,
         'E2': 96,
         'E3': [38706, 10011, 22435, 47476],
         'E4': [95, 21, 20],
         'E5': 1528967595426017495}]}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'NSL\x03\x00f\x00\x00\x00r\x00\x00\x00t#`\xa0q\xcd+\x1e\xaf\xea\r'
 b'\x84\x00\xcd\x7f\xd8,\x8a\xe0\x1c\xech]Gc\xbb\xe2x\xed\xf3\x91'
 b'\xbc\x85\x07\x1a\xe0\xf1\x03\n\x93O\xd7n\xef>\xaeZ\x91\x8e|\x89,\xe4\xdf\xdf'
 b'\x08\x90\xd1\xde\x81r\xd3#_\x9d\xfa\xc2$\xa1\xd3\xee\x00\xe9D\xc7'
 b'\xf9\x89\xdd&t\x1d\xb8\xe1\xd6\x00\xd2\x97g\x8bT\x00\x00\x00Z\x00'
 b'\x00\x00`\x00\x00\x00\x9e|\x8a\xfcM\x18c:m\xb4\x9a\x11N\x11\x1anxm\x90OuQ'
 b'\x02\x00\x00\x00\x82\x00-\xd3\x86\x89.@\xcb\xa6I\xbb}\xdf')

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

{'A1': [{'B1': -951785216, 'B2': -30215},
        {'B1': 494151389, 'B2': -7752},
        {'B1': -1747844906, 'B2': -29849}],
 'A2': {'C1': 4207233200122657950, 'C2': 7933672720567022701},
 'A3': 2174057133042049908,
 'A4': 60079,
 'A5': 13,
 'A6': {'D1': 1366642576,
        'D2': 'xm',
        'D3': [2307314477, 2798338094, 3749559113]},
 'A7': 32717,
 'A8': [6730889251875597528,
        10517010658296030023,
        721686310121080252,
        6534229307438878611,
        16131863270200741521,
        2581532913528049672,
        17209275780374895967]}

Пример 2

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

(b'NSL\x02\x00`\x00\x00\x00h\x00\x00\x00\x85X\xb1sm\xf9\xe2\xbb\xaby\xb4'
 b'|\x00\xd0\xf14$\x12\xfbz\xe7\x9c\x0e\xf9\xf1\xde\xe9\xda\xb0,\x17`\xd6\xd8^'
 b"\x88\x19\xb3\x8a\xc5\xf1[c\xe8\xf2\xbd\xf9\x02\x1c\x15\xbf\xa4'0\xdb"
 b'\xa6\xe8k\x99\x0f\tJ\xf5\x06\xd5*8\x86C\x17\x01\n\xb3\xfa\xc1\xa1a6\xeb'
 b')\x19\x13cT\x00\x00\x00Z\x00\x00\x00\x06ipdaP\xe0\xd5\xe1\xdd\xack'
 b'\x98.\x05\xc8kebz+V#F\x04\x00\x00\x00x\x00\xd2\x12?\xd1\xb2/ H\xc3Y\xbf\xb4')

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

{'A1': [{'B1': -1040534774, 'B2': 24993}, {'B1': 422177590, 'B2': 25363}],
 'A2': {'C1': -3035337769620575994, 'C2': -4033766659064013343},
 'A3': 13538657678316886149,
 'A4': 31147,
 'A5': -76,
 'A6': {'D1': 1176720939,
        'D2': 'kebz',
        'D3': [3510571730, 1210068914, 3032439235]},
 'A7': 61904,
 'A8': [1052970928282149940,
        1669904016120672761,
        9994360071562778208,
        17995806765955674565,
        15794167481722280962,
        17674949650172078246,
        78605762249282822]}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

Поле Описание
1 int32
2 int8
3 uint16
4 Массив структур D, размер 4

Структура D:

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

Структура E:

Поле Описание
1 Массив float, размер 4
2 int8
3 Массив uint64, размер 6
4 Структура F
5 int64

Структура F:

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

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

Пример 1

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

(b'KCC(\xa8\xe8p\x00\x00\x00\xa5^\xaf\xc9Gx\xfd\xf1Aqitukbe#ku\xfb<\xba'
 b'>\xac\xf1\\\xbf\xb4\xf4e\xbfe\x97w?)p\x8f\xb2;\x81\xd1i\xdb\xde\xc8'
 b'c\x0fW\x02V\xc2\xe6\xee\xa8\xa9\x00\xa6\xd9{\x0c\x80\xd8\xfb+\x9c'
 b'\xcf\xaf\xa9f\xd83p\x81\x94\xcf@\x16\xeb-\x81\x9c{\xc1\xf7M\xf6\x90@~'
 b'\xde\x9b\xc8\xe8\xe1E\xc5\x0f1\x0fv\xb2\xe9\x83\xfa\xa4\xa2\x94\x87A'
 b'\xff\xe0t\x01g2[\xc53\xedn\xbe/(<\x81p\xbf\x80\xfa\xe5T7?2\xa8\xa9\xd0'
 b'b<\x0b\xfd')

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

{'A1': 59560,
 'A2': {'B1': 233,
        'B2': -53612648098104701,
        'B3': {'C1': 1728148704,
               'C2': 50,
               'C3': 50523,
               'C4': [{'D1': -0.233326718211174, 'D2': 10287},
                      {'D1': -0.939471960067749, 'D2': -1408},
                      {'D1': 0.7161391377449036, 'D2': -22478},
                      {'D1': 0.013843693770468235, 'D2': -757}]}},
 'A3': 165,
 'A4': 4751857774894886750,
 'A5': 'qitukb',
 'A6': 1969955685,
 'A7': {'E1': [0.3637464940547943,
               -0.8630626201629639,
               -0.8982651233673096,
               0.9671538472175598],
        'E2': 41,
        'E3': [15810398319843381104,
               14003382664298744030,
               8924346658387980006,
               12668515989539291148,
               14957722581310400169,
               13941909150090597952],
        'E4': {'F1': 19959, 'F2': 16773828192044617974},
        'E5': -5587261584314120735}}

Пример 2

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

(b'KCC(\x81\xa9p\x00\x00\x00\xe3\xbd\x85D\xb5Z\xf90\x8chppazn\xaep\xa1'
 b'\xc5\xf4g2\xbfBN\x14?\xba\xd7i\xbeq\x06\xc2>\x0c$\xfa\x05\x85\xbc\xbb\x86w?m'
 b'\x01\x08\x02\xd5\x12\x12\x86m\xcf\x1eS\x9f\xfa\x1a{\xcb\xcdm<\x1drW*G'
 b'\xe9\xc97;\x80\xb5\xfd\x96\xc2!\xb6\xa0\xd7\xa7\xca\\F\xf8\x0b\xe9'
 b'\xea\x11\x8cW\x04\xb4\xfe\x87\x8e\xb2{\xec\x8b\xd2\x1apl\xe89\x00'
 b'\x16\x98\x97\\\xa9gg\xc8\xe6\xb5[\xbf\xed\xcb\xcc\x87\x94\xbe\xb0\x10'
 b'\xcbX\xe2\xbe\\E\xde\x19V\xbf\xdd]')

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

{'A1': 43393,
 'A2': {'B1': 139,
        'B2': 1585330739248896722,
        'B3': {'C1': -1453549672,
               'C2': 103,
               'C3': 51303,
               'C4': [{'D1': -0.8582442998886108, 'D2': -13331},
                      {'D1': -0.29009854793548584, 'D2': 4272},
                      {'D1': -0.4420836865901947, 'D2': 17756},
                      {'D1': -0.8363322019577026, 'D2': 24029}]}},
 'A3': 227,
 'A4': 10101848132175562173,
 'A5': 'hppazn',
 'A6': 3315691694,
 'A7': {'E1': [-0.6968986988067627,
               0.5793191194534302,
               -0.22836199402809143,
               0.3789553940296173],
        'E2': 12,
        'E3': [8612777755752659492,
               1302337446964456767,
               1944041368511802758,
               6301130974022191995,
               13078518428680668970,
               12094312028437649149],
        'E4': {'F1': 23754, 'F2': 6308436878669117510},
        'E5': -1406334133386431484}}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ZAJ\x1d\xc34\x00\xea\xce\xe9\x9c\xd3Q\xa1Z\x8e\xc7\xf2\x06D\xfd\xdd\x7f\xd6'
 b'\x85\xd9\x9b\x17,\xb1"\x11\x00\x18\x00\xab\xeb.YK\x1c\xd0j\x87\x0c\xf4\x820'
 b'\xb3\xa8\x1fd\x89W3\xbfbkgcufr\xd22\x99L\xc5\x1c[\xf4\xe4\xfax\xa7\x96'
 b'\x99\xfe\x02\x00\x1f\x00\x00\x00\x0fvd\xdc -{\xa6@#\xf4\xa0ooH>\x03\x00#\x00'
 b'$\xc71?\x05\x00\x00\x00/\x00\x00\x00|\xed\xd3\xa1\xe1R\x17\xc2')

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

{'A1': 49949,
 'A2': {'B1': {'C1': -0.7005544304847717, 'C2': 'bkgcufr', 'C3': 1285108434},
        'B2': 197,
        'B3': 23324,
        'B4': -100883870605712140,
        'B5': [{'D1': -14, 'D2': 3724362758, 'D3': 54911},
               {'D1': -123, 'D2': 739744729, 'D3': 8881}],
        'B6': 3697571343,
        'B7': {'E1': -6848810372745712352,
               'E2': 0.1957375854253769,
               'E3': [1496247211, 1792023627, -2097935225],
               'E4': 0.6944448947906494,
               'E5': [48, -77, -88, 31, 100],
               'E6': -4461005776851047044}},
 'A3': 234,
 'A4': 206,
 'A5': 14379530309149629673}

Пример 2

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

(b'ZAJ\x7feX\x00.\xf0)\x13\xe6r\x81:\xee\x83\xcfX\x9a\xb1\x0bH\xc6\xe6\xf9\xc0c'
 b'3\xb9\xad2\x96;B\xf54\xe9\xd4\xbd\x07g\xf9PM\xf3\xaa\xb8\xa7{\xe4\xde6\tH\\'
 b'#\x8dR\x11\x00\x18\x00\x1f\x00&\x00-\x004\x00\xad\xed\x01\xcd\xea'
 b'\xc9w\xef\xc8\xd8aR\x00\xa0\x84\xf5\x17\xbb\x1db\xbfhhpzvgc\xf6\x8f\x91\x8a~'
 b');U\xd6(\n\x9c\xc1$\x12\x06\x00;\x00\x00\x00E2W\x19\xd2\xeaB<\xee\xaf5K'
 b'\xb6\xe0V\xbf\x03\x00G\x00>~\x95>\x05\x00\x00\x00S\x00\x00\x00\x822\xff\x11'
 b'~P\xef\xb4')

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

{'A1': 25983,
 'A2': {'B1': {'C1': -0.8832661509513855, 'C2': 'hhpzvgc', 'C3': 2324795382},
        'B2': 126,
        'B3': 15145,
        'B4': 1307382667773793877,
        'B5': [{'D1': -49, 'D2': 196188760, 'D3': 50760},
               {'D1': -26, 'D2': 862175481, 'D3': 44473},
               {'D1': 50, 'D2': 4114758550, 'D3': 59700},
               {'D1': -44, 'D2': 4184278973, 'D3': 19792},
               {'D1': -13, 'D2': 2074589354, 'D3': 57060},
               {'D1': 54, 'D2': 593250313, 'D3': 21133}],
        'B6': 425144901,
        'B7': {'E1': 5419431164358355666,
               'E2': -0.8393663167953491,
               'E3': [-855511635, -277362198, 1382144200],
               'E4': 0.29197877645492554,
               'E5': [0, -96, -124, -11, 23],
               'E6': -5409016125050637694}},
 'A3': 46,
 'A4': 240,
 'A5': 9506600191078568745}

Вариант №19

Задача №12

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

Структура A:

Поле Описание
1 int16
2 Адрес (uint32) структуры B
3 float
4 uint64
5 int64
6 Адрес (uint32) структуры C
7 Структура E

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'HWZDI\x82\x10\x00\x00\x00C\xbe\xc9\xa3_V\x88\x15\xa2\x1d\x1c\xf1}\xf2'
 b'\xc5\xdb\x05\xf1\xb3f\xaa\x00\x00\x00\x89R\xb0+\x16\xa6\xcb\xf7x\xe9'
 b'v\x91\xf2\xacP"\x18\x1e\x93T\x8b\x0e\x96\xb2\xd0\x00\x00\x00\x03\x00'
 b'\x00\x00\x99\x95\x9b<\x80)w\x7f\xda\x92\xe5\xebp.\x0b\x10\xde0'
 b'\xa2\x00\xfc\x88x\xdc\x01\xc5\xf0\x06\x00Y\xe19\x9eV!z\xfc\xe90\xf9\x00n'
 b'\xb4g\x1e\xad\x97\xaa\xce\\\x1a\x10B\xa60\x8e\xe0\x00o!\xac$Nu\x91\xcc'
 b'\x8e\x00I\x00g?]\xf2cvaupP\xf8\x00\x00\x00\x02\x00\x85\xf0\xdd\x91')

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

{'A1': -32240,
 'A2': {'B1': 149, 'B2': 2604433449, 'B3': 119},
 'A3': -0.3938245475292206,
 'A4': 6235257470111773053,
 'A5': -953114927542606166,
 'A6': {'C1': 0.8669797778129578,
        'C2': 'vaup',
        'C3': 20728,
        'C4': [{'D1': 32730,
                'D2': -1830425744,
                'D3': [772477150,
                       815923452,
                       2289622017,
                       3320841728,
                       1507932574],
                'D4': 1445034748},
               {'D1': -5840,
                'D2': -117412172,
                'D3': [1730063767,
                       2865650714,
                       272803376,
                       2397044847,
                       564929614],
                'D4': 1972489358}]},
 'A7': {'E1': [5958309683298826104, -1623950144161439208, 2203197598936249040],
        'E2': [-16, -35, -111]}}

Пример 2

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

(b'HWZDI\x1e\x9d\x00\x00\x00C>,\x94K\x82\xffH\xf3 \xf2\xb3\xc4*\t\xc3\x15\x9f'
 b'\xd7\x94P\x00\x00\x00\x89\xfet\x88\x12jW\xb8!\x0e\x8a\x1b\xa5T\x0e7?\xcb'
 b'z\xe6\x10!\xb4\x84h\x00\x00\x00\x02\x00\x00\x00\x99\xf8\x85&\xda\xc0'
 b'EH\xbd\x9fd\x06\x05\xd2\xe1\xeb\xa5\xf5\xf7\xbe\xd2\n|\x11\x91\xc2v\xb2ay'
 b'\x8e\x82\n\n\xb2\x11\x9b\xc2\xc7\xe3\xa5N\xb6\xe8p\xedO^\x96\xf8!jbI'
 b'.|\xc9\x19\x1a4\xbc(\xe1XA\xe1\x17\x00I\x00g?1\xd6\x96dszx\x0eI\x00'
 b'\x00\x00\x02\x00\x85\xc8\x03')

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

{'A1': 7837,
 'A2': {'B1': 248, 'B2': 2233916096, 'B3': 69},
 'A3': 0.16853444278240204,
 'A4': 9439343553058878404,
 'A5': 3029166722026804304,
 'A6': {'C1': 0.6946805715560913,
        'C2': 'dszx',
        'C3': 3657,
        'C4': [{'D1': 18621,
                'D2': -1620834811,
                'D3': [3538021285,
                       4126654162,
                       175903121,
                       3262558817,
                       2039382538],
                'D4': 179442075},
               {'D1': -15673,
                'D2': -475705674,
                'D3': [3899714895,
                       1586952225,
                       1784826158,
                       2093553946,
                       884746465],
                'D4': 1480712471}]},
 'A7': {'E1': [-111314478102497247, 1047680260210833215, -3784459579892136856],
        'E2': [-56, 3]}}

Вариант №20

Задача №12

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

Структура A:

Поле Описание
1 Структура B
2 int16
3 double
4 Массив адресов (uint32) структур G, размер 7
5 Структура H

Структура B:

Поле Описание
1 Структура C
2 int32
3 uint32
4 uint64
5 Структура E
6 double
7 uint8
8 int16

Структура C:

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

Структура D:

Поле Описание
1 float
2 int32
3 uint16
4 float
5 int16
6 float
7 uint32
8 float

Структура E:

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

Структура F:

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

Структура G:

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

Структура H:

Поле Описание
1 Адрес (uint32) структуры I
2 uint8
3 Адрес (uint32) структуры J

Структура I:

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

Структура J:

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

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

Пример 1

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

(b"\xdaCXA\x02\x00z\x00\\\t\xba>O\xc29?'\x15\xa8\\,\xbflu\x8f\xc9\x81\xbd"
 b';\x16\xf7\x825]A\xbf\xabf<\xc5?\xfd\xf0\xbf\x8e\x15\xae|\xb4\xa5\xf3\x1d'
 b'\x04o\x83\xdc\xea\x19\x8c\x99j|i\xf6Bf\n\x90\xa4\r\xea\xbfbx!W\x1c\xc0\xb9{'
 b'\x82\xee\xae\x99\xbf|\x00\x00\x00\x81\x00\x00\x00\x86\x00\x00'
 b'\x00\x8b\x00\x00\x00\x90\x00\x00\x00\x95\x00\x00\x00\x9a\x00\x00'
 b'\x00\x9f\x00\x00\x00\xc0\xb5\x00\x00\x00hx\xea\xeb\xcd\xde\n\xeeV\xc4'
 b'\x94\x9d\xbf\x82\x9e\xf5\x07g\xbcKp\xaa2\x02C\r\xd4"o\xa9\xbcz\xb1:'
 b'\xe2\xe2\xa8\xa8\xcc\xdc\xbcyxP\x83v\x8a\x8d\x91\xa5(\xea\xbf\x06?>\x82Y'
 b'>&\xfd\x99\xd9\x02\x00\xad\x00\x00\x00!\xf0M\xc2')

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

{'A1': {'B1': {'C1': 'hx',
               'C2': {'D1': 0.3633526563644409,
                      'D2': 1060749903,
                      'D3': 5415,
                      'D4': -0.6732888221740723,
                      'D5': 30060,
                      'D6': -0.06337272375822067,
                      'D7': 2197231163,
                      'D8': -0.7553284764289856}},
        'B2': -985897301,
        'B3': 3220241727,
        'B4': 2158250841045079438,
        'B5': {'E1': 4,
               'E2': 111,
               'E3': 434822275,
               'E4': 39308,
               'E5': {'F1': 31850, 'F2': -2455}},
        'B6': -0.8141653836530127,
        'B7': 98,
        'B8': 8568},
 'A2': 7255,
 'A3': -0.025081373895710746,
 'A4': [{'G1': -556930070, 'G2': 10},
        {'G1': -1799072018, 'G2': 157},
        {'G1': -174161217, 'G2': 7},
        {'G1': 1884011623, 'G2': 170},
        {'G1': 222495282, 'G2': 212},
        {'G1': -1129746654, 'G2': 122},
        {'G1': -488490319, 'G2': 168}],
 'A5': {'H1': {'I1': 168, 'I2': [2042420428, 1988317304, 2777779594], 'I3': 40},
        'H2': 192,
        'H3': {'J1': [-730, -9831],
               'J2': [0.5263658761978149, 0.21241089701652527],
               'J3': -1035079647}}}

Пример 2

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

(b'\xdaCXA\x02\x00z\x00y\xff\x1d\xbf\x15q\xe1\r\xf7\xd3\x92\x8b\xa4>.\x89'
 b'\x19\xd0C\xbd\x9bM\x1eC\x1e\xcb\xea\xbe\xbd\xb79\x83\x19\x00\t\x97'
 b'\x05\x1e8\xd8LP\xa5\xa2;\xe4N\xf4N]F\x13\xd1\xc36\xaf\xb8=\x8fQ'
 b'\xbc\x8b\xd6\xbf-`\xbfB\xa6\xa2\x15\xc7I\x88\xab\xe0\xbf|\x00\x00'
 b'\x00\x81\x00\x00\x00\x86\x00\x00\x00\x8b\x00\x00\x00\x90\x00\x00'
 b'\x00\x95\x00\x00\x00\x9a\x00\x00\x00\x9f\x00\x00\x00\xc4\xbd\x00\x00\x00an'
 b'\xf3 \x91\x901\x04d\xf0\xfeZeD\x11\xa5c\xe9\xfb\xfdS\x1b\xb0yZ\x1a'
 b'\xe2\x12\xfaV\x9a\x12v\xff"\xbcD\x82e\xcc5\xa2\x9d\x85\x13\xaf\x8b)\x12,'
 b'\xf2 \xa6d\xbe\xf3\x13\x1b\xbf!\x15S?\xeb\x1fx?\x81\xe2e\xb4\x04\x00\xad'
 b'\x00\x00\x00I\xbc\xefy')

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

{'A1': {'B1': {'C1': 'an',
               'C2': {'D1': -0.6171794533729553,
                      'D2': 232878357,
                      'D3': 54263,
                      'D4': 0.32137733697891235,
                      'D5': -30418,
                      'D6': -0.04780587926506996,
                      'D7': 1126059419,
                      'D8': -0.4585809111595154}},
        'B2': -2093369411,
        'B3': 2533949465,
        'B4': 11719861896276876805,
        'B5': {'E1': 59,
               'E2': 228,
               'E3': 1565455438,
               'E4': 4934,
               'E5': {'F1': 50129, 'F2': -20682}},
        'B6': -0.3522787853698577,
        'B7': 45,
        'B8': -16544},
 'A2': -22974,
 'A3': -0.5209390107126419,
 'A4': [{'G1': -1869537037, 'G2': 49},
        {'G1': -17800188, 'G2': 90},
        {'G1': -1525595035, 'G2': 99},
        {'G1': 1409154025, 'G2': 27},
        {'G1': 442137008, 'G2': 226},
        {'G1': -1705575918, 'G2': 18},
        {'G1': -1138557066, 'G2': 68}],
 'A5': {'H1': {'I1': 130, 'I2': [2721434725, 2937292189, 739387787], 'I3': -14},
        'H2': 196,
        'H3': {'J1': [-7551, -19355],
               'J2': [-0.22328996658325195,
                      -0.6057731509208679,
                      0.8245411515235901,
                      0.9692370295524597],
               'J3': 2045754441}}}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'VWRW\x00\x00\x00\x03\x00.\xbeK\xbe\xc9\xe8T\x00{O\xc7\xe8(\xbdx\x00\xba/~'
 b'\x8d\x92\x1b\x8fI\xffI\x8db\x83\xd6\xab\x02Q\xcdj\xfb\x1b>\xbd'
 b'\xf7\x8f\xbe\xda4\xef\xbfY\x02PW\xf2\xe4\xc3\x00\x02\x00:>\x167\r\xc56'
 b'r\xb7\xeet\x00\x08\x00B~\x96~*abd\x00\x05\x00PV{{pO\xf1u\xc1\xca'
 b'\x12\x00\x08\x00[\xf1~U^v9\xcb7\x17\xbb\xed_6!8\x15\x94\xb4\x00\x00\x00<\x00'
 b'\x00\x00J\x00\x00\x00U\x00\x00\x00cy\xd6Z\xd97\x9b\x93(\x00\x07\x00i\xf3'
 b'E*\x90\x93b\r\x8a\x00\x00\x00w')

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

{'A1': [0.3710293471813202, -0.42618510127067566, -0.847691535949707],
 'A2': 190,
 'A3': 75,
 'A4': -0.39435064792633057,
 'A5': {'B1': [{'C1': 58563, 'C2': [87, 242]},
               {'C1': 61044, 'C2': [62, 22, 55, 13, 197, 54, 114, 183]},
               {'C1': 25188, 'C2': [126, 150, 126, 42, 97]},
               {'C1': 51730, 'C2': [86, 123, 123, 112, 79, 241, 117, 193]}],
        'B2': 8779304412592706344,
        'B3': [-3714, 21854, 30265, -13513, 6075, -4769, 13857],
        'B4': -3259,
        'B5': 714117986,
        'B6': 13,
        'B7': -118,
        'B8': {'D1': 14357, 'D2': 38068}},
 'A6': [1338501160, 3178758330, 796822930, 462375423, 1234002563],
 'A7': -2978284178213504229}

Пример 2

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

(b'VWRW\x00\x00\x00\x02\x00.V\x91\xbeQ\x7fY\x00u\xd6y\xca\xf2V\xc2F\xd3\xca\x84'
 b'u\xb4*\xd8\xd4\xb9\xdb(\x13A $\x1azi\xf2 \xfe?\x13\x80\xb3?\x7f\xc3\x99$G'
 b'\x83B\xda\xdfaO\x00\x06\x006\xf52\\\xef\xe5$iJ\xd4V\x00\x08\x00B'
 b'\x18\x98\x13\x9f5\x1c\xf4\x08\x9a{\x00\x08\x00PI<Y\x83s\xe5x\x00\x05\x00'
 b'^\xc2~o\x16\x03m0\xbf\x89\xdc\x03]\x00\x00\x00<\x00\x00\x00J\x00\x00\x00'
 b'X\x00\x00\x00cH1\xb3\xa8Q\xc4\xaf\x18\x00\x04\x00i\xfd\xc7\xae\x9f\xea/\xb6'
 b'p\x00\x00\x00q')

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

{'A1': [0.5761825442314148, 0.9990783333778381],
 'A2': 86,
 'A3': -111,
 'A4': -0.20458735525608063,
 'A5': {'B1': [{'C1': 24911, 'C2': [36, 71, 131, 66, 218, 223]},
               {'C1': 54358, 'C2': [245, 50, 92, 239, 229, 36, 105, 74]},
               {'C1': 39547, 'C2': [24, 152, 19, 159, 53, 28, 244, 8]},
               {'C1': 58744, 'C2': [73, 60, 89, 131, 115]}],
        'B2': 5202136580097355544,
        'B3': [-15746, 28438, 877, 12479],
        'B4': -569,
        'B5': 2929715759,
        'B6': -74,
        'B7': 112,
        'B8': {'D1': -30244, 'D2': 861}},
 'A6': [3598306034, 1455572691, 3397678516, 718853305, 3676836673],
 'A7': 2316005221441085694}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

Поле Описание
1 Структура D
2 int64
3 uint64
4 uint16
5 Массив uint16, размер 8
6 int64
7 uint8
8 Структура F

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xcfJWF\x02\x00X\x00\x00\x00`\x87\x0f>\x14=\xdc\x81>\x1aS\x81\xc5j'
 b'\x00\x0e\xc9\x9cg\xe4s\xc1E\xa5\xe3\x1a\xca\xe8\xa3\xed\xe3\xc1\x1d\xc6'
 b'\xd4\x942\xfa\xa1i\xcfh\x996\xcd\x931\x94\xf2\xe1\xca\xc8\x9e\xa3'
 b'\xcf\x93P\xe3\xdc\x03\x00z\x00\x1fr\xfb {\x9e\xcc\xfcO\xfd{\xbe\x89l\xaf'
 b'r\x1a\x1c\xa0Dn@\xe8\xbf~\xa0\xd3\xb5\x0e\xae\xda\xe2?@\xe5\x9a5\xe4\x17'
 b'\xeb {v\xbd\x83\x1f\x15 \x8ck\xea\xe5k\x1e\xeb\x10\x053"\x88\xa5')

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

{'A1': [{'B1': 114, 'B2': -0.7578650799122244},
        {'B1': 126, 'B2': 0.5891943251905225}],
 'A2': 0.14016485214233398,
 'A3': 20,
 'A4': 0.25363340973854065,
 'A5': 3313586970,
 'A6': {'C1': {'D1': {'E1': 2372015897660024128, 'E2': 10097093589663053435},
               'D2': 14},
        'C2': -6537606580561011511,
        'C3': 13971271757274421987,
        'C4': 50717,
        'C5': [38100, 64050, 27041, 26831, 13977, 37837, 37937, 57842],
        'C6': -2066989708950452022,
        'C7': 220,
        'C8': {'F1': [1810229867, 84994846, 2777162291],
               'F2': [31, 114, -5, 32, 123, -98, -52],
               'F3': 12640629705339129852}}}

Пример 2

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

(b'\xcfJWF\x02\x00X\x00\x00\x00\x815>?\xc2i\x05\xc6\xbc\xb0\xbd\xa6\xfdj'
 b'\x00\xb9\\44As{\xfa\x82<8\xe5\xcb\x8f@\xc7\xce&\xb3\xcd\x96\xb4Y'
 b'\xb2\xa8R\xf4\xdf\x10l\xfe\xeb\x85\x1f$Cb\xe7\x9d!\x17\x7f\x81\x9f\x02\x00z'
 b'\x00R\xd7\xa7B\xbf\x83\xb2E\t1\xd5\\\xf2w\xf5H\x80\xd3\xbd\xc1D\x83\xad'
 b"?\x1d\x8a\x99\xa4'\xf5O\xe2\xbf\xd6\x19\xf8\xfa\x86\x84\x8fS\x04\xd8"
 b'/\xcb\xa7lG\x01"3\xbf\xcf\x12^`Q')

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

{'A1': [{'B1': 72, 'B2': 0.057642124795996175},
        {'B1': 29, 'B2': -0.5722604536320415}],
 'A2': 0.7430039048194885,
 'A3': -62,
 'A4': -0.024172501638531685,
 'A5': 4255563184,
 'A6': {'C1': {'D1': {'E1': 6021176942088690134, 'E2': 92161785308633092},
               'D2': -71},
        'C2': -9008752369655860132,
        'C3': 14899948878523873340,
        'C4': 45862,
        'C5': [38605, 22964, 43186, 62546, 4319, 65132, 34283, 9247],
        'C6': -9115541687624048061,
        'C7': 159,
        'C8': {'F1': [3485414178, 1365270034],
               'F2': [82, -41, -89, 66, -65, -125, -78],
               'F3': 17687872542048586053}}}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'POXQQ\xf3#\x9d\xe2\xb5o\x00\x00\x00\xdaIY\x13\xfbQ<^R\x1d\x9f\xd7\xef\xe4'
 b'\xd6\x0c7\xb8\xb8\x8cl\xbf\x9a{h\xbeV\xfd==\xb6#_\xbf\x17\xa14\xbf\xce\xd8N?'
 b'i%\xc5=@\xb8\x8c\x05\x00 \x00?\n\xfb\xd29\x11\x02\x004\x00\x87z^'
 b'\x93\x02\x00<\x00\x13B\xb3\x83\x17\x07w\x9f7 4\x1e\xcd\xa6\x14\xa4\xd6\x987'
 b'6\xeb?\x84$\xf1\xd6 Q\x99\xfd\x98\x88\xe1?\xbf\x16P\x00\x00\x00\x8d\xcd\xd4'
 b'\xcc\xfc\xe8\xf5\x8ac,\xdf\xbf\xd4+)1')

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

{'A1': -13,
 'A2': -1243439837,
 'A3': {'B1': 0.5479245141127969,
        'B2': 5823,
        'B3': {'C1': 147,
               'C2': [{'D1': 64,
                       'D2': -29512,
                       'D3': [-0.9240221977233887,
                              -0.22703400254249573,
                              0.04638417810201645,
                              -0.8716386556625366,
                              -0.7055830359458923],
                       'D4': 2623,
                       'D5': -5},
                      {'D1': 210,
                       'D2': 4409,
                       'D3': [0.8079956769943237, 0.09626276046037674],
                       'D4': 31367,
                       'D5': 94}],
               'C3': 11490660771834315283,
               'C4': 55,
               'C5': 32,
               'C6': 2798460468,
               'C7': 0.8503683076024822,
               'C8': -688839548},
        'B4': [-12915, -13100, -5892],
        'B5': 744721141,
        'B6': 735363039,
        'B7': 12585},
 'A4': [18906, 4953, 20987, 24124, 7506],
 'A5': 3840923551,
 'A6': -1204351786}

Пример 2

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

(b'POXQQ\xef\t\xeb\x13u}\x00\x00\x00\x99\x12U\x9c\xa7\x1d\x14f\xde\xc0'
 b"\xea'x\xdd\x8b\xdf\x0c\xeak\x87\xfb\xbeP4\x02>h\x10\xd1\xbe]B\x1c\xbe"
 b'0\x98\xc2>\xc5\x92\xc7\xbe\xa7b\x0f\xbft\xce\x02?ArN\x04\x00 \x00\x86'
 b'd\xc53\xb1\xd6\x02\x000\x007\xbaH\xd9\xbb|\x02\x008\x00\nb\xcd\xaf\x03'
 b'\x00@\x00U\xd5\x91[*9\xaa\xfa\xb5O(\x9cC\x15x\x0c\x00ZR}\xce\xbf\xd3H\x99'
 b'yle\xa8\xc8%>\xe0?0?^\x00\x00\x00\xcap9Tk>\x9b\x1fK\xa8\x95\xc4g\xbd\xd3D')

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

{'A1': -17,
 'A2': 1964239625,
 'A3': {'B1': 0.5075863761041268,
        'B2': 16176,
        'B3': {'C1': 175,
               'C2': [{'D1': 65,
                       'D2': 20082,
                       'D3': [-0.49126753211021423,
                              0.127152681350708,
                              -0.4083282947540283,
                              -0.15259690582752228],
                       'D4': 25734,
                       'D5': -59},
                      {'D1': 51,
                       'D2': -10575,
                       'D3': [0.3800673484802246, -0.3897916376590729],
                       'D4': 47671,
                       'D5': 72},
                      {'D1': 217,
                       'D2': 31931,
                       'D3': [-0.5600990653038025, 0.510962724685669],
                       'D4': 25098,
                       'D5': -51}],
               'C3': 18062312109610489173,
               'C4': 181,
               'C5': 79,
               'C6': 356752424,
               'C7': -0.23819951433697262,
               'C8': 2040088787},
        'B4': [28874, 21561, 15979],
        'B5': -1471471717,
        'B6': -1117272939,
        'B7': 17619},
 'A4': [4761, -25515, 7591, 26132, -16162],
 'A5': 3715639274,
 'A6': -368255093}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xe2EZE\xf4X?\xec\x00\x00\x00#\x00\x00\x006\x00\x00\x00nh\x91\x95\x8c'
 b'\xb7\xde\x0b\xcc\x00\x00\x00\x02\x00\x88\xee>\xc3\\_\xe7\x08z\xc5\x0f'
 b'\xb1\xecs\x80\x0c\xce\xf5k\xe73\xbfG\x97\xcbOd\x10\x95\xdf\x85#\x9b\xc8\xe6'
 b'J$\x90\xa5\x0c\x0f\x0f\x85\xac$\xc3#\xd0\xd9.\xd5H\x9b5\x00\x03\x00\x00\x00'
 b'I5\xc5v\xf1}\x94\x9f\xb8-\x08r\x93p\x03\xe9\x1dy\xa3y\xa9\xda\x00U'
 b'\x00\x00\x00]\x96lE^\x9c\x00\x00\x00\x02\x00\x00\x00f\xc5\xbe\xe8?K\n*'
 b'\xbfE\xecf')

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

{'A1': 4099424236,
 'A2': [{'B1': 0.38156411051750183,
         'B2': -25,
         'B3': 2170,
         'B4': -4246980294478918450,
         'B5': 4117489459},
        {'B1': -0.7796599268913269,
         'B2': 79,
         'B3': 25616,
         'B4': -7647247254267828662,
         'B5': 613459212}],
 'A3': {'C1': -1552307750,
        'C2': {'D1': {'E1': -25803, 'E2': [252675500, 616768464, 3643725128]},
               'D2': {'F1': 3874633833988267960, 'F2': 45},
               'D3': [-106, 108, 69, 94, -100],
               'D4': [141726576, 65609081]},
        'C3': 50622,
        'C4': -24},
 'A4': 7534968083180293068,
 'A5': [0.7931238412857056, -0.7731384038925171],
 'A6': -18}

Пример 2

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

(b'\xe2EZEN\x9e\xce(\x00\x00\x00#\x00\x00\x006\x00\x00\x00v\xe4\x93\x7f\xe1'
 b'\xe3\x11z*\x00\x00\x00\x02\x00\x90\x81\xbe\xba\x83\xe8Q\xc6\x07\xc9E'
 b'Q}\xc9\xab\xe5\x13{\xa8\x19\xe8>\xf8d\xd8\x01\x02\xf1\xad\x88!\xb6S\xd46'
 b'~h\xbeF\xf4\x8f\x17:\x05\xb0N\xcc\xf6w(>\xefY\x1e\xd7\x81\xd9k\x9b"^:\x00'
 b'\x05\x00\x00\x00I6\x16\xb3\x1d\x9a\xf3\xa48\xda\xbc\xd3\x81\xc9;\x0e'
 b',\xf5\x9d!\x19o\x00]\x00\x00\x00e\xfa\xc5f\xd9\xac\x00\x00\x00'
 b'\x02\x00\x00\x00n\x0f\xa0\\?z\xee\xfb?{\xd4\x07')

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

{'A1': 1319030312,
 'A2': [{'B1': -0.3642876148223877,
         'B2': 81,
         'B3': -14841,
         'B4': -3943656297996753645,
         'B5': 2074614248},
        {'B1': 0.48514437675476074,
         'B2': 1,
         'B3': 753,
         'B4': -5942462641341188482,
         'B5': 1757300468}],
 'A3': {'C1': -1658775185,
        'C2': {'D1': {'E1': 24122,
                      'E2': [2400664069,
                             2957954294,
                             1999126255,
                             1495193473,
                             3647707938]},
               'D2': {'F1': 3897499467270825016, 'F2': 218},
               'D3': [-6, -59, 102, -39, -84],
               'D4': [3167977929, 990784757]},
        'C3': 4000,
        'C4': 92},
 'A4': -1976095203331573206,
 'A5': [0.9802090525627136, 0.9837040305137634],
 'A6': -127}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GUY\xec\xc7A:\x91\xdc\xa2\xa4%\xef\x08\x83\\\xb3\x00%\x006\x00G\x00'
 b'e\x1e\x8ed\x9b\xe4\x83\xa8\x94\xa9hjq\xcc4\x95J\x00\x03\x00\x00\x00"\x7f'
 b'^\xcc\x9bdhh\xa1m\x96\xa6\x00\x03\x00\x00\x003o\xe0w\\uxoV3h\xa1\x00'
 b'\x03\x00\x00\x00Dgn\x83=\xb3*?\xadz\xe9\x12y\xbf\xa5\x9dkw\xf8\x8f'
 b'f\xd9\xc2\xe3y\xbf\xc0x\xbd\xf0\x17@\x80qq\xdb\x93R\x00\x02\x00\x00\x00U'
 b'\xbf%\xabl')

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

{'A1': -57,
 'A2': 1094357468,
 'A3': 11719533838895111347,
 'A4': [{'B1': -868969142, 'B2': 'hjq', 'B3': 2136919195},
        {'B1': -1586653530, 'B2': 'dhh', 'B3': 1876981596},
        {'B1': 1446209697, 'B2': 'uxo', 'B3': 1735295805}],
 'A5': {'C1': [-641539207, -1077905219, -266911616],
        'C2': {'D1': [113, 113, 219, 147], 'D2': 82},
        'C3': [-5536542777574616455, -4637127156408217754],
        'C4': -0.6471469402313232},
 'A6': 2201807888547293332,
 'A7': -87}

Пример 2

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

(b"GUY\xec\x95K][b\xc6'\x84\xe6|\x1f\x9cO\x00&\x008\x00I\x00g\x88[\x12"
 b'\xf0\x14\xc12\xb0efcso\x055\xc5h\x00\x04\x00\x00\x00"\xd7_\x0f\x11qljx'
 b'\xda\xb8\x8d\x8f\x00\x04\x00\x00\x004f\x12\xf9Kbko)i%\xc1\x00\x03\x00'
 b'\x00\x00Ff\x9dH\xc8V0\x0f\x18\r-\xa2\xd8\xb3#\x9e.\x00\xea\x1f-\x8c'
 b'zc\x87\xe2\\+\xb5\x07\xa5\x00\n\x8f\x80\xc9\x19\x8e\x00\x02\x00\x00'
 b'\x00W?\x17\xcf\x7f')

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

{'A1': -107,
 'A2': 1264409442,
 'A3': 14278527269061237839,
 'A4': [{'B1': 87410024, 'B2': 'fcso', 'B3': -681636079},
        {'B1': -625439345, 'B2': 'qljx', 'B3': 1712519499},
        {'B1': 694756801, 'B2': 'bko', 'B3': 1721583816}],
 'A5': {'C1': [-1938136185, -497275979, 128253962],
        'C2': {'D1': [143, 128, 201, 25], 'D2': 142},
        'C3': [6210480482118640344, -5538409196314550483],
        'C4': 0.593009889125824},
 'A6': -8621276239321025872,
 'A7': 101}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xa7LAMV\xd52\xd9f\x04\x00\x00\x00u\x00\x00\x00|@\x0c\xf4f\xd4\xec'
 b'\xbf\x0e\x04\x00\x00\x00y\x00\x00\x00d\xbfXXBk\xba\xf4\x02\x00'
 b'\x00\x00\x89\x00\x00\x00\x89\x03\x00\x8b\x00\xd7\xd9e\x9eP\xb2\xbep@'
 b'\x94\xcd\x0e_\xaa\xa1\xbf\xc9\x02\x00\x00\x00\x97\x00\x00\x00\x10\xb02y'
 b'\xb0\xe5\xc1\xa4\x02\x00\x00\x00\x9f\x00\x00\x00\x80\x03\x00\xa1\x00+le'
 b'\xba\x00UJ#\xaf\xe1@{\xdcB\xf2\x9fultn\xa6\xfb\xa6\xbe\x97"\xb2\xbd\x8a\x0ce'
 b'<H\\5?%px\x87r\xe5Q\x1b\xa1\x9a9E\xa5S\x93\xfbD?\xf0P\x94>:+H\x97\x82'
 b'\xddk\xf0\xac\xcb\xd8\xda\xcc\x8d')

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

{'A1': 13013,
 'A2': {'B1': 26329, 'B2': 'ultn'},
 'A3': [{'C1': -0.9009279982146974,
         'C2': 14,
         'C3': {'D1': [-0.3261386752128601,
                       -0.08698003739118576,
                       0.013980040326714516,
                       0.7084393501281738],
                'D2': -812218850092728476,
                'D3': [37, 112],
                'D4': -119,
                'D5': [3849488248, 2594249553, 1403340089],
                'D6': -1637492265},
         'C4': 1891545680},
        {'C1': -0.03450295501424039,
         'C2': -55,
         'C3': {'D1': [0.7694637179374695, 0.28968000411987305],
                'D2': -6574721434873843696,
                'D3': [58, 43],
                'D4': -128,
                'D5': [3716323144, 3417108587, 2379012824],
                'D6': -1167758293},
         'C4': 592073984}],
 'A4': -6921396162586943057}

Пример 2

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

(b'\xa7LAMV_\x07\xb3\xf8\x05\x00\x00\x00u\x00\x00\x00d\xc56\xf6VL\xd6'
 b'\xbf[\x05\x00\x00\x00z\x00\x00\x00$FL\r\xd1[\x17\x99\x03\x00\x00\x00\x8e\x00'
 b'\x00\x00`\x04\x00\x91\x00`\xa8\xa3xm\xb7\x8e\x00(\xa9\xcb3P}\xe7\xbf\xf0'
 b'\x04\x00\x00\x00\xa1\x00\x00\x00\x101\xa6b6\xb8\xac\xf8\x02\x00\x00\x00'
 b'\xb1\x00\x00\x00\x82\x03\x00\xb3\x00\x13\x99-.\x0e>\x0e\x81\x87//'
 b'\x85\xe9D\x95\x8epqivt8\xfa\xea>&1Z?\x91\xd8G\xbe\xbc3\x0f?2\xfa'
 b'\x81\xbe\xe4\x83,\x82\xcar\xbe\xea7\xc1Y\x05\x01\n\x15\xfbK\xff\xaa\xf4\x04k'
 b'>\xb1\x01n\xbfg\xbc#\xbf7\x97\x1e\xbe\xfc\xd9p\xf7\x9b\x1e\xc0\\&\x177'
 b'K\x85\x9b')

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

{'A1': 1887,
 'A2': {'B1': 63667, 'B2': 'pqivt'},
 'A3': [{'C1': -0.34840940517741203,
         'C2': 91,
         'C3': {'D1': [0.4589402675628662,
                       0.852312445640564,
                       -0.1951620727777481,
                       0.5593831539154053,
                       -0.2538619637489319],
                'D2': -7415357308012837340,
                'D3': [-28, -125, 44],
                'D4': 96,
                'D5': [3195193986, 1505834986, 352977157, 2868857851],
                'D6': 2023991392},
         'C4': 9353069},
        {'C1': -0.734047032511886,
         'C2': -16,
         'C3': {'D1': [0.2295110821723938,
                       -0.9297133088111877,
                       -0.6395935416221619,
                       -0.15487371385097504],
                'D2': -527844512586387184,
                'D3': [-4, -39],
                'D4': -126,
                'D5': [513537904, 388390080, 2609204023],
                'D6': 774740243},
         'C4': -2129773042}],
 'A4': -8172550179041366137}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

Поле Описание
1 int8
2 Структура E
3 float
4 int32
5 Массив структур F, размер 2
6 int16
7 uint16
8 int32

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b"BIDBu\x00_\xa5\x91B'v\xbfV\xd7|?\x07e%~\xbdN#rjP\xaf\xbe\x03\x00\x80"
 b'\x00\x00\x00\xc8^\x12i.n\xc3\xbft\x8d\xbc\xed\x86\x7f\xc2)\x93\xce,5l'
 b'\xce.L\x04\xd9*?\x05\x00\x8c\x00\x00\x002\x0flo\x9e*\xe3?(\xf7\xe0\xeaV\xa6,'
 b'\xa1vc\x82lap\xe2\xafD\x0e\x92\x92\xd3\xff\xb0\xcd1\x0c\xc4\xcb\xd3k\\'
 b'\x93\x03\r"\x02\xb6\xce3b\x9e\xad \x12\xd6\xa8\xe7?.\xd9\xe1=\xbfjz'
 b'\x94\xf4\xf2\x8fn\x8e\xd4l\tb\xc5\x80\xab\xb8[\xe8e[\x8e\xf8+M\x1c\x18'
 b'\x19\xb8\x89T')

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

{'A1': {'B1': {'C1': 0.7393598894172333, 'C2': 46, 'C3': -7719},
        'B2': {'D1': 95,
               'D2': {'E1': -28251, 'E2': -0.9615365266799927},
               'D3': 0.9876607656478882,
               'D4': 2116379911,
               'D5': [{'F1': [189, 78, 35, 114],
                       'F2': -0.3424103856086731,
                       'F3': [2053816125, -1879903084, 1825869422],
                       'F4': -0.15179996614891977,
                       'F5': 3009107718527815028,
                       'F6': -12653,
                       'F7': 13612},
                      {'F1': [108, 206, 46, 76],
                       'F2': 0.6673738956451416,
                       'F3': [-2134547959,
                              -396642133,
                              -124888219,
                              404507947,
                              1418311705],
                       'F4': 0.598952500935843,
                       'F5': -6832903642389874904,
                       'F6': 25462,
                       'F7': 27778}],
               'D6': 28769,
               'D7': 45026,
               'D8': -1835921852}},
 'A2': {'G1': [-45, -1], 'G2': [-12880, 3121, -13372], 'G3': -45},
 'A3': 107,
 'A4': 14895095162844975964,
 'A5': 51,
 'A6': 98}

Пример 2

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

(b'BIDBu\x00\x16\x97\x9a\xc4\x1f\x8d\xbe\x88\x9a\xe2\xbe\xb0`\x18\x91+,\x04'
 b'\x81\x0fx\x18?\x03\x00\x80\x00\x00\x00\x18\xdf\xe9\x0c\xcbx\xef\xbf\xc6'
 b'\xcb\x13\xbd\x1fM_U\x02\xf6\x95\xe4g\xcd\x86D\xef\xd0a?\x06\x00\x8c\x00\x00'
 b'\x00\x90\xcf;\xc3\x1a\xba\xef\xbf\xa8\\\xbb\xf7\xd6rDW\x10T,\x95\x08\x08\xad'
 b'\x93\x06\xb9s\x93\xdc\xfd\xa0\xc8\xf0\xdf[\xe4\x05\x16\x8f\xe70\xd1\xe5'
 b'\xf9&\x18\xc2\x9e\x10rW\xe6pw\xce\xbfv\xc0\x81\x82\xeb\xecW\xa7\xe7\xa3\xb5'
 b'\x13\xf4\xd9=\xacU\x9b\xec.\x11\x06\xe5\xd9:\x89\x03axQ\xa9KWJ\xd5'
 b"'\xe3\xaf\xc2")

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

{'A1': {'B1': {'C1': -0.2380200504984633, 'C2': 118, 'C3': -32320},
        'B2': {'D1': 22,
               'D2': {'E1': -25961, 'E2': -0.27563297748565674},
               'D3': -0.4425852298736572,
               'D4': -1860673360,
               'D5': [{'F1': [43, 44, 4, 129],
                       'F2': 0.5955819487571716,
                       'F3': [1475144578, -1247549529, 1037693971],
                       'F4': -0.9834952594964959,
                       'F5': 6151720414722902982,
                       'F6': -2558,
                       'F7': 58517},
                      {'F1': [103, 205, 134, 68],
                       'F2': 0.8820943236351013,
                       'F3': [-325364308,
                              -452587218,
                              59325145,
                              -1454278559,
                              -716548277,
                              -1028660441],
                       'F4': -0.9914678395420982,
                       'F5': 6288277247320874152,
                       'F6': 21520,
                       'F7': 38188}],
               'D6': 2056,
               'D7': 37805,
               'D8': -1821132538}},
 'A2': {'G1': [-36, -3], 'G2': [-14176, -8208, -7077], 'G3': 5},
 'A3': 22,
 'A4': 1740353071477745551,
 'A5': 194,
 'A6': 158}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'PTHP?#\xb8r\x00\x00\x00\x0c\xad\xe4&xpX\xca\x03N\x93\x00\xb5j~\x880'
 b'^\xbcf\xd3\xdf\xb8\xe81g\xa7\xc8\xcc\xe4\xf7\xe0\x9a\x11\x03\xea\xda\xe5 u|'
 b'z\nz\xce\xcb\x8aa\xb3E\xe7l\x14C>\xa3\xbf\xee\xd0wU\x98\xde\xac3lr\xfb\xf3'
 b'Y\xb1\xdd\x0f\xa8\x85\xe6\x86\x9f\xf1\xbf\xdb\xbbY\x0ch}\xbcg\xd5tVtM'
 b'\n\xcdx\n0\xd7\x1fy\x9fq\xc4\xd0&V\xf4[R\x16\xad\xfb"\xfflS?\xb2\xdbEC\xc1E@'
 b'>;')

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

{'A1': 0.6395331621170044,
 'A2': {'B1': {'C1': [{'D1': [44516, 9848, 28760, 51715, 20115, 181],
                       'D2': 106},
                      {'D1': [32392, 12382, 48230, 54239, 47336, 12647],
                       'D2': 167},
                      {'D1': [51404, 58615, 57498, 4355, 60122, 58656],
                       'D2': 117}],
               'C2': 8969493130433497697,
               'C3': {'E1': [45893, 59244, 5187],
                      'E2': 0.319823682308197,
                      'E3': 3497481624,
                      'E4': 3735827308,
                      'E5': 114,
                      'E6': 4227029425,
                      'E7': -2517608373625118735},
               'C4': -0.4333098050282975,
               'C5': [26581, 29782, 29773, 2765],
               'C6': 120},
        'B2': 2608,
        'B3': -41,
        'B4': [528064369, -992991658, -195341802, -1376050433],
        'B5': 27731,
        'B6': 0.07365830330060863,
        'B7': 15931}}

Пример 2

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

(b"PTHP>\x8f\xe6\xb1\x00\x00\x00\x0c\xb1'\x84\x1d7\x88`\xa2\xa8\xd0L\xaf"
 b'+\xf5\xa1\xa5\xbc\x1b\x8f.2\xe0\x9dZT\x96\xfb\x9f[\xac\x96\x93=\xacV\x97'
 b'k2\xb1\xdb%d\x1b\x0f\xafF\x8d$$\xfaU6\x9a\xbfh\x7fE\xd5E4\x18\x84\xf0)'
 b'~\x92X\x12~\x037\xa8\x9cc\x08\x1d\t:?\xef\xca\xb4"\xc71\xde\xd6\x0c'
 b'\xa3R\n\x9b\xc0a1\xb4\x837\x04\xedq\x8b`;\xca\x0fTI\x11\x15\xd2\x8f'
 b'v\x16T\x0b\xbf\xe5\xda\x9e\xb6I\xf7\xb6$]')

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

{'A1': 0.2810569107532501,
 'A2': {'B1': {'C1': [{'D1': [45351, 33821, 14216, 24738, 43216, 19631],
                       'D2': 43},
                      {'D1': [62881, 42428, 7055, 11826, 57501, 23124],
                       'D2': 150},
                      {'D1': [64415, 23468, 38547, 15788, 22167, 27442],
                       'D2': 177}],
               'C2': 15791137735834551949,
               'C3': {'E1': [9252, 64085, 13978],
                      'E2': -0.908191978931427,
                      'E3': 3578082328,
                      'E4': 2230331774,
                      'E5': 146,
                      'E6': 1477606915,
                      'E7': 4010627417325242682},
               'C4': 0.9934940985927445,
               'C5': [-10740, -23726, 2715, -16287],
               'C6': 49},
        'B2': -19325,
        'B3': 55,
        'B4': [82669963, 1614531087, 1414074645, -762350058],
        'B5': 21515,
        'B6': -0.6829370079355985,
        'B7': 9309}}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'qLWHziftmv\xcf\x00\x02\x00}\xbf\xc9\x9d+68\xb7@1A\xcc\xd5\x13'
 b'\xa8\xf2\xac\x15\x13\x00\x00\x00\x04\x00\x00\x00\x85ejnvrl\xb8'
 b'\x00\x02\x00\x8d\xbf\xe4\xe2rjt}\xec\xe5n9\xe2\xe6\xca\x8emD\xf9\x00\x00'
 b'\x00\x02\x00\x00\x00\x95\xbe\x98\xbf\xed\x8c\x83\x83&\x8e\x90\xd2 #r'
 b'?\xda<\xdeW\xd8\xa2\xfc\xbf\xe7\xdd$\x8a\xaa}\xf6\xa0\x1e?p\x86c\x98\x85'
 b'\x00\x99\x87oV%%7\xdf\x80\xdb\xcb:y\xbd\xa2\xe2(\xef\xba \xc1|P$\xe9s\x0c'
 b'\xc6E8\xbem~^\xdf\xe0\xfd\xd2\x9d\xc8d\x07KK.\xf4\xf1\xc3[\xa3n\x95\xdd')

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

{'A1': [{'B1': 'ziftmv',
         'B2': -49,
         'B3': [-2133079238, 2042471138],
         'B4': -0.20010891101395067,
         'B5': 12609,
         'B6': 3436516264,
         'B7': 4071363859,
         'B8': [10479, -17888, -16004, 20516]},
        {'B1': 'ejnvrl',
         'B2': -72,
         'B3': [-378336058, 1161346669],
         'B4': -0.652642448349011,
         'B5': -6802,
         'B6': 971171530,
         'B7': 2389525753,
         'B8': [32350, -8224]}],
 'A2': {'C1': 3197681645,
        'C2': 35971,
        'C3': 9450397620735320946,
        'C4': [0.4099651201127441, -0.7457449634857187],
        'C5': -24546,
        'C6': 0.9395505785942078},
 'A3': 39045,
 'A4': {'D1': -3, 'D2': -3270237422456452306, 'D3': -796640860716493347},
 'A5': 135,
 'A6': 28502,
 'A7': 623196127}

Пример 2

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

(b'qLWHweoghi\x10\x00\x02\x00}\xbf\xee\xc7Q\x1dO\xb8.Cl\x96\xb3\xfeE-%\xdb'
 b'b\x00\x00\x00\x03\x00\x00\x00\x85gsqepd\xc6\x00\x03\x00\x8b\xbf\xd32x'
 b'\xfa\xe3\xe9\xc4w\xf2`\xf5J\xda\x02\x0f\xe87\x00\x00\x00\x06\x00\x00'
 b"\x00\x97'\x15{R\x95\t\xb6\xf6l\x11\xfdYG\xa7?\xd9\xc7E\xf8G\xf0l?\xd3\xb47"
 b'\xa8r)\xdc\xc2\x07\xbfZ\xea>b\x98\x00\xa3\x93O\xf5\xa6\xa3\xf0\xcbH\x0b7'
 b'\x06\xc6"\x06\xff\xc62\xea\xec\x8cq\x9f\xfc\x07^I\x9a\xfa\x88O'
 b'\x9d\xc4\xcc\xcf\xdf\xed\x89\xa4\xceK\xb7Q\xbb\xed\x1a\xf8\xbdi\xa6\x1b'
 b'\xb8\xef\xef\x11\x86p\xc8\x8bp\xe3\xa0{')

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

{'A1': [{'B1': 'weoghi',
         'B2': 16,
         'B3': [1208694534, -970848513],
         'B4': -0.9618306705940591,
         'B5': 17260,
         'B6': 2528378437,
         'B7': 757455714,
         'B8': [-14798, -5396, -29583]},
        {'B1': 'gsqepd',
         'B2': -58,
         'B3': [-1610872994, 1234893448, 1335739596],
         'B4': -0.29995560170177904,
         'B5': 30706,
         'B6': 1626688218,
         'B7': 34596919,
         'B8': [-12321, -4727, -23346, 19383, 20923, -4838]}],
 'A2': {'C1': 655719250,
        'C2': 38153,
        'C3': 13183843783694436263,
        'C4': [0.4027876782054196, 0.30787459802436756],
        'C5': -15865,
        'C6': -0.8551367521286011},
 'A3': 25240,
 'A4': {'D1': -8, 'D2': -4798121289989492975, 'D3': -8759280774015639429},
 'A5': 147,
 'A6': 20469,
 'A7': -1499205429}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ICHTB\xf7\xfe\x9b\\\xce\x03\xb8\xbb`$\xca|\xd6godiei\xcb\xff \x98'
 b'\x0e\x8e\x08\x00_\x00`\xff5\xe4^\xbd\x92&m\x13"y\xa6\xa0~-t\xe6R\xd2\xac\x81'
 b'\xd1\t\xae\xf9!@)\xbbV\xbdFj/^s{\x9c\x8f\xf5\xf6\x19\xa3\x16\x95\xc5?\xf6W'
 b'|h{c\x00\x02\x00\x00\x00g\x00bsimcpds0\x00')

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

{'A1': -5187075448651188414,
 'A2': {'B1': 24763,
        'B2': {'C1': -696464860, 'C2': 'godiei'},
        'B3': -53,
        'B4': 2383321120,
        'B5': 'bsimcpds'},
 'A3': [{'D1': 3828744032,
         'D2': 94,
         'D3': 11995656549308994237,
         'D4': 160,
         'D5': -428593794,
         'D6': 82,
         'D7': 2448179229645450450},
        {'D1': 1455106368,
         'D2': -67,
         'D3': 10348281779222178374,
         'D4': 245,
         'D5': 379787766,
         'D6': 149,
         'D7': 7168438115151265733}],
 'A4': 0,
 'A5': [48, 0]}

Пример 2

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

(b'ICHTbm\xde\xc0D\xfadq\x98M7(7\xa6zkpaki\x8e@J\xed\xfd,\x05\x00_\x00\x9fX'
 b'b\xdf\x9c\x02,\x84I-|5\xfc_\xfd\xa0\x98\xaf\x9f\xe3\xd5-\xf5\x95\x9aA'
 b'\xcf\x9c\xda0\x95\xdb~\x13f;\xcdv\xee\x9cVN\x05J\x9c\xa5/\xc8iSI\n\x83\t'
 b'\xbb\x02\x00\x00\x00d\x00yqogd\xe3\xe9')

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

{'A1': 8170930797157444962,
 'A2': {'B1': 19864,
        'B2': {'C1': -1506334665, 'C2': 'zkpaki'},
        'B3': 16526,
        'B4': 754838858,
        'B5': 'yqogd'},
 'A3': [{'D1': 3747764383,
         'D2': -100,
         'D3': 18173568405272275970,
         'D4': 95,
         'D5': -1348951811,
         'D6': 159,
         'D7': -3512356265518049821},
        {'D1': 2503006876,
         'D2': -37,
         'D3': 11308106338210812798,
         'D4': 86,
         'D5': -1672870578,
         'D6': 165,
         'D7': 685402878338779183}],
 'A4': -69,
 'A5': [227, 233]}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

Поле Описание
1 uint16
2 int8
3 uint16
4 uint16
5 int32
6 int16
7 int64
8 uint32

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

Пример 1

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

(b'~YXTL\x04\x00\x19\x00\x00\x00I\x00\x00\x00\x97\xc78\xe0\x93?\x0c1\xd6?fky'
 b'i\xd6\x0bO\xf3\xf9_\xf6\xa6\xdf\xe7\xdab\x8b\xfaF:\x97\xb6h\xfeo\x1f\\'
 b'\xach\x94]\xb7\x836h\x9c\xfa\xfe\x82DO\x9b\x8ee[\xee\x9c\x86\x02\x00\x1d'
 b'\x00\x00\x00\xb1\x12.x\x10\x06\x9f\x80\xd0N,\xa3\x17j\xf6S\xdbB:V\x1e'
 b'a\xb6>\x9f<>\x0e\xb3\xf3')

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

{'A1': 'fkyi',
 'A2': {'B1': [{'C1': 214,
                'C2': [11, 79, 243, 249, 95],
                'C3': [-404773130, -91528486, -1231603130, 527433320]},
               {'C1': 92,
                'C2': [172, 104, 148, 93, 183],
                'C3': [-1670891901, 1149435642, 1703844687, -2036535717]}],
        'B2': 2016285361,
        'B3': 16,
        'B4': {'D1': 40710,
               'D2': -128,
               'D3': 20176,
               'D4': 41772,
               'D5': 1408657943,
               'D6': 17115,
               'D7': 4368279116607018554,
               'D8': 4088598078}},
 'A3': -14441,
 'A4': 0.34674364289049064}

Пример 2

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

(b'~YXTL\x06\x00\x19\x00\x00\x00a\x00\x00\x00|\xf88\xe2\x86\xdc\xd2\xca\xdd?kcw'
 b'kirMg\xdc\x9d\x8e\xc7\x86)\xe7\xc02\xb1Z\xdfC\xe2\xbd\xc6\xb4YV~p\x94\x82'
 b'\x86\xdcq\x17\xeal\xee\x14\xf4\xf3$\x87\xb75HN{\x8c\xf9\xeb\xe8J\xb3\x88'
 b'Bi\r\xfc\xec\xc8\xc4\x1fq+\xfd\xc4\xa8\xf3C\x9d"\x03\x00\x1f\x00\x00\x00\xba'
 b'\x86=\xa0\x1e\xeaf\xe6\xf66\t5\xb8C/\x05\xe12Z@:\xbd\x18N4\xc9/^\xff\x12')

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

{'A1': 'kcwkir',
 'A2': {'B1': [{'C1': 77,
                'C2': [103, 220, 157, 142, 199],
                'C3': [-1058592378, -547704526, -960634301, 2119588276]},
               {'C1': 112,
                'C2': [148, 130, 134, 220, 113],
                'C3': [-294852073, 619967508, 1211479943, -108233906]},
               {'C1': 235,
                'C2': [232, 74, 179, 136, 66],
                'C3': [-319025815, 1897907400, -1463485141, 580731891]}],
        'B2': -1606580550,
        'B3': 30,
        'B4': {'D1': 26346,
               'D2': -26,
               'D3': 14070,
               'D4': 13577,
               'D5': 86983608,
               'D6': 13025,
               'D7': -3948445105136189350,
               'D8': 318725679}},
 'A3': -1924,
 'A4': 0.46550437484578167}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"ZKM\xa0\x00'|\x7f\xe6\xc6\xae\x9a\xc6>\x00\x02\x00X\x90\\\xae\x86\x00\x00"
 b'\x00\x07\x00\x00\x00f\xbeL\x83\x15ahmgi/Ik."kzpsecy\x03Z\x01N\x02"\xb6\x8e!'
 b'3\xe56>O\x81 ?\xe5\xa0.\x90M\xf8\xec<\x94\xbdH4\xfb\'\x00\x05\x00\x00\x00"'
 b'4\xef\xbfB\x8d\xad~\xe4\xbb?(\x92\x17\x9d|\xe2\xbf$kg\x0f')

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

{'A1': {'B1': 793340718,
        'B2': {'C1': 34,
               'C2': 'kzpsecy',
               'C3': 241506964572649102,
               'C4': 2392507848200257824},
        'B3': 0.6758034532975024,
        'B4': 0.018156662583351135,
        'B5': 52,
        'B6': 64295,
        'B7': 'ahmgi'},
 'A2': 8971142723752609342,
 'A3': [{'D1': 13551, 'D2': -0.7599743008613586, 'D3': 126},
        {'D1': 58555, 'D2': 0.6584791541099548, 'D3': -99}],
 'A4': -1872974202,
 'A5': [124, -30, -65, 36, 107, 103, 15],
 'A6': -0.19971878826618195}

Пример 2

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

(b'ZKM\xa0\x00&<`\xf0\xc4\x94\xe8\x1d\x9c\x00\x05\x00WY\xb2\xb7\xd3\x00\x00'
 b'\x00\x05\x00\x00\x00z?MyTzujy\x0c\xa7\xbem\xf2oklmdkv\xcc\xed\x16Mr\x17'
 b"\x005\xbe~%a'G%\x10\xbf\xe2'\x8a\x93>\xe2\x82<\xceY\x01\x07hL\x00\x04\x00"
 b'\x00\x00"2B\xbf\'\xcfM\xd3\x9b\x93\xbd\xa2\xb8g"\x10\xce\xbfk!\xc5\xe5'
 b'\x9e\x14\xbfB\xa0\xb1H\x14\x89\xbe3\xb7\x93\xd0G]\x8c\x8b\xd3')

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

{'A1': {'B1': 212319853,
        'B2': {'C1': -14,
               'C2': 'oklmdkv',
               'C3': 14766483275100127285,
               'C4': 13726449813472879888},
        'B3': -0.5673268199817161,
        'B4': 0.025188924744725227,
        'B5': 7,
        'B6': 26700,
        'B7': 'zujy'},
 'A2': 4350741967142395292,
 'A3': [{'D1': 12866, 'D2': -0.6555069088935852, 'D3': -45},
        {'D1': 39827, 'D2': -0.07945328205823898, 'D3': 34},
        {'D1': 4302, 'D2': -0.9184840321540833, 'D3': -27},
        {'D1': 40468, 'D2': -0.7602644562721252, 'D3': 72},
        {'D1': 5257, 'D2': -0.17550496757030487, 'D3': -48}],
 'A4': 1504884691,
 'A5': [71, 93, -116, -117, -45],
 'A6': 0.8026325702667236}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

Поле Описание
1 float
2 Массив char, размер 7
3 int32
4 uint16
5 Массив uint16, размер 7
6 int16
7 Структура D
8 int64

Структура D:

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

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

Пример 1

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

(b'NSM*\x03\x00\x00\x00J\x00{\x00\x00\x00\x18(\x0f\x0c\\\xba\xeb"\xa2D'
 b'\xd1\xbf\xd2%\x9a\xb6\x1c\xaa\xe7\xbf\x8a\xd6\xa2\xea\\\x0e\xed?\xc4v'
 b'4\x80.\x01\xe3?\x10\xe08\x1e*V\xcc?\x88\xbd\x18\xaf;Z\xc4\xbfP\n'
 b'\x13\x97/\xa2\xc9\xbf^\x1a\xe9\xe9\xcdV\xe6o?/\xe10\x11<\xbb\x8a\x0c\x92'
 b'\xa8\xbel\xf1\xd5\xdd\x8d\xcf\xd862\x8a>\xb0)b"\x96\xa552\xf3\x00\x8d'
 b'L\x89\xfb\xd5\xc5{S:"\xf7\xbaerayfjl\x1c)[\xd8\x8e\x97\xfa\xebO\xe1'
 b'\xd6\x98\x0bB\xe1\xd1;/\xadEb\x97\xcd\xcf\x02\x00k\x00\x00\x00'
 b'\xa0\xcd\xb3\xb4#\xdc\xf0u')

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

{'A1': [{'B1': 6750,
         'B2': 59881,
         'B3': -51,
         'B4': 0.9371083974838257,
         'B5': -7889},
        {'B1': 4400,
         'B2': 47932,
         'B3': -118,
         'B4': -0.32923924922943115,
         'B5': -3732},
        {'B1': 56789,
         'B2': 53133,
         'B3': -40,
         'B4': 0.26991432905197144,
         'B5': 10672}],
 'A2': {'C1': -0.0018854804802685976,
        'C2': 'erayfjl',
        'C3': -665114340,
        'C4': 38798,
        'C5': [60410, 57679, 39126, 16907, 53729, 12091, 17837],
        'C6': -26782,
        'C7': {'D1': -12339, 'D2': [68453625333424738, 6015619250122214541]},
        'C8': 8498534542761774496},
 'A3': 202319896,
 'A4': [-0.26981404695735534,
        -0.7395156446884192,
        0.9080032904373223,
        0.5938942436220818,
        0.22137953258220522,
        -0.15900369691506122,
        -0.20026202084234734]}

Пример 2

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

(b'NSM*\x02\x00\x00\x00J\x00p\x00\x00\x00:\xa2\xef\x97\xd0,\x1b\xd9\x8e#'
 b'\xd2?\x18\x08s?\xd9C\xd2?zp\xd2YL\xd6\xed?\x18~[G\x8bH\xc7\xbfhm'
 b'\x14S\x06\x84\xc5\xbf\xb8sC\x9dk\x19\xcf\xbf\xc4&\xdf\xf5\x18A\xd8\xbf \xec'
 b'Y\xcf\xe2\xe7\xbc\x16\xbf\x08B1V\xf5F\xbd\x1b\x0c\xed\xbe\x18\x7f'
 b'\x0fc\x90\x0f}\xf3A\x85\x1c\xeb\xf0\x90\xa1\xdeTf\x83\xd3O?ktaiaazr'
 b'\xd7Rx\xfed*\x0e\xac\xa4\xdc\xe6\xc8\x08\xf2>\xcf\x90\xc1{K\xba\xb1B\x02'
 b'\x00`\x00\x00\x00\xdfX{\n\xb0\xb0W\x19')

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

{'A1': [{'B1': 60448,
         'B2': 53081,
         'B3': -30,
         'B4': -0.5888199210166931,
         'B5': 16904},
        {'B1': 22065,
         'B2': 18165,
         'B3': -67,
         'B4': -0.46298298239707947,
         'B5': 32536}],
 'A2': {'C1': 0.8118211627006531,
        'C2': 'ktaiaaz',
        'C3': 2018695026,
        'C4': 25854,
        'C5': [3626, 42156, 59100, 2248, 16114, 37071, 31681],
        'C6': -17845,
        'C7': {'D1': 17073, 'D2': [9602223598988190479, 7373763275415153436]},
        'C8': 1826122444058613983},
 'A3': 2549064250,
 'A4': [0.28342028810284337,
        0.2853911513922198,
        0.9324094538055896,
        -0.18190136894462294,
        -0.16809157425528132,
        -0.24296326807862356,
        -0.3789732361879994]}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'DEOQq\x00\x00\x00q>\x17f\x17\x00\x00\x00\x8b\xbe\x84\x11g\x1b\x87\x01'
 b'u\xa7\xbf\x13\xa1=V\xa4\x08\x10Y\xbe\xd6\xc4\xc5~}\xa0o\xbb?\x1f\xd30'
 b'\x7f\x1d%\xf5\x863\xe8C\x03z\x83@~C\x8b\x86\xf8\x95\x93\\\xf8\xcd\x8c\x85'
 b'\x1eg\x1f\xd9\x03]\xc18\x00\x00\x00\x04\x00\x11\x00\x00\x00\x03\x00\x00'
 b'\x005c7|\xbb\xd0\xfe\x11gC\x00\x00\x00\x03\x00M\x91\x9c\xbd\xaalF,'
 b'\xc5f\xf7\x91C\x17`\x00\x00\x00P\x00\x02\x00o\xbf\xe5\xd7\x15\x1d|\xfdT\xa9'
 b'\xa7\xd1C\x92\xfa\xc1\x99\x17M\x01\x02\xab\xceJ\xa8\xf6')

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

{'A1': {'B1': 27718,
        'B2': 751134455,
        'B3': -1857874080,
        'B4': {'C1': [{'D1': -0.2579452693462372, 'D2': 461832565, 'D3': -89},
                      {'D1': -0.5766790509223938, 'D2': 1453590544, 'D3': 89},
                      {'D1': -0.4194699823856354, 'D2': 2122162287, 'D3': -69},
                      {'D1': 0.6243162155151367, 'D2': 2132616693, 'D3': -122}],
               'C2': [3740313172750581886,
                      4867132224523427064,
                      14811359640140372227],
               'C3': 7149320079580991847,
               'C4': {'E1': 67, 'E2': [93, -63, 56], 'E3': 145, 'E4': -100}},
        'B5': [-67, -86],
        'B6': -0.6825051856939504},
 'A2': 0.1478503793478012,
 'A3': {'F1': -6221774272030129767,
        'F2': 5965,
        'F3': [1, 2, 171, 206, 74, 168],
        'F4': 246}}

Пример 2

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

(b'DEOQq\x00\x00\x00\x7f?\x00\xce\xc3\x00\x00\x00\x99\xbe\xec}\xbc\x19\x03\x83'
 b'\xa4\xca?o\xee\xaf\x86Ep\xd0\xd3\xbe\xb4N\x0f\xebS\xffQ\xb1?\x0b\xaa\x1c'
 b'\xdc\xa0\xd1\x1a\xa9=g\x97\xe4\xfc\x03s\xe3\x82>\x11\x1c\xfd\x15\xe4\x155T#'
 b'\r\xfa\x96\x98\xd5\x9b\xc2\xae\xd5\x06\xb0H\x17B(}\x1bF\x87.5\xed\x00\x00'
 b'\x00\x06\x00\x11\x00\x00\x00\x02\x00\x00\x00G\xee\x98\xe7]\xeaY\xa2\x90'
 b'\xf2\x00\x00\x00\x07\x00Wg\x13\xe5/X\x83I\xad\xa76\xf75\x8c\xd3\x00\x00\x00'
 b'^\x00\x02\x00}?\xed\xc3\xec\xc4P\xe4zM\xb4\xdc\x13e2u\xcef%G\x1c(\xaf\x11'
 b'\x8c\xeb')

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

{'A1': {'B1': 22659,
        'B2': 1236117302,
        'B3': -147485485,
        'B4': {'C1': [{'D1': -0.46189677715301514, 'D2': 419660708, 'D3': -54},
                      {'D1': 0.9372357726097107, 'D2': 2252697808, 'D3': -45},
                      {'D1': -0.3521580398082733, 'D2': 3948150609, 'D3': -79},
                      {'D1': 0.5455644130706787, 'D2': 3701526810, 'D3': -87},
                      {'D1': 0.05654133856296539, 'D2': 4228084707, 'D3': -126},
                      {'D1': 0.14171214401721954, 'D2': 367269173, 'D3': 84}],
               'C2': [2525950490740890562, 12597982886832325160],
               'C3': 17192745968036586128,
               'C4': {'E1': -14,
                      'E2': [125, 27, 70, -121, 46, 53, -19],
                      'E3': 103,
                      'E4': 19}},
        'B5': [-27, 47],
        'B6': 0.9301666101738555},
 'A2': 0.5031549334526062,
 'A3': {'F1': 5599342212588664270,
        'F2': 26149,
        'F3': [71, 28, 40, 175, 17, 140],
        'F4': 235}}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

Поле Описание
1 float
2 uint8
3 uint8
4 uint32
5 int8
6 uint16
7 double

Структура D:

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

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

Пример 1

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

(b'\x93SFA\x00\x06\x00\x00\x00A\x00M\x07\xcc:\xfc\xd8\xf2S\xb2\x00\x03\x00\x00'
 b'\x00o\xc3\xfe\x02\xc7\xf77\xfey=\x15<o\xef\xda|\x98;\xc6;g\xe7\x06{U\xd5.'
 b'D\xcf\xf9e"L4\xf2l\xd3\xee\x01_\rY\x03\x9c\xa9\x8c\xef\x90$\x16\xac'
 b'&\x97\xd8@\xa3\x9b?\xd4&T\xcd\x18\xcb\x94\xea\xbbhbrusrt?\xcf\x14\x10\xa0'
 b'\x91<\xf8F\xfay5=\x7foOG\x94U\x05\t\xd7\xf4\xe7)?\xee\x1f1$b\xb7J'
 b'\xbe\x9b\xef\nU\xcf\xd2\xddJA\x14\xe6\x1c?\xea\x9c\xa3\x1f\x9d\x14\xae?Ep'
 b'\xa4\xc4\xd2\x98\xb7"\xf2\x9a\x18\x1a?\xe8\xc9b481\xf6')

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

{'A1': [3417, 924, 43404, 61328, 9238, 44070],
 'A2': {'B1': 38872,
        'B2': 64,
        'B3': -23653,
        'B4': 0.31483955410947684,
        'B5': 60091,
        'B6': 'hbrusrt',
        'B7': 0.24279983368112545,
        'B8': 1190820149},
 'A3': 561888911160398770,
 'A4': [{'C1': 0.06236201152205467,
         'C2': 71,
         'C3': 148,
         'C4': 1426393559,
         'C5': -12,
         'C6': 59177,
         'C7': 0.9413076124817306},
        {'C1': -0.3045580983161926,
         'C2': 85,
         'C3': 207,
         'C4': 3537717825,
         'C5': 20,
         'C6': 58908,
         'C7': 0.8316207520916998},
        {'C1': 0.7712500095367432,
         'C2': 196,
         'C3': 210,
         'C4': 2562138866,
         'C5': -102,
         'C6': 6170,
         'C7': 0.7745829601204253}],
 'A5': {'D1': -15362,
        'D2': 46659383,
        'D3': 254,
        'D4': [2034046268,
               1877990012,
               2554054203,
               1743193723,
               1440034372,
               3489228066,
               1278538348],
        'D5': -739376801}}

Пример 2

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

(b'\x93SFA\x00\x06\x00\x00\x00A\x00M\x96\xb0Js~\xea\xf6\x8e\x00\x03\x00\x00'
 b'\x00o]\xba%B\x1f\x92\xf3\x1a\xe2e\x03\x18P\xca\xf15\x08=\xf5t\xfeS\x81\xadgQ'
 b'\xddz\xa0C\xe50V\x8f\xf7\x03\x8a\xadg\xdax\xb1\x05&\xab\xd5^\xea\xcf\xc2'
 b'b\x90\xb4\x0e\xf9I?\xd8\x02%\xc0\xa0\xc2\xc0[Joimrbzx\xbf\xe4\xba\x15j'
 b'/\xdb\xe6\xbf\xe2*\x96\xbc(\x04[\x86\xf9\xf6`\xd1+eB\x02\xbf\xea\x11\xd6'
 b'W\x9a}\x0e?N\xff\x94\x04IHC\xd2\xa4\x99\xdf\x82?\xc5O\xc4\xb1\xe4\x83'
 b'\xb8=\xbb\xb5\xd4\xb0\xb1B\xb4\xec\x1cc\xea*\xbf\xee\xbeYMeH\x18')

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

{'A1': [55928, 45317, 9899, 54622, 60111, 49762],
 'A2': {'B1': 37044,
        'B2': 14,
        'B3': -1719,
        'B4': 0.37513107119870526,
        'B5': 23370,
        'B6': 'oimrbzx',
        'B7': -0.647715289493928,
        'B8': 3219270294},
 'A3': 10858260561501288078,
 'A4': [{'C1': -0.010254944674670696,
         'C2': 134,
         'C3': 249,
         'C4': 4133540139,
         'C5': 101,
         'C6': 16898,
         'C7': -0.8146774016385352},
        {'C1': 0.8085873126983643,
         'C2': 4,
         'C3': 73,
         'C4': 1212404388,
         'C5': -103,
         'C6': 57218,
         'C7': 0.1664968365303403},
        {'C1': 0.09165540337562561,
         'C2': 176,
         'C3': 177,
         'C4': 1119153180,
         'C5': 99,
         'C6': 59946,
         'C7': -0.9607359420426773}],
 'A5': {'D1': 23994,
        'D2': 625090450,
        'D3': 243,
        'D4': [451044611,
               407948017,
               889732597,
               1962824577,
               2909229533,
               2057323493,
               810979319],
        'D5': 59420007}}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'ONT\x11zQ\x01A2/\xee\xe9@\x00\x81\x00\x00\x00\xb0\\g\xfb}n\xef\xbf\xc5\x81'
 b'\xc0\xc9-\xf4\x8b\x1a\xad?\x9a$&\xaf\x1a|\x8f\xa6\xe5?\xc0\x94'
 b'\x12\x00\x00\x00\x1c\x00\x00\x00&\x00\x00\x00[{\xb48\x825\xa8\x19'
 b'\x0e\x03\xecH\x05\x03\x000\x00\x00\x00\x87\x1a\xcc\x03\xab\x9a\xa8\xad\xef'
 b'\xd97\x02\x00\x00\x00<\x00\x00\x00\x02\x00>\x00\x8d\xaax\xa9\x0b\xa8'
 b'\xa0\xa0\xc0p\xef4\x03\x93\xd0\x8f=\xe3E\x02$ax\xfd\xa4\xd4\x1e\xbb\x81h'
 b'\xb2F\xd1\xee\x07\xed\x0f\x02\x00\x00\x00y\x00\x00\x00/\x883\x93~'
 b'\x13\x0f\xe2')

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

{'A1': 1090605434,
 'A2': 3924700978,
 'A3': {'B1': -126,
        'B2': 380813666378426421,
        'B3': {'C1': [{'D1': -0.9822378072957658, 'D2': 197, 'D3': -127},
                      {'D1': 0.056843160206784926, 'D2': 154, 'D3': 36},
                      {'D1': 0.6765820907507745, 'D2': 192, 'D3': -108}],
               'C2': 6791,
               'C3': {'E1': -52,
                      'E2': 43779,
                      'E3': 43162,
                      'E4': 937029549,
                      'E5': [91, 123],
                      'E6': [180, 56]},
               'C4': -6872308263326012787},
        'B4': 888107200,
        'B5': 3,
        'B6': 0.07022204250097275,
        'B7': 17891},
 'A4': {'F1': 571624304293740987,
        'F2': 4077,
        'F3': [2019632130, 517252349],
        'F4': -1825339345,
        'F5': 3792638846}}

Пример 2

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

(b'ONT\x11{c\x83\xdfF5\xb6*D\x00\x85\x00\x00\x00\xa0\xdd\xb2\xccE\xd2'
 b'\xab?\x94\x81\xb4\xf11\x03\xf6\x06\xd3\xbf\t\xa3X\x82\xf1^G[\xe8?S\x95'
 b"\x12\x00\x00\x00\x1c\x00\x00\x00&\x00\x00\x00\x02@\xbe\x12'w\xf0\x86"
 b'j_\xcd\xdbhw:"i\x03\x000\x00\x00\x00\xec\xb6\xcf\xe5\xd2;\x1d\x82U'
 b'\x01I\x05\x00\x00\x00<\x00\x00\x00\x03\x00A\x00h\xfe\xdc\x9b\x14\xf9\x07\tIv'
 b'x\xc8\xa5\x00\x07{?\xfc\xa2\xf2\xc5\x81Ri\xe9&\xe6\xfe9K\xd9\x96\xc5\x88'
 b'\x13bT\x02\x00\x00\x00}\x00\x00\x00\xb0\x9d\xcd\xc2\x8a\xff\x0fj')

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

{'A1': -545037445,
 'A2': 716584262,
 'A3': {'B1': 106,
        'B2': 7575681807725350239,
        'B3': {'C1': [{'D1': 0.05433862804187162, 'D2': 148, 'D3': -127},
                      {'D1': -0.2972998648836225, 'D2': 9, 'D3': -93},
                      {'D1': 0.7611424307215868, 'D2': 83, 'D3': -107}],
               'C2': -18708,
               'C3': {'E1': -49,
                      'E2': 53989,
                      'E3': 7483,
                      'E4': 1224824194,
                      'E5': [2, 64, -66, 18, 39],
                      'E6': [119, 240, 134]},
               'C4': 650762538087939688},
        'B4': -931629495,
        'B5': 165,
        'B6': 0.9805755615234375,
        'B7': -23812},
 'A4': {'F1': 1407592135234632190,
        'F2': 21602,
        'F3': [1384236530, 3861309801],
        'F4': -1026712144,
        'F5': 1779433354}}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

Поле Описание
1 Структура E
2 int64
3 int8
4 uint8
5 double
6 Адрес (uint32) структуры F

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'RPRY2\xb3\xcf\xb8|\xe0JTb\x00\x00\x00jnsla\xbf\xd8\xbc\x0e\xda\x1b\x9b'
 b'8\xe7\xaf\xba\xbe\xf6%7[Q\\da&\x16\x95cjxpwmN\rI\x9b\xd4\xbf"\xfd\x16\xd5'
 b'E\x1d\\\x93\x00\xd0\xe8\xe9\xb2\x86\x1c_\xb0\x8b\x12\xf2/\xf3\x89\xe2'
 b'\x16_u\xda\xb3\xd2s\x0f\x05\xdbR\xde\x0c\xe6\xbf\xdb\xea\xe9\xf5v'
 b'\x04$\x00\x00\x00<\x00I\x06\x9b\xde\x85\xbf\xe2X\x15\xbc\x13\xffl'
 b'\x83\xf1\x14\xbe\x14\xe2\xac\x12\xaa><\xe6q\xa1s\xbe\xa5\x8f\x19\xf3e?Y\x8a'
 b'\x18\xd73>u\x9a_')

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

{'A1': 50,
 'A2': {'B1': 12956777499446629474,
        'B2': {'C1': {'D1': {'E1': 139, 'E2': 1365206360083535455, 'E3': 30170},
                      'D2': -5489198487451249954,
                      'D3': 12,
                      'D4': 230,
                      'D5': -0.4362130066948018,
                      'D6': {'F1': 69,
                             'F2': 7516,
                             'F3': 37632,
                             'F4': -3393205366260211792}},
               'C2': 1691,
               'C3': 56965,
               'C4': -0.573252551403113,
               'C5': 131,
               'C6': [{'G1': 61716, 'G2': -0.1453959345817566},
                      {'G1': 4778, 'G2': 0.18447281420230865},
                      {'G1': 41331, 'G2': -0.32335737347602844},
                      {'G1': 62309, 'G2': 0.8497633934020996},
                      {'G1': 55091, 'G2': 0.23984669148921967}]},
        'B3': 'nsla',
        'B4': -0.3864781503638599,
        'B5': 231,
        'B6': 44986,
        'B7': -0.4807526767253876},
 'A3': 6580142116761376405,
 'A4': 'cjxpwm',
 'A5': [19981, 18843, -11073, 8957, 5845]}

Пример 2

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

(b'RPRY\xf4\x10\xecu\x11\xe8c\xf9\xe6\x00\x00\x00jlamq?\xe4\x19U\x11/g'
 b'\xa4\xccQ\xc4?$\x90\x98\\\xa2\xc6\xdc\x0c\xfc\x05\xe1vxqdipz\xe3\xe30q\x80'
 b';\x01\xfe~@\xd5\xe4\x9d\x9a\xe2\xf8\xf4\xcc\\\x83}#\x05%%\xabX)\xda'
 b'\xd5\xc1\xc7\xf3\xe7\x82\xfcd\xcc$/\xcc\xa4\x00\xbf\xd9V\xde\xd5\xb0'
 b'\x16\xa4\x00\x00\x00<\x00I7\x88t\x8e?\xee-\x93\xc8\xda:\x1a\xfe\xf8m>'
 b'\x86S\xe0"\x17\xbf\x14\xc1\xd7\xf8]>\x93\xc1\x83t\xb9?M\xc1\xe4\xcf\xc5\xbe'
 b'"\xc3y')

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

{'A1': -12,
 'A2': {'B1': 1219478318884321766,
        'B2': {'C1': {'D1': {'E1': 5, 'E2': 2676733948689307073, 'E3': 51187},
                      'D2': -1764570594123960372,
                      'D3': -92,
                      'D4': 0,
                      'D5': -0.39592715137437495,
                      'D6': {'F1': 64,
                             'F2': -10780,
                             'F3': 40346,
                             'F4': -2091652868350968541}},
               'C2': 14216,
               'C3': 29838,
               'C4': 0.9430636332415958,
               'C5': 254,
               'C6': [{'G1': 63597, 'G2': 0.2623586654663086},
                      {'G1': 8727, 'G2': -0.5810827612876892},
                      {'G1': 63581, 'G2': 0.28858575224876404},
                      {'G1': 29881, 'G2': 0.8037397861480713},
                      {'G1': 53189, 'G2': -0.15894879400730133}]},
        'B3': 'lamq',
        'B4': 0.6280923209808305,
        'B5': 204,
        'B6': 20932,
        'B7': 0.6428313255310059},
 'A3': 6675116246129444321,
 'A4': 'vxqdip',
 'A5': [31459, -7376, 29056, 15105, -386]}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'JBKId\x1b\xf7\xea\xa9\x03\x00\x00\x007\x00ctf\xb5sn\xa1\xb0=\x1e\xc0\x99p'
 b'\xf0Y$p\xbf\x93\x15c\x00\x00\x008\x7f\xb5\xad\x12~Y3\x03\xc8\x02\x00y'
 b'\x00\x00\x00tooavuip1\xd3\xe7\xa9dtuqtuji\x18\x19\xc1qlwhxegcv\x8d'
 b'+\xd3\xdb\xffd\x11\xbf\xca \x12?\xffI\x92\ta\x98\xaf3E\xb7\x15\x1cV'
 b'\xb0\x02\x00\x00\x00[\x00\x00\x00\xbc\xc1\x1dp\x8e-\x08j')

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

{'A1': 2850748187,
 'A2': [{'B1': 'tooavuip', 'B2': -1444424911},
        {'B1': 'dtuqtuji', 'B2': 1908480280},
        {'B1': 'lwhxegcv', 'B2': -606917747}],
 'A3': 99,
 'A4': 4445230327974422132,
 'A5': 30,
 'A6': -261056064,
 'A7': {'C1': -0.938054621219635,
        'C2': -109,
        'C3': 21,
        'C4': {'D1': 160582143,
               'D2': 867145825,
               'D3': 46917,
               'D4': -1336533995,
               'D5': [-0.5679473280906677, 0.5708128213882446]},
        'C5': 32568,
        'C6': 14412419691975978421},
 'A8': [1880998332, 1778920846]}

Пример 2

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

(b'JBKId\xe18\x86\xce\x05\x00\x00\x007\x00\xee\x8dvw"\x00\xcf\x9b\x1c\x8b-*\xf7'
 b'\xc0K\xd1\x9f\xbe\x15\x9f{\x00\x00\x00pJ0\xc7\x83\xe2M\xc5\r"\x02\x00\x91'
 b'\x00\x00\x00awrioynn\xf6\x94\xcdpqmlqqzpa7\xf3*\xe9wcgaxrfb\x95F\xb2\xd5b'
 b'igosjir\xfe\xe6[\xe9ptlftriv0D-\xcd\x05\xf0\xbd\xbeY\xf7\r>]\xe6\xb6\xe3h'
 b'\x8f\x97\xe3\xd5\xf8x-\n\x16\x02\x00\x00\x00s\x00\x00\x00\x9a2;+\x1e\xe0\x96'
 b'\xd1')

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

{'A1': 3464902881,
 'A2': [{'B1': 'awrioynn', 'B2': 1892521206},
        {'B1': 'qmlqqzpa', 'B2': -383061193},
        {'B1': 'wcgaxrfb', 'B2': -709736811},
        {'B1': 'bigosjir', 'B2': -379853058},
        {'B1': 'ptlftriv', 'B2': -852671440}],
 'A3': -18,
 'A4': 2061468853937337997,
 'A5': 139,
 'A6': -1057543635,
 'A7': {'C1': -0.3121436536312103,
        'C2': 21,
        'C3': -97,
        'C4': {'D1': 3820414557,
               'D2': 3818360680,
               'D3': 63701,
               'D4': 369765752,
               'D5': [-0.37097182869911194, 0.13863886892795563]},
        'C5': 19056,
        'C6': 2453834310290229040},
 'A8': [725299866, 3516325918]}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ORSX^d\xea\xbdP\xd6\xc3\xbeffjigwh\xc8\x068\xad\x134\xe1?\xd2\xd9D\x98S'
 b'\n\xe7?\x03\x00\x00\x00<\x00Nz\xe0\xc6\x07\x00\x00\x00T\x00\x8a\x1a>\x8aD'
 b'b\x00\x00\x00pdl\x04FB(\xe8X\x02\xb9\xc7\x0bf_\x82T\xc1\\\n\x8f\xf2.H'
 b'?\x00B\x00E\x00H\x00K\x00N\x00Q\x00W\x94I\xba\xbd\x96}\xfe\x1f\xe1'
 b'\x06\xe0\x0f\x87\x0f\x8d\x90\xb6\xf0\x93U8\x8aF\x8b\x97v\xbe\xdf"\xcen?2'
 b'a\x88!ym')

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

{'A1': {'B1': -0.11444924771785736,
        'B2': -0.3824944496154785,
        'B3': 'ffjigwh',
        'B4': 0.537607038801263},
 'A2': 0.7200105642321495,
 'A3': 'pdl',
 'A4': 3336600142,
 'A5': [{'C1': 17924, 'C2': 66},
        {'C1': 59432, 'C2': 88},
        {'C1': 47362, 'C2': -57},
        {'C1': 26123, 'C2': 95},
        {'C1': 21634, 'C2': -63},
        {'C1': 2652, 'C2': -113},
        {'C1': 12018, 'C2': 72}],
 'A6': -1975641462,
 'A7': 68,
 'A8': {'D1': [87, -108, 73, -70, -67, -106, 125, -2],
        'D2': 31,
        'D3': 266340065,
        'D4': 6166536981700218759,
        'D5': -2324289964427802056,
        'D6': 0.9328328371047974,
        'D7': 562585906,
        'D8': 28025}}

Пример 2

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

(b'ORSX|lt?Kj\xf1>yymqhox\xf6\xee\xed\xb8\xb2\xbe\xef?\x08\x96\xe5\x1d\xef'
 b'@\xdc?\x03\x00\x00\x00<\x00W\x10\xe9_\x06\x00\x00\x00Q\x00\x97\x08\xcb7\xf6'
 b']\x00\x00\x00jlfy\xf8\tP\xee_\xab\x93\x93\xa1\x10\xca\xca\xa1\x0f\xde\x86'
 b'o?\x00B\x00E\x00H\x00K\x00N\x00\xfb]k0\xdbJ\xa4>\xfaKg\xfc\x87\xcd\xf3'
 b'\xa0\x99\xe8^sh\x97`zl\xfe\x82\x06\xca\x04C\xc0>w.\xb6.\xc2U')

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

{'A1': {'B1': 0.9547803401947021,
        'B2': 0.4715140759944916,
        'B3': 'yymqhox',
        'B4': 0.9920285808470612},
 'A2': 0.44146325988398916,
 'A3': 'jlf',
 'A4': 1609109591,
 'A5': [{'C1': 63609, 'C2': 9},
        {'C1': 61008, 'C2': 95},
        {'C1': 37803, 'C2': -109},
        {'C1': 4257, 'C2': -54},
        {'C1': 41418, 'C2': 15},
        {'C1': 34526, 'C2': 111}],
 'A6': 936052887,
 'A7': 246,
 'A8': {'D1': [-5, 93, 107, 48, -37, 74, -92, 62],
        'D2': 250,
        'D3': -2013501621,
        'D4': 7526463755369116621,
        'D5': -3889277198934581097,
        'D6': 0.3755112886428833,
        'D7': 783691383,
        'D8': 21954}}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'AJM\xa6\x04\x00\x00\x00J\x00p|\x97B9C\xe4?5#?r\\1\x80oe\xa6\x92\xa0\x1c\x9b'
 b'\xbb\x12\xc1)\xd8\xbf\xdc\xc5KG\xa9B\xe0j\x85\x8a\x08\xc1S\xc2$?R\x00'
 b'\x00\x00d\x00\x00\x00q\x00\x00\x00\x81\x00\x00\x00\x94\x00\x00\x00sd'
 b'cc\xc0\xeb\xd8f\x04\x00N\x00\x00\x00\x1b\xd8\xd5\xc4zV\xees\xf1\xfe\xc3\xca'
 b'\x07\x00]\x00\x00\x00\xa3\x02\xa2\xb2\x8a\xa1\x8a\x02\x00o\x00\x00\x00M'
 b'v\x89\xa6r\x05ns\t\xad\x05\x00|\x00\x00\x00\x03NP\xdd\x06\x92\xf5#>'
 b'\xab I\xbe\xaa\x19\x02\x00\x8c\x00\x00\x00\xfbK')

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

{'A1': 'sdcc',
 'A2': [{'B1': 0.6332060146923038,
         'B2': 1916740405,
         'B3': -6876250726448746148},
        {'B1': -0.3775484736383292,
         'B2': 1196148188,
         'B3': -4537224318947409239}],
 'A3': 0.6435901522636414,
 'A4': [{'C1': [-64, -21, -40, 102], 'C2': -992618469, 'C3': 122},
        {'C1': [86, -18, 115, -15, -2, -61, -54],
         'C2': -1298005341,
         'C3': -118},
        {'C1': [-95, -118], 'C2': -1500940723, 'C3': 114},
        {'C1': [5, 110, 115, 9, -83], 'C2': -581939709, 'C3': 6}],
 'A5': {'D1': -86,
        'D2': 25,
        'D3': [0.16011646389961243, -0.19641368091106415],
        'D4': 19451}}

Пример 2

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

(b'AJM\xa6\x02\x00\x00\x00J\x00<\xc5e\xa9\x12\xae\xec?V18\xc6\xfd\x9d'
 b'\xaa\xb1Y\x83\x01\x0c\x96\xf5\x06\xb08J\xe8\xbf\x13\xa9\x04}\xf4\x06'
 b'w\xd2\xb5\xfcfS7\x9e\x03\xbfQ\x00\x00\x00`\x00\x00\x00p\x00\x00\x00~\x00'
 b'\x00\x00\x99\x00\x00\x00dt\xd5\xfe\xbc7\xfb\x05\x00L\x00\x00\x00\xed4:K\x03'
 b'W\x99\xa1>\x04\x00\\\x00\x00\x00\xfe\x9f\xc8\xad<\x1f\xd8"\x9f\x01'
 b'\x05\x00k\x00\x00\x00\x8c,v\x9e\xcd!\x82\x12\x03\x00{\x00\x00\x00}\xf9\xf6$'
 b'\xc7K#\x95>u*|\xbf\x0cJk?\x1f\x8e\xe2\xbe\x18\x08\x04\x00\x89\x00\x00\x00`+')

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

{'A1': 'dt',
 'A2': [{'B1': 0.8962491329713553, 'B2': -969395882, 'B3': 865117024687922685},
        {'B1': -0.7590602338820414,
         'B2': 2097457427,
         'B3': 6009768610622801652}],
 'A3': -0.5141329169273376,
 'A4': [{'C1': [-43, -2, -68, 55, -5], 'C2': 1262105837, 'C3': 3},
        {'C1': [87, -103, -95, 62], 'C2': -1379360770, 'C3': 60},
        {'C1': [31, -40, 34, -97, 1], 'C2': -1636422516, 'C3': -51},
        {'C1': [33, -126, 18], 'C2': 620165501, 'C3': -57}],
 'A5': {'D1': 24,
        'D2': 8,
        'D3': [0.2912848889827728,
               -0.9850228428840637,
               0.9190986156463623,
               -0.4424905478954315],
        'D4': 11104}}