ИВБО-04-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'MCOQ6a\x00\x00\x00\xa9\xd9\xce\xd3\xbe\xb3\xf9\xad\x02\x00\x00\x00q\x00\x00'
 b"\x00_\x1f\x91>TF\xea>\xea\xfeu?\x97'3\xbf3w`\xbfN \xf9\x1cx]\xe0\x10\xa8Ih"
 b"\xbetP\xf5s&NVu\xb77&nH\xa6\xc8\xf8\xc3\x81\xb8Kj\x00m'\x177\x8a=\x87Cm"
 b'\xc24\x1dD\xdd\xa3\xf2|\xcb/\x00\x00\x00D\x00\x00\x00Y\x00\x00\x00,\xf5w'
 b'"4\xf7L\x8a\x06r\xec\xbf\x10t\xd2\xb7j\x1c\xed\xbf')

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

{'A1': {'B1': [{'C1': 5307510716683001081,
                'C2': 104,
                'C3': {'D1': 4115690686,
                       'D2': 9843,
                       'D3': 78,
                       'D4': 86,
                       'D5': -18571,
                       'D6': 9783}},
               {'C1': -5151621025449490322,
                'C2': 75,
                'C3': {'D1': 661454954,
                       'D2': 14103,
                       'D3': -118,
                       'D4': 61,
                       'D5': 17287,
                       'D6': -15763}}],
        'B2': {'E1': [52, 29], 'E2': 4070825284, 'E3': -13444},
        'B3': 578286892},
 'A2': 169,
 'A3': {'F1': -0.41368749737739563,
        'F2': -1613,
        'F3': 173,
        'F4': [-0.8889191342529785, -0.9097188558840816]},
 'A4': [0.2834424674510956,
        0.45756781101226807,
        0.9609209299087524,
        -0.6998228430747986,
        -0.876818835735321],
 'A5': 8270}

Пример 2

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

(b'MCOQ6a\x00\x00\x00,\x98\xfe4>~}d\x05\x00\x00\x00q\x00\x00\x00ts\x08'
 b'\xbf/\xfb\xc9\xbe9V ?i\xa4\x18\xbf0\x8b\xee>/\x11\xc2\x89\x9d\xda\xa8'
 b'\xe8\x03\xf4\x1dJ\x18\xd7{\xe5\xe7\x8a\xee\x93\xe3G\xb1\x7fk\xc68'
 b'\xe9\x06\xc7qQE\x95\xbb${\xfbr-~\xe7\xb7i\xf4!\x13keh\xdd\xb4/\x00\x00'
 b'\x00D\x00\x00\x00Y\x00\x00\x00\xb0\xc6\xc1\x02X\xd2lts:\xdd\xbf\xa0?\x17'
 b'I\x96`\xc7\xbfP>\x91-e\xc3\xb9\xbf(V\x9cY\x95\x8a\xea?t+!\\\x03u\xd9?')

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

{'A1': {'B1': [{'C1': -863590891605095998,
                'C2': 29,
                'C3': {'D1': 2077694026,
                       'D2': 59365,
                       'D3': -118,
                       'D4': 238,
                       'D5': -7277,
                       'D6': -20153}},
               {'C1': 8198529245400951679,
                'C2': 81,
                'C3': {'D1': 616273221,
                       'D2': 64379,
                       'D3': 114,
                       'D4': 45,
                       'D5': -6274,
                       'D6': 27063}}],
        'B2': {'E1': [-12, 33], 'E2': 1751477011, 'E3': -19235},
        'B3': 46253744},
 'A2': 44,
 'A3': {'F1': 0.17675244808197021,
        'F2': 32126,
        'F3': 100,
        'F4': [-0.4566925656284062,
               -0.18263510292899543,
               -0.10063774454578689,
               0.8294169187744886,
               0.397766914339335]},
 'A4': [-0.5330116748809814,
        -0.39449450373649597,
        0.6263156533241272,
        -0.5962586998939514,
        0.46590566635131836],
 'A5': 4399}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x04CZQB\x87~vipfq\x02\x00\x8e\x00,:\x04\x00\x00\x00\x92\x00\x00\x00\x1cX'
 b'\xc1"H\xc6\xbf\x84`\xf1vQ\xf7\x89\xe9\xe5Z\xd9|\x93\xcc=\x88i\xf4r'
 b'\xd1\x94M\x9f\xa3V\x93\xe8p\xdc9\xdf\xfe\x02\xbd\xbf\x02\x00\x1a\x00'
 b'\x00\x00)\xa1Z\xeb\x1e\x00\xd6\xa2d\x87\xa3\xb2\xe9Z\xa9\x18\xdc\x1b'
 b'_\xd9\xe82\xf5kT\xfeM@\xc2\xe1n\x96\x876\x0e\xb4\x9c\xe2\x82\t\xdc\xfe'
 b'\xc6\xe1fN\n\x06}y\xe0?\x02\x00T\x00\x00\x00\x85|\xe9\x01X\x00+s\x92B&\x00'
 b'`\x00\xf6\x82o\xa2\x8c.~U\xca\x95\x9c\xca\x0b\x97\xf1*\xf7\xceY(\xb6\xa5'
 b'\r\xa52\xcc\xfa\xb6\xc0\x1d\x1b|')

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

{'A1': 32391,
 'A2': 'vipfq',
 'A3': [{'B1': -437679625,
         'B2': -1820534438,
         'B3': {'C1': [15820, 27016, 29428, -27439],
                'C2': 1453563725,
                'C3': 59539},
         'B4': -0.11332695913175583,
         'B5': [22556, 8897],
         'B6': 3948585257,
         'B7': {'D1': -2067806648, 'D2': 1366749536},
         'B8': 2271519446},
        {'B1': -28021771,
         'B2': -507363251,
         'B3': {'C1': [-27026, 13959, -19442, -7524],
                'C2': -19134078,
                'C3': 57798},
         'B4': 0.5148301237081341,
         'B5': [-19805, 23273],
         'B6': 32078981,
         'B7': {'D1': 467409065, 'D2': 854120799},
         'B8': 1116893995}],
 'A4': 14892,
 'A5': [6160412521844933366,
        3094420495879935434,
        -6553399680974598409,
        8942774198615067698]}

Пример 2

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

(b'\x04CZQB,\xf3jrlco\x02\x00\x90\x00#\xe0\x02\x00\x00\x00\x94\x00\x00\x00z\xde'
 b'G\x10\xa2a\x18\x0bx\xe5b\xd5BK\t\xf4$\x13@,\x98\xb5\x185\xa6~\x04K\xf9\x01'
 b'\x03T2fa\xec\x8cX\xc7\x11iU\xd9?\x03\x00\x1a\x00\x00\x00Z\xb0\x9e\xa2'
 b' \x00\xf6507\xe8\x84\xbbL\x12l\xfa+\xf5\xfb\x8f\xa30CS\x9b.\xe1'
 b'\xd5\x9d\xce\xb0\xccv\xf4k\x8b\x0f\xc8\x0b\xd6\xf0\xab<2\xce\xf3Y'
 b'\xde\xce\xec?\x02\x00V\x00\x00\x00f\x1f\xf8\xdfZ\x00E[O^(\x00b\x00_>G\xdb'
 b'$\xa4oY\xab\xbf+\xb5\x02\x19\xd8 ')

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

{'A1': -3284,
 'A2': 'jrlco',
 'A3': [{'B1': 321188873,
         'B2': -1248318400,
         'B3': {'C1': [13592, 32422, 19204, 505],
                'C2': 1714574339,
                'C3': 60513},
         'B4': 0.39583803878975554,
         'B5': [-8582, 4167, 24994],
         'B6': 2728308826,
         'B7': {'D1': -445117672, 'D2': 1262671202},
         'B8': 925906422},
        {'B1': -1689042128,
         'B2': -1646927570,
         'B3': {'C1': [-20274, 30412, 27636, 3979],
                'C2': -254407736,
                'C3': 15531},
         'B4': 0.9002525097734575,
         'B5': [-31512, 19643],
         'B6': 3757580134,
         'B7': {'D1': 737831954, 'D2': 2744122357},
         'B8': 1582259013}],
 'A4': 57379,
 'A5': [6444550069995126367, 2366669103603367851]}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'RVV\xdbs\xc5\x8c\x00\x07\x00\x13\xc8\x00\x1a\x00;\x00\\vghqortq\xac\xaa'
 b'Um\x94\xa1\xd5\xa5S\x90;7:\xed\xf3\x86o\xf3\x8c0\xa7Q\xac4\xf2~\x10Tr?'
 b'*\xb3w\xde\x8d\xd6.qh\x13\x8f\x9f5\xcf.\x1e\x0c{9q(\xba\r-\x13\x1de\xcb'
 b'|\xa2\x13?>\xb8s\x8d;|E\n\x9e\xcf\x1e,,G\xa6\xf0\xe5u\x90h\xda\xf3\xbf\xdb'
 b'\x92K\xd15\xff\xe8\xbf\xdb\x92\xb5\x99a\xdc\xf0\xbf\xbdg\x87\xe8R\xcd`?\xec'
 b'd\x1b\x8c\xe8A$\xbf\xe37\x00\xc5\x81\xf30?\xe7zE\xf39Gb?\xeb\xfb\x0b\xee\xa1'
 b'\x962')

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

{'A1': -613169780,
 'A2': 'ghqortq',
 'A3': -56,
 'A4': [{'B1': [44202, 21869, 38049, 54693, 21392, 15159],
         'B2': {'C1': 58, 'C2': -1300548051994398553},
         'B3': 5885137029168125042,
         'B4': 0.6668009161949158},
        {'B1': [56973, 54830, 29032, 5007, 40757, 53038],
         'B2': {'C1': 30, 'C2': 899375708767915309},
         'B3': 1377368985689002815,
         'B4': 0.3602565824985504}],
 'A5': {'D1': 4286376857266232876,
        'D2': [11335, 42736, 58741, 36968],
        'D3': -9485,
        'D4': [-0.43080420904880024,
               -0.43082942942369495,
               -0.11486100599249971,
               0.887220168313466,
               -0.6004642350741047,
               0.7336759329284457,
               0.8743953381314837]},
 'A6': 118}

Пример 2

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

(b'RVV\x15\xb9\x1b\xbf\x00\x03\x00\x13\x92\x00\x16\x007\x00X\xdegxq\x88)'
 b'\xcb\x9a\xc6m\x18\x9b\x84\x9d\x88*\xday!\xda\x01\x9e\x8d\xd71\xa6F\x88\n\x90'
 b'trb\xbfE\xf7_\xe6\x16\xa8\xe6\xe6\x89\x17\xdf\xa9\xb9_x|\x16h\x0bcM\xf9\xfdH'
 b'4\xa6\x9e\xf8\xb2\xd3\x8e\xb0?#k\xca\x9e\x05LN\xbc\x80\xfde\xbe\x83\xf2\xd8'
 b'\xc1w\x19Dux\xbf\xe9?\xdf\xe7\xd4\xfc\x10\xbf\x91\x93\xa1\x7f\xc2'
 b'I\x80\xbf\xe70S7\xf2T\xf4\xbf\xeb&\xdc\xc8\x1a\xb7\xd8\xbf\xeb\\o\x8e\xf1'
 b'\xe7&\xbf\xe1`\x94\xb0\x87\\P?\xd5\x9e\x80\xf7k\xea\xa8')

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

{'A1': 364452799,
 'A2': 'gxq',
 'A3': -110,
 'A4': [{'B1': [34857, 52122, 50797, 6299, 33949, 34858],
         'B2': {'C1': 218, 'C2': 8728497253310650161},
         'B3': -6465330636089167262,
         'B4': -0.7733058333396912},
        {'B1': [58902, 43238, 59017, 6111, 43449, 24440],
         'B2': {'C1': 124, 'C2': 1614552987550219592},
         'B3': 3793894527095508656,
         'B4': 0.6383634805679321}],
 'A5': {'D1': 11386591133929897317,
        'D2': [48771, 62168, 49527, 6468],
        'D3': 30072,
        'D4': [-0.7890471961944758,
               -0.017164729521547795,
               -0.7246490566928103,
               -0.8484939487732346,
               -0.8550336639302472,
               -0.5430396507098383,
               0.33779930269489933]},
 'A6': -34}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'RVDerbfggf\xfbU\x7f\xbb\xc5\x91\xc3I\x00\x00\x00\x03\x00\x00\x00mA?'
 b'\xdb#\xb1\x88\x8ch\xa8<\x9f\x02\xfa=\xdad\xea\x84\x00\x05\x00s&?\xd8\xbd'
 b"U\xe2\x1d\x87\x88\x07\x06?\xb7\xcd\x95cKf\xd0\x88\xad\xc3\x93xUk\x1bd\x0b?'h"
 b'\x0cD\xaf\x88\xccD\x056\xaf\xae)\xbe\xcc\xfa\x1d$\x00\xde\xda\x19C\xb6\x07i'
 b"\xac?d\x82P\x00C\x00Q\x00_\xbf\x0c\x9f^\xbd\xbf\xa8\xa0\xbf'n\xc5\xbeQ?\xec>"
 b'\x95h\x15')

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

{'A1': 'erbfggf',
 'A2': 18110521920990593865,
 'A3': {'B1': [{'C1': 136,
                'C2': -83,
                'C3': [195, 147, 120, 85, 107, 27, 100, 11],
                'C4': 0.6539313793182373},
               {'C1': 68,
                'C2': -81,
                'C3': [136, 204, 68, 5, 54, 175, 174, 41],
                'C4': -0.40034571290016174},
               {'C1': 36,
                'C2': 0,
                'C3': [222, 218, 25, 67, 182, 7, 105, 172],
                'C4': 0.892613410949707}],
        'B2': 65,
        'B3': 0.4240535577279254,
        'B4': 15519,
        'B5': 762,
        'B6': 0.10663779079914093},
 'A4': {'D1': 132,
        'D2': [-0.5493067502975464,
               -0.09358334541320801,
               -0.6540339589118958,
               -0.20434540510177612,
               0.29180970788002014],
        'D3': 38,
        'D4': 0.3865561206968029,
        'D5': 1798,
        'D6': 0.09298070596869512}}

Пример 2

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

(b'RVDwrhyxwu\xbc\x01\xd9\xae7W\xed\xd8\x00\x00\x00\x04\x00\x00\x00{\x98\xbf'
 b'\xe4\xe2\x94\xcd\xfd\n&\xcfw\xed\xfd>\xe5\xc7\xa3\x00\x00\x03\x00\x83'
 b'\xca?\xd2\x93i\x88\xf3\x1d\xe4\xce\x12\xbf\xe4\x14\xd5\xf3P\xf1\xb6\x11'
 b"\xb6\xd0>g\xee\xbc`\x91'\xbfz1\xff\xda\\M\xa5\xdc\xd1\x13vZ!?A\xa8\xf7\x0c"
 b'\xc1\xe5\x93\xf7m\xb0\xa1\xaeO?DGqk\xf92-\x93\xdbb\xfar\x06>\xf4\x0b\x97\x00'
 b'C\x00Q\x00_\x00m?5S\xdf\xbfh\x00t\xbft$\x19')

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

{'A1': 'wrhyxwu',
 'A2': 13547348496383208920,
 'A3': {'B1': [{'C1': 17,
                'C2': -74,
                'C3': [208, 62, 103, 238, 188, 96, 145, 39],
                'C4': -0.9773253798484802},
               {'C1': 218,
                'C2': 92,
                'C3': [77, 165, 220, 209, 19, 118, 90, 33],
                'C4': 0.7564844489097595},
               {'C1': 12,
                'C2': -63,
                'C3': [229, 147, 247, 109, 176, 161, 174, 79],
                'C4': 0.7667151093482971},
               {'C1': 107,
                'C2': -7,
                'C3': [50, 45, 147, 219, 98, 250, 114, 6],
                'C4': 0.4766509234905243}],
        'B2': -104,
        'B3': -0.6526588462077754,
        'B4': 53111,
        'B5': 60925,
        'B6': 0.44878873229026794},
 'A4': {'D1': 0,
        'D2': [0.7083110213279724, -0.906256914138794, -0.9536758065223694],
        'D3': 202,
        'D4': 0.29024732946387943,
        'D5': 52754,
        'D6': -0.627543425776415}}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'VNW\xd6\xe0\xe4\x98\t\x00\x00\x00\x8c\xc0[k\xb7\x13\xaf\xfbC\x00\x03\x00\xa7'
 b'?\xe7\xcf\xe5\x1f\xa8\x00\xa8(\x01\x13W\x7f\xc0\x9f\xe8?\xe12D'
 b'\x04\x8a\xd4\x88\x0e\xf4H\xf5\xf5\xc0H\xfd\x83\xd1-\x9b#r\x05\xc4\x02\x03F<'
 b'\x0c7\xa9\xad\xc9\xc6<\x0fh\xec8\xf01cpywosu}O\x99\x19f\xf8\x1e\xa6'
 b'\x9e\xc2\xbc:\xf9L\xa8\xe3\xf1\x06a\xb2y\xb6\xb6//5\x0f\xc9\xa4\xecd\xb2'
 b'"\xb0\xecQ\x00\x00\x00X\x00\x00\x00a\x00\x00\x00j\x00\x00\x00s\xb7POz'
 b'\x1d\xbf\xa4\x07M\x00\x00\x00\x07\x00\x00\x00Q\x00\x04\x00\x00\x00|\xd9'
 b'\x110\x91\xc8\xc3\xe3')

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

{'A1': -521889783,
 'A2': {'B1': -5237598980728183801,
        'B2': 77,
        'B3': 'cpywosu',
        'B4': [{'C1': [2102368537, 1727536806], 'C2': -98},
               {'C1': [3267115769, 1286136817], 'C2': 6},
               {'C1': [1639086518, 3056545589], 'C2': 15},
               {'C1': [3383028836, 2988617964], 'C2': 81}],
        'B5': 3641782417},
 'A3': -4585953361493230781,
 'A4': {'D1': [200, 195, 227],
        'D2': 0.7441278093611077,
        'D3': 10241,
        'D4': 4951,
        'D5': 2143330280,
        'D6': 0.5373859490124611,
        'D7': 3828},
 'A5': {'E1': 72,
        'E2': 4126523464,
        'E3': -41692883,
        'E4': 2602791429,
        'E5': 50178,
        'E6': 235942053654670793},
 'A6': -4162435012283011023}

Пример 2

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

(b'VNW\xd6\xb3\xd8\xb5g\x00\x00\x00z\x1d`2>i$\x0ee\x00\x02\x00\x95?\xa4\xa0\xae'
 b'00, \xc2\xabn\xa2a\xd9\x96\x8a\xbf\xeaF\x195\x1f\xc5\xa4`\x9fYB\xca$\xa40'
 b'\no\xb8\xf3\x1a\xb2\xb7\\n/\xf9&\xe9\x1d"\x98\x96\xc2\x99\x95\t\xa4\x1b\x10'
 b"\x99yh'\\\xaa4>i\x01\x14\xecaR\x99\xc6$\xdb\xe3\xe5$^\xa0\xb1\xddN\xfct"
 b'\xfeg\x00\x00\x00S\x00\x00\x00\\\x00\x00\x00e\xd5+\x8f\xcdG2\n\xf4*\x00'
 b'\x00\x00\x02\x00\x00\x00Q\x00\x03\x00\x00\x00n\xce\x14\x99\xa3\x90\xc3')

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

{'A1': -1277643417,
 'A2': {'B1': -3086215007806813452,
        'B2': 42,
        'B3': 'yh',
        'B4': [{'C1': [660384308, 1047068948], 'C2': -20},
               {'C1': [1632803270, 618390501], 'C2': 36},
               {'C1': [1587589597, 1325167870], 'C2': 103}],
        'B5': 3457456547},
 'A3': 2116747068497464933,
 'A4': {'D1': [144, 195],
        'D2': 0.04028839433893716,
        'D3': -15701,
        'D4': 28322,
        'D5': 1641649802,
        'D6': -0.82105694175532,
        'D7': 24735},
 'A5': {'E1': 89,
        'E2': 1120543908,
        'E3': 805990328,
        'E4': 4078613175,
        'E5': 23662,
        'E6': 3456836971641608342},
 'A6': -4424341290274320231}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CWJW,2\xe93\xdd\xf4<\x81\x04\x00\x00\x00<\x00\x00\x00\xc5ue\xbf\xcd\xa2#:'
 b'8\x96\x02\x00\x00\x00\\\x00\x00\x00>d2p\xd3\xf4\xe8\xbf\xa2%\xae\r\xbf\x0b'
 b'\xe9?+\x80~\x07t\x00onyz\x8cA\xba*c\x00\x94\x95\xa9\xdc a\x00\xba\x085'
 b'NC\xf8t\x1b\xaf\xbeN\x9e\xa5R\xb8{/\x02\x00\x00\x00@\x00\x02\x00D\x00'
 b'\x11\x0c\x02\x00\x00\x00L\x00\x03\x00P\x00\xc9\xdaW8Gs\xaag\x07G')

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

{'A1': -9134156713318338004,
 'A2': {'B1': 'onyz',
        'B2': 3211097541,
        'B3': 41677,
        'B4': 14883,
        'B5': 38456,
        'B6': [{'C1': 12155,
                'C2': [16780, 10938],
                'C3': [-1785462685, 1629543593]},
               {'C1': 3089,
                'C2': [-17920, 13576],
                'C3': [1962427214, 1321119515, -1202543202]}]},
 'A3': -0.7798859778732845,
 'A4': 0.78268387481619,
 'A5': -32725,
 'A6': 1918,
 'A7': {'D1': 56009, 'D2': 5118173483306006615}}

Пример 2

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

(b'CWJW\xa3X\xb4\x0e|\x85\xe69\x04\x00\x00\x00<\x00\x00\x00\xd8\xfb\x7f2'
 b'\xe3S\x1c\xb2\xd3M\x02\x00\x00\x00b\x00\x00\x00\xf8\x07\x0bg\xd0\x0e'
 b'\xe6\xbf\xc68A\xb6M\x97\xed\xbf\x05\x8b\xf3\xf3z\x00kasy\xb40p\x03\xcd%\xb3|'
 b'7\xce\xf6\x0f\xa1\xc5\xd5q\xd5x\xe7\x84WaopF\x9a\x9b\xe0\xf5O+\xaf'
 b'\t\x0f&\xcd\x02\x00\x00\x00@\x00\x03\x00D\x00\xa0\xc8\x03\x00\x00\x00'
 b'P\x00\x03\x00V\x00\xa2\xae\xa5\x9b\xd0\xcf\x06m_\xdd')

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

{'A1': 4172168872674482339,
 'A2': {'B1': 'kasy',
        'B2': 847248344,
        'B3': 21475,
        'B4': -19940,
        'B5': 19923,
        'B6': [{'C1': -13018,
                'C2': [12468, 880],
                'C3': [2092115405, 267832887, 1909835169]},
               {'C1': -14176,
                'C2': [30933, -31513, 24919],
                'C3': [-1706659729, 1341513883, 252292907]}]},
 'A3': -0.6893083584366186,
 'A4': -0.9247196731246496,
 'A5': -29947,
 'A6': -3085,
 'A7': {'D1': 44706, 'D2': 15951588281193372581}}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x08MYNJ\x02\x00\x00\x00!\x00\x00\x00\x03\x00#\x00\x00\x00i\x005\x0c"'
 b'i \x89\x96\xf0\x15\x95\x07\x9dls\xaf\xd2w/;\xbfw\nF\x17\xf9>\xa2H\xc9Qe'
 b'>z\x03\x04G\xa3\xa5s\xd1\xfb2\xd47\xd6\xb2C\x03\x0b\x86\xa8\x1fZv5'
 b'\r0\x08\xd44PY\xbb\xef\xad\xdfj\x0c0\xbaZ\xf3\xae\x1d\xc1*\x8cA\x0b'
 b';K\xb9\x9c\xda\xb7\xaex\x0f\xce\xc3\xe2|\xc6\x1eo\xc1\x05\x005\x00\x00\x00H'
 b'U\x03\x00\x00\x00]\x00\\\x86')

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

{'A1': 'ls',
 'A2': [{'B1': 53935, 'B2': -0.7311930060386658},
        {'B1': 2679, 'B2': 0.4865056872367859},
        {'B1': 18594, 'B2': 0.2239447981119156}],
 'A3': {'C1': {'D1': 8998970295229918903,
               'D2': -1049682234,
               'D3': [15092588896938361722,
                      235228238682796795,
                      951797025709000203,
                      17274498996728236080,
                      17535532814649974701],
               'D4': 21832,
               'D5': [717299118, 990593420, 3667704139],
               'D6': -31140},
        'C2': 3125},
 'A4': 34,
 'A5': [105, 32, 137, 150, 240, 21],
 'A6': 149,
 'A7': 40199}

Пример 2

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

(b'\x08MYNJ\x02\x00\x00\x00!\x00\x00\x00\x04\x00#\x00\x00\x00S\x000\xder'
 b'}\x08\xa6\x1a\xe4\xaf\x04-Vfk\xef\x8d\xd4h\x8d\xbc\x08\xee\x98\xcf\x1e?\xe0'
 b'\xd1-<Y>\x033N-R?*\xe2\xa3\xd5?v\x96\xda\xf8l\xc3$\xd8\xf9\x81q\xec'
 b'\xd9>\x9ar\xb7\x89\x10[\xd5Df\x82B\x07a\xa1\x14\x9f\x04\x02\x00;\x00\x00'
 b'\x00\xf4$\x02\x00\x00\x00K\x00,L')

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

{'A1': 'fk',
 'A2': [{'B1': 36335, 'B2': -0.017261900007724762},
        {'B1': 60936, 'B2': 0.6203551292419434},
        {'B1': 53728, 'B2': 0.21214361488819122},
        {'B1': 13059, 'B2': 0.821003794670105}],
 'A3': {'C1': {'D1': 6991630074344953179,
               'D2': 77534369,
               'D3': [15750906763314192938, 8179093105006570744],
               'D4': 9460,
               'D5': [2587810284, 277460850],
               'D6': 19500},
        'C2': -8656},
 'A4': 114,
 'A5': [125, 8, 166, 26, 228, 175],
 'A6': 4,
 'A7': 22061}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'BCQH\x02\x00\x00\x00\x1f\x00\x14\xdd-\x00[\x00\x00\x00\xceCr\x92\x97e'
 b'\x07\xc36\x11\x15$\x9c\x1b\x00\x00\x00\x1d\x00\x00\x00plmhfj\x06\x00\x00'
 b"\x00'\x00Ek\xdc0\x86\xe6\xb2E\xc4r\xd0=\x97F\x18?[\xb7E\xbf\t\xc3\xf6>\xfc"
 b'\xe6\xe4>\xd1`\xc5\xbe\xd8h\xd3>7\xe0N\xbe\xbco\xfe\xc7\x84bo\xa3\xa3'
 b'<\xeeh\x91K\xc6Mi\xd1\x9d&\xca-\xe2v\x13GK\x16\xd6.\xe3q\x9a')

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

{'A1': [{'B1': 17, 'B2': 21}, {'B1': 36, 'B2': -100}],
 'A2': -8940,
 'A3': {'C1': 'plmhfj',
        'C2': 819751749,
        'C3': {'D1': 1169352326,
               'D2': [0.10178139805793762,
                      0.5948271155357361,
                      -0.7723290324211121,
                      0.48195675015449524,
                      0.4470747709274292,
                      -0.38550427556037903,
                      0.41290926933288574,
                      -0.20202718675136566]}},
 'A4': {'E1': [-6670004200681869380, 5604249874211945635, 8566459787466625385],
        'E2': 19,
        'E3': 3591785287,
        'E4': -1703812306},
 'A5': 14053312863904351182,
 'A6': 54}

Пример 2

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

(b'BCQH\x03\x00\x00\x00!\x00K\xb4/\x00]\x00\x00\x00p\x88\xcd5\xec\xce'
 b'\x9e\xcd\xab_\xcd3\x05W7\x1b\x00\x00\x00\x1d\x00\x00\x00\x1f\x00\x00'
 b'\x00ct\x02\x00\x00\x00-\x00\x0c\xa8\xf2^L\xeah\xee\xba\n\xb3\xbe\xc4g!'
 b'\xbf\x19\xc7K?:\xd1l>\\\xae\x14\xbe\xbe\xdeD\xbf\xdcl\x83\xbe\x87ST'
 b'?\xf4Q\x03\xb1W\xcf2\x1b\x83\x96\xd0\x14\xf7\n\xb1I\xa5|i\x0c,\x89\x00'
 b'i\x8f\xea\x8d\x08_\x12U\x06)')

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

{'A1': [{'B1': 95, 'B2': -51}, {'B1': 51, 'B2': 5}, {'B1': 87, 'B2': 55}],
 'A2': -19381,
 'A3': {'C1': 'ct',
        'C2': 1592961036,
        'C3': {'D1': 3999853132,
               'D2': [-0.3496912121772766,
                      -0.6304895877838135,
                      0.7960067391395569,
                      0.23126688599586487,
                      -0.14519637823104858,
                      -0.7690237760543823,
                      -0.2566899061203003,
                      0.8293995261192322]}},
 'A4': {'E1': [1959856763398476276, 5310037491968939651, 7566198196262239397],
        'E2': -113,
        'E3': 1594396138,
        'E4': 688280850},
 'A5': 14816507338005776496,
 'A6': -85}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ZABR\x7f7\xa7\x00 \x00\x00\x00T\x00e\x00s\x00\x81\x00\x8f\x89\x01\x1b'
 b'\x1161\xbc\xa5\xeajt\xf4\x0b#>\x00\x02\x00\x00\x00\x1eA\x8f\xb2b\xbf\xcb'
 b'K\xe9S%\xe4pp{\x9b\xaa\xa5\x14\x1c\xa2\xbf\xd4\n\xf9U\xaf\xba$\x00\x00'
 b"\x00\x04\x006'\xcc\xdb\x99\xfa\x8b\xd6\xcd\x00\x00\x00>p\xf1\xbf\xed"
 b'\xc1\xe8a\r&\xb06;V\x05\x94QND\xedqO\xc2\xc8\x15\xd7"\xc5\xcc,#\x88O'
 b'\x83d\xdeIv\xb6\xea\xf3\x19\xae\xae\xe8E\xaft\xbd;\xb1\xe8:\x9a\xa2^\x84'
 b'_\x86\xee\xf2\x8b"\xe3\x03\xd6\xe7\xcf.\xee')

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

{'A1': 14247,
 'A2': {'B1': -3061,
        'B2': 35,
        'B3': 62,
        'B4': 'jt',
        'B5': 1099936354,
        'B6': -0.21325413284265293},
 'A3': {'C1': {'D1': -0.31316979759040664,
               'D2': [28795, -25686, -23276, 7330],
               'D3': 2867908517108111053},
        'C2': 28913,
        'C3': -0.9299203773054696,
        'C4': 54,
        'C5': 15190},
 'A4': [{'E1': 402035663348527439, 'E2': -15672, 'E3': 366420677},
        {'E1': -3734570922640448290, 'E2': 18806, 'E3': 3068850969},
        {'E1': -5859490679168385733, 'E2': -19992, 'E3': 983212638},
        {'E1': -8908253177086008605, 'E2': 982, 'E3': 3889114862}],
 'A5': [137, 1, 27, 17, 54, 49],
 'A6': 188,
 'A7': 42474}

Пример 2

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

(b'ZABR\x7fl\t\x00 \x00\x00\x00T\x00e\x00s\x00\x81\x00\x8f\x9a+\x03n\xe4I\x95'
 b'v\xfdub\xddz1N\x00\x02\x00\x00\x00\x1e)Q\x96\xd0\xbf\xe2\xf0\xa3jk'
 b'\xe9\xe8b\xb6i\xe3b,\x0e\xa4?\xdd\xb8\xa3\xb8q\xb3$\x00\x00\x00\x04\x006'
 b'\x17\xe5u3\x9f\x9c:\x97\x00\x00\x00>\xe5~\xbf\xe9\xf0\xe06\xdeb\xf8\x9e\xcf'
 b'\xae6\x95^+"\xde\x86\x9d\xbd\xcc?0\xa3*y\x82\xb8\xe1\xde\xd9S\xf0='
 b'\xac\xf2@\xe45\xca\xdc\x82V,d\xcc\x06\xe5\x05\xcbR\xe8,\xa52([9\xe5\x84op'
 b'\xd8\x8e\x17\xfeL')

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

{'A1': 27657,
 'A2': {'B1': -8838,
        'B2': 49,
        'B3': 78,
        'B4': 'ub',
        'B5': 693212880,
        'B6': -0.5918747976823484},
 'A3': {'C1': {'D1': 0.46439450275538463,
               'D2': [25270, 27107, 25132, 3748],
               'D3': 1721911297120680599},
        'C2': -6786,
        'C3': -0.810653788724351,
        'C4': -98,
        'C5': 53166},
 'A4': [{'E1': 3933153388939609757, 'E2': -16948, 'E3': 1060152106},
        {'E1': 8755763905807602672, 'E2': 15788, 'E3': 4064338997},
        {'E1': -3829042276548162554, 'E2': -6907, 'E3': 3411208236},
        {'E1': -6543122936337431441, 'E2': 28888, 'E3': 2383937100}],
 'A5': [154, 43, 3, 110, 228, 73],
 'A6': 149,
 'A7': 30461}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'CVX\xa3^\x00#B\xb2H\x9aw?\xd8\xb8"\xd8O`\xfc:v\xa6\xc9m\xf5\xee\xbfT~\xee?'
 b"\xdc\xc7\xa1G'o8\x00J\x00]\x00p3\x84VV\x80\x97\xbf\xe3\x91\xbbq\xf5\x83pc"
 b'kbep\x1f\x00\x06\x00\x00\x00\x83 \xbb\x03\xda\x87=\xfbh\x12\xf5?\xec\xb5'
 b'm\xdf}2"7\xfc\xe8\x82\x16+\xc7Z\x82x\xbd?\xeaU\x8fl7b\xf6~\xc3FP'
 b'\xb7\xf2\x90!\x84\x91\xe9\xbf\xe1\xf4=`\x7f\xb2\x92oV\xe4\xc2olvrje')

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

{'A1': 6773452608931142263,
 'A2': {'B1': {'C1': 0.3862387764361441,
               'C2': 14966,
               'C3': -90,
               'C4': 51565,
               'C5': -2578},
        'B2': -0.8300617933273315,
        'B3': 0.44968444775234984,
        'B4': [{'D1': -38,
                'D2': 2268986216,
                'D3': 4853,
                'D4': 0.897147118093532,
                'D5': 939321474},
               {'D1': 22,
                'D2': 734485122,
                'D3': 30909,
                'D4': 0.8229443658447895,
                'D5': 2126726736},
               {'D1': -73,
                'D2': 4069532036,
                'D3': -28183,
                'D4': -0.5610644230597066,
                'D5': 1867965634}]},
 'A3': 864310870,
 'A4': {'E1': 32919, 'E2': -0.6115395761263311, 'E3': 'ckbep', 'E4': 31},
 'A5': 'olvrje',
 'A6': [32, 187, 3]}

Пример 2

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

(b'CVX\xa3F\xe4+B\x14\xc6\xdaL?\xe8d\x8b\xd0\xa2y\x02\x9di\n\x19\xbdzY\xbf'
 b'a\x88\xba\xbf\xece\xbaY\xdb\x07\x0e\x00J\x00]\x00p$\x97\xf1\xc6W\x19?'
 b'\xeb\xcb\xab\xa8\x81\xcaPmryqt~\x00\x02\x00\x00\x00\x83\xd1\x95\\g\x0c'
 b'0\x8bI>\x86\xbf\xe9T""O\x9e\xcc\xed\xc5-\x10\xaa\xbe\xe1\xfe\xea\xe4='
 b'\xbf\xeba\xa6\x11\x19\x17\x86\xb6\xc9\xde\xea\xd1L\xdc\xde\xea\xcf\x00?'
 b'\xec_\xc1\xdd\xcc\xd8\x9e\x9ag \xd9jc')

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

{'A1': 5108255440161397324,
 'A2': {'B1': {'C1': 0.7622737002273257,
               'C2': 40297,
               'C3': 10,
               'C4': 6589,
               'C5': 31321},
        'B2': -0.8809925317764282,
        'B3': -0.8874179606429793,
        'B4': [{'D1': 103,
                'D2': 204507977,
                'D3': 16006,
                'D4': -0.7915201826226279,
                'D5': 3989122320},
               {'D1': -86,
                'D2': 3202481898,
                'D3': -7107,
                'D4': -0.8556700071282968,
                'D5': 3066683114},
               {'D1': -47,
                'D2': 1289543402,
                'D3': -12544,
                'D4': 0.8866891223940632,
                'D5': 2590449881}]},
 'A3': 613937606,
 'A4': {'E1': 22297, 'E2': 0.8686121264602864, 'E3': 'mryqt', 'E4': 126},
 'A5': 'jc',
 'A6': [209, 149, 92]}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'EUACR\x00\x00\x00w\x00\x00\x00\x03\x00\x85\x00t\x0e(L\xa3\xd6\x84\x96'
 b'\x16\x91Ye\x91D\xa4\xec\xdf|\xb3U\xdb\xa8\xc5\x18\xe8\x0f\x1b?x%\xaa\xba'
 b'\x89J[%>3}0\tEK\x04!\xa2\xcaSW\xdb\x14\xd1"\xe4pvrgFp\x9b\x93\x92\xcd'
 b'\xf6I\xe54\x04\x00\x00\x00F\x00\x02\x00\x00\x00J\x00nbrw\xf9~\xc3\x900Yi\x98'
 b'\xbb\x0f\xccI\xce\rTz\xa0U\xa2\xba-\x03\x00\x00\x00`\x00\x05\x00\x00\x00c'
 b'\x00&p<i\xccd\xc8\x01\xc3l\xb2\xbb\xe3\xd0\xa8\xd2e\xdd\x05\xc1\xb5\x80\\w')

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

{'A1': [{'B1': 13541, 'B2': 'pvrg', 'B3': [-1818529722, 1240911250]},
        {'B1': 11706,
         'B2': 'nbr',
         'B3': [-1015088777, 1767452816, -871384168, 1410190921, -1571446662]}],
 'A2': [128463418481733670, -3267131853132108605, 8600890906486627685],
 'A3': {'C1': 116,
        'C2': [2739677198, 378963158, 2439338385, 3756827716],
        'C3': 124,
        'C4': 2832946611},
 'A4': {'D1': 6341,
        'D2': 0.6057114601135254,
        'D3': 9592,
        'D4': 3692429818513177258,
        'D5': -6764120444006485891,
        'D6': 21450,
        'D7': 3507805015,
        'D8': 58402}}

Пример 2

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

(b'EUACT\x00\x00\x00q\x00\x00\x00\x04\x00\x7f\x00\xa0TaO\x19uNr\r\xd3\xa5-'
 b'\x02D#\xc5\xfc\x19a\xa9\x9f\x142\xb7\xb0\xddg\xbf\xac\xa6\x8f\x8d\xe5S\xa8X'
 b'\x11\xca0\x92-\x97\xd3\x95L94\x83h\x12*\xbeG\xc1jmp4\x9d\x84\xbe%6n'
 b'm\x10?\xef\xbc@\x02\x00\x00\x00F\x00\x03\x00\x00\x00H\x00bkx\xe83\x85>\xcb[.'
 b'"\xc7\xae`4\t"\x03\x00\x00\x00b\x00\x03\x00\x00\x00e\x00\x8e\x0f\xb6,\x0f'
 b'\x00\xe3\xfbl\xf8"\xd9\xc6K\xb4W\x95\xa3\x1bK\n|&\x0c|\x97\x07}\x88'
 b'3\xf7\xf2')

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

{'A1': [{'B1': 16572, 'B2': 'jm', 'B3': [-2070072208, 1849042366, -281079699]},
        {'B1': 8713, 'B2': 'bkx', 'B3': [1048916968, 573463499, 878751431]}],
 'A2': [-296393085301682290,
        6319759494526204012,
        875523561221759893,
        -939225335977240708],
 'A3': {'C1': -96,
        'C2': [424632660, 225594997, 36546003, 4240778052],
        'C3': 25,
        'C4': 346007905},
 'A4': {'D1': 46898,
        'D2': -0.905726432800293,
        'D3': -22868,
        'D4': -3886227523458724465,
        'D5': 4128839694398886448,
        'D6': -31948,
        'D7': 3190428264,
        'D8': 49479}}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'WIAN6=\xd1\n\xa3\xb71\x9bl#\nt\xbf\xfc\xe0\xa1M\xee\xb7\xc0r\xd7\xd9\xf2'
 b'\xa3\xefO\x84%J\xef\xb9\x8c\xf1|!\xa5\xb6\x14\x8e,\xf0\x87\xaf'
 b'\xd2\xa0\xd4\xf7\x93\x92\x1f\xc3\xac\xcb_\x0b\x0c\xb8K\x02\xd4F\xc4\x9f'
 b'Tf\xf8\xbf0\t\xe2\x15\x9fn\xe1~\xdbG\xeawc@\xa9\xeaR2p?!\x87\x06\x00'
 b'\xa0\x00\x00\x00\x91\x9e\xa9\xa2\xa7\xc2\x0e\xbe~\x83\x7f\xbf\xa4\x8d\x14?'
 b'\xb7O\xbf\xbeYK\x1f\xbf\x8f\xb9\xf5\xbeT\x89v?\xca\xb1\xc9>\x00\x1c\xc8c'
 b'\x02]\xc3\xbf\xd3\x8b^\x07#v\xf3\nQ\x18<e\xec\xe0\xf5\xd3eksmwx')

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

{'A1': {'B1': 54,
        'B2': [{'C1': 53565,
                'C2': [41738, 12727, 27803, 2595, 49012, 57596, 19873]},
               {'C1': 47086,
                'C2': [29376, 55767, 41970, 20463, 9604, 61258, 36025]},
               {'C1': 31985,
                'C2': [42273, 5302, 11406, 34800, 53935, 54432, 37879]},
               {'C1': 8082,
                'C2': [44227, 24523, 3083, 19384, 54274, 50246, 21663]},
               {'C1': 63590,
                'C2': [12479, 57865, 40725, 57710, 56190, 59975, 25463]}],
        'B3': 64,
        'B4': -5463,
        'B5': 0.9382678270339966},
 'A2': -30943,
 'A3': 'eksmwx',
 'A4': 2729025169,
 'A5': {'D1': -0.13941441476345062,
        'D2': [-0.9981001615524292,
               0.5802862644195557,
               -0.3736550509929657,
               -0.6222434639930725,
               -0.4799313247203827,
               0.9630329608917236,
               0.39393454790115356],
        'D3': -0.15127591964866838,
        'D4': 35795,
        'D5': 94,
        'D6': 4330300149192860423},
 'A6': 101,
 'A7': 3556106476}

Пример 2

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

(b"WIAN+\x9a\xd2)\xb8G\xfb\x0e4Xh\x94\x18\xb8&-'m&\xe2\xd6\xf7\xdc\xba"
 b't\xa1\x04So\xd4\x81\xd5\rZ\xdf\x8bg@<~\x12\xec\x0bb\xe2\xa0\x88K|MX\x81'
 b'\xa8"bL\xd5\xc9\x88\xfcl\xc4\xe1\xa8\x9e\x14\x08\xcf\xea.\xd9Dv\xcf\x99\xa8'
 b'\x13\x16\x8d\xca\xfd<\xd7\x9f\xf1\to?t\xc2\x02\x00\xa0\x00\x00\x00'
 b'\xc3\n\x95\x11\xf3\xec\r?\xf4\xb4\xbc>%\xd5X?\xfa\x02~\xbf]\xbb\xda\xbe'
 b'\xc5\x0e\xfb=\x08O7\xbfp \xab;\x9cF\x1c \xceW\xee\xbfX\xac0\x03\xa5b^\xce'
 b'\xe2Z\x9ey\x84\xc4\xc9"cn')

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

{'A1': {'B1': 43,
        'B2': [{'C1': 53914,
                'C2': [47145, 64327, 13326, 26712, 6292, 9912, 10029]},
               {'C1': 9837,
                'C2': [55010, 56567, 29882, 1185, 28499, 33236, 3541]},
               {'C1': 57178,
                'C2': [26507, 15424, 4734, 3052, 57954, 34976, 31819]},
               {'C1': 22605,
                'C2': [43137, 25122, 54604, 35017, 27900, 57796, 40616]},
               {'C1': 2068,
                'C2': [60111, 55598, 30276, 39375, 5032, 36118, 64970]}],
        'B3': 60,
        'B4': -24617,
        'B5': 0.9337454438209534},
 'A2': -15756,
 'A3': 'cn',
 'A4': 294980291,
 'A5': {'D1': 0.5543968081474304,
        'D2': [0.3685680627822876,
               0.8470023274421692,
               -0.9922329187393188,
               -0.4272107183933258,
               0.12258676439523697,
               -0.7160496711730957,
               0.0052223727107048035],
        'D3': -0.9482184054524683,
        'D4': 44120,
        'D5': 48,
        'D6': -7036062091838315261},
 'A6': 121,
 'A7': 583648388}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'iDCCY\x00\x02\x00\x00\x00,rucbaz\xed\x00E2\x80\x9a_\xde=,\xd5\xf4]\x00\x00'
 b'\x00\x04\x00\x00\x00>p\x1e\x00\x00\x00B\xee\xfaV\\Ca\xb6\rU\x84\xa2\x8a'
 b'.\xb4+K\xcamdgjd\x1b\xf9\xde/')

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

{'A1': [{'B1': 17220171079471969805, 'B2': 85},
        {'B1': 9557353292429478858, 'B2': 109}],
 'A2': 'rucbaz',
 'A3': 3976217906,
 'A4': {'C1': 2157600734, 'C2': 0.042196229100227356, 'C3': 93},
 'A5': 'dgjd',
 'A6': 28702,
 'A7': {'D1': [27, -7, -34], 'D2': 47}}

Пример 2

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

(b'iDCCY\x00\x02\x00\x00\x00,qdlbky\x9e\x8f\xc0\xff%\xf7\xd3\x19\xbe\xf6\x9a'
 b'U\xf7\x00\x00\x00\x04\x00\x00\x00>0i\x00\x00\x00B\xc7\xe1\xe8\xac\xe22~\xc2'
 b'n)\xf5Q\xc3A\x87,l\x14lohl\xcfX>7')

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

{'A1': [{'B1': 14403048912534535874, 'B2': 110},
        {'B1': 3023412623909006444, 'B2': 20}],
 'A2': 'qdlbky',
 'A3': 2660221183,
 'A4': {'C1': 636998425, 'C2': -0.48164620995521545, 'C3': 247},
 'A5': 'lohl',
 'A6': 12393,
 'A7': {'D1': [-49, 88, 62], 'D2': 55}}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'AIE\x90\xbf\xd6\x99\xa6\xb6gi\xa4\xb6^\x00\x00\x00>\x00\x00\x00\x03\x00\x00'
 b'\x00\x99\xe1\x00\xa0\xc2jM$\xe9\xffk\xacI}\xf4\xa4\xfa\xa6\x16'
 b'\xe1\x00\x1d\x00!\x00%\x00)P?\xed\xdb.\xdclH"*\x03$\x91\x895\x92Z\x99\x0f'
 b'\xbe\x9e\xaf$D=z\x00\x04\x00-!\tPM|3\xab\xda\x1bO\x8fr\x1d\xaa\xc9\x8b"'
 b'57\xbd\x13GU\xb0\r\x9a?\xe0\xfc\x04\xa5\x10\xa8\x84\xbf\xdd\xed]P\xb3V'
 b'\xbca\xfb\xa1\xfa\xff\x89\xed}?\xe4E\x04W\xc8\xf4 \xbf\xdd\x92\xc0?b\x99'
 b"\xe8\x00\x00\x005t\xf90\xa0\xa7\x81\x99'\x8a\x00\x04\x00\x9c=\xf48\x16")

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

{'A1': -0.3531281262673025,
 'A2': {'B1': -74,
        'B2': 94,
        'B3': {'C1': 3027303582013952602,
               'C2': -7417500472503417795,
               'C3': 122,
               'C4': [{'D1': -62, 'D2': 106, 'D3': 19748},
                      {'D1': -23, 'D2': 255, 'D3': 27564},
                      {'D1': 73, 'D2': 125, 'D3': 62628},
                      {'D1': -6, 'D2': 166, 'D3': 5857}],
               'C5': 554258509,
               'C6': {'E1': [2083761114,
                             458198898,
                             497731979,
                             573913021,
                             323442096],
                      'E2': 3482,
                      'E3': [0.5307639335562873, -0.4676125801173432],
                      'E4': 7060414940234509693,
                      'E5': 0.6334249224233908,
                      'E6': -0.46208196821171876},
               'C7': {'F1': 80, 'F2': 0.9330057435165637}},
        'B4': [116, -7, 48]},
 'A3': 225,
 'A4': {'G1': 10122, 'G2': [160, 167, 129, 153], 'G3': 0.11924760043621063}}

Пример 2

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

(b'AIE\x90\xbf\xb7!\xec\x01\r\xa6\xf0\x0b\xbb\x00\x00\x002\x00\x00'
 b'\x00\x04\x00\x00\x00\x8d\xf8\x00\x93~\t\xd2\xe4\xbd\xb7\x93\xc0\x00\x1d\x00'
 b'!a?\xdf\xfb\xa6\xab\rI\xd8\xcb\x92\xfa\x9dC\x0f\xc5G\xae\xc7\x01\xe6\x95B'
 b'\xa1z\xf3\x00\x02\x00%LZ<\xae\xe0\xbcL\x81`\x179\xe9\x82\xc0Vb\xf7'
 b'\xd3\x88\xae\r\x0e0B\xe4\x8c?\xe1\xd5\xf2\xc3h\xbc\xf8?\xe4*5\xca\xae*'
 b'\xe8\x1e\xe8p\x02\xfd\x02U\xdd\xbf\xde0sg\nDP\xbf\xe2\x11\xb6z\xba`'
 b'2\x00\x00\x00)\x0e\x06\xf5\x8e\xb5\xb7\xd5a\x00\x02\x00\x91>\x9b\x1c_')

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

{'A1': -0.09036135698047665,
 'A2': {'B1': 11,
        'B2': -69,
        'B3': {'C1': -3777681584068508345,
               'C2': -5852707100886392454,
               'C3': -13,
               'C4': [{'D1': 126, 'D2': 9, 'D3': 53988},
                      {'D1': -67, 'D2': 183, 'D3': 37824}],
               'C5': 1280982190,
               'C6': {'E1': [-524530559,
                             1612134889,
                             -2101324190,
                             -137131858,
                             219033666],
                      'E2': 58508,
                      'E3': [0.5573667351326597, 0.630152603015941],
                      'E4': 2227153173871744477,
                      'E5': -0.47170720160017243,
                      'E6': -0.5646622082740633},
               'C7': {'F1': 97, 'F2': 0.4997345610073842}},
        'B4': [14, 6, -11, -114]},
 'A3': 248,
 'A4': {'G1': 54625, 'G2': [181, 183], 'G3': 0.30295082926750183}}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'FQI\x9b\\D\x1dL\x00\x00\x00\x03\x00\x00\x00A\x00\x00\x00\x02\x00\x00\x00D'
 b"B\x03\x00\x88'\xf9K\xae\xa6\x1b\x12+\x8e/S\xceA\xdc_\xd6\x8f\x82\xc61"
 b'\xc0V\x90\xb1w\rP!\xc2\xd6\x7f\xfdy}\x02+\x13daw\xbb\x85\x04\x8d \xc5G^'
 b'\xa1q\x12\x08+e?8\xe4z-0\xbb!\n\x81\xd6m\x1f\xfb\x0f\x11\x95Y;8\x9e\xd3'
 b'%OA\xc5\x05\x898\xda\xa0\xdc8\xea/u\xb6\xb1\xfaE\xd4\x81\xb0\\%\x8c\xa2\rC$'
 b'\xf56\x1c\xbe?\xe6\xa2\x9b\x13\xe0\xd9\x04\x0c')

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

{'A1': {'B1': 1547967820, 'B2': 'daw'},
 'A2': {'C1': [{'D1': -1148910451,
                'D2': 8389,
                'D3': 1197384049,
                'D4': 302525285,
                'D5': 4555642236480568097,
                'D6': [2689, -10643, 8187, 3857],
                'D7': 2505653048},
               {'D1': -1630329521,
                'D2': 16837,
                'D3': 92879066,
                'D4': 2698787050,
                'D5': 3419840367582106753,
                'D6': [-20388, 9612, -24051, 17188],
                'D7': 4113964222}],
        'C2': 16899,
        'C3': {'E1': 0.7073493374107618, 'E2': 12},
        'C4': {'F1': 10233, 'F2': 19374, 'F3': 166},
        'C5': 6930,
        'C6': 11150,
        'C7': [794021441,
               3697268367,
               2194026944,
               1452323191,
               223355330,
               3598712185,
               2097294099]}}

Пример 2

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

(b'FQI\x9b\x93,\xde\xe8\x00\x00\x00\x02\x00\x00\x00A\x00\x00\x00\x02'
 b'\x00\x00\x00C\xfb\xfd\x00\x87\x9d\x1e\xa1\x8b\x06;(\xd9\x95\x9e\x96\xc9'
 b"l\xd7\xe8)\xa553dy9\xda\x15\xdf\xcf\xbe'VC\x92g\xd1\x7fY\x8dNtz\xcb"
 b'\xd1\xca\xda\x0c,\x1a\xc4\x02\x8d\xde\xc5\xa2j\x17\x97N\x06\xc8\xca\xad'
 b'\xd6\xcb\x12\xef.\x07\xc7\x03\xdb\xa3\xf8\x14\r\xc1\xa1\xa4\x8a\x81D\x8e'
 b'z\x92\x11\x85\xd25\xb7\x0fm\x003l\x847"\xbb_\xb0\xb8\xe8]\xf3\xc1~'
 b'\xb9K\x17\xbf\xca\xc2\xf3@&\x95\xe0\xac')

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

{'A1': {'B1': 2469191400, 'B2': 'tz'},
 'A2': {'C1': [{'D1': -875443494,
                'D2': 3116,
                'D3': 449053325,
                'D4': 3737494122,
                'D5': 1699913175401147862,
                'D6': [-13550, -4306, 1991, 987],
                'D7': 2750944269},
               {'D1': -1046371190,
                'D2': -32444,
                'D3': 2390397457,
                'D4': 2245146039,
                'D5': 1111544903894316834,
                'D6': [-17569, -20296, -6051, -3135],
                'D7': 2126072599}],
        'C2': 64509,
        'C3': {'E1': -0.20907440788611975, 'E2': 172},
        'C4': {'F1': 40222, 'F2': 41355, 'F3': 6},
        'C5': 15144,
        'C6': 55701,
        'C7': [2660682092,
               3622316453,
               892560505,
               970593759,
               3485345622,
               1133668305,
               2136575310]}}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YSTF}3\x00E\x00W\x00i\x00{\x00\x83\x00\xc5c*_\xfc\xcf\x89\xbf\x18\xa6\x9d'
 b'\x17\x07\xe8\xc2?\x98b\xee\xa9\x8fw\xcb?\xd3\xf8\xd83\xc3\xab3\tz\xcd)'
 b'\x00.\x00\x16\x05W\x95\xdc_\x19\xa9P9\xa6\x11\x88\xa2;\x00@\x00\x9d$\xa3'
 b'\x98\x17\xe3\xba\xdf\xeb \xb6\x82W)M\x00R\x00\x15&\xefB\x84p\xf5\x83\xd3'
 b'\xd1:\rto_\x00d\x007\xe1\x0cT@\xb0&!\xad\xb8\x95\x95VUq\x00v\x006'
 b'f\xae\xe6\xc1\xc3]e\xac\x87pI\xf3\xc7U\x83]zF5"\xed"')

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

{'A1': [{'B1': [{'C1': -1837, 'C2': 216, 'C3': 49971},
                {'C1': 13227, 'C2': 9, 'C3': 52602}],
         'B2': [22, 5, 87, -107]},
        {'B1': [{'C1': 24540, 'C2': 25, 'C3': 20649},
                {'C1': -22983, 'C2': 17, 'C3': 41608}],
         'B2': [-99, 36, -93, -104]},
        {'B1': [{'C1': -7401, 'C2': 186, 'C3': 60383},
                {'C1': -18912, 'C2': 130, 'C3': 10583}],
         'B2': [21, 38, -17, 66]},
        {'B1': [{'C1': 28804, 'C2': 245, 'C3': 54147},
                {'C1': 15057, 'C2': 13, 'C3': 28532}],
         'B2': [55, -31, 12, 84]},
        {'B1': [{'C1': -20416, 'C2': 38, 'C3': 44321},
                {'C1': -27208, 'C2': 149, 'C3': 21846}],
         'B2': [54, 102, -82, -26]}],
 'A2': {'D1': 1700643777,
        'D2': -8983054033997494356,
        'D3': 893811293,
        'D4': [34, -19, 34]},
 'A3': 1596613573,
 'A4': -1081487364,
 'A5': 0.14770592358699797,
 'A6': 0.21458621785565835}

Пример 2

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

(b'YSTF}3\x00E\x00W\x00i\x00{\x00\x83\x00\xfb\xc13\x80*\xdcD\xb2\xfc\x0cK'
 b'\x8b\xcfb\xeb\xbf\x90\x01[\x02\xee\x1c\xc1?\xad\x80\xcc=\xcc{\x96'
 b'\xd7\xed\xd5)\x00.\x00Y\x96\x8fS\xaf\xea\xbf\x8f\r\x18Uw\xeb\xcc;\x00@'
 b'\x00\x9f\x17\xd8\xef\x9e\x9d9\xe9\xd8\x9e\xd42";M\x00R\x00l=C\x00\x8e'
 b'\xb2\xd0\xdbQ\xccd\xdc\x15V_\x00d\x00\x828/\xc9\x99)y\xb2\x05W\xb2\x98*\xb2q'
 b'\x00v\x00\x99X\xa1=;=\xd2\x8f\x1c\xba6\xe1\x8f=I\x1b\xea\xea>\xbe\xf7.\\')

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

{'A1': [{'B1': [{'C1': -32595, 'C2': 204, 'C3': 52285},
                {'C1': -27013, 'C2': 215, 'C3': 54765}],
         'B2': [89, -106, -113, 83]},
        {'B1': [{'C1': -5457, 'C2': 191, 'C3': 3471},
                {'C1': 21784, 'C2': 119, 'C3': 52459}],
         'B2': [-97, 23, -40, -17]},
        {'B1': [{'C1': -25186, 'C2': 57, 'C3': 55529},
                {'C1': -11106, 'C2': 50, 'C3': 15138}],
         'B2': [108, 61, 67, 0]},
        {'B1': [{'C1': -19826, 'C2': 208, 'C3': 20955},
                {'C1': 25804, 'C2': 220, 'C3': 22037}],
         'B2': [-126, 56, 47, -55]},
        {'B1': [{'C1': 10649, 'C2': 121, 'C3': 1458},
                {'C1': -19881, 'C2': 152, 'C3': 45610}],
         'B2': [-103, 88, -95, 61]}],
 'A2': {'D1': 2412920123,
        'D2': 1966170400492010012,
        'D3': 3191794410,
        'D4': [-9, 46, 92]},
 'A3': -2144091653,
 'A4': -1304110038,
 'A5': -0.8558118553704896,
 'A6': 0.1336953650952748}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'PFWN\x02\xc4f\x07[<\xe0?\x02\x00\x00\x00\x82\x00$P\x00\xdb\xfd\x04'
 b'\xce\x18\xdb\xf4\xe9\xf8\r\x03a\xa0P\x11\xbb\xa3\x0c\xa9\xbf\x02\x00\x12'
 b'\x00\x00\x00\xd0\xf2F?)\x98\xbf\xbd(yo$|\x86\xc7\xbf]\x1a\x00\x00\x00'
 b'\x02\x00/\x00\x00\x00\xc8\xcc\xc8\xd8\xa3\x86\\\xc7\x95\x0bg\xdd\xc2V'
 b'\xb5\\g\xba\xd5\xdc\x8c\xec?\x02\x00J\x00\x00\x00\xdb%\x9a>\xd8/f?\x98'
 b'\x93\xdf4~c\xc9\xbf\xeaR\x00\x00\x00\x02\x00g\x00\x00\x007\x00\x00\x00o\x00'
 b'\x00\x00')

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

{'A1': 0.5073676247176311,
 'A2': [{'B1': -0.18379165438722933,
         'B2': 93,
         'B3': {'C1': {'D1': [-37, -12, -23, -8, 13, 3], 'D2': 97},
                'C2': -0.0489245572904633,
                'C3': [3674230820, 416154877]},
         'B4': [0.7771425247192383, -0.09355194121599197]},
        {'B1': -0.1983487852259287,
         'B2': -22,
         'B3': {'C1': {'D1': [-107, 11, 103, -35, -62, 86], 'D2': 181},
                'C2': 0.8921951460244872,
                'C3': [3637038280, 3344729763]},
         'B4': [0.30107006430625916, 0.899167537689209]}]}

Пример 2

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

(b'PFWN\xec\x99y\x85\xba\x8b\xdf\xbf\x02\x00\x00\x00\x82\x00\x99\xe6Vh\xbbA'
 b't\xc8\xf3A\xca\xe1\t\xf9LH\xe3\xe7\x8d\xa3\xe6\xd0?\x02\x00\x12'
 b'\x00\x00\x00\xe3\xc7~\xbf\x9d-\x05>~.\x8f\xccEU\xe3?\xb3\x1a\x00\x00\x00'
 b'\x02\x00/\x00\x00\x00\x85\x87S~(0\x12\x14K\xce\nz\x8f|\xcf\x08\xcc\x84'
 b'p\xb2a\xe6\xbf\x02\x00J\x00\x00\x00\xe4\xd6\xc8\xbeB"\x82\xbd\x90'
 b'\x95\xf0\xb4?\xe7\xb9\xbf<R\x00\x00\x00\x02\x00g\x00\x00\x007\x00'
 b'\x00\x00o\x00\x00\x00')

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

{'A1': -0.4929033568827481,
 'A2': [{'B1': 0.6041592593478098,
         'B2': -77,
         'B3': {'C1': {'D1': [-13, 65, -54, -31, 9, -7], 'D2': 76},
                'C2': 0.26407708032597954,
                'C3': [1750525593, 3363062203]},
         'B4': [-0.9952375292778015, 0.13005681335926056]},
        {'B1': -0.10118482749438429,
         'B2': 60,
         'B3': {'C1': {'D1': [75, -50, 10, 122, -113, 124], 'D2': 207},
                'C2': -0.6994259069091422,
                'C3': [2119403397, 336736296]},
         'B4': [-0.3922644853591919, -0.06354190409183502]}]}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'VOZ>\xb7\xe4\x03\xf6\x00&\xc1\xceE\xf8\x88\xb2y\xb1\xdb\xb5\x90\xac\xf0\xf6'
 b'\x83\x83\xe8;\xf6dyp\xaf\x1er\xf8T\xaf*"L\xe5\xbe#\xf7\x9e>\x9c\x8cf\xbf\r'
 b'L\x1c\xbfiw\xe8?{)\xcd\xbe\x82^C?v9s^w\xd6\x16?m\x12@\xbfu\xb2\xae\xbe\xdb'
 b"\xd3\xa7?'-\xb9\xbf%\x80<>\xcc\xd3e\xbfS\xfdcL\xe9\xbaQ\xbe\xf0\x85h\xd4\xf1"
 b'5Hk\x1e6M\xa9.\xba~?Rn#\xad\xa4\x82\xbf\xe2\x14G\x18\xec)\x94\xbf $^\xbe:*'
 b'\xc7\xbe\xc9a\xbc\xbdma\xd5<\xb9^\xe9\xbf\x00;\x0c?C\xe9\xd1\x00\x00\x00'
 b'\x02\x00\x16')

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

{'A1': 0.35916146636009216,
 'A2': -10,
 'A3': {'B1': {'C1': 706890981,
               'C2': [{'D1': [-0.160124272108078,
                              0.30575865507125854,
                              -0.5519425868988037,
                              -0.9119858741760254,
                              0.9811065793037415,
                              -0.2546254098415375,
                              0.9618141055107117],
                       'D2': 1584911894},
                      {'D1': [0.9260597229003906,
                              -0.9597576856613159,
                              -0.4293491542339325,
                              0.653041422367096,
                              -0.6464879512786865,
                              0.4000503122806549,
                              -0.8280851244926453],
                       'D2': 1290386001}],
               'C3': -0.46976780891418457,
               'C4': 54513,
               'C5': [53, 72, 107, 30, 54],
               'C6': 5596055390501425774},
        'B2': {'E1': 598582402,
               'E2': -0.5649753081100237,
               'E3': [-0.6255549192428589,
                      -0.18180380761623383,
                      -0.39332377910614014,
                      -0.05795462802052498,
                      0.022628264501690865,
                      -0.5009009838104248,
                      0.7652865052223206],
               'E4': [17363210015933724260, 8750686621293630639]}},
 'A4': -1043446280,
 'A5': -30542,
 'A6': 121,
 'A7': 2983966096,
 'A8': -84}

Пример 2

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

(b'VOZ\xbf=F\xf4`\x00&.0N$\xce\xad\x19tK\x0e\xf4\xddz\x80\xcd\xcf>\xee'
 b"h\x98\xda\x11\x15:l\xeb\xda\xa5\xde\x9d'W>\x95b\xbd\xbfP#6\xbeU\xc4C?8"
 b'\xab\xea\xbfg\xeds\xbe\xd3!\\\xbe\xd0\x1d\xcc\xd9Z\xce\xa6>\xa1'
 b'\x9e\xf7\xbe\xf4\xb3\xb6\xbe\x00\x03\x05\xbf#p\xe8\xbe\xbc\xb8\x1c\xbeD'
 b'\xdf\xf0\xbd\xe9{d\xb5\xe8\x1e\x1c>\xbe\xe5\x8e\x1f+e\x85\xb9/>5\xb0\x9c'
 b'\xf1\x98cW\xf8B\x94X^\xbf\xc6R4\xa0\xf6\xf2\x10?1\x0f\xef>\xe8\x9c'
 b'\xaf\xbf\x1d\xbf\xd4>\xdf({\xbfLbl?ce0?*t.\x00\x00\x00\x02\x00\x16')

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

{'A1': -0.7393639087677002,
 'A2': 96,
 'A3': {'B1': {'C1': 3734841175,
               'C2': [{'D1': [0.2917689383029938,
                              -0.8130372762680054,
                              -0.2087564915418625,
                              0.7213732004165649,
                              -0.9059669375419617,
                              -0.4123638868331909,
                              -0.40647733211517334],
                       'D2': -648360282},
                      {'D1': [0.31566593050956726,
                              -0.4779335856437683,
                              -0.12501151859760284,
                              -0.6384415626525879,
                              -0.36859214305877686,
                              -0.1922605037689209,
                              -0.11400488018989563],
                       'D2': -1243079140}],
               'C3': 0.3728451132774353,
               'C4': 7979,
               'C5': [101, -123, -71, 47, 62],
               'C6': 3868764641368954872},
        'B2': {'E1': 1117018206,
               'E2': -0.17438371524430396,
               'E3': [0.6916493773460388,
                      0.45432040095329285,
                      -0.6162083148956299,
                      0.4358557164669037,
                      -0.7983767986297607,
                      0.8882627487182617,
                      0.6658352613449097],
               'E4': [8827281559643908248, 15713363915552053925]}},
 'A4': 774917668,
 'A5': -12627,
 'A6': 25,
 'A7': 1951076084,
 'A8': -35}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'DJPN\x00\x00\x00\xa9j\xdbH\xf7\x02\xfe\tW\xe10z\x00\x00\x00<\xfe\xfd\\\x84N'
 b'\x13\xa7\x7f\xd1\x98\xaa\x95\xce>\xc6\xbf\xee\xdb\t\xc6d\xc7R\xe0\r'
 b'\x1f:o\xca\x00r\xa7\xeb\xbfDZ\x1e\x06\x03\xf6\x87F\xaf\r\xd2\xab\r\xce\xeb'
 b'\x8b\xe0\xd3\x80\xc3|Ij\x05\x14*\xc6\xaa\xb6\xc4\x19\x1b\xeb\xe4I\xde?\xfdV'
 b'W\xb4\x8dm\x87\xe7\xb4\xbd5z\xa5\x99)d\xcfc\x18FY\xb4\x16\x8eI\x92'
 b'\xa6\x10\xa1l\xf1\xde\x87z\x02\xa5\xb0\xe9\x13\xd4\xc3\xcf\xb8?\xe3\x90Ml;C'
 b'M\x1c\x1f>\x9cDX\xb0\xee\xf97jJ~\xeb\xbf\xe0\xcb\xd8%\xa7A')

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

{'A1': {'B1': [{'C1': {'D1': 13162550744970521161,
                       'D2': 0.47326014480168177,
                       'D3': -3,
                       'D4': 2377406294,
                       'D5': 109,
                       'D6': -0.08833222836256027,
                       'D7': [31285, -26203, 25641, 25551, 17944],
                       'D8': [89, 180, 22, 142, 73, 146, 166, 16]},
                'C2': 27305,
                'C3': [219, 72, 247, 2, 254],
                'C4': 22281,
                'C5': 12513},
               {'C1': {'D1': 11890200690191068321,
                       'D2': 0.09692024161987578,
                       'D3': -29,
                       'D4': 996953488,
                       'D5': 67,
                       'D6': 0.15538139641284943,
                       'D7': [17564, -20392, -1554, 27191, 32330],
                       'D8': [235, 191, 224, 203, 216, 37, 167, 65]},
                'C2': 65084,
                'C3': [253, 92, 132, 78, 19],
                'C4': 32679,
                'C5': -26415}],
        'B2': 0.40348559617996216,
        'B3': {'E1': 198, 'E2': -4417, 'E3': -37, 'E4': 2237691236010214921}},
 'A2': -0.8641901030964398,
 'A3': 68,
 'A4': -5816812378019979686,
 'A5': 13,
 'A6': 43986,
 'A7': -4359251477921018355,
 'A8': 124}

Пример 2

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

(b'DJPN\x00\x00\x00\t_\x91\xb8g{\x93\xa0@5\x9dz\x00\x00\x00%+\x89\x97>e'
 b'\\\x97\x03\x04g\x1d\xe3\xa6\xbcZ\x93\x02\xa9\x10\x9d\xd0\xfc~\x8azTt*\x1f'
 b'\xdb"\xad\xd2\xbf\x06\x86\xb6\xff\xbc\xb8\x15\xb9b\xfb%\x01"\x02t\x87=\xb8;'
 b'\x9b\xa6\x91\x9a2\xef\x8a\xfe\x97\xead\xa9\xb8\ri\x9f\xe2\xbf\xcf\x94'
 b'\xf0n\xc1\x08Z\xefa=r\xf4r\x15u\xd0\x91,\xfe\xcbY\xd0\xc0\x18U\xbc'
 b'\x98\x9e\r\x18\xe0nq\xbb\xc2\xea\xc0\xceS\xb5\xf1\xbf\xda?\xce\xf6V\xbf~\x1f'
 b'\x856)\xbf~V\xd7}\xc4\x8b\xb2\xdb=\xe0\xdfi\xddE\xd4\xc0\xf3\x0f')

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

{'A1': {'B1': [{'C1': {'D1': 16904259599030459025,
                       'D2': -0.5819592731470888,
                       'D3': -49,
                       'D4': 3245273236,
                       'D5': 8,
                       'D6': 0.055159904062747955,
                       'D7': [-2958, 5490, -12171, 11409, -13314],
                       'D8': [89, 208, 192, 24, 85, 188, 152, 158]},
                'C2': 24329,
                'C3': [145, 184, 103, 123, 147],
                'C4': 16544,
                'C5': -25291},
               {'C1': {'D1': 16916289246222882829,
                       'D2': 0.4179653425955898,
                       'D3': -50,
                       'D4': 2126468854,
                       'D5': 31,
                       'D6': -0.6609881520271301,
                       'D7': [22142, 32215, -29756, -9294, -8131],
                       'D8': [223, 105, 221, 69, 212, 192, 243, 15]},
                'C2': 11045,
                'C3': [137, 151, 62, 101, 92],
                'C4': 919,
                'C5': 26372}],
        'B2': -0.020371967926621437,
        'B3': {'E1': 90, 'E2': 659, 'E3': -87, 'E4': 6087330124356689168}},
 'A2': -0.29181739233596393,
 'A3': 6,
 'A4': 7113740969597449862,
 'A5': -5,
 'A6': 293,
 'A7': -7261007399799750110,
 'A8': -90}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZSGG\xc5+\x00\xb7\x05\x00\x00\x00H\x00M\x00o\x00 \x0f\xb9\xd6]\xd0'
 b'\xae\xbf&\x90\xe3\x081\xa5V\xd7?\xe3\xe8\xf5\xc20?2$\xea\xbb\x17%\x80'
 b'\xb6S\xe2]\xcc\xc2?!\xb8gwuepig\xfe\x81\x1fp\x13\xc6k[okpad!\xa0\xe3'
 b'\xa2\xc8m\x8e\xd1O\x17\xa7\xd7b;@\xeb0k\x07\xd7u\x7f\xd7\xbf\xbc\x01Y'
 b'\xf1\x91\x0b\xc0\xa61\x8d\x9c\xcegb\x87\xaa\xf6\x1ec\x95L\xfb\x86'
 b'\x0b\xe7\xee\x9c\x10\x9a\xd2\x0b8\xe6?\xabj\r\xbdT\xbe\x18\xd0&\x86')

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

{'A1': -59,
 'A2': {'B1': 622312426,
        'B2': 0.14686177779315202,
        'B3': -18399,
        'B4': 'gwuepig',
        'B5': 6587576666747273726},
 'A3': 183,
 'A4': 'okpad',
 'A5': [{'C1': [-1562140639, -779194936],
         'C2': 16951614293133432655,
         'C3': -0.3671545600788475,
         'C4': -6431127546437762628,
         'C5': -29391},
        {'C1': [1650970268, 519481991],
         'C2': 17214740775016633699,
         'C3': 0.6943415749851911,
         'C4': -3451799843221181781,
         'C5': -31194}],
 'A6': {'D1': -0.060183460675516054,
        'D2': 38,
        'D3': 0.3646634081701956,
        'D4': -29,
        'D5': 232,
        'D6': 0.690474808216095},
 'A7': 9266}

Пример 2

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

(b'ZSGG\x86+\x00\x18\x08\x00\x00\x00H\x00P\x00r\x00`\xbed\xaa\xe4|\xa6?mn'
 b'p\\\x84=w\xef\xbf\xbe\x08\xf4\x17k?\xb1\x13Z\xc9!1N\xd4\xc9~\tX\xe0?\xf7mfhr'
 b'gllf\x08\x8a\xdd\xa2\xd0\x07\xf9\x1cdnygqfqb\x9d\xdf\xd4\x82O\xb8\x97J'
 b'\xcd\xf4\xfbJ\xb7!\x9d\xaa`\xfa\x94>\xd4\x9c\xe0?\x17\xc6\x90}'
 b'\xc8\xd3\xf2\xb4\x87\xc2\xa1|\x02\x12\x00\xd8\x8dr\x81^u\xb9G\xe8'
 b'\xd4\xe2\xb6\xc1\xd1\xc9\xee\xd0\xed?\x1e\x86\xe3\xbbwm\x99\x94\x06\xc8')

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

{'A1': -122,
 'A2': {'B1': 824297818,
        'B2': 0.5107467151962142,
        'B3': 28151,
        'B4': 'fhrgllf',
        'B5': 2087708494929955336},
 'A3': 24,
 'A4': 'dnygqfqb',
 'A5': [{'C1': [-2099978339, 1251457103],
         'C2': 12294019628912080077,
         'C3': 0.5191441747954961,
         'C4': -5408027344464984553,
         'C5': -15737},
        {'C1': [302152865, 1921898496],
         'C2': 16344944342386171521,
         'C3': 0.9317544881615081,
         'C4': -7739034123638700514,
         'C5': -14330}],
 'A6': {'D1': 0.043921609687797014,
        'D2': 109,
        'D3': -0.9833057007958936,
        'D4': -66,
        'D5': 8,
        'D6': 0.9183342456817627},
 'A7': 5041}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'BED\xed\xac\x00\x0bA\x07\xbe[!\xb3\x86k\xb4\x1c\x05\x02\x00\xd2\x00\x19\xab'
 b'\xcfh\x85(\x12\x1cf\x1b8\x0c_\x19\xa1\xfd2\x1d\x00\x00\x00\x0c\xb7\x1f2G'
 b'hJ\x83\x01\xf0\xdc\xad\x12.\x00\x00\x00Z\x14\xa4JZ\x04\xb3\x13V\xe5.\xea'
 b'\x94?\x00\x00\x00\x8e\x9c/\x11\x16\xc6\xc7R\x87\x02\x0f\xa6\x14P\x00'
 b'\x00\x00\xb9\xa2\xba\x07\x8c\xb9E\xa1PK\xad\xc0da\x00\x00\x00\xbc'
 b'\x18\t\xfe\x7fy\xdd?e\xebIQ5r\x00\x00\x00\x8f\xdc\xda\xe2\xb3\x0eT\x83'
 b'y\rI\x92\xc2\x83\x00\x00\x005|\xa5\xe3\xf1\x83Y\x15\x8a\x9c{\xeexO\xd6'
 b"\x04\xcb\xa6\xa1l\x86j\xd2\x7f\xfbwv#\x8c\x1a\x08\x1a?'\x008\x00I\x00"
 b'Z\x00k\x00|\x00\x8d\x00\x03\x00\x94\x00\x00\x00\xa0C\xec\x0fG^\x1c\xec\xdcR'
 b'\x12\xdf\xb92')

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

{'A1': {'B1': {'C1': 35, 'C2': 140},
        'B2': 0.6016861200332642,
        'B3': [{'D1': {'E1': 26140, 'E2': [1594636315, 855482649]},
                'D2': -18676,
                'D3': 31},
               {'D1': {'E1': 18226, 'E2': [25381480, 313384176]},
                'D2': 5210,
                'D3': 164},
               {'D1': {'E1': 23114, 'E2': [1444131588, -1796591899]},
                'D2': -25458,
                'D3': 47},
               {'D1': {'E1': 5649, 'E2': [-2024618042, 346427138]},
                'D2': -23879,
                'D3': 186},
               {'D1': {'E1': 35847, 'E2': [1352746425, 1690348875]},
                'D2': 6332,
                'D3': 9},
               {'D1': {'E1': 32766, 'E2': [1698684281, 894519787]},
                'D2': -9073,
                'D3': 218},
               {'D1': {'E1': 46050, 'E2': [2038649870, -1030600435]},
                'D2': 31797,
                'D3': 165}],
        'B4': [8907145987332764131, -6798523365833344786, 8536568145113679468],
        'B5': 17312,
        'B6': {'F1': 4076, 'F2': 16074001128846286407}},
 'A2': 3188146443,
 'A3': 368367643451924827,
 'A4': [185, 50],
 'A5': 25,
 'A6': -2056728661,
 'A7': 4648}

Пример 2

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

(b'BED\xed\xa4\x00x/Jl\xebR\x9ay\xac)Ki\x02\x00\xca\x00\xe9\xafkz\x19\x94'
 b'\x0b\xa6fu>\x9f\tR)\xc6L\x1d\x00\x00\x00\x19\xae\x7f\xe4\xc0\xceE\xbc\x83'
 b'\x98\xdbF\r.\x00\x00\x00\xbc\xcdk\x91y\xf0\xc0&p\xb0\xb5v\xe2?\x00\x00'
 b'\x00l`L!\x88\xd8W\x96\x0b\x8c\x051\xebP\x00\x00\x00\xc4c\x9ft\xe0\t'
 b'\x91\x02]\x85 \xb0\xf7a\x00\x00\x00}\x1d\x9f\x0f\x1aYD\xfe\xfa=\xcd\xe4A'
 b'r\x00\x00\x00\x8d\x95\nv\x9b\xae\xad@A\xc6\xca\x0bE\x83\x00\x00'
 b"\x00\x16\x07\xcc\xd73\x82f\x1d\x7fQ1e'w?\xa2\x9c\xc6\xff\x17\x06\xd1 "
 b"\xc1\xbe'\x008\x00I\x00Z\x00k\x00|\x00\x8d\x00\x02\x00\x94\x00\x00\x00L\x9b"
 b'\x89,-Aj\xf7\x02V\xc6\x00\xff\xd5')

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

{'A1': {'B1': {'C1': 23, 'C2': 6},
        'B2': -0.37720349431037903,
        'B3': [{'D1': {'E1': 26278, 'E2': [161431157, 1288055122]},
                'D2': -20967,
                'D3': 127},
               {'D1': {'E1': 49380, 'E2': [-2084813362, 222747544]},
                'D2': -12868,
                'D3': 107},
               {'D1': {'E1': 31121, 'E2': [1881587952, -495536720]},
                'D2': 24684,
                'D3': 76},
               {'D1': {'E1': 34849, 'E2': [194402264, -349108852]},
                'D2': 25540,
                'D3': 159},
               {'D1': {'E1': 57460, 'E2': [1560449289, -139452283]},
                'D2': 7549,
                'D3': 159},
               {'D1': {'E1': 6671, 'E2': [-83999655, 1105513789]},
                'D2': -27251,
                'D3': 10},
               {'D1': {'E1': 39798, 'E2': [1094757806, 1158400710]},
                'D2': 1814,
                'D3': 204}],
        'B4': [3553761345222620119, -16153327985809563],
        'B5': 39756,
        'B6': {'F1': 11401, 'F2': 55826616129569069}},
 'A2': 1816801144,
 'A3': 7587203817987003115,
 'A4': [255, 213],
 'A5': -23,
 'A6': 427453359,
 'A7': 2964}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FKUV\xd8\x11\t\xddCp\xee?d\x00\x03\x00\x00\x00~\x00\xeb\\{c^\xe4\xdd^'
 b'\xaa\x10\x83\xa6=\xdf&\x0fD\xd0j9M\x1e\x86U\x1e}D|\x08\x1a\x00WWV\x9d\xca'
 b'\xd5{d\xc5\xdd\x13z\x7fI\xff\xe7#\x9d\x83er\xe9\xf5s<\xc4\r\x00x'
 b'\x1d\xa1\xdc\xbf4\x9c^\xe8P_Q\x1cz\xfbo.\xeb\x97\x10\xf5\x14\x00\x00\x00'
 b'-\x00\x00\x00\xd0\\\xb3V\xe8\xc1\xe3\xbfF\x00\xd6\xf6M\xf9q\xad\xec\xbf:\xf5'
 b'\xf4X\x90xxa/?\x16\x02\x96u\xde\xf4%\xbf\xef\xccX\xd3\xa4\xbd')

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

{'A1': 0.9512042348001684,
 'A2': {'B1': [{'C1': 23787,
                'C2': [123, 99, 94, -28, -35, 94, -86],
                'C3': 4904181259483644688,
                'C4': 1295608528,
                'C5': 508921374},
               {'C1': 17533,
                'C2': [124, 8, 26, 0, 87, 87, 86],
                'C3': 1431517291938695837,
                'C4': 4283006842,
                'C5': 2208113639}],
        'B2': -0.6174203580257203,
        'B3': {'D1': -169250203,
               'D2': 15475,
               'D3': -0.4473336860539485,
               'D4': 52,
               'D5': [24220, 20712, 20831, 31260, 28667, -5330],
               'D6': [151, 16, 245]},
        'B4': -0.8961725110272833},
 'A3': [7023496180247360826, -802074396484813009, -4781464526011777243]}

Пример 2

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

(b'FKUV>QJM \x8f\xe4?d\x00\x05\x00\x00\x00~\x00\xec\x981\xc4{l\xcd\x0c'
 b'=\x19\xb2\x8f\xa3\x1c\x95\xed\x19^\x14\xd2\xb27\x14\xe0\x1d\xfd\xae\x7f'
 b'\xe6\xfb\x97\x0c\x15\x17\xcd\xc1\xa5\xaa\xe6\xb2`\xc9<\x1dWQF\x0e'
 b'\x1dr\xc6\xb4\xf8\x97\xdfU `;\x1bjM\xe1?F4\xfe\x03\xa6\xc7\x9f\x82'
 b'\xdc\xb9o\xbd`Q,\xcc\x14\x00\x00\x00-\x00\x00\x00\xf8t\x94\xb8\xcc`\xef?'
 b'F\x00jK\x12}\x97\x07\xec\xbf\xfbe\xb0r\xfcq\xef"4\xf5\x8e\x99\xab\xbd'
 b'\x07L\xe9\x96f\x01q\xe7\xc8\\\xa8(%\xfc8xVb\xa3\x16\xd8\xc3\x13\xb4Mg')

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

{'A1': 0.6424714574409689,
 'A2': {'B1': [{'C1': -26388,
                'C2': [49, -60, 123, 108, -51, 12, 61],
                'C3': 1868313370664350233,
                'C4': 3000112222,
                'C5': 501224503},
               {'C1': -20739,
                'C2': [127, -26, -5, -105, 12, 21, 23],
                'C3': 14510794703162950093,
                'C4': 1364663612,
                'C5': 1914506822}],
        'B2': 0.9805663685871471,
        'B3': {'D1': -1745308474,
               'D2': 21983,
               'D3': 0.5407000095247021,
               'D4': 70,
               'D5': [-460, -23037, -24633, -9086, 28601, 24765],
               'D6': [81, 44, 204]},
        'B4': -0.875926727562143},
 'A3': [2517356045793256955,
        5478556016432837940,
        6685848119372322537,
        7085983249857849512,
        7443803756096394915]}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'WTPK\xe9\x84\xac\x1eZ\x0b*\xeb\xbf\x81l\x00;\x02\x00\x8e\x00\x00\x00\xb6'
 b'\xb8\xb1q?D\xeb?L\xd6\xc7\xbe;K\xfe\x0f<\xbb\x8b\xe4\xd7\xa5\xbe\xa9\xbb'
 b'\x01\x07\xa1\xc4hl\xfb\xd2\xd7g\xb8\xc9\x8e!\xeeF\xc0\x9a\xf5\xa0\xe1?TO'
 b'\xc4>\x84\xf0\xf0\xd9Q\xa9E1\x16\x93\x07$\xc0\x92\x96\x89&7\xa0\xbf\r\xa3'
 b'\x97\xd5\x9a&w\x9dq\x0b`P\x05-X{\x9d\xf46\x00N\x00\x98*\xfa\x1d\x1a\xa8\x17]'
 b'_\xfa\xa4xaugqf\x00\x00\x00\x10\xbeN\xcf\xa5\x12Sz')

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

{'A1': -0.8488823661949856,
 'A2': -127,
 'A3': {'B1': 4103961432,
        'B2': [{'C1': 2418091843797897979,
                'C2': {'D1': 0.5508983633501126,
                       'D2': 1053052756,
                       'D3': 3656446084}},
               {'C1': 2596205433727592785,
                'C2': {'D1': -0.031670765204841356,
                       'D2': -711482611,
                       'D3': 2641831578}}],
        'B3': 502934168,
        'B4': 8693348468222568474,
        'B5': 'augq',
        'B6': {'E1': 1348471665, 'E2': 11525},
        'B7': 48656,
        'B8': 312856398},
 'A4': {'F1': 59, 'F2': [83, 122], 'F3': 0.852081033762963},
 'A5': {'G1': -0.39030683040618896,
        'G2': [59, 75, -2, 15, 60, -69],
        'G3': -117,
        'G4': -0.32391273975372314,
        'G5': 7811709749560458153}}

Пример 2

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

(b'WTPK\xe9\xc0@e\xc9\xed\xec\xe0\xbf\x1fl\x00\xc0\x02\x00\x8e\x00\x00\x00\n'
 b'\x16\xa7u\xfe\x1d\xe2\xbf\x8a\xd7\xd1>\xb0<z]\xfb\xd7~\xcb\xa3\x01\xbeA\xc5'
 b"\xba\xcd\xfbm\x1a\xfeWM\xa9s\x8e\xa0\xf6\xcc2)L\xcd\xb0q\xed\xbfn\x07^\x17'N"
 b'\xe6O\x86\x0b\xf2\x90^\x05_\x9bL\xe2e\xfcD\x96\xe2\xbf\xe7\xa4'
 b'\x85\x8b\xbb\x1a\x91\xdbF>\xed\x94\n\x17>\x1cm76\x00N\x00\x06\x01aW'
 b' \xd5\xf44r#Wjdvkxf\x00\x00\x00v\xbc\xc0\xc9\xeb\x02\xbd\xee')

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

{'A1': -0.5289219792848812,
 'A2': 31,
 'A3': {'B1': 929897534,
        'B2': [{'C1': 14769168561694395735,
                'C2': {'D1': -0.920128251048743,
                       'D2': 392038254,
                       'D3': 1340493351}},
               {'C1': 11195673102383188870,
                'C2': {'D1': -0.5808434419296389,
                       'D2': -1954175769,
                       'D3': 3683719867}}],
        'B3': 1465975046,
        'B4': 7662632264415892768,
        'B5': 'dvkx',
        'B6': {'E1': 2498575942, 'E2': 5898},
        'B7': 48246,
        'B8': 49007040},
 'A4': {'F1': -64, 'F2': [-67, -18], 'F3': -0.5661613748458774},
 'A5': {'G1': 0.40984755754470825,
        'G2': [-80, 60, 122, 93, -5, -41],
        'G3': 126,
        'G4': -0.12660138309001923,
        'G5': -136675910425590463}}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FAJxcz\x97\xae\x1f\x01\x8evK\x90\x00Se\xbe\xd5\x0c^\xbfIL\x05\xbe\xe8v'
 b'w\xbe\xb9\xea\x88\xbf#\x14\x1c>\x89m\x83?v\x05\xb5\xbd\x0eD\x13R\x81\x03'
 b'\xcfl\x07\xbe\xc1v?\xbf^f\xe4>\xb7\xa8\x1d\xbf\xc2\x16?\xf8\x9c3\xd0?'
 b'\xd7\xe1vMc"|\xdd\x97sY`^\xc3l\x8d\xdf\xc6\x12\xba\x85\x82X?\xb9\x1b\xe4#'
 b's\xf1\xb0\xf0\xb7\x10^Q\xe1\xd0C\xa5\xef\x13\xabg\xe6\x07M?\xe4\xcd\x8b\xd3'
 b'\xc1\x8f(\x00\x00\x00\x02\x00\x00\x00C_>#\x91')

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

{'A1': 'xcz',
 'A2': -7517036636489233520,
 'A3': {'B1': [{'C1': -2479386242138061972,
                'C2': -115,
                'C3': -33,
                'C4': 198,
                'C5': 18,
                'C6': -1165655464,
                'C7': 0.09808183541821935},
               {'C1': -1101393586582073277,
                'C2': -91,
                'C3': -17,
                'C4': 19,
                'C5': 171,
                'C6': 1743128397,
                'C7': 0.6500910888539453}],
        'B2': [-0.14130401267212145, 0.3731361156210722],
        'B3': 1597907857},
 'A4': 101,
 'A5': [-0.41610997915267944,
        -0.7863162159919739,
        -0.45402881503105164,
        -0.3631174564361572,
        -0.6370255947113037,
        0.26841363310813904,
        0.9610245823860168,
        -0.034732889384031296],
 'A6': {'D1': 1384186831, 'D2': 108},
 'A7': 7,
 'A8': [-0.3778552711009979, -0.8687574863433838, 0.35870447754859924]}

Пример 2

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

(b'FAJtmj\xaf\xc0\xad\xddTgn\xdf\x00S\\\xbfF=\x0f\xbf\x1aj@=N%p>\xd3%\x08?k\xc6'
 b'h?c\xd9S\xbf\x10R!\xbfy\xd0\x9d\x17\x00\xa9\xfc\x8d\x93>\x8e\xf2\x91\xbf'
 b'.\xf1\x99\xbe\xfco\xe3\xbf\xd9\x96\x05\xe6(0\x90?\xe9\xc8\x12V\xa0\x7f\xdcr'
 b'1J\x86/\xed\xe2"u\x86zA\x8d#}F?\xe2\\\x89\x08\x07\xe1\x96z\xd7\xf5(,'
 b'\x91\xa1\x87"\xf5\xcd\x0e\x9d\'\x14s\xbf\xeb%\xe0\xb7\r\x14\xcc\x00'
 b'\x00\x00\x02\x00\x00\x00C\xf4\xf8#\xef')

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

{'A1': 'tmj',
 'A2': -5782430755428274465,
 'A3': {'B1': [{'C1': 8228439934372799010,
                'C2': 117,
                'C3': -122,
                'C4': 122,
                'C5': 65,
                'C6': -1927054010,
                'C7': 0.5737958103991783},
               {'C1': 8851813145515237767,
                'C2': 34,
                'C3': -11,
                'C4': 205,
                'C5': 14,
                'C6': -1658383245,
                'C7': -0.8483737540451783}],
        'B2': [-0.39978167988079694, 0.8056728069241177],
        'B3': -185064465},
 'A4': 92,
 'A5': [-0.7743691802024841,
        -0.6031837463378906,
        0.05032867193222046,
        0.41239190101623535,
        0.9209961891174316,
        0.8900348544120789,
        -0.5637531876564026,
        -0.9758394360542297],
 'A6': {'D1': 385919484, 'D2': -115},
 'A7': 147,
 'A8': [0.2791943848133087, -0.6833739876747131, -0.49304112792015076]}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'XIY.\xd6\x1aD\xbe\xd3\xc4;\x89\xd6\x1d\x00\x00\x00[\x00\x03\x00e6n'
 b'\xb5\x10\x00\x00\x00\x07\x00\x00\x00h\x00\x02\x00\x84\x94\xcb'
 b'\xac\x98\x00\x00\x00\x04\x00\x00\x00\x86\xbf\x04\xb6\xc5\xc9\xcc?\xce-\x80'
 b'\xd46\xcf\xf0\x00\x00\x00\x02\x00\x00\x00\x96~\xed\rK\xd3\x9bO\xbe'
 b'\x04\xa3\x11\xbd\xbe[c\x9f\x86S\xe7J\x9b\xbf\xe1R#\x1bZ\xd0\xaevyw'
 b'\x8d*\x10\x18\xf5o,\x1a\xff\x9c\x85u\xac\x8c\x07Dx\xd9\xef\xc3T\x08W9'
 b'\xc3]\x03\xcexx<C\xdc\xd6X(A\xf5>yY\xd6\x10\x89\x85\x8f\xbd\x9a\x14\x81\xbf6'
 b'*\xe1')

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

{'A1': {'B1': 785783364,
        'B2': -0.4136064946651459,
        'B3': -30250,
        'B4': 29,
        'B5': {'C1': 74, 'C2': -101, 'C3': -0.5412765058777234}},
 'A2': [{'D1': 'vyw',
         'D2': 913224976,
         'D3': [-1926623208,
                -177263590,
                -6519435,
                -1400109244,
                2027548611,
                1409832761,
                -1017314354]},
        {'D1': 'xx',
         'D2': 2496375960,
         'D3': [1011080406, 1479033333, 1048140246, 277448079]}],
 'A3': -0.5184138417243958,
 'A4': -13876,
 'A5': {'E1': 0.23576364862458332,
        'E2': [-0.07523442059755325, -0.7115917801856995],
        'E3': [126, -19, 13, 75, -45, -101, 79],
        'E4': -0.12952829897403717,
        'E5': -0.09294774383306503,
        'E6': -1618586649}}

Пример 2

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

(b'XIY\x8b\xeeS\xac\xbe\x90\xfe\x0c\x87\xda\x08\x00\x00\x00[\x00\x02'
 b'\x00e\xae\x0b\xf6F\x00\x00\x00\x06\x00\x00\x00g\x00\x03\x00\x7f2{'
 b'\x0bw\x00\x00\x00\x07\x00\x00\x00\x82\xbfj/K\x95\x9d\xbf\xd7\xbdQ?\xe26\xfc'
 b'\x00\x00\x00\x02\x00\x00\x00\x9eEX\xea\xac2\xb8\xfc?`\xa1\x8e?[\x03{d'
 b'\x19qy\x89\xef?\xe9\xdb\xa1\xban\xd5\xdaxto\xce\xe1}}\xa6-\xd3c\xec\x17|u'
 b'\x91\xb1\x92\xaf\x92\x05\x9e\xb1W!+oks\xcb\x91\xe0 \x17\xb5\x0b\xe0e\xbf'
 b'\x1a7\x806S \xb3\xcd\xa5)\x8437\x8f\xfc\x1a\xb8s?e\x9dn\xbfT|s')

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

{'A1': {'B1': 2347652012,
        'B2': -0.28318822383880615,
        'B3': -30758,
        'B4': 8,
        'B5': {'C1': 137, 'C2': -17, 'C3': 0.8080605164784018}},
 'A2': [{'D1': 'xt',
         'D2': 2920019526,
         'D3': [1875829117,
                2108042707,
                1676416892,
                1972482450,
                -1349384802,
                -1319689941]},
        {'D1': 'oks',
         'D2': 846924663,
         'D3': [-879632352,
                397741024,
                1707022903,
                -2143923424,
                -1278368471,
                -2077018225,
                -65357709]}],
 'A3': -0.9147841334342957,
 'A4': -27235,
 'A5': {'E1': -0.370930015932444,
        'E2': [0.8969334363937378, -0.8300239443778992],
        'E3': [69, 88, -22, -84, 50, -72, -4],
        'E4': 0.8774651288986206,
        'E5': 0.8555218577384949,
        'E6': 1679389049}}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\nJFGQ;8\xeb\x1a\xf5\x8a\x85\x00!\xfa\x006\n$\xca\x924\xd2\x9c4\xf4\xd1\xe2'
 b"\xf9C\xba\xb8\xf2\xe1\xae\xa2*$m'\x8c2\xbc\xeb\x1a+@>A\xb5\xc1\xfd3Yn\x02"
 b"\xe2\x9c\xb0\\\xbe\xad\xbaM\rn:A\x00\x00\x00\x04\x00\x1a\xd4\x13\r'hH"
 b'\\h\xe2\xaf\x8b\xcb\x97\\\x00\x00\x00\x04\x00"\xd8\xcb\x1b3\xa1\x8f'
 b'=\x1d\x10\xd1E\xe4(B\x00\x00\x00\x06\x00*\tF\xef\xc0\xde\x90\xa0')

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

{'A1': 993585946,
 'A2': 62858,
 'A3': 2231378426,
 'A4': {'B1': {'C1': 28162,
               'C2': [{'D1': [58012, 45148, 48813, 47693, 3438, 14913],
                       'D2': [-11806, -1725, -17736, -3359],
                       'D3': -11245},
                      {'D1': [3367, 26696, 23656, 58031, 35787, 38748],
                       'D2': [-20830, 10788, 27943, -29646],
                       'D3': -10037},
                      {'D1': [6963, 41359, 15645, 4305, 17892, 10306],
                       'D2': [-17173, 6699, 16446, 16821, -15875, 13145],
                       'D3': 2374}]},
        'B2': [-17, -64, -34, -112, -96]},
 'A5': 10,
 'A6': 2651092086230365428}

Пример 2

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

(b'\nJFGQ\x1b>\x04\x9a\xf8\xac\xdd\x82_\x9d\x004\xf2/^e\xd5\xf0\xc3'
 b'x\x07\x8c\xbai\x98\xb5:/\x8cL\xbf\xaf\xaf\x08+\xd1vg\x98O\x12\xc9\x0b'
 b'\xad\x91\xfa0\xf3\xfb\xbbN\xf5\x87;\x10\xbdp\xee\x95\x11\xe8\x00\x00'
 b'\x00\x08\x00\x1a\x04\xcf~I\xca,\xaf\xb6U\xec8^I\xda\x00\x00\x00\x02\x00*'
 b'\x17\x8b\xa5Q\x82k\xc7Ow\xc8s\x87\x81\xf6\x00\x00\x00\x03\x00.\xe8\xfe.\xb1'
 b'\xc6[$')

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

{'A1': 457049242,
 'A2': 63660,
 'A3': 3716308893,
 'A4': {'B1': {'C1': -3077,
               'C2': [{'D1': [47950, 62855, 15120, 48496, 61077, 4584],
                       'D2': [-29510,
                              27032,
                              -19142,
                              12172,
                              19647,
                              -20561,
                              2091,
                              -11914],
                       'D3': 1231},
                      {'D1': [32329, 51756, 44982, 21996, 14430, 18906],
                       'D2': [26520, 20242],
                       'D3': 6027},
                      {'D1': [42321, 33387, 51023, 30664, 29575, 33270],
                       'D2': [-14069, -21103, -1488],
                       'D3': -5890}]},
        'B2': [46, -79, -58, 91, 36]},
 'A5': 242,
 'A6': 3413277537135196167}

Вариант №27

Задача №12

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

Структура A:

Поле Описание
1 Структура B
2 Массив int16, размер 7

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KYZ\x00t\x00z\x00\x80\x00\x86\x00\x8c\x00\x92e\x9d\x0b\xe9\x94#\x1ax\xac'
 b'\xd5\xfd\xddZ\x12F\x98,H~\x0b\xf5\xf4\xf3\xe4\x96\xfbG\x82W\x03f\x8e\x14'
 b'\xe6\x03E\xae\xbd\xa7\xb8\x81\x90 /x\xd1b\xa7\xfc6\n2\x19\xb7)N_.\x99\x88C'
 b'?mo\xf9\x8d\xba8\xb4C\xda\xcf]0V>a\xc99\xde\xe2\xbb\x02?\r\x07\xd4M\xae'
 b'(\xfaGQ\xe7\xa9\xb9\xff\x9f\xb9iB\xbfX8\xad\x07k\xbd#\xb0\x90c\xe2?N\xd6\xdc'
 b'\x15\xeb=\x9d?:\x85R\xbe\x10\xee\xf9\xbe\x0f?w\x02\xba\xa2\x9b')

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

{'A1': {'B1': [{'C1': -0.8446148037910461, 'C2': 1899},
               {'C1': -0.03996330499649048, 'C2': 25570},
               {'C1': 0.8079659938812256, 'C2': 5611},
               {'C1': 0.07678075134754181, 'C2': -31406},
               {'C1': -0.14153660833835602, 'C2': -16881},
               {'C1': 0.9648853540420532, 'C2': -23909}],
        'B2': {'D1': 26013, 'D2': [11, -23, -108, 35, 26, 120, -84, -43]},
        'B3': [18292876295989111880,
               9082623505935406843,
               5152776595782374630,
               235786685092757904,
               2319205173817769014,
               734677963677523758,
               11063166424333678989,
               13418673293277224240],
        'B4': 86,
        'B5': 0.22049416601657867,
        'B6': [-34, -30, -69, 2],
        'B7': 0.5509006977081299},
 'A2': [19886, 10490, 18257, -6231, -17921, -24647, 26946]}

Пример 2

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

(b'KYZ\x00t\x00z\x00\x80\x00\x86\x00\x8c\x00\x92\xbb\x11\xfb\xce#\xd8J\xb1M'
 b'\xb4:\xb7U\xb7\x1bD\xf3\x913\xa8\xa9?\xc0\x0f\xd6\x90\x7f\xb0\xf5'
 b'\x90\x1f\xef\xe5\\\x1b\xc1\xad\x1f$-\x8d\x8b-\xe4#$\xc87\xc6\xe8\xc4\xfa\x9d'
 b'\x9b\xed\xb4\x89\xe2\xd7\x84<\x10Z\\\xe4\x15\x83+\xa6\xa7L$l!\x87\xbe\xf2'
 b'\xad8\xebrD\xbd>\xe2}>\xb4\xb9\xbc\x89\xa1L\x08\xd0\xc4P\x80\xc4P\xf4?-Q\x86'
 b'\xd1\x08\xbf\x14!\x86\x80x\xbf[h\xf1;\xc0>\xbe1AV>?+?\xcbj\xde\xbe\x9d'
 b'Wo\xf1\xa9')

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

{'A1': {'B1': [{'C1': 0.6770251989364624, 'C2': -12024},
               {'C1': -0.5786365270614624, 'C2': -32648},
               {'C1': -0.8570700287818909, 'C2': 15296},
               {'C1': 0.37146952748298645, 'C2': 22078},
               {'C1': 0.6689421534538269, 'C2': 27358},
               {'C1': -0.3073076903820038, 'C2': -3671}],
        'B2': {'D1': 47889, 'D2': [-5, -50, 35, -40, 74, -79, 77, -76]},
        'B3': [4230944619862750097,
               3722411183292012176,
               9201124038077834588,
               2000070058791767435,
               3306806667281680104,
               14193830468645063138,
               15529603456013493269,
               9451831480434322465],
        'B4': 135,
        'B5': -0.47397780418395996,
        'B6': [-21, 114, 68, -67],
        'B7': 0.4423617720603943},
 'A2': [-19271, -17271, -24244, 2256, -15280, -32572, 20724]}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'BMFNRH\x00\x00\x00\x03\x00NG\x00\x02\x00\x00\x00r\x99\x00\x00\x00\x02'
 b'\x00\x00\x00z\x8e\xccZ\xe1\x01\x17K\xed\xbf\x1c\x1ezY\x1a\x00\x03\x00|\xeaZ'
 b'\xcf21\xf69\x08\x15\xceUr\xce\xaf\x87\x0f\xd2\xbe2\rq\xde\x8d\x8f\xbf\xeb'
 b'-\xc3\xfc_\xa9H\\eK\xb8?\xe6\xf0\x98O:H\xf8\xab\xb5|\x05?\xebF\xa0\xba*'
 b'\t\xe09\xb7pZ\xbf\xb3\x12\x94\xf0\xfa\x7f\x00>\xf3\xf3\xb5?p#\x0bqx'
 b'\xbfW\xe3.?C\xf1\xe5?d\x1d\xb8')

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

{'A1': {'B1': {'C1': 21064,
               'C2': [{'D1': 1550142392, 'D2': 0.7168695018210931},
                      {'D1': 2880797701, 'D2': 0.8523715625781811},
                      {'D1': 968323162, 'D2': -0.0745022857977311}],
               'C3': {'E1': 71, 'E2': [0.4764687120914459, 0.93803471326828]}},
        'B2': 153},
 'A2': 'qx',
 'A3': -8157044902642365459,
 'A4': -0.6098400354385376,
 'A5': {'F1': 89,
        'F2': 26,
        'F3': [-0.8433102369308472, 0.7654097676277161, 0.8910784721374512],
        'F4': [16887037567272630536, 1571287271581124367],
        'F5': 53950,
        'F6': 839741918,
        'F7': -29297,
        'F8': -0.8493366173909545}}

Пример 2

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

(b'BMFN\xbe\xf2\x00\x00\x00\x03\x00N\xe4\x00\x02\x00\x00\x00r\x81'
 b'\x00\x00\x00\x07\x00\x00\x00z\xd0\x00!:\xba\xdfl2?_t~\x87K\x00\x02'
 b'\x00\x817\x02z\x95}\x83\x0cn6\xede?\xc5\xbb\xc4)\xba\x90Sy\x1b\xe7'
 b'\x89\x86\xbf\xe3R\xde\xbc\x8f\xe7d\x95\x03\x95<?\xde\x8eqO\x83\n\x18\x9c\xb7'
 b'\x84\xcb\xbf\xe0YH\xc1\xd4A\xce\xfba\x010\xbf\xe5`#\xd4>\n\xb0\xbd\xf5'
 b'\xd3O\xbf(\x8a hygngqt\xbfq\xa86>\xf5\xbf~')

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

{'A1': {'B1': {'C1': -16654,
               'C2': [{'D1': 2500039996, 'D2': 0.47744400753814054},
                      {'D1': 2629272779, 'D2': -0.5108989511227777},
                      {'D1': 4217438512, 'D2': -0.6679858346327219}],
               'C3': {'E1': -28,
                      'E2': [-0.1200319454073906, -0.6583576202392578]}},
        'B2': 129},
 'A2': 'hygngqt',
 'A3': -3458727977693516750,
 'A4': 0.8728712797164917,
 'A5': {'F1': -121,
        'F2': 75,
        'F3': [-0.9439729452133179, 0.4799765944480896],
        'F4': [3963865404513913966, 3957930972103296041],
        'F5': 47760,
        'F6': 1400445927,
        'F7': -30330,
        'F8': -0.6038659746984476}}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'PBBF\xfd\x000\xa8\r\xf5}{z\x00R\xe6\x95\x00\x00\x00z\x00\x00\x00\x94\xd5;@'
 b'j\xe5\xf8\xc6\xea\n\x1e\x1e\xaf\x0e\xdc~\x95\xbc\x00\x03\x00\x00\x00\xa2'
 b'2|\xc5\x80\xdd`\xe0\xb0?\xc5t>o\xd5\xfch\xcb\x1d=\xd6\xe2\x9c\xd5\xbf'
 b'\x95\x93\x81thivgss\xe4!\xbc\x9a>z\x84h\xda\xd3\x14\xfc?1\xd9\xd1\x83\xa8'
 b'\xff\t\xfb\xc5\xc903\x1d\xe1t\xd6o\x1b\x9d\x93g\xe0\xc4&\xdcH\xe6\x00\x06'
 b'\x00\x00\x00b\x8c\x0co\x02U\xa3\xe7\x9f\xfa\x13\xff\xe2^\xb8^\x90AVm\xab'
 b'\x00\x03\x00\x00\x00\x88*\xda\x8e\xa5\xcf?\xc4XO\xd8\xd6\x9a\x9d\xc5'
 b'\xf7)\xdf\xf7\xdd\x84')

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

{'A1': {'B1': 3637999756269117616,
        'B2': 0.16760998211609324,
        'B3': 203,
        'B4': 7485,
        'B5': -689791787,
        'B6': -1080716415,
        'B7': 'thivgss'},
 'A2': -88,
 'A3': 13,
 'A4': {'C1': 62845, 'C2': 31610},
 'A5': {'D1': 58401,
        'D2': 48282,
        'D3': 0.24464571475982666,
        'D4': 3671266556,
        'D5': 0.6947298645973206},
 'A6': -6507,
 'A7': [{'E1': [-2086076663,
                -70923984,
                857596276,
                -697361507,
                -1821908796,
                651970790],
         'E2': -8355181152861689953},
        {'E1': [-99352606, 1589141136, 1096183211], 'E2': 3087937337313707096}],
 'A8': {'F1': [3577430122, 3858286314, 169746095],
        'F2': 14,
        'F3': 3699283388,
        'F4': [1339610778, -1647970519, -537404028]}}

Пример 2

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

(b'PBBF\xfd\x000!X\x93Y^e\x00Ru\x02\x00\x00\x00~\x00\x00\x00\x98\xd9I\xd5'
 b'\xd8\x82\x01\x97\xa1\x86\xd2\x15\xac\xe7u\xea\xfcg\x00\x02\x00\x00\x00\xa6'
 b'jl\xdc\xb3\xb1\xadm\x93\xbf\xcdg\xb2\x93\rB0\xc44w\xc4)\xe8\x8c\x97'
 b"\xe1\xa5Tphqsgkw!\xc9x&>@\xac+\xe2K\x8ed=\xab\xd1\x97\x9c_a\xee\xe0J'x\xa7u"
 b'I\x1bS\xe3/\xeaO\xb3K\xf3\x9a\xec\xff\x0b\x7f\x1e\xd6\xc9\x00\x07'
 b'\x00\x00\x00b\xe5\x0e\x86C\x94\xafB\x93\xc4\xc1\x90#T9[\xbf\xdb\n\x1c\xc3'
 b'\x00\x03\x00\x00\x00\x8c(\x8a[\xbb\xca\x07 kv\x94\xf2\xc2\xf1\xa1\xf7O')

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

{'A1': {'B1': 7668746929843301779,
        'B2': -0.22972709827674143,
        'B3': 196,
        'B4': 13431,
        'B5': -1003886452,
        'B6': -1746819756,
        'B7': 'phqsgkw'},
 'A2': 33,
 'A3': 88,
 'A4': {'C1': 37721, 'C2': 24165},
 'A5': {'D1': 8649,
        'D2': 30758,
        'D3': 0.18815676867961884,
        'D4': 3796602468,
        'D5': 0.08389585465192795},
 'A6': 29954,
 'A7': [{'E1': [-1671470610,
                -532011144,
                -1485485797,
                1407397866,
                1337150451,
                -1695744245,
                2132727497],
         'E2': -1941466764534660461},
        {'E1': [-993947613, 1413045183, -620094269],
         'E2': 2921248170409664619}],
 'A8': {'F1': [3645494744, 2181142433, 2261915052],
        'F2': -25,
        'F3': 1978334311,
        'F4': [1989472962, -241043633]}}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x90NPZR\xd06\r\x1b\x0b.\xa3b7\x00\x00\x00J\x00\x00\x00\\\x00\x00\x00ca\r'
 b'>\xf6\xa5\\A\xf6\x7fH\x8ep\x00D\x06=,g\xd5\xe0?\x9bG\x08?oedp\x04'
 b'\x00\x00\x003\x00\x00\x00\xa8n\x95\xb7\xbf$Eepts\x04\x00\x00\x00F\x00'
 b'\x00\x00\xc09\x11\xa7<\x1b\xeffpu\x03\x00\x00\x00Y\x00\x00\x006p\xf4\xf0'
 b'}4 \x81\xb2Z\xf7\x7f\xbf\xa7{\x93\xccl(\xa0\xfa\xeaH\x9a:\xbf\xb8\xf0'
 b'U\xbfW\x9f\x0b\xbf\xe5\xb3\x05\xbe^\xbd\x9e\xbd\xd6\xf0e>:M\xec>\xd8\x9c'
 b'r\xd1w\x02\x82/\x1ae\xf6\x1b\x05\x00k\x00\x00\x00\x91\xc6\x19@')

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

{'A1': 7107575262154143440,
 'A2': [{'B1': 'oedp', 'B2': 28328, 'B3': -107, 'B4': 49079, 'B5': 17700},
        {'B1': 'epts', 'B2': 14784, 'B3': 17, 'B4': 15527, 'B5': -4325},
        {'B1': 'fpu', 'B2': 28726, 'B3': -12, 'B4': 32240, 'B5': 8244}],
 'A3': 0.13806681334972382,
 'A4': -8194158826365344266,
 'A5': {'C1': 42943,
        'C2': {'D1': -1514722229172268165,
               'D2': [-0.7289166450500488,
                      -0.8357043266296387,
                      -0.545400083065033,
                      -0.13056905567646027,
                      -0.07750962674617767,
                      0.22455152869224548,
                      0.46152669191360474],
               'D3': -781017896,
               'D4': 2014909046435480183,
               'D5': [129, 178, 90, 247, 127]},
        'C3': 1075431057},
 'A6': 0.526050173190193,
 'A7': 0.5323426127433777}

Пример 2

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

(b'\x90NPZR2\xef\x8a\xd6<\xe0X\x025\x00\x00\x00G\x00\x00\x00X\x00\x00\x003T9'
 b'\xbf\xe3^\xe0\x1d\xa4\xf3\x92\x8ak\x00\x00\nK""bc\xbf\xf6\xa3_\xbff'
 b'e\x02\x00\x00\x003\x00\x00\x00\xa6\x7fX\xd7(\x9c@lwb\x03\x00\x00\x00D'
 b'\x00\x00\x00\xb5\xf3*\x0bp+\x14kv\x02\x00\x00\x00V\x00\x00\x00\xd7.\xe9\x11'
 b'?\xc8\xd4\xc5\x9e\x16\xca\xa2J\xf0\xb3\xe3G!\xaa\xd1b\xabw\x13?\x18\x9fg'
 b'\xbf\xc0D\xc9>\xcb\xf1\x01\xbf\xc2n*>\x0e\xb8^?\xf5\x8d7>\xdf{!\xe4I\x08\x8d'
 b'\xca\x17\xf6\xb1\xa9\x04\x00g\x00\x00\x00\xbd\x81\xbcj')

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

{'A1': 169131537928482610,
 'A2': [{'B1': 'fe', 'B2': 32678, 'B3': 88, 'B4': 10455, 'B5': 16540},
        {'B1': 'lwb', 'B2': 62389, 'B3': 42, 'B4': 28683, 'B5': 5163},
        {'B1': 'kv', 'B2': 11991, 'B3': -23, 'B4': 16145, 'B5': -11064}],
 'A3': -0.7239410281181335,
 'A4': -8461432863674310941,
 'A5': {'C1': 19106,
        'C2': {'D1': 7120659545766212592,
               'D2': [0.5760447382926941,
                      -0.9047713279724121,
                      0.39310264587402344,
                      -0.5075957179069519,
                      0.16643813252449036,
                      0.8699959516525269,
                      0.17925246059894562],
               'D3': -467567649,
               'D4': 12227825045330528329,
               'D5': [197, 158, 22, 202]},
        'C3': 1790738877},
 'A6': -0.0023661295584542774,
 'A7': -0.8735955953598022}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xbbUUJn\x00\x00\x00\x03\x00&\xda\x0e\x9b3\x00\xd9n\x99\xec\xe0n\xf7z'
 b'\xa9\xfa\x00\x04\x00\x00\x00)\x00\x00\x00\x04\x00udlqgwls\xc9\xf9e'
 b'\x19\x00\x00\x00\x02\x00\x00\x00-JLI\xe7@8k\xc5\xa5\xac\x00\x00\x00\x03\x00'
 b'\x00\x00>\xa0\xb7\xfc\xd0\xa4w\x99\xdb\xf0\xec\xe9v\x00\x00\x00\x05\x00'
 b'\x00\x00P\xcd\x1c\xbb\x96\xfdcA\xff\x7f\x00\x00\x00\x02\x00\x00\x00d'
 b"\x89\xe65'\xe6\x00\x00\x00/\x00\x00\x00A\x00\x00\x00U\x00\x00\x00f")

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

{'A1': {'B1': {'C1': 110,
               'C2': 'dlq',
               'C3': 218,
               'C4': 3739,
               'C5': 3675176364986392686,
               'C6': 247,
               'C7': 31401},
        'B2': -6},
 'A2': 'gwls',
 'A3': [{'D1': 25881, 'D2': [-55, -7], 'D3': 1246513639, 'D4': 64},
        {'D1': -23124, 'D2': [56, 107, -59], 'D3': -1598554928, 'D4': -92},
        {'D1': -5770,
         'D2': [119, -103, -37, -16, -20],
         'D3': -853754986,
         'D4': -3},
        {'D1': -129, 'D2': [99, 65], 'D3': -1981401817, 'D4': -26}]}

Пример 2

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

(b'\xbbUUJ\xa0\x00\x00\x00\x02\x00&\x1dV\x97 \xcdK\x10\xaf5\xff>\x05}'
 b'\xc6C\x00\x04\x00\x00\x00(\x00\x00\x00\x02\x00PbshfdkMM\x83.\xaa\xb2\x00\x00'
 b'\x00\x04\x00\x00\x00,\xf1\xc3\xb5\xe6\x0cS\xffn\xdc\x00\x00\x00\x02\x00'
 b'\x00\x00?/p\\\xe6\xc2\x00\x00\x000\x00\x00\x00A')

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

{'A1': {'B1': {'C1': 160,
               'C2': 'bs',
               'C3': 29,
               'C4': 22167,
               'C5': 2363627914470489918,
               'C6': 5,
               'C7': 32198},
        'B2': 67},
 'A2': 'hfdk',
 'A3': [{'D1': -21838, 'D2': [77, 77, -125, 46], 'D3': -238832154, 'D4': 12},
        {'D1': 28380, 'D2': [83, -1], 'D3': 795892966, 'D4': -62}]}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x93BDBM@\xd9\x114.\t\x90M\x94\x82\x00\x00\x00\x1d\xb9\xb5\x08\x13\xdd'
 b'H\xd1\x15aa\x00\x00\x00\x02\x00\x00\x00\x1b\xe9\xfd\x9f\x08M\x8a\x9b\nq\xbeS'
 b'\x02\xcfU\xeb\xc0\x82\xb3<\xbf4.\xb9\x98\xe3\x0b+[aX\xa1\x9d.\\\xbf'
 b'\xe0\x9f\xff\xf0;\xacIq\xdcHD\xff\x91t>\x87u\xf7\x87\xda\x82\xa0\xc2R'
 b'h\x16\xa1\xd3W\x0f\xe6s\x81C\xad\x1a\x16!s2\x7f\xec\xbe\xee~\xbd`\x1epmD\xb3'
 b'\xe1\xf6\xa2j\x81\xd6P\xcf\xebr\x01b\xe6\xb9\x1e?\x93"\'E\x16!ra\x10Fp\x80'
 b'\xfbAH\x97\xf6J6\xaen\x96\xfcT\xe2\x12\xbe\xe7[}')

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

{'A1': 1087967540,
 'A2': 46,
 'A3': 160451988,
 'A4': -126,
 'A5': {'B1': 'aa',
        'B2': -23,
        'B3': 253,
        'B4': -24824,
        'B5': {'C1': 1300929290, 'C2': 113, 'C3': -0.20606540143489838},
        'B6': [{'D1': 1441513602,
                'D2': -19652,
                'D3': -0.7038379311561584,
                'D4': -7430082679386580831,
                'D5': [2637061311, 3768582128, 1001146737, 3695723775],
                'D6': [-1854652793,
                       1979156442,
                       -2103393710,
                       1746313683,
                       1460659827,
                       -2126271206]},
               {'D1': 371290930,
                'D2': 32748,
                'D3': -0.4658106863498688,
                'D4': 6926096891548787190,
                'D5': [2724889046, 1355803506, 23258809, 507482914],
                'D6': [658839073,
                       1918963782,
                       1887501121,
                       1217918538,
                       917401238,
                       -61545966]}],
        'B7': -0.4518698751926422},
 'A6': -5065133324498317035}

Пример 2

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

(b'\x93BDBM\xb5;\xae\xc0\x98-\xe8{7\xe7\x00\x00\x00\x1d\x8d\x11\x93\xb6s'
 b'\x01u\xfdda\x00\x00\x00\x02\x00\x00\x00\x1b\x08\xf4a~\x02:\xc8\xe7\x91?w'
 b'A\xf2\x99\xb3\x8a\xf5\xd4\x94;\x96Q\xd0\xf8\xb6b\xde\xef\x06\xb5\x0e'
 b'8\xc9\x87\xdd%n\x8d\x01n\xa12\x19\xd0\xc5\x9b\t\xf4\x18\xe7\xcf\x86*\x95}'
 b'\xe5\xbc\xcb\xfc\xe1U\xcb\xb6\xae8O\xb3\x8c\x19[W\xda\x12\xf1~D\x86=e'
 b'\xb3\x12\x8d\xce\r\xe6\x9c\x03M\x93\xda\xb0\x16\x8a)\xdf\xd5u\xbe\xa8'
 b'\xae\xe1\xc1? SA\x0c0\xb9u\xfb\xac\x7f\x08\xb9\x85\x02\xaf\x0b[d4o\x07B\x9b0'
 b'\xe7\xe3>\x8c\xffQ')

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

{'A1': -1254379840,
 'A2': -104,
 'A3': 770210615,
 'A4': -25,
 'A5': {'B1': 'da',
        'B2': 8,
        'B3': 244,
        'B4': 24958,
        'B5': {'C1': 37406951, 'C2': -111, 'C3': 0.9658499956130981},
        'B6': [{'D1': -1716286731,
                'D2': -11116,
                'D3': 0.004587389528751373,
                'D4': -525123596909628146,
                'D5': [952731613, 628002049, 1856057881, 3502611209],
                'D6': [-199694385,
                       -2044029571,
                       -440611844,
                       -514470986,
                       -1372041293,
                       -1944495273]},
               {'D1': -636292738,
                'D2': 17542,
                'D3': 0.05607897788286209,
                'D4': -8228624185048216173,
                'D5': [3668973194, 702535029, 3198725857, 3242139731],
                'D6': [1091317945,
                       1979427967,
                       146375938,
                       -1358210204,
                       879691586,
                       -1691293725]}],
        'B7': 0.27538540959358215},
 'A6': -8281675827934824963}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x16QWQL\x82gU\x91\x15\x05\xea?\x05\x00\x00\x00J\x00\x00\x00\xb7*\xc2'
 b'\xb8m\r\xdfSR\xeb\x9e\xf3\x14\xc3\xec\x80\x87\x9e\xaakl\xb2\x9e{\xf4\xa2\x06'
 b'@\xe0\x90fl\x7fm\x00?\xc3\x84\x94\x90\xe4\xca\xd0P\x81\xb3\x88\xc7\xad\\\xf6'
 b'+\x13\xea\x02\x1c\x06\x008\x00\x8fb\xb3\x04\x00>\x00\xf93\x87\x04'
 b'\x00B\x00\x06\x8a\x95\x02\x00F\x00\xc9\xd2P\x02\x00H\x00\xab\xd2^'
 b'\xf0\xda\x17\x1a\xd1\xd1\xc8L\xf8\x8b\xee\xc2\x0b+\xf0<\x8c5?hN+\xa8\x07')

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

{'A1': {'B1': 0.8131206358477672,
        'B2': [{'C1': 234, 'C2': 7170, 'C3': [63, -61, -124, -108, -112, -28]},
               {'C1': 143, 'C2': 45922, 'C3': [-54, -48, 80, -127]},
               {'C1': 249, 'C2': 34611, 'C3': [-77, -120, -57, -83]},
               {'C1': 6, 'C2': 38282, 'C3': [92, -10]},
               {'C1': 201, 'C2': 20690, 'C3': [43, 19]}],
        'B3': [-1195234633,
               1407126893,
               -207688878,
               -2131967212,
               1806343815,
               2073997932,
               1074176756]},
 'A2': -28448,
 'A3': [102, 108, 127],
 'A4': {'D1': -3379362341285080405,
        'D2': 847501964832721105,
        'D3': -4053,
        'D4': 60,
        'D5': 1748972940,
        'D6': 128461646}}

Пример 2

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

(b'\x16QWQL\xa6\xb2\xe9\xd2\xd1\xfa\xee?\x03\x00\x00\x00A\x00\x00\x00$z\x01'
 b'\xcc8\xfa\xc6.\x0bOb\x9e\x8a\xeb\x9c\xcb\x10\x89\xb8\x18\x8d\x18\xa5F\xe1,o'
 b"p\x19$J\x9b(V\x00P'o\xae\x87\xf55\x14\xc3J\x9d\n\x02\x008\x00"
 b'\xfb\x1e\xd4\x03\x00:\x00\x9e\xac\x8d\x04\x00=\x00\xf02~\x18a\x0388\x98R'
 b';is\xf9\x16+\x943\x9d\xd2k\xfc\x04\xb1S\x8dl')

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

{'A1': {'B1': 0.9681176299469214,
        'B2': [{'C1': 74, 'C2': 2717, 'C3': [80, 39]},
               {'C1': 251, 'C2': 54302, 'C3': [111, -82, -121]},
               {'C1': 158, 'C2': 36268, 'C3': [-11, 53, 20, -61]}],
        'B3': [-872318428,
               784792120,
               -1637724405,
               -878908534,
               414746896,
               1185224845,
               1886334177]},
 'A2': 9241,
 'A3': [74, 155, 40],
 'A4': {'D1': 4050991580377395952,
        'D2': 3104943267200586392,
        'D3': 13204,
        'D4': 157,
        'D5': 83651538,
        'D6': 1821201329}}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'OKZOc\x90\xbe\x02\x00\x00\x00\xb6\x00\x97\xe5\xb5u\xe3X\xa3\xa6\x02\x00\xbe'
 b'\x00\xd3\xeb\x95\x18\xf2\xbfP2`\n\x92\xbd\x0c\xe8?\xd9\xc7r\x9dCa\xf4\xe8'
 b'\xe2?6m\xf9\xf2\xe89\xe3\xbf\xb5\x94G\x02\x1c#A\xccV?\xf3\xd8.\x95\x1bF\xc4v'
 b'\x88\x81Z\xf2}\xa1?f\x8e\t\x97\xba:\xfc\xa3\xf6af*\x00\x00\x00:\x87'
 b'\xde=7\xe5\xc0D\xc4y\xa4\xaa@\x00$\xf1C\x88\xe4\x0b\xdf?\xea(\xc6#'
 b'\x86\x12\xe2\xbf\x8b "_{\xba\xda\xcf\xe9=k\xf3"\x13z\xae\xb6\xb3\xef\x15'
 b'\xceM\x89g)\xf24K\xdbR\xd8\xa0\xe8\xce\x8e>p\x00\x00\x00\xa7<\x93\xd8'
 b'X\n\xde\x95>\xfd\x15-\x86\x00^\x00\x00\x00\xa4\x00\x00\x00\xa4\xd8')

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

{'A1': {'B1': -0.2820076644420624,
        'B2': [{'C1': {'D1': 0.5909368419351451,
                       'D2': -0.6008190866081466,
                       'D3': [38069, 583, 8988]},
                'C2': 1037993786,
                'C3': 12296086766502339895,
                'C4': {'E1': 0.8390541672706604,
                       'E2': [8558042276191721715,
                              7367785077710422408,
                              17772325883702872462],
                       'E3': 97,
                       'E4': 102}},
               {'C1': {'D1': 0.4851008730618267,
                       'D2': -0.5647612284385819,
                       'D3': [8331, 24354, 47739]},
                'C2': 3633527975,
                'C3': 3248781151461837400,
                'C4': {'E1': 0.11416597664356232,
                       'E2': [12949729617880740715,
                              17449592070637229551,
                              14909343417373510452],
                       'E3': 142,
                       'E4': 62}}],
        'B3': 12007538765455549847,
        'B4': [-92, -40],
        'B5': [211, 235, 149],
        'B6': 1354756632},
 'A2': 0.7515552379945858,
 'A3': -14375}

Пример 2

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

(b'OKZ\xaf0\x97>\x02\x00\x00\x00\xb6\x00K\xbb\x89X~\x92\xb8\xc0\x02\x00\xbe'
 b'\x00\x9eVwr0\xe9@\xf8\xb3\xbb\xf6\x8a\xf7\xd8\xbf\x06W("\x95\x93\xad\xa1'
 b'\xcc?\\\x91\xb2xp\xb1\xdb\xbf\xf7\xad\x88\xd8\x9cu\x07\xc0\x07\xbfG\x7fG\x88'
 b'\xa6\xfe\xf2\x9d\xc2[\x1a\x82\xbfuwA\xa9\xf1\x91f`Q\xebjj\x9f*\x00'
 b'\x00\x00m\xd0\x8f\xe1\x90\xf5\xe0|h#\x19\x07@\x000%\xdeulC\xc6\xbf\xe8X@\x10'
 b':\xda\xe9?TIM\x82\x9a\x92\x1bC7\xbf\xa7\x0fXuu!_\xcc\x91\xad`\xea=\xff'
 b'#Y\x13^\xd3\xdd\x8c\xea\xc5#f?p\x00\x00\x00w^\x8a\x05\x93E\x9ez'
 b'\xcd\xbb\x99\x13\x86\x00^\x00\x00\x00\xa4\x00\x00\x00\xad\x9b')

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

{'A1': {'B1': 0.29529330134391785,
        'B2': [{'C1': {'D1': 0.22368402200869864,
                       'D2': -0.43270503794544424,
                       'D3': [44535, 55432, 30108]},
                'C2': 3784298605,
                'C3': 511478964361950608,
                'C4': {'E1': -0.5302738547325134,
                       'E2': [11381439199523077959,
                              4717368600075852738,
                              7704341062026916265],
                       'E3': 106,
                       'E4': -97}},
               {'C1': {'D1': -0.17393260722409698,
                       'D2': 0.8078890149506863,
                       'D3': [18772, 33357, 37530]},
                'C2': 92954231,
                'C3': 1412366449357243795,
                'C4': {'E1': -0.7158676981925964,
                       'E2': [14726526094888406951,
                              6423258134950751633,
                              2577724252477414931],
                       'E3': 102,
                       'E4': 63}}],
        'B3': 13887010522345880395,
        'B4': [-83, -101],
        'B5': [158, 86, 119],
        'B6': 1089024114},
 'A2': -0.3901088151458789,
 'A3': 22278}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KHCQE#Zck\x00\x00\x00H\x00\x00\x00p\x00\x00\x00\x99\xfb\x00\xa33sf<'
 b'\xd8\xe5\xb2\x0b?\xc5\x07\x92d\xf5Hp;-nb>!tu=\x82\xe1X\xbfZ7\x12?Q\xcaN'
 b'>\x9f\xea\xb0\x1aR\x82\xbd\xe2\xce\x90\xcc?b\x93\x88\x00\x02\x00*\x00,bk'
 b'\xbe \xef\x18\xbeQm\xb5?.\r\xd4\xbfA\x04\xd4?\x1ep\xa8\xd2\xa1r]\xfbRC\xd9'
 b'?gU/\x00\x02\x00R\x00Tkkq\xbeTC^\xbf\x13\xad*?\x1a}\xfb>p\xd9'
 b'\xc1\xbd\x85\xc2\n\x91\xd4/#XgAq\xbe\xc2f\xdd\x00\x03\x00z\x00}>'
 b'\xd9\xe9s\x84v')

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

{'A1': 9050,
 'A2': 25451,
 'A3': [{'B1': 0.885063648223877,
         'B2': 'nb',
         'B3': {'C1': [0.15767081081867218,
                       0.06390637159347534,
                       -0.8524028062820435,
                       0.8194931745529175,
                       0.31233739852905273],
                'C2': 1896722145142018252}},
        {'B1': 0.9036435484886169,
         'B2': 'bk',
         'B3': {'C1': [-0.15716207027435303,
                       -0.2045200616121292,
                       0.6798985004425049,
                       -0.7539799213409424,
                       0.6189064979553223],
                'C2': 15177537967189279705}},
        {'B1': -0.3796910345554352,
         'B2': 'kkq',
         'B3': {'C1': [-0.2072882354259491,
                       -0.5768610239028931,
                       0.6034848093986511,
                       0.23520566523075104,
                       -0.0653115063905716],
                'C2': 10508075659415732593}}],
 'A4': 251,
 'A5': {'D1': 0.42560920119285583, 'D2': 33910},
 'A6': [863200828, -656035317],
 'A7': 0.16429357461544525,
 'A8': 15149}

Пример 2

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

(b'KHCQE# hD\x00\x00\x00I\x00\x00\x00q\x00\x00\x00\x9a\x86\x00\xa4\n\x1fVd'
 b'4>p\x98\xbf\xd2\\r\x9b0Z\x08:\xd5wev>\xc3W>\xbd\xc3S\x06?$ld\xbfbI'
 b'\xc6\xbe\xd5\x97\x02\x7fLt\x85\xdc\xad\x1ff\xbf\x11\x88\xaf\x00\x03\x00'
 b"*\x00-il?F\x8a'>\x933\x8f\xbf3\x05\xdf\xbfn\xb4\xd2>\x8f8\xbbH\x86W"
 b'\xa6\x8b1\xfd\xc6?P\x16\xe2\x00\x02\x00S\x00Uhxb>.\xea\xf1>n\x94V\xbes'
 b'YH\xbe\x11\x04:?9{\x8cj\xb6\x16\xa2\xf6Dt\xe9\xbf\x0c\x846\x00\x03\x00{\x00~'
 b'\xbfh\xb2\xf9\xa5\x1f')

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

{'A1': 8992,
 'A2': 26692,
 'A3': [{'B1': -0.5684918761253357,
         'B2': 'wev',
         'B3': {'C1': [0.3815249800682068,
                       -0.09537319839000702,
                       0.6422789096832275,
                       -0.883938193321228,
                       -0.4171677231788635],
                'C2': 9172834659328663398}},
        {'B1': 0.8128491640090942,
         'B2': 'il',
         'B3': {'C1': [0.7755455374717712,
                       0.2875027358531952,
                       -0.6993083357810974,
                       -0.9324465990066528,
                       0.2797296941280365],
                'C2': 5225960790421536198}},
        {'B1': -0.5488923788070679,
         'B2': 'hxb',
         'B3': {'C1': [0.17081810534000397,
                       0.23298773169517517,
                       -0.23764526844024658,
                       -0.14161768555641174,
                       0.724541425704956],
                'C2': 7689358302953895145}}],
 'A4': 134,
 'A5': {'D1': -0.9089809060096741, 'D2': 42271},
 'A6': [169825892, 876507288],
 'A7': -0.28689255862391905,
 'A8': 15061}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'\xe9TETG\x00v?\xc1\x83*/g h\xdf\xa9\xc7\x04\x9fr\xdb\xb1\xbf\xebE\x8bG'
 b'\xb6\xb2\xfc\xbfg\xfcw?l\x00R\xbf\xe2k\xb1}\x9b6\xb6\xbe\xc5gY?C*gDn9hD'
 b'H\xed\x80\xbf\xee\x0c\x97\xdb\xd8\xc6\xa2?\xe7\xb5+\xdd,\xf9\xda\x81'
 b'\xe7\xfaN\x00\x02\x007\xf3\x84P\xd8\x00\x02\x00W\x00\x02\x00Y\xfb'
 b"\x10'\x88\xbfw\xe8\x13[\xe3c+\xc6\xfe\xea\xbeM_S\x00\x17\x00'\xcd\x1f"
 b'\x96\xf9\xd2q\x91\xe3\x11\xb8\xbf\x06\xc1?c\xe9z\xa6\x0f\xab\x94\xa7'
 b'\xdd]\xfa\x00?\x00[')

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

{'A1': {'B1': [{'C1': -0.8522392655046072,
                'C2': -0.9061960577964783,
                'C3': 0.9218798875808716},
               {'C1': -0.575646157574474,
                'C2': -0.38555410504341125,
                'C3': 0.7623657584190369}],
        'B2': -3666045571934613021,
        'B3': 297320198,
        'B4': 193,
        'B5': 0.8902813196182251,
        'B6': 11965971389906509306,
        'B7': {'D1': -0.9390372556574287,
               'D2': {'E1': 0.7408656425321241,
                      'E2': -2115503538,
                      'E3': [1148074344, 1145630080]}},
        'B8': {'F1': [243, 132],
               'F2': [80, 216],
               'F3': -82827384,
               'F4': -0.9683849215507507,
               'F5': [91, -29, 99, 43, -58, -2, -22],
               'F6': -0.20055894553661346}},
 'A2': {'G1': 0.1368153315982028, 'G2': -2330112509518619727}}

Пример 2

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

(b'\xe9TETG\x00z?tq\xed4\x9bH\x00D\xef)8j\xf4\xa3\xef\xbf\xe6@\x0e&'
 b'8\x06\x16\xbfw\x8e\x06<\xfd\x04`?\xe0\x07Q\xfc\xdd\x19.?\x17\xa3\x10\xbe'
 b'\xe5"+.*\xe5\xc5\xf8\xa4\xcbv\x85\xb8\x14\x84?\xda\xfdO\xa6\x0f\xfb@?'
 b'\xcb{-\x18[\xa2h\x95\xe6\x947\x00\x03\x007\xa6\x90\xa3W\x00\x02\x00[\x00'
 b"\x02\x00]O\xcb\xea\xbb>'n\xd3\xf1\xe7\xc9\x03\r\\\xea\xbe\x99C\x80\x00\x17"
 b"\x00'\x11\xe0u\xbb5JX\xe3}\x80b\xae\x97>\xd3\xce\xc9tn\x05\xd0\xa4"
 b'\x9a0\xc8\x00C\x00_')

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

{'A1': {'B1': [{'C1': -0.6953192469083571,
                'C2': -0.9670108556747437,
                'C3': 0.03088587522506714},
               {'C1': 0.5008935869925943,
                'C2': 0.5923318862915039,
                'C3': -0.44752630591392517}],
        'B2': 1288158940341360867,
        'B3': 2105565870,
        'B4': 151,
        'B5': 0.4136870205402374,
        'B6': 8389649549510717640,
        'B7': {'D1': 0.42171088425668657,
               'D2': {'E1': 0.21469653786995768,
                      'E2': -1780050889,
                      'E3': [774563269, 4171549558, 2243433604]}},
        'B8': {'F1': [166, 144],
               'F2': [163, 87],
               'F3': 1338763963,
               'F4': 0.16350869834423065,
               'F5': [-15, -25, -55, 3, 13, 92, -22],
               'F6': -0.2993431091308594}},
 'A2': {'G1': 0.004991461357080951, 'G2': 4967234236302271471}}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xbfJSPI\xd6\xef\x9d\xb1\x06P\x00\x00\x00nd\x00\x00\x00i\x00\x00\x00n'
 b'\x00\x00\x00s\x00\x00\x00x\x00\x00\x00}\x00\x00\x00\x82\x00\x00\x00\x97'
 b'\xaa\xab\xa6\x9d\x1d\x90\x89uP\x05.\xaa\xce\xae\x8e>\xceA\xfe\xf5'
 b'^\x04\x00\x00\x00\x87\x00\xb5\xad\x99\x00txicd \x10\x1d01\xbf\x05\x00'
 b'\x00\x00K\x00\x93C]J\x18\xbfq\x072`o\x00\x00C;e\xc0cU\x90\xf6\xaf\xda\xbd'
 b'\x17\xdd%}\xe5.d@\xc4\xcd\xba\xce\x7fI\xa9.\xa7\xe5t-\x06g\x8b\x03s\x8e]['
 b'\x9eU\xf6\xf4\x84<6$T:\xd9m{\xea%\x97\x0f\xd3\x9a\x12\xcf\x05\x00\x8f'
 b'\x00\x00\x00')

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

{'A1': 2979917782,
 'A2': 6,
 'A3': {'B1': 4128,
        'B2': -0.6921404004096985,
        'B3': 'txicd',
        'B4': 17299,
        'B5': -0.5948846936225891,
        'B6': 1905},
 'A4': 110,
 'A5': [{'C1': 7299122, 'C2': 0},
        {'C1': -1067107517, 'C2': 99},
        {'C1': -1342795691, 'C2': -38},
        {'C1': 635246525, 'C2': 125},
        {'C1': 1080307429, 'C2': -60},
        {'C1': 2144254669, 'C2': 73},
        {'C1': -442028375, 'C2': 116}],
 'A6': -1498699113,
 'A7': {'D1': 7581,
        'D2': 35216,
        'D3': 772100213,
        'D4': -86,
        'D5': 0.27867740392684937,
        'D6': {'E1': -50,
               'E2': 1593179713,
               'E3': [1581, 35687, 29443, 23950],
               'E4': 44469}},
 'A8': {'F1': 1123408321075599674,
        'F2': [-25901, -12526],
        'F3': [-24997, -2475, -31500, 13884, 21540]}}

Пример 2

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

(b'\xbfJSPI%\xfa\x16duP\x00\x00\x00fd\x00\x00\x00i\x00\x00\x00n\x00\x00\x00s'
 b'\x00\x00\x00x\x00\x00\x00}\x00\x00\x00\x82\x00\x00\x00\xff2!K\xdc'
 b"\xa0B\xd3\xea\xf7\x03\xfc\xf0PCh\xbf\xac8'\x87\xed\x04\x00\x00\x00\x87\x00R"
 b'e\x93\x00ncpyl-\xba8\xbd\x03>\x05\x00\x00\x00K\x00\xffY\x7f\xd4\x8c>\x1c\xcf'
 b'\x9c\xde\xfc\x83\xfdH\x1c\xf6\x96\xe5;\xd5\xd0-\xafcO\xcaj\xcd\x13\xd34I'
 b'u\xa2D\x11VL\x03I\xce\xedP \x93!\xd1N\x15l-\xd3\xc9\xf6Q2\xb3r&\x19y+>I'
 b'\xcc\xbe\xaa\x02\x00\x8f\x00\x00\x00')

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

{'A1': 1679227429,
 'A2': 117,
 'A3': {'B1': -17875,
        'B2': 0.12865149974822998,
        'B3': 'ncpyl',
        'B4': 23039,
        'B5': 0.27505871653556824,
        'B6': 53020},
 'A4': 102,
 'A5': [{'C1': -2080579940, 'C2': -3},
        {'C1': -1762255800, 'C2': -27},
        {'C1': 768660795, 'C2': -81},
        {'C1': 1791643491, 'C2': -51},
        {'C1': 1228198675, 'C2': 117},
        {'C1': 1443972258, 'C2': 76},
        {'C1': -305247997, 'C2': 80}],
 'A6': 1260466943,
 'A7': {'D1': -24356,
        'D2': 54082,
        'D3': -66848790,
        'D4': -16,
        'D5': -0.9072771072387695,
        'D6': {'E1': -84,
               'E2': -309909704,
               'E3': [37664, 53537, 5454, 11628],
               'E4': 25938}},
 'A8': {'F1': 4479807403276284722,
        'F2': [-13239, -21826],
        'F3': [-13869, 20982]}}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'GWW\x00\x00\x000\x00\x00\x00Q\x00\x00\x00pnjh\x00\x8c?\xe5\x99\x11h\xf1L\x9c'
 b'\xd2\x81:\xc1i\xaf\x98:\xc8\xc4\x1b\x9eavaorepn\xed\n\xac\x93\xb5\x1f\xd7u'
 b"0\xea\xdb'\x9f\xe2\x86\xb0\xce\xa2\xc8\x95\x00\x00\x00\x07\x00\x00\x00)zuou"
 b'pu\xdb\xf4\xa1PdX\xea3\xaen7\xfd\x07w\x9a#\xe5w\x02\x00\x00\x00'
 b'\x05\x00\x00\x00Ldub\xe5[n\x03E\xea\xd4N\xe1\xe8\x8e\xa3W4\x8ca'
 b'\xb5\xa1\x91\x04\x00\x00\x00\x03\x00\x00\x00m.n\xea\xf8F?""t\x11\xe0\x9c'
 b',\xa2?\xe7=OD<`0m')

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

{'A1': [{'B1': 17080654287154960245,
         'B2': {'C1': 12522, 'C2': 15791766413669093026},
         'B3': 51349,
         'B4': 'vaorepn'},
        {'B1': 8492650496012867818,
         'B2': {'C1': 13230, 'C2': 7942094676404347877},
         'B3': 30466,
         'B4': 'zuoup'},
        {'B1': 16526924217903141966,
         'B2': {'C1': -7704, 'C2': 10278154657794733473},
         'B3': 37124,
         'B4': 'dub'}],
 'A2': 'njh',
 'A3': {'D1': 779021048,
        'D2': 17983,
        'D3': [572683281, -526635870],
        'D4': 0.7262340862971595,
        'D5': 109},
 'A4': 0.6749350595149681,
 'A5': -46,
 'A6': 33082,
 'A7': {'E1': -16023, 'E2': 12652927787055423073}}

Пример 2

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

(b'GWW\x00\x00\x00/\x00\x00\x00R\x00\x00\x00rylu\x00\x8e\xbf\xef\x88\xc7'
 b'\xb9T0\x80O\x90D\x08r\xbb1\xda=\x8a\xa8/\xf1lrldax\xa4\x15s\xab\x97'
 b'\xf1bx\x83\xf9\xaa\x97\x87wQ\xf1\xf7%^o\x00\x00\x00\x06\x00\x00\x00)ijbwu'
 b'ly\xea\t\xce\xa6\xd3<M\x92\xe9\x13uq\x8a\xe8\xd3\xc0o\xf0\x82\xce\x00\x00'
 b"\x00\x07\x00\x00\x00Kvrglp\xa1\x16\xd9\no\x7f\xe2\x80\xebi\xee\x92Qp'5g"
 b'\xa2\xe2\x00\x00\x00\x04\x00\x00\x00n\x8e\xba)\xc4\xb3e:\x06\xe3='
 b'\xcf\x90\x9f\x85?\xe1\x97\xeb\x16J\x9eb\xe0')

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

{'A1': [{'B1': 11823483577556886136,
         'B2': {'C1': -31751, 'C2': 12292442654476728101},
         'B3': 24175,
         'B4': 'lrldax'},
        {'B1': 16864237495569370514,
         'B2': {'C1': -5869, 'C2': 8462697907395522544},
         'B3': 33486,
         'B4': 'ijbwuly'},
        {'B1': 8115793124937138146,
         'B2': {'C1': -32533, 'C2': 7633199296911193447},
         'B3': 41698,
         'B4': 'vrgl'}],
 'A2': 'ylu',
 'A3': {'D1': 2394565060,
        'D2': 45925,
        'D3': [973529917, -812605563],
        'D4': 0.5497947154407934,
        'D5': -32},
 'A4': -0.9854467982963939,
 'A5': 79,
 'A6': 36932,
 'A7': {'E1': 2162, 'E2': 13488802316805484529}}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xa0MCJZczxf.?\x08\xe5!\x00\x00\x00}\xaf\x89\x1d\x10\xb2\xf9r\xb1\xc0K'
 b'\xba85\x8flo7<\xc9\xb9\x19\x95\x8d\xd14\xcf\xea\xfd\xae\x0c\xb8\x07\xf3\x02'
 b'\xdb\x83\xfb\x0f\xd8\x14\x8e\xbf"\\\xd9\x0fd\xa64\xc8\x05!\xb9?'
 b'\xe1\x85\xc3\x14\x0eV\xfe\x00\x00\x00\x03\x00\x00\x006\x82\xb6\x8b\x95\x9c'
 b'WS\xef\x0c\xd15CkZ\xf8\x9e\x18\xc5\xe5a\xdb\xef%\xc5^"\xea\xcd\xee~p\x0f\xd8'
 b'\x98q\xf7A\xe1\xbf\xa2K\xf3M\xa2O\x80\x00\x03\x00\x12\x009\x1d|\x95\xa6\x94'
 b'\xb9\x9f\x8e')

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

{'A1': 'czx',
 'A2': 26158,
 'A3': 0.5347462296485901,
 'A4': {'B1': -0.03573570559197403,
        'B2': [{'C1': 2944998672, 'C2': 12896465115713092152},
               {'C1': 898591855, 'C2': 3980277967524040145},
               {'C1': 886041341, 'C2': 12541601406601321347}],
        'B3': {'D1': 5262,
               'D2': -0.6342292428016663,
               'D3': 1109194153864274361,
               'D4': 0.5475783721655885,
               'D5': [251, 15, 216],
               'D6': 9418869145381327855,
               'D7': [215037251,
                      1801123998,
                      415622497,
                      3689883077,
                      1579346637,
                      4001263631,
                      3633869303],
               'D8': [65, 225]},
        'B4': 2124737666904334222}}

Пример 2

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

(b'\xa0MCJZhee\xa8\xfc?;\x849\x00\x00\x00p\x0f\n 2H\xd0\x1a\x10m.\x90)^\xb4'
 b';\xb1I\xfc\x9e\x1e<\xe2\xdd\xe2CN9\xaa?e\xf1"Pf\xe9\x98~\xdb$}\xbf\xdejQVe'
 b'\xc3\x98\x00\x00\x00\x02\x00\x00\x00*\xaflf\\\xdf\x85,\x04\xd1\xf2'
 b'\xcc\x91\xa5|\xfaw?\x901|%\x89Z\xe9Uw\xddo\xca\x83a\xec\t\xdf2h\x0bX'
 b'\xbf\xe0^\xf8\xcf\xb0\xb4\x9c\x00\x02\x00\x12\x00,\x85f\xe4\xb6\x1a,'
 b'\xd1\xba')

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

{'A1': 'hee',
 'A2': -22276,
 'A3': 0.7324863076210022,
 'A4': {'B1': -0.511593251843482,
        'B2': [{'C1': 252321842, 'C2': 5246722223740194857},
               {'C1': 1588870065, 'C2': 5331309911607533026}],
        'B3': {'D1': 14762,
               'D2': 0.8982106447219849,
               'D3': 5793574811831313533,
               'D4': -0.47523911893136406,
               'D5': [67, 78],
               'D6': 12640590803195210756,
               'D7': [3522350225,
                      2776431223,
                      1066414460,
                      629758697,
                      1433918831,
                      3397607916,
                      165622376],
               'D8': [11, 88]},
        'B4': 9612621925443228090}}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x05CPF\xf3\x8e\x11?mkn\xf9\xdc<\x00H\x00T\x00`\x00\xc3Riqek(a\x9f\x81R'
 b'\xb2\xcdIS\xd0\xc9\\\xcdN\xa4k\x02\xff\xb1J=\x0b\xe8\x9e<\xd7\x91\xee\x82'
 b'\xf4\xcc?;*\xa3P\nh\xc8\xea?IB9X\xd4\xbf\x8b\xba6D\xd8\xbf\xc9~\x156'
 b'\x00\xdf#\xae\xe1\x9e\x86?\x8a\xccs\xea`\xd7\xad\x12\x90\x98\xae?J\x90x]')

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

{'A1': 0.5685874819755554,
 'A2': 'mkn',
 'A3': {'B1': 249,
        'B2': 220,
        'B3': [{'C1': 0.8369636727776186, 'C2': 1480147529},
               {'C1': -0.37916343896267546, 'C2': 907378377},
               {'C1': 0.011045230032763254, 'C2': 3933457546},
               {'C1': 0.059757711677703496, 'C2': 1568182346}],
        'B4': 21187},
 'A4': 'iqek',
 'A5': {'D1': 5318102802426192168,
        'D2': 1556729939,
        'D3': 5382363415545401037,
        'D4': [61, 11, -24, -98],
        'D5': 60,
        'D6': -2098294313},
 'A6': 0.0029266448691487312}

Пример 2

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

(b'\x05CPFh\xb1M?crjxF<\x00H\x00T\x00`\x00\xa5jwkwuV\xab\xbf\xae\xd4\xb1qI\xbc'
 b'\x1b\xd7N$\xfd\xd0\xceh\x1eom\x9e\xd2\x19\xff*3C\x0fN\x15\x8d\x8e>'
 b'\xd4s\x87\xaf8\x7f\xd9?\xa0\xabw\xc1\xf8\xc6\x83\x1e\x1b\xa2\xec?'
 b'\x02{\x12\x02\xa0\xfbB\xf3+\x08\xdb\xbf\xa4\xb8\xfcb\xe0\xc1\xd7\x08'
 b'\xd6\xd2\xaa?IN<:')

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

{'A1': 0.8034882545471191,
 'A2': 'crj',
 'A3': {'B1': 120,
        'B2': 70,
        'B3': [{'C1': 0.3983899797584034, 'C2': 3245845408},
               {'C1': 0.8947883220664314, 'C2': 34765570},
               {'C1': -0.4223737598039694, 'C2': 1660729508},
               {'C1': 0.05238980157799111, 'C2': 977030729}],
        'B4': 27301},
 'A4': 'wkwu',
 'A5': {'D1': 5292206564160023382,
        'D2': 1322720188,
        'D3': 7885554908044262692,
        'D4': [-98, -46, 25, -1],
        'D5': 42,
        'D6': 1309623091},
 'A6': 0.2784201204776764}