ИКБО-13-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'UZR\xd7\x02\x00\x00\x00C\x00rlzya\xe3\x16\x10u*`M\x8a\x8b\xf9X*\xaa'
 b'\x98\xdc\x8at\xd34\xcd\xed?b\x1c\xedM\x06\xa7,\xd5\xd0\x94\xc9'
 b'\xa1\x91\xe4\xc5\xec]\x00\xc7\xb6\xd0\x8b#\xb2jivjfj\x02\x00?\x00\x00'
 b'\x00\xe9\x8ax?\xf7\x02\x00A\x00\x00\x00\xbc\xeb\x84\xbe\x857=HP\xde2\xe2'
 b'\xbeeuv\xbf\x90\x02\x00\x00\x00Y\x00')

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

{'A1': -41,
 'A2': [{'B1': 'vj', 'B2': 0.9708696007728577, 'B3': 247},
        {'B1': 'fj', 'B2': -0.25961101055145264, 'B3': 133}],
 'A3': 'rlzy',
 'A4': {'C1': 97,
        'C2': 9965727285909657315,
        'C3': -1653,
        'C4': -1733678504,
        'C5': 0.9312996034608108,
        'C6': 1307384930,
        'C7': 3576473350,
        'C8': 17061294077498725584},
 'A5': {'D1': -0.44179433584213257,
        'D2': -0.9627287983894348,
        'D3': 144,
        'D4': [15671, 20552]},
 'A6': -1949255993,
 'A7': 1768600099}

Пример 2

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

(b'UZR\xc2\x02\x00\x00\x00C\x00vvtn\x02\xac\xd7\xf4\xd3\x11\xbc\x1bL)b>\x81\x8b'
 b'<tL\xadw]I\xe5\xbfOWX\xf2\x98b54H\xc0\x1c;\x1aD`\xb4]\x00\xb9\xc0\xc8\x86V'
 b'\xff\xc2ploeb\x02\x00?\x00\x00\x00d\xf3\xc4\xbe\xaa\x02\x00A\x00\x00\x00'
 b'\t|d\xbf\x95\r;\x98qk\\\x14\xbf8O\x81> \x02\x00\x00\x00Y\x00')

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

{'A1': -62,
 'A2': [{'B1': 'lo', 'B2': -0.3846694231033325, 'B3': 170},
        {'B1': 'eb', 'B2': -0.892517626285553, 'B3': 149}],
 'A3': 'vvtn',
 'A4': {'C1': 2,
        'C2': 5484183756010215340,
        'C3': 25129,
        'C4': 1015775550,
        'C5': -0.6652057015838992,
        'C6': -229091505,
        'C7': 875913880,
        'C8': 12997463404042829896},
 'A5': {'D1': -0.579535186290741,
        'D2': 0.25255751609802246,
        'D3': 32,
        'D4': [15117, 29080]},
 'A6': -2033663815,
 'A7': 1891827542}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'~QGJ\x00\x03\x00\x00\x00\x16\x00\x00\x00\\I\xefezdchr\x00\x02'
 b'\x00\x00\x00\x10\x1cW\xf3\xff\x00\x02\x00\x00\x00\x12\x05\xb5\xf9g\x00\x02'
 b'\x00\x00\x00\x14+S\xc1\xc8>\xdd\x1a4p\x9c\x82\xf7\x9fP\xe8\xcb\x90\x07\x84X'
 b'\xb3\x02\xe0\xa6\xed\x15\xacD\xf0\xe5\xe7\x0b\xec\t\xc8_\xce\x7f!\x06'
 b'z\x9a\xae\x04\xa6\xf7+\x07\x00\x00\x004')

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

{'A1': [{'B1': 'ez', 'B2': 475526143},
        {'B1': 'dc', 'B2': 95811943},
        {'B1': 'hr', 'B2': 726909384}],
 'A2': {'C1': 2801216263,
        'C2': {'D1': 0.43184053897857666,
               'D2': [1889305335,
                      -1622087477,
                      -1878555560,
                      -1291657050,
                      -317346748,
                      -253368565,
                      -334903201],
               'D3': [-830529274, 2056957444]}},
 'A3': 18927}

Пример 2

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

(b'~QGJ\x00\x04\x00\x00\x00\x18\x00\x00\x00h\xc0\xa7edftaqqk\x00\x02\x00\x00'
 b'\x00\x10\x81p<\xb1\x00\x02\x00\x00\x00\x12\x92C\xc5\xaa\x00\x02\x00\x00'
 b'\x00\x14\xef\xa2\xed\\\x00\x02\x00\x00\x00\x16\xa4\xcc\x19\xa2>\xa9\x165'
 b'\xd2z\x97\xf8\xbb\x84Z2\xe3\xdc\xc0\x0e\x02\xf5\x8d\xcc\xf7\xfb\xc73'
 b'\xf5d\xfe\xad\x89\xb3Y\xbf?(\xc7\x803\x831\x03:6\xe0\x94\x00\x00\x00@')

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

{'A1': [{'B1': 'ed', 'B2': -2123350863},
        {'B1': 'ft', 'B2': -1841052246},
        {'B1': 'aq', 'B2': -274535076},
        {'B1': 'qk', 'B2': -1530127966}],
 'A2': {'C1': 976674964,
        'C2': {'D1': 0.33024755120277405,
               'D2': [-763717640,
                      -1148954062,
                      -472072178,
                      49647052,
                      -134494413,
                      -177930579,
                      -1984734785],
               'D3': [1059637120, 864235779]}},
 'A3': -16217}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\nNWCD\x00\x00\x00\x02\x00\x00\x00\x1a\xfb\xb9\x00\x00\x00\x82\xbd'
 b'\xb2\x1dQ\xa1\x0cawdt\xbd\xbf\n\xaf\xd6k|Y\x14\xcdqn\x11?$:L\xfd"8\x1e\xc9$'
 b'\x8d\xf9\x00\x02\x00.\xce\x99\xd1%x\x02\xe3\xd4\xfd\x00\xf1\xda$\x00'
 b'\x02\x00?q\x02q#\xfe\xfeF\x0eX\xf8\xbdB\x8d\x00\x02\x00P}~\x15\xab0u\xc8d'
 b'\x8f\xad~\xa1\x18\x00\x02\x00a\x7f>\xef\xe6\x98\x00\x00\x000\x00\x00'
 b'\x00A\x00\x00\x00R\x00\x00\x00c\x00\x00\x00\x1c\x00\x04\x00r\xbf\xb5'
 b'\xf9W"\x822\xf0Q\x1a')

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

{'A1': 'wd',
 'A2': -1095,
 'A3': {'B1': {'C1': 8412089731618597756,
               'C2': 22804,
               'C3': 14803734470496369228},
        'B2': [{'D1': [14366, 51492, 36345],
                'D2': [253, 34],
                'D3': 3466187045,
                'D4': 120},
               {'D1': [54525, 241, 55844],
                'D2': [2, 227],
                'D3': 1895985443,
                'D4': -2},
               {'D1': [3672, 63677, 17037],
                'D2': [254, 70],
                'D3': 2105415083,
                'D4': 48},
               {'D1': [25743, 44414, 41240],
                'D2': [117, 200],
                'D3': 2134831078,
                'D4': -104}],
        'B3': -0.08583588211531512,
        'B4': 20762},
 'A4': -0.08696997910737991,
 'A5': -24308,
 'A6': 97}

Пример 2

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

(b'\nNWCD\x00\x00\x00\x03\x00\x00\x00\x1a\xbe\xca\x00\x00\x00Y\xbd\xfaju\x8d'
 b'\x06\x1cyzk\xc4\x08>\x03\xba\xec^\xffl\x9c\xf5\xd3\x83\xbbC#0z\xcfE%\x8a\xa3'
 b'\xe5C(\x00\x02\x00/,\xef\x81\xc2a!G\x17\x9e\xcfG3\xc8\x00\x02\x00@'
 b'\xac\xee\xcc\xbe\xd8\x00\x00\x001\x00\x00\x00B\x00\x00\x00\x1d\x00\x02\x00'
 b'Q\xbf\xe9\xd1;\xc2\x9a\x9b\xc41\xf7')

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

{'A1': 'yzk',
 'A2': -16694,
 'A3': {'B1': {'C1': -4321135656720113921,
               'C2': 27804,
               'C3': 17713646599686795386},
        'B2': [{'D1': [9610, 41957, 17192],
                'D2': [207, 69],
                'D3': 753893826,
                'D4': 97},
               {'D1': [6046, 53063, 13256],
                'D2': [33, 71],
                'D3': 2901331134,
                'D4': -40}],
        'B3': -0.8067911911829175,
        'B4': 12791},
 'A4': -0.12227336317300797,
 'A5': -29434,
 'A6': 28}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xebOTN\x10 \x99\xd7\xfb\xe8\xaa\xa2\x1d\x00A\x00e\x00\x89\x00;\x93m\xab'
 b'\x00\x00\x00qb\x02\x00\x00\x00\x1b\x00\xd7\xca\xa8S\xfbC\xb5\x99V\xf5S7c'
 b'\xa0uy\xd3\xc3\xc2\xe1\xbc\xf1\x8d\xd4\x85f[\x00ba\x02\x00\x00\x00?\x00\xa5'
 b'0Z\xa1\xcb\x84zy\xc7\x9f\xce}hve&U\x10N\x91\xa6 \xb8\xbb6\xf5\xc6\x17d'
 b'k\x02\x00\x00\x00c\x00\x12G:\xa4\xcc\xeb\x06\x0c\x0ca\x087\x0e\xc2n\xd3\x86'
 b'.\x00\x06b\xe3\x87\xfcG\xab\xc4\xc7bb\x02\x00\x00\x00\x87\x00\\E\xaa.\xfa'
 b'\xc9\x8c\xf9\xdb5\xb5I[W:\xb4m>J\xd19h\x14\xdf\xc6\xbaK\xdct\xd6\x9a\xb7^'
 b'\xc7\xd1?\xde\x98Z4\xd0\x94\xa31$z\xa1}\x16')

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

{'A1': -677830640,
 'A2': -1565857541,
 'A3': [{'B1': 'qb',
         'B2': [51927, 21416],
         'B3': {'C1': [17403,
                       -26187,
                       -2730,
                       14163,
                       -24477,
                       31093,
                       -15405,
                       -7742],
                'C2': 25726947863425468}},
        {'B1': 'ba',
         'B2': [12453, 41306],
         'B3': {'C1': [-31541, 31098, -24633, 32206, 30312, 9829, 4181, -28338],
                'C2': 1713326323687497894}},
        {'B1': 'dk',
         'B2': [18194, 42042],
         'B3': {'C1': [-5172, 3078, 24844, 14088, -15858, -11410, 11910, 1536],
                'C2': -4051925439058812062}},
        {'B1': 'bb',
         'B2': [17756, 11946],
         'B3': {'C1': [-13830,
                       -1652,
                       13787,
                       18869,
                       22363,
                       -19398,
                       15981,
                       -11958],
                'C2': -2572757398803158983}}],
 'A4': 59,
 'A5': -109,
 'A6': 109,
 'A7': {'D1': 0.277793578435513,
        'D2': 878352606,
        'D3': [-48, -108, -93, 49, 36, 122],
        'D4': 32161,
        'D5': 22}}

Пример 2

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

(b'\xebOTN%\x9aQ\x1e\xe2N\xd8\xe8\x1d\x00A\x00e\x00\x89\x00\x18K<\xab'
 b'\x00\x00\x00bl\x02\x00\x00\x00\x1b\x00\xf5;\xefe:\xae\xe5\xb0\xe1'
 b'\xc8\x97g\xa1\x14\x08\xdf|\x1a\x869Ic\xfcNq\xf8\xa7\xecsq\x02\x00\x00'
 b'\x00?\x00\xba\xca\x7f\x03}\x82\x03h\xd3KL\xf3/g\xe3p\xdc`R\xd8\x95`y\xf46'
 b'L\xffmsg\x02\x00\x00\x00c\x00(S;>\xa0\x89\xfbn\x92\x8c\xfc\xe5\x91\xc3\xf4,]'
 b'}\xb0\x9c\xd1\x12Qj3\xd4\xec\xa1fl\x02\x00\x00\x00\x87\x00\x0b\xbfz\xf4\xa9'
 b'\xde\xe6_\x84[\xf4\x82\xd6\xe3<\xf5eJ\x08\x8a\x05\xff\x12\xfd\xb1'
 b'p\xb7\xa9\xf0\x0f\xb2\xf5Ua\xdd\xbf$\xc2\xee&g\x92\xf7m\x1d:GY\xa6')

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

{'A1': 508664357,
 'A2': -388477214,
 'A3': [{'B1': 'bl',
         'B2': [15349, 26095],
         'B3': {'C1': [-20934, -20251, -14111, 26519, 5281, -8440, 6780, 14726],
                'C2': -1393872394107722935}},
        {'B1': 'sq',
         'B2': [51898, 895],
         'B3': {'C1': [-32131,
                       26627,
                       19411,
                       -3252,
                       26415,
                       28899,
                       24796,
                       -10158],
                'C2': 7926137668108902549}},
        {'B1': 'sg',
         'B2': [21288, 15931],
         'B3': {'C1': [-30304,
                       28411,
                       -29550,
                       -6660,
                       -15471,
                       11508,
                       32093,
                       -25424],
                'C2': -6778810021807320367}},
        {'B1': 'fl',
         'B2': [48907, 62586],
         'B3': {'C1': [-8535,
                       24550,
                       23428,
                       -32012,
                       -7210,
                       -2756,
                       19045,
                       -30200],
                'C2': -6217376850804277499}}],
 'A4': 24,
 'A5': 75,
 'A6': 60,
 'A7': {'D1': -0.4590659045572911,
        'D2': 653181476,
        'D3': [103, -110, -9, 109, 29, 58],
        'D4': 22855,
        'D5': 166}}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'PLON:~[?s\xd7:\x9f\xf1\xd9\xff\xd9\x04\x00N\x00\xe68\xdc\x9b\x9c\x1bfn(tXa'
 b'\x86<k\x02\xf0\r\xe0?\x03\x00R\x00\x15$\xd8\x7f\x06\xbd\xc0\xfd'
 b'\x05\x10\xab\xf5)\x16\x82\xaf%\x1f\xd7\x10w\x00\x00\x00\xb0\xf3\xe0\xfa'
 b"\x0eC\x0b%\xa2?\xb4\xe22p25g|\xcd\x94g\xd1<\x9f\xb3KRx\xae\xf3\x14+Q'E\xe6"
 b'\tV\xff\xd5/\x02\x00\x00\x00U\x00\xab\xbas\xd1Ye\x00')

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

{'A1': 0.857394814491272,
 'A2': 15708513657073358707,
 'A3': [{'B1': [-76, -30, 50, 112],
         'B2': 7955076151240308966,
         'B3': 40,
         'B4': -1152240646956689292,
         'B5': {'C1': 13, 'C2': 16352}},
        {'B1': [50, 53, 103],
         'B2': 18284822322736538645,
         'B3': 5,
         'B4': 2715532132032555792,
         'B5': {'C1': 31, 'C2': 4311}}],
 'A4': {'D1': 89,
        'D2': {'E1': [39, 69, -26, 9, 86, -1, -43, 47],
               'E2': [12943130724169731452, 5848791577907450443],
               'E3': [47787, 53619]}},
 'A5': 62384,
 'A6': 0.035438873229841183}

Пример 2

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

(b'PLON{\x15\x0e?\xe8\x99\xfd\x03#\x83\xdaR\x03\x00N\x00\x07;\x10\x1c'
 b'\xb6S\xc5\xfb\xc0\x02\xc9\x9c\xf6\n\xe7\x0b7x\xe2\x1c\x02\x00Q\x00'
 b'\x12\x8b\xee\xbb\xb3\x92\x84\xf6)rG\xc7\x9eL\x05\xbfU\xb5\x10\x12'
 b'u\x00\x00\x007\xb6p\x1dl&\x98,\xef?\xf1\xc9\xd7\xdd;\r\xe8V\xccu'
 b"\xa8\r\x97\xd3DGzj\xe6w\x80!\xd8b\xbdz\xa5#'\x02\x00\x00\x00S\x00\xd8EV"
 b'\x0cbc\x00')

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

{'A1': 0.5550152659416199,
 'A2': 5970228442447059432,
 'A3': [{'B1': [-15, -55, -41],
         'B2': 18141998715551890183,
         'B3': 192,
         'B4': 3966517931103013122,
         'B5': {'C1': 120, 'C2': 7394}},
        {'B1': [-35, 59],
         'B2': 17763484130905852690,
         'B3': 41,
         'B4': 6178663040415123314,
         'B5': {'C1': -75, 'C2': 4624}}],
 'A4': {'D1': 98,
        'D2': {'E1': [33, -40, 98, -67, 122, -91, 35, 39],
               'E2': [10884541098317244429, 9257120904075756755],
               'E3': [17880, 3158]}},
 'A5': 46647,
 'A6': 0.9741936445652026}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xd5FXD\x9d\xa3\xac\xed\xf8p\xc4\xc6\xc7M\x80\x9c\x02\xa0\xe1!'
 b'\xbb\x15\xd2\xab\xbfW\x87\xb6\xbe\xbbFM\x00?R\xb3>s\xd1\\\x00\xbf\x167'
 b'\xf3D\x92<\xbcj\x7fk\x00\x00\x00\xa8Y(\xf3\xe0U\xc8?0W\x9e]}\xf6\xcb?ik;[q'
 b'\x00\x91-Xc%\xe9\x97\xab\xdf\xf6t{\xa1\xa5\x84\rAD\xc5\xc6`\xe8a'
 b'M\xbb\x9b\xec\xa0\x1d\t\x80\xbb\xcc\xfe\xa7\xf9z\xee\x83\x8d\x8774'
 b"\x8e]\x1f\xd6\xb6\x8a\xcc\x8a\xc8\x9e\x8b'\xc8\xe9\xf5$\xc2\xce\xd8a"
 b'|5\x98\xe1c\xfc\xb4\xf8\x05')

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

{'A1': -4124047144322817123,
 'A2': {'B1': 199,
        'B2': 43810893,
        'B3': -0.054337195485405276,
        'B4': [{'C1': -0.3565013110637665,
                'C2': [187, 70],
                'C3': {'D1': 12364607648758771089,
                       'D2': 2071262943,
                       'D3': 42401,
                       'D4': 132}},
               {'C1': 0.3502368628978729,
                'C2': [115, 209],
                'C3': {'D1': 7054995223105257741,
                       'D2': -325338291,
                       'D3': 7584,
                       'D4': 9}}],
        'B5': -65,
        'B6': 22,
        'B7': 9181357758686229303},
 'A3': {'E1': -128, 'E2': 2818493627, 'E3': 249},
 'A4': 0.1901208102505738,
 'A5': 0.2184597689744634,
 'A6': 'ik',
 'A7': 23355,
 'A8': {'F1': 122,
        'F2': [-31762, -30835],
        'F3': 9995411853197325367,
        'F4': [-52, -118, -56, -98],
        'F5': -117,
        'F6': -2824106452314372057,
        'F7': -5405335632179004319,
        'F8': 1528}}

Пример 2

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

(b'\xd5FXD\\\xfa\x81|\x17\xe1\xf1G\xdc_\xeelvz~(H\x8f\x8e\xe8\xbf\x16\x18\x02'
 b'\xbf\x16\xd5M\x00\xb00\x14\xbf\xfc\xa9\\\x00\x9b\x87\xff\xbe\x9d\x9a\x93'
 b'\xed8qk\x00\x00\x00\xa0\xd88EH\x0e\xc4?\xb0\xb9\xf5H]}\xea?kn\xa0Tq'
 b"\x00\x8e\xf1V\xdbz\xbe\xb6\xe2\x89#+\x10'\xcc\x14^g\x90\xb5\xdfy`\xc6"
 b'y\x0e\xef\xc1\x9b\xd0\x8e\xae\xf87\xfd\x96\r\x00\x94\xb8P\xec\xc4\xf2'
 b'\xca\xef\x1c\xf3[\xa7\xe0\x13\xf0\x08X\xce\x02p\x1c\xe1\xbc\xdax\xb4'
 b'\xa6\xeb\x13\xc7\xc6\x130\x11\xdb')

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

{'A1': 5184172137069541980,
 'A2': {'B1': 220,
        'B2': 1986850399,
        'B3': -0.7674023064937068,
        'B4': [{'C1': -0.5081800222396851,
                'C2': [22, 213],
                'C3': {'D1': 16336454133208248718,
                       'D2': 271262601,
                       'D3': 52263,
                       'D4': 20}},
               {'C1': -0.5788679122924805,
                'C2': [252, 169],
                'C3': {'D1': 14294559219004761950,
                       'D2': -1041297799,
                       'D3': 53403,
                       'D4': 142}}],
        'B5': -101,
        'B6': 135,
        'B7': 8158531943191658239},
 'A3': {'E1': -82, 'E2': 2533177336, 'E3': 13},
 'A4': 0.1566858613966291,
 'A5': 0.8278032708165508,
 'A6': 'kn',
 'A7': 21664,
 'A8': {'F1': 0,
        'F2': [-18284, -5040],
        'F3': 12059499732822323908,
        'F4': [-32, 19, -16, 8],
        'F5': 88,
        'F6': 8708480504505041614,
        'F7': 3464331096713045684,
        'F8': -9455}}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'PCNR94\x99\x8dP\xc8\x02\x00\x00\x00\xa7\x00\x00\x00\x8b`\xf0;\xa28,--\xd0'
 b':\xbd\x8e\x80wVQ}\xe8?\xab\x00\x19\xd3\xd7M\x7f\xc7}?\xef$O\x9c/"x\xeb'
 b"\xc2\x95'\x1ci\x0e\xe4?\xf8\x82\xc3\xb8\x89i\xd3bi\xa4n/LF\x1e\xb3"
 b'\x0b\xae\x13\x0b-g?\x81\xa3i=\x85\x95\x87>L\xcee\xdd\x1c>z\xcd\x05'
 b'\x00N\x00\x03\x00\x00\x00S\x00\x00\x00\xff\x93"ZQ\x98\x1eI\x9b\xa0BqM'
 b'\x8dz\x1d\x03h\xbfvi\x1a?\xc6\x92uA\xee\x03\x83v\x06\x00|\x00\x02\x00'
 b'\x00\x00\x82\x00\x00\x004\xb2A\x1cV4\xd6\x92\xe9_\x00\x8a\x00R'
 b'\xb7\x82\xa9\xfd\xdc\xadL:')

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

{'A1': 13369,
 'A2': {'B1': -934244967,
        'B2': [{'C1': -580530612,
                'C2': -847626724,
                'C3': [30, -77, 11, -82, 19],
                'C4': {'D1': [0.903031051158905,
                              0.05704069510102272,
                              0.2648126184940338],
                       'D2': 1512215551},
                'C5': 1226741841,
                'C6': -101},
               {'C1': 1098224326,
                'C2': 1988297710,
                'C3': [-96, 66, 113, 77, -115, 122],
                'C4': {'D1': [-0.906297504901886, 0.603171706199646],
                       'D2': 474067508},
                'C5': -1831455658,
                'C6': -23}],
        'B3': 1005609099,
        'B4': -4811304359441975134,
        'B5': 0.76529757392929,
        'B6': {'E1': 2843916114, 'E2': 1286462717, 'E3': 58},
        'B7': 1305989913,
        'B8': {'F1': 0.991325318813324, 'F2': 16967349183999583471}},
 'A3': 0.6267591047186942,
 'A4': 3099820792,
 'A5': [27017, 25299, 42089, 12142, 17996]}

Пример 2

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

(b'PCNR\x85m\x84\x1e>H\x02\x00\x00\x00\xac\x00\x00\x00\xbd\xccN\xeb5\xe4'
 b'\xe6\xfb\xc6\xa9\xc5\xdc:4G\x9c\xcd\xdd\xe9?\xb0\x00"\xf3\xd3\x94\x0f=p\xbf'
 b')\xf0\xfa\x80\xa0\xa0\x1c}\xd0\xe6\x0fvV\x0f\xe0?;\xaf\x17\xb7\xc5T\xe5\xea'
 b'\xbcD\xc4TqI\x8d8&\xc7z\xf3\xac#\xf7>\x1c\xe4\x0b?DC\x03\xbf\xa3`8\xd2'
 b"i\x89\x0f\xad\x06\x00N\x00\x03\x00\x00\x00T\x00\x00\x00*\xf5\r#'f\xcd\xe5"
 b'?\xa5r{\xf5u\xef\x1c\x9e]?\xd6\xfc\xf8\xbe\xf7\x8a\xf4>\x12\xa6\xf7Q\xae'
 b'\xd3\xe0\xb0\x06\x00}\x00\x03\x00\x00\x00\x83\x00\x00\x00\xaa'
 b'\x80\x11\xe9\xbf\xb9y y`\x00\x8f\x00\xac8\t\xfe+lp\x15\x16')

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

{'A1': 28037,
 'A2': {'B1': 1212030596,
        'B2': [{'C1': -768057181,
                'C2': -1391490711,
                'C3': [-115, 56, 38, -57, 122, -13],
                'C4': {'D1': [0.48269402980804443,
                              0.5464494228363037,
                              -0.5127451419830322],
                       'D2': 588117290},
                'C5': -439523801,
                'C6': 63},
               {'C1': 1375184402,
                'C2': -1327443026,
                'C3': [-91, 114, 123, -11, 117, -17],
                'C4': {'D1': [0.8656938076019287,
                              -0.48630398511886597,
                              0.47762271761894226],
                       'D2': -384728918},
                'C5': 544848319,
                'C6': 121}],
        'B3': 3947809981,
        'B4': -2538436142858574795,
        'B5': 0.8083255817706523,
        'B6': {'E1': 4262017196, 'E2': 359689259, 'E3': 22},
        'B7': 2496918306,
        'B8': {'F1': -0.9384316802024841, 'F2': 9015257165308031017}},
 'A3': 0.5018722825909325,
 'A4': 3071782715,
 'A5': [21701, 60133, 17596, 21700, 18801]}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TKZ<\x00\x00\x00\xd5W\x7fh\x81=\xf5>\xfd\xfdB\xc9\xbc\x12\x1e\xfeo\x81??\x8d'
 b'\xd2\xc4=\x97\xa5\xc5\xbe\x06\x00o\x00\xc5\xe4\xb1\xbeW8n\n\\xS\xa9*0\xe7n{'
 b'\xfdi\xc2\xbf(\x00\x00\x00zqtn\xdb\xc4\xee\x9cc\xd1\xe7\xb7\xca\x84\xfb\xb7'
 b'\xf1\x11cb\x13S#\xc7\xe66\xa9b\xf0\xadC\xad\x9f\x19\xbd\tr =\xe0'
 b',\x14\xbe\xabg\x0b\xd2\x1d\x88\xd8\xf7\x06\x85')

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

{'A1': {'B1': {'C1': 6632234589525815780,
               'C2': 715740024,
               'C3': -0.1438595631314512},
        'B2': 'zqt',
        'B3': [{'D1': 56174, 'D2': 61124},
               {'D1': 25500, 'D2': 59345},
               {'D1': 51895, 'D2': 64388},
               {'D1': 61879, 'D2': 25361},
               {'D1': 4962, 'D2': 9043},
               {'D1': 59079, 'D2': 43318},
               {'D1': 61538, 'D2': 17325}],
        'B4': -0.03750579431653023,
        'B5': [9, 114, 32, 61],
        'B6': -0.14470243453979492,
        'B7': 3523962795},
 'A2': 4536599825658894293,
 'A3': -135650336734773763,
 'A4': 0.7480687499046326,
 'A5': 0.09610471874475479,
 'A6': -0.3860289752483368,
 'A7': [29, -120, -40, -9, 6, -123],
 'A8': -59}

Пример 2

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

(b'TKZ<\x00\x00\x00\xc1\x89\xe1{\x12c\xbe\t\xbb4\x8c\x1eYC \x7f${\xdf>\xf6'
 b'IL\xbf\xa5s3?\x04\x00o\x00\xb7a\xc0\xedO\xfdh_\x92+592\n\xbfy^'
 b'\xa6\x12\xee\xbf(\x00\x00\x00khs\xe3\xfeY6{-\x16\xf5-r\x15!\xc89\x05\xcc.'
 b'd\xe2j[IUw\xb7L\xf3\xb1\x15[\xea\xbe\xc7\xd5F@\x00\xd1\t\xbfS\x1d\xa87:'
 b'\xe8\x8f\x12')

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

{'A1': {'B1': {'C1': 10547264289501986913,
               'C2': 842609963,
               'C3': -0.9397765965677263},
        'B2': 'khs',
        'B3': [{'D1': 65251, 'D2': 13913},
               {'D1': 11643, 'D2': 62742},
               {'D1': 29229, 'D2': 8469},
               {'D1': 14792, 'D2': 52229},
               {'D1': 25646, 'D2': 27362},
               {'D1': 18779, 'D2': 30549},
               {'D1': 19639, 'D2': 45555}],
        'B4': -0.4577261507511139,
        'B5': [-57, -43, 70, 64],
        'B6': -0.5383453369140625,
        'B7': 933764435},
 'A2': 702107522955315649,
 'A3': 9160395692115244219,
 'A4': 0.4364863634109497,
 'A5': -0.7980035543441772,
 'A6': 0.7009833455085754,
 'A7': [58, -24, -113, 18],
 'A8': -73}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'UVM\rt\x00\x00\x00uqorf\x05~\x1fJV\xba.n\x87R\xfa\x15r\x0c\x00'
 b'\x00\x00\x03\x00\r\xbf\xdd>B\x8dt\xedd\xa8%\xc4\xd2\xbbO\x95\xadz\x97='
 b'\xa8\x10\xc5\x00\x00\x00\x03\x00)?\xe2\x1b;\xbc\xca\x1b\xd4\xbf\xe25'
 b'5S\x14\x0c\x90\x84\x9f\xcavT\xbb8}\x84\x93\xc85\xb4\x91\xb3\x03\xc7\xf8g'
 b'`\t\xfbR\x1d\xbfg0\x89y\xb5\xf9\x94\x96\xc5\xab\xfa7C5\x0ed\xf3\xbd'
 b'\xe65\xbd\x00\x00\x00\x04\x00\x00\x00\t\x81se\xfa\xc1\x9c&t\x00'
 b'\x00\x00\x13\x00\x00\x00/\x00E')

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

{'A1': 3444,
 'A2': {'B1': 100,
        'B2': {'C1': 243, 'C2': -0.11240718513727188, 'C3': 'qorf'},
        'B3': -9118832692830656908,
        'B4': [{'D1': 3345760363635634700,
                'D2': [1406, 8010, 22202],
                'D3': -0.4569250470555828},
               {'D1': -7661332601094270779,
                'D2': [-22491, -15150, -17585],
                'D3': 0.5658243834776564}],
        'B5': {'E1': -0.5689951536773084,
               'E2': 9556579543879989373,
               'E3': -31597,
               'E4': 51253,
               'E5': [-5435366446438258848,
                      719258853214466185,
                      8770190265953922042],
               'E6': 927151374}}}

Пример 2

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

(b'UVM\x10%\x00\x00\x00}jlyyju5\x17d\x1c\x98Uxa\xc2\x8c\x8et\x11\xdb\xad?P'
 b"e\x00\x00\x00\x05\x00\x0f?\xe4t\xed\xc7\xe0\x7f.\x88\xf0J'\x08V\xf8\xfc\x84"
 b'\x96r\x1f\xb3` b\x00\x00\x00\x04\x00/?\xee,U\x0e=\x1b\xe2?\xdb\xb02\xa6{l'
 b'\xdc\xbf\xd7\x01\xd0^\xdcJ\xb6-V\x01r\xaf\xbbh|pG\x91\xa1H\xdd\x82'
 b"\xb1\xfe\xc08\xdd\xa3L\xd4\xadi/<7]\xd0'V\x94\xf8>\\\xfc\x95\x00"
 b'\x00\x00\x06\x00\x00\x00\tqT\xb7\xfe\x1b}\xfd!\x00\x00\x00\x19\x00'
 b'\x00\x007\x00M')

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

{'A1': 4133,
 'A2': {'B1': -108,
        'B2': {'C1': 248, 'C2': 0.21580727398395538, 'C3': 'jlyyju'},
        'B3': 8166354326340369697,
        'B4': [{'D1': -8181894987823230875,
                'D2': [13591, 25628, -26539, 30817, -15732],
                'D3': 0.639273538956308},
               {'D1': -8892794933717491614,
                'D2': [-30480, 18983, 2134, -1796],
                'D3': 0.9429116514301052}],
        'B5': {'E1': 0.43262926347752084,
               'E2': 13823519575693347510,
               'E3': 11606,
               'E4': 370,
               'E5': [-5783914412758298207,
                      5250496441578698973,
                      -6679730306038154185],
               'E6': 1573922646}}}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xdeXHFG?\xec\x97qjK\xba\x10\xc3\xbfX\x93\xeaH#\xf4\xa5Q\x00\x00\x00z\xd4'
 b'?\x03,\xb4\xbf \x87\xealN\xc7_\x19\x9a\x1es\x84\x15I\xaf\x8c\xf2VA'
 b'\xcf\xa1\xe7m\x00\x00\x00\x04\x00$\xdf\xf5m\x9a\xc8\xed\xf43\xbd7'
 b'\xb4\x00\x00\x00\x03\x00(\xd0\x1a\xb3\xec\xf7=}\\\xec\xc3$\x00\x00'
 b'\x00\x02\x00+U\xba0\x00\x00\x00\x03\x00`\xf0\x9b\xd9\xbb\xfc:%'
 b'\xad\x00\x00\x00\x03\x00-\x00c0p\xd3aA\x80\xed\x1a\x07\x00q\x8c\x14\x9aH'
 b'1O\xaa1\xf8$\xff\xeb\x9b\xfa;\xe5\xe8')

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

{'A1': {'B1': 0.8934866977777478,
        'B2': -61,
        'B3': -0.8460069894790649,
        'B4': 18467},
 'A2': 244,
 'A3': 42321,
 'A4': {'C1': 8129948686297668103,
        'C2': {'D1': [{'E1': 21,
                       'E2': 1236241650,
                       'E3': 22081,
                       'E4': 3483494253,
                       'E5': [108, 78, -57, 95]},
                      {'E1': -33,
                       'E2': 4117600968,
                       'E3': 60916,
                       'E4': 868038580,
                       'E5': [25, -102, 30]},
                      {'E1': -48,
                       'E2': 447999223,
                       'E3': 15741,
                       'E4': 1559020324,
                       'E5': [115, -124]}],
               'D2': {'F1': [85, -70, 48],
                      'F2': -258221637,
                      'F3': -966,
                      'F4': 9645},
               'D3': 48},
        'C3': 140,
        'C4': [1484578403799151096, 2666108559577310696]},
 'A5': 212,
 'A6': 0.5124008655548096,
 'A7': -0.6270738840103149}

Пример 2

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

(b'\xdeXHFG?\xc0r)\x1a^\x05 \xf3\xbe\xf6\xbe \xf00`\x92\xa9\x00\x00\x00\x7fU'
 b"=\x14\xd7{\xbe[\x16Ab\x13-\xb6\xf5\xafD'\x15h\xf0\x92\x86w`\x10rtG\x08"
 b'\x9f\xdb-\x00\x00\x00\x04\x00$\xf0\xfc/B}$R\xf2\xf0\x01\xc1\x00\x00\x00\x04'
 b'\x00(\xa0\xb1\xb01G05\xda\xc9\x965\x00\x00\x00\x04\x00,\x1d\xcd%\x96v'
 b'\x00\x00\x00\x05\x00c\xa2Vk\x13\xf2\xb8\xa3\xe6\x00\x00\x00\x03\x000'
 b'\x00h\n\xb8(+5[,@\xea\x00v\xfc\xe4\xc25*`T\tf\x91@TH2{9\xf9')

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

{'A1': {'B1': 0.12848390376533647,
        'B2': -13,
        'B3': -0.4819192886352539,
        'B4': -4048},
 'A2': 96,
 'A3': 37545,
 'A4': {'C1': -5176840263499497238,
        'C2': {'D1': [{'E1': -122,
                       'E2': 2002784370,
                       'E3': 29767,
                       'E4': 144694061,
                       'E5': [98, 19, 45, -74]},
                      {'E1': -16,
                       'E2': 4230955645,
                       'E3': 9298,
                       'E4': 4075815361,
                       'E5': [-11, -81, 68, 39]},
                      {'E1': -96,
                       'E2': 2981114183,
                       'E3': 12341,
                       'E4': 3670644277,
                       'E5': [21, 104, -16, -110]}],
               'D2': {'F1': [29, -51, 37, -106, 118],
                      'F2': -1571394797,
                      'F3': -3400,
                      'F4': 41958},
               'D3': 10},
        'C3': 252,
        'C4': [16483796042250455398, 10466458203070347769]},
 'A5': 85,
 'A6': 0.036338310688734055,
 'A7': -0.21395207941532135}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'LPC\x1b\xfc\x97PD#\xf5\xfa?\x02\x03\x00c\x00\xd5\xb4\xf1\xa5:\x03E'
 b'\x19\x99\xbf\xe8?\xa4\xdd\x91\xbeA\xe7\xd1\xbe,\xb6\xdb9+\xe19D\x03\x00\x00'
 b'\x00l\x005\xe0|As\x00\x00\x00p\x9cq\n\x9f\xc9MwJm\x9c\x1dA5\xd08\x9d'
 b'Y\xaa\x02gV\xdfe\xb2\xa2\x97\xc7\x03\xd3\xf8= \xef5n\xd7\x91\xed$8`\xf1>;'
 b'*&^\xe5ppd\xfe\xfe@\xf0M\x02\x00o\x00j\xd7\x00\x13')

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

{'A1': {'B1': 64539,
        'B2': 162124042374238359,
        'B3': [{'C1': 24632, 'C2': 241},
               {'C1': 15166, 'C2': 42},
               {'C1': 24102, 'C2': 229}],
        'B4': -1510886187,
        'B5': 0.7733884328409666,
        'B6': -0.28489410877227783},
 'A2': -0.40996745228767395,
 'A3': 4916208044022150700,
 'A4': {'D1': 'ppd',
        'D2': 1098702901,
        'D3': {'E1': 77, 'E2': [65278, 61504], 'E3': 318822250},
        'D4': [8596748948632345712, 4093830615065718090, 7340680918063536541]},
 'A5': [-78, -94, -105, -57, 3, -45],
 'A6': -8,
 'A7': -1328043546746347459,
 'A8': 36}

Пример 2

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

(b'LPCj(A\xcf\xd0h\x1b\x0fM\xd4\x04\x00c\x00\xf0\xc7T\x98\xf0\xe0"T;\xb4\xc6'
 b'?$&\x90\xbe\xcc<\x04\xbeu\x01\xe0\xfc(\xd6\x93\x10\x02\x00\x00\x00o\x00\x8b'
 b'\xbbv{{\x00\x00\x00X\x06_\x87\xfc\xa4\xd36\xf8\xf5^\xcc\x0b\xc2\x7f\xe4\xdc'
 b'\xb6I\xb5\xcam;X\xd5\x135\x98>\x9c\xa1c\xb84\xc2\xcbJT\xb3\x9ex\xc6?hC'
 b'\xdb_P\x08\xdc\xa3)al\xdc\xd68X\x1fx\x91/*5\xfc\x05\x00q\x00\xea\x04\xa6\xa2')

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

{'A1': {'B1': 10346,
        'B2': -3148843954065060031,
        'B3': [{'C1': 50808, 'C2': 63},
               {'C1': 17256, 'C2': 219},
               {'C1': 20575, 'C2': 8},
               {'C1': 41948, 'C2': 41}],
        'B4': -1739274256,
        'B5': 0.17737523658957555,
        'B6': -0.28154098987579346},
 'A2': -0.12913817167282104,
 'A3': 1194533797712888181,
 'A4': {'D1': 'al',
        'D2': 2071378827,
        'D3': {'E1': -4,
               'E2': [55004, 22584, 30751, 12177, 13610],
               'E3': -1566178070},
        'D4': [3950682702643922520, -1981651955090524680, 6357796016355915484]},
 'A5': [-43, 19, 53, -104, 62, -100],
 'A6': -95,
 'A7': -5524708603879704477,
 'A8': -98}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"5RVR\xd2\x00\x19\xed\xfe\x1c\xb2\xfbl\x00'\x00\x00\x00\x03\x00,\x00My"
 b'c\x00\x00\x00\x02\x00\x17ktmu\xe6\x8dX\x02c\xbfb\xcdS\x95\xb6l}8\xc3{\xef'
 b'\xc4\xdcgrh\x1eN\x9a\xf03\x19\x9c\x06A\xc6^<\x9a\x17\x86\xd1\xcc\xb5#'
 b'A\xbe\r\xb0\xed\xbf\xebq\xac\xcdA\xcc4?\xeen;\xe4\xe2Y"5;\xf6]\xcb)\x1bZ<v+'
 b'\xb2L\xd6Z\xe5-WS\xb0')

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

{'A1': 210,
 'A2': {'B1': 'yc', 'B2': 'ktmu', 'B3': 59021, 'B4': 22530},
 'A3': -302113614,
 'A4': -1172,
 'A5': {'C1': 99, 'C2': -0.8859454989433289},
 'A6': [{'D1': -7658814831217902609, 'D2': -60, 'D3': -9113},
        {'D1': 8243872440857408281, 'D2': -100, 'D3': 1601},
        {'D1': -4152815173871676980, 'D2': -75, 'D3': 9025}],
 'A7': {'E1': -0.13837023079395294,
        'E2': [-0.8576263436247076, 0.9509562940973277],
        'E3': 3835930390336969562,
        'E4': 15478,
        'E5': 733105366,
        'E6': 23269,
        'E7': 11607,
        'E8': 21424}}

Пример 2

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

(b'5RVRP\x00\x1a.X@C~\x93\x00(\x00\x00\x00\x02\x00-\x00Cnvw\x00\x00'
 b'\x00\x03\x00\x17puye\xa5.h&\x8e>\xef)?\xd0\x96\x80\xec\xf7\xc1\x94'
 b'\xc4\xc8\xca\xa5\xdb\x1f\xc5\xa2\xd6^\x0eg\xd2\x97\xd3\xbf.\xc4\xc9?'
 b'\xc4}\xcb\xba\x98\x84@?\xe9\xd3\xc9\x88\xeep\xb6\xdd\xe5\xeaM:(\xe1\xa8O'
 b'\xa0\xa4\xd2K\xeeSx6\xfet\x9f')

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

{'A1': 80,
 'A2': {'B1': 'nvw', 'B2': 'puye', 'B3': 42286, 'B4': 26662},
 'A3': 777535555,
 'A4': 32403,
 'A5': {'C1': 142, 'C2': 0.4671115577220917},
 'A6': [{'D1': -3416401512056646460, 'D2': -56, 'D3': -13659},
        {'D1': -2657187951953441177, 'D2': -46, 'D3': -26669}],
 'A7': {'E1': -0.6826902031898499,
        'E2': [0.16008898364182933, 0.8071029352609205],
        'E3': 15989443669457953192,
        'E4': 20384,
        'E5': -1529721874,
        'E6': 21368,
        'E7': 14078,
        'E8': 29855}}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'SIL_\x9f\x87\t?y\x8a\xe7\xbez8\xe4\x9d\xf0\xf3j\xc5\xe1\xcb\xed?'
 b'\x02\x00\x8a\x00t\x94\xa9\xae\xfa\xa2;\x94a\x18\x81\xd7\x01(\xae\x8b'
 b'\xd00i\xda\xbfKNe[\xdc\x9a|-Z-C\xebG\x00\xdf\x81\xe7\xd0C\xbd\xf1_\xab'
 b'W"\xb4\xba\xbeO\xb2>\x8f\xb91\xd6FW\xeb\x8ej\xfa\xe4\xbf\xb4\xb9Boae\x07V'
 b'W\xff\xf8\xd0\xb2\xfb\xe1\xf0h\xfe\xd0 \xb4\xd2\xb2\xa9#\\\x97>k\xaf\xc5<'
 b'\xec\xc4 <\x06\x04\x00\x8c\x00\x00\x00\r\xec/jlW+|MW\x8f\xcb\xf3C\xe6\xff`'
 b'F\xe0Jb')

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

{'A1': 0.5372256636619568,
 'A2': -0.4522283375263214,
 'A3': {'B1': 2648979578,
        'B2': 0.9311379295173747,
        'B3': 'jl',
        'B4': -7765433934914415500,
        'B5': 3615561825,
        'B6': [{'C1': 1,
                'C2': -0.41267032972129636,
                'C3': [1533365835, 763140828, -347919014, -2116091833],
                'C4': 6317248394184347879,
                'C5': -0.3646555542945862,
                'C6': -19889,
                'C7': 834244414},
               {'C1': 214,
                'C2': -0.6555683890717112,
                'C3': [1866643892, 1443325281, -788988073, -253625422],
                'C4': -6218676464358719896,
                'C5': 0.29562482237815857,
                'C6': -20629,
                'C7': 3303816389}],
        'B7': {'D1': [32, 60, 6],
               'D2': [1299983191, 4090203991, 1627383363, 1649074246],
               'D3': 60429},
        'B8': 47}}

Пример 2

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

(b'SIL_\x19\xd64>7\xdd\x10\xbf\xa2\xa7\x81\xb3\xec\xba\xd6\x8a#V\xdb?'
 b'\x05\x00\x8a\x00L\x87\xfc\xbb-\xb8\xaf\xeb\x97\x04\x95\xed\x9c\xf0\xa9\xb6'
 b'c\x88\x81\xd7\xbf\xf24=\x8d7\xb4\xcf\xfc(\xd1\t\x05\x83m\xe3\xba\x0fsV'
 b'\x7f\xcfzEU\x90\xfe\x97>\x18\xdf\xd0\xaakj\xae\xce\xc5\t\xf2\x08\xc5\xe9\xbf'
 b'@{\xd2H\xed\xfd.\x9d\x95\x96OqF\x0f\xca\x9e\xd5\xa6\xd3\x1c!\xde\xc5D<e\x07?'
 b'`\xecC@\xa1\x8c\xa8\xebd\x07\x00\x8f\x00\x00\x00\xecT\x1ceytdo\xb6'
 b'\xed\xaa}\x97Z\x83C\xa3\xa0:[\xb3\xcf\xcb\x88c\xd1\xb00\xed!C\x998'
 b'\x1a\x9a\x80')

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

{'A1': 0.1765979677438736,
 'A2': -0.5658754706382751,
 'A3': {'B1': 3011618722,
        'B2': 0.42713249739146764,
        'B3': 'eytdo',
        'B4': -1463748847305193652,
        'B5': 3985966231,
        'B6': [{'C1': 156,
                'C2': -0.3672810529484698,
                'C3': [-1925368590, -53496777, 84529448, -1159500413],
                'C4': 6144452298230100751,
                'C5': 0.29686403274536133,
                'C6': -8424,
                'C7': 1785440976},
               {'C1': 174,
                'C2': -0.8053021170909973,
                'C3': [1221753664, -1657864723, 1901041301, -1630924986],
                'C4': 4955611198790018773,
                'C5': 0.528888463973999,
                'C6': -5024,
                'C7': 2359377987}],
        'B7': {'D1': [-88, -21, 100],
               'D2': [2108353974,
                      1132681879,
                      1530568867,
                      2295058355,
                      816894307,
                      2571313645,
                      2157582904],
               'D3': 21740},
        'B8': 28}}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'ALOS\x1a\x00\xb1b\xe6\x0f#\xad~t\x08\x9e\xe4\xfa}=o\xdf\xbd\xbeQ&W\xbe'
 b'\xdb\xd5\xae\xbfMz\x98?\x14U{?M\xce\xbc\xbd\x82\x01\xba=\xd3\x1d\xbc\xbf'
 b'\r\x89R?l\xc7H\xe7\xac\x0f^!L\xaf\x86S\x00\x02\x00\x13\xc6F@\x0c'
 b'\xe0\xc4l\xa4s\x00\x03\x00\x1bq\x89\xd4u\x9e\xe4\xea\x8f\xe7\x00\x03'
 b"\x00'\x90O\xba\xb2/\xdb\x9dL\xac\x00\x02\x003\xaf\x11 \xbc\xbe\x84\xd0\xc7j"
 b')\xd9\x1a\x00\x04\x00\x00\x00;\xcb\x9currxL\xda\xbf:nc\xc0I\xc8_dJ\x00'
 b'\x00\x00\x04\x00\x00\x00o\x00\x00\x00\x04\x00\x00\x00s\x8e\x08V\xb3\x87'
 b'\t>\xa3\x8c\x9f>\x9c\x85\xd9"\x15\xd2\xc0-\x9bE\x86\x00{')

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

{'A1': {'B1': 2456100894641177990,
        'B2': {'C1': [{'D1': 231,
                       'D2': -1408279007,
                       'D3': 1286571603,
                       'D4': [0.058562982827425, -0.20424781739711761]},
                      {'D1': 198,
                       'D2': 1178602720,
                       'D3': -999512973,
                       'D4': [-0.4293646216392517,
                              -0.8026518821716309,
                              0.5794293284416199]},
                      {'D1': 113,
                       'D2': -1982564962,
                       'D3': -454389785,
                       'D4': [0.8039357662200928,
                              -0.06347985565662384,
                              0.10308405756950378]},
                      {'D1': 144,
                       'D2': 1337635375,
                       'D3': -610448212,
                       'D4': [-0.5528765916824341, 0.9249157905578613]}],
               'C2': -3775013253236110118,
               'C3': -0.7282468676567078,
               'C4': {'E1': 3226060895,
                      'E2': 25674,
                      'E3': [-81, 17, 32, -68],
                      'E4': [-16764, -12089, 27177, -9958],
                      'E5': 2382911155,
                      'E6': 34569},
               'C5': 0.31943222880363464,
               'C6': 0.3057086765766144}},
 'A2': {'F1': 7126400106269406216, 'F2': -24860},
 'A3': -1411}

Пример 2

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

(b'ALOS\x1a\x00\x94\xecK&\x07\x9d;l\x13p\tG5>k3\x00>\xddgY?\x08\xf1\xbb\xbf'
 b'\x11 \xe6\xbf\x01\x91\x14\xbdUc\xd3zn\xc8\xf1s\xa8\x90\x03)\x00\x02\x00\x13'
 b'\x01\xac\x0b\x16?\xff\xb0\xa0\xe2\x00\x02\x00\x1b*\xe1y\x078[\x8e'
 b'\xc1o\x00\x02\x00#U\xc4\xaaQ\xe7\xa4\x01\xa6\xf0k\x1c\x8d\x00\x03'
 b'\x00\x00\x00+\xdb\xf1Pg\x8a\x12d\x93\xbf\x13\x86\xf6\x90\xa1q\xa3'
 b'\xff4\x00\x00\x00\x06\x00\x00\x00R\x00\x00\x00\x03\x00\x00\x00X\xaf\xa1'
 b'\x1c4-B\xbeVhz=\xab\x1c\xbb\x7f\xa5\xbe\x14\xa9Rp\xec\x00^')

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

{'A1': {'B1': 9197966809923481836,
        'B2': {'C1': [{'D1': 122,
                       'D2': 1858662771,
                       'D3': -1466957015,
                       'D4': [0.22968673706054688, 0.43242910504341125]},
                      {'D1': 1,
                       'D2': -1408559553,
                       'D3': -5201694,
                       'D4': [0.5349385142326355, -0.5669082403182983]},
                      {'D1': 42,
                       'D2': -512161992,
                       'D3': 1536082287,
                       'D4': [-0.506119966506958, -0.052097152918577194]}],
               'C2': -2598207104387750765,
               'C3': -0.5762780904769897,
               'C4': {'E1': 2426499491,
                      'E2': -204,
                      'E3': [85, -60, -86, 81, -25, -92],
                      'E4': [422, -3989, 7309],
                      'E5': 2946571316,
                      'E6': 11586},
               'C5': -0.20938292145729065,
               'C6': 0.08355089277029037}},
 'A2': {'F1': 17026744630348835859, 'F2': 28681},
 'A3': 18229}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b"CLCG\x9eju\xb7$\xc9Q'\xd6P\x04\x00\x00\x00Z\x00\x00\x00\x02\x00j\x00\x00\x00"
 b'\xe0\xbc\xfd|\x00\x03\x00\x9a\x00yWx\xbd\x90\xb2E\x1e\x98&l\x17\x8b\xd5\xc9'
 b'\x10Q\xbb\xa6\x00\x00\x00\x87\x12\xac\x01s\x15\x91\x8cB0\xe3\xfe3'
 b':\xfc\x85\x04qI0O\xaeN\xe9\x93l\xd4\x93q\xee#F\x00\x00\x00K\x00\x00\x00P\x00'
 b'\x00\x00U\x00\x00\x00\x83\x9e\x87\xcb\x16at\xcd\xe9jA\xff`[\x85\x13I&'
 b'\xc7`\x04\x112gT rals\x1cZ\x84`\xd9\xa3\xf7\x02\x00\x00\x00l\x00\x00\x00\xac'
 b'\x90\xb2g\xc9\xf7\x9c\xe4\xac\xae\x1c-\x9e\x1dq\x12\x91e+\x0e\xbfur\xef\xa5')

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

{'A1': {'B1': 2833266800126683806,
        'B2': {'C1': 20694,
               'C2': [{'D1': -2, 'D2': -2047067597},
                      {'D1': 4, 'D2': 1328564593},
                      {'D1': -82, 'D2': 1821632846},
                      {'D1': -44, 'D2': 602829203}],
               'C3': [131, 158],
               'C4': -32,
               'C5': 64956,
               'C6': {'E1': 2329600371988914375,
                      'E2': 24946,
                      'E3': 11806574019692229484,
                      'E4': 247,
                      'E5': [7703914537322728327, 2758757710225801025],
                      'E6': -28500,
                      'E7': -78},
               'C7': [2633484647, 481209572, 1897766445],
               'C8': 121},
        'B3': 87,
        'B4': 2995830136,
        'B5': 647503429},
 'A2': 13497588017263220588,
 'A3': {'F1': 18, 'F2': -111, 'F3': -0.5553496479988098, 'F4': -1511034251},
 'A4': 135,
 'A5': 4795367224552565778,
 'A6': 48,
 'A7': 227}

Пример 2

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

(b'CLCGie5U^\xdb\xf2\xb5\xcd\x8f\x04\x00\x00\x00Z\x00\x00\x00\x02\x00'
 b'j\x00\x00\x00\xa9Q\xfe|\x00\x02\x00\x9a\x00&\xbe\xd4C\xeb[p%\xbe\xbb8'
 b'*\n\x16\xb1Y\xec\xf7\xa2\x00\x00\x00\xfb:\x10SMeQ\x01I\xcf\xafI\x81'
 b'\xf72\xa7\x8e\xeb\xb1\xa4\xb9\xddx\xe8\x14V,\x92T\xf9\xdaF\x00\x00\x00K\x00'
 b'\x00\x00P\x00\x00\x00U\x00\x00\x00\xebS\x0f?Kk\xd7^@\x1e\xd5\xfcO\xde`Kn\xab'
 b'`d\xbe\x15\x89\xe5o)\xb7\x08\xe34nm\x15\xb3Pa\x05\x02\x00\x00\x00l'
 b'\x00\x00\x00\xae%IpR\xc5>lT\xec\x89\x8a\xe9W\x9dO=\x0b\xc5\xa9\x8b')

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

{'A1': {'B1': 13110782663431906665,
        'B2': {'C1': 36813,
               'C2': [{'D1': 73, 'D2': -1489832063},
                      {'D1': -114, 'D2': -1180388885},
                      {'D1': -35, 'D2': 1444210808},
                      {'D1': 44, 'D2': -621194094}],
               'C3': [235, 83],
               'C4': -87,
               'C5': 65105,
               'C6': {'E1': 2985857454908007520,
                      'E2': 2231,
                      'E3': 7012301524427486435,
                      'E4': 5,
                      'E5': [2179846498958393103, 12352893707342576853],
                      'E6': 9646,
                      'E7': 73},
               'C7': [1053119088, 2313966700],
               'C8': 38},
        'B3': 190,
        'B4': 1542144980,
        'B5': -1145166480},
 'A2': 17864752438985763384,
 'A3': {'F1': -118, 'F2': -23, 'F3': 0.05068716034293175, 'F4': -1951808245},
 'A4': 251,
 'A5': 5260575335276286010,
 'A6': -49,
 'A7': 175}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ERNS\x06\x12 \xb61\x80\x8a\x84\x91\x03c\x00of=\x80\xa9ZQ?o[\xa0\xf9'
 b'8\x00\x02\x00\x00\x00\x11*\xaa\xba9?\xea\xd1V\xdb\xb3\xf5Lqv\x14\xc3F\xbf[%?'
 b'\x14\xcd\xf4\xbe\xb6\x03\xdc\xbc|\xf6p\xbd-kbz%\xda\x1a\x0b\x19\xf2\xcap'
 b';\x00\x00\x00\x04\x00\x00\x007\xf2L\xab]\xe7-1x?\x9c\x0f\xfcz\xf0\xc7'
 b'\x80^\xfe\x85\xc2\xbc\x1c\x92\xb7\x00\x1bw9)\x10\xa9\x86c\x00\x02'
 b'\x00/\x00\x03\x001\x00G')

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

{'A1': 1306244215663658129,
 'A2': 867,
 'A3': {'B1': 37559,
        'B2': {'C1': -1736,
               'C2': [{'D1': 102, 'D2': 0.06282301247119904},
                      {'D1': 81, 'D2': 0.9349918365478516}],
               'C3': 715831865,
               'C4': 0.8380541125367613},
        'B3': 2000234768,
        'B4': -87,
        'B5': -31133,
        'B6': 'qv',
        'B7': [5315, 18111, 23333],
        'B8': {'E1': 31269,
               'E2': -2730858017971343301,
               'E3': [0.5812675952911377,
                      -0.35549819469451904,
                      -0.015439614653587341,
                      -0.04233873635530472],
               'E4': 17459518275207377272,
               'E5': 0.02740473270768673,
               'E6': 1593738690,
               'E7': 48156}}}

Пример 2

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

(b'ERNS\x06[pAw.\x92Z\x16\x92\xec\x00sv?Q\x1a\xb2\x1f\xbf+\x15\nG?J\xba\xaa'
 b'\x93?\r\x8f\xc4CW\x00\x04\x00\x00\x00\x11`$&8\xbf\xe3\xde\x1a\x1e\x12*'
 b'~jv\x83=%\n>\xb5\xd4h?<J\xef?\\K\xbbx9\x13\xf4\xb6@\x00\x80+\xa6\x00\x00\x00'
 b'\x03\x00\x00\x00?\x9e\xcf\xf5\xcc\xb1\xc1\x88\xef?\xec\t\x1f\x98{\xd7'
 b'\xb0\xa6\xe3\xc10\xe7\xb5P\xbf\x00%\xb1\xd8\x00\x97\xeb\xc6\xa5\x00\x02'
 b'\x009\x00\x02\x00;\x00K')

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

{'A1': 6588838234981292566,
 'A2': 37612,
 'A3': {'B1': 20671,
        'B2': {'C1': 17239,
               'C2': [{'D1': 118, 'D2': 0.816813588142395},
                      {'D1': 31, 'D2': -0.6682897806167603},
                      {'D1': 71, 'D2': 0.7919107675552368},
                      {'D1': 147, 'D2': 0.5529749393463135}],
               'C3': 1612981816,
               'C4': -0.6208620631526427},
        'B3': -1311244137,
        'B4': -21,
        'B5': -14683,
        'B6': 'jv',
        'B7': [-31939, 9482],
        'B8': {'E1': 30777,
               'E2': 1437974567040592806,
               'E3': [0.3551361560821533,
                      0.7355183959007263,
                      0.8605305552482605],
               'E4': 11443635437676103919,
               'E5': 0.87611369878754,
               'E6': 2799943984,
               'E7': 59317}}}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'IDQU\xb6[?\xe3\x9e\xd8S\\\xa4\xe2\xc3\x00\x02\x00\xa2\xcb\x06\x81\x88\x0c'
 b'\xaa+\x0b\xebP6\xcb,e\xbft\xf2\xa5\x00\x03\x00\x18\xc3>\x9e\xb3\xd3\xbf{'
 b'\x9e\xe0?!|\x89>\xf3\nM\x00$\x00\x00\x00)~%\xe0\xdc\x83\x05\xd9\x9eLF\xbd:'
 b'\xf7\xa0\xe4&\x83N\xcf\xb2\xc6\x1e\x0c\x88\xca\xc3+\x9f4\xc2\xb5)Vf\x879'
 b'}\x0e1\xce\xc4\x7f\x00\x03\x00]\xba\xbe\xbb\xba:=\x14+\x13\xbe\x9b{\xce='
 b'\x96Y\xa6\x00i\x00\x00\x00n\x08\xa0[\x90\xf4\x99?/\x18\xc7\x07'
 b'\x18\x05\xd6\xd6\xdf\x9b\xac\x14\xd3\r\xe3\xcd\xc2&\xae\x86\x15\xe8\x00\x00'
 b'\x00:\x00\x00\x00\x7f')

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

{'A1': {'B1': 91, 'B2': 0.6131402614747936, 'B3': -61},
 'A2': [{'C1': {'D1': 165, 'D2': [-1440019477, 1345768236, 1707046130]},
         'C2': {'E1': 195,
                'E2': [0.30996569991111755,
                       -0.9828929901123047,
                       0.6308065056800842,
                       0.47468796372413635]},
         'C3': [9089918660612839838, 5496288456212538406, 9461728233886977160],
         'C4': [-13629, 11167],
         'C5': 52},
        {'C1': {'D1': 127, 'D2': [-1028314794, 1720138109, 238145220]},
         'C2': {'E1': 186,
                'E2': [-0.366655170917511,
                       0.03617389127612114,
                       -0.3036789298057556,
                       0.0734131783246994]},
         'C3': [621597426714230575, 1785403577034266335, 11217363668576751042],
         'C4': [9902, -31211],
         'C5': -24}],
 'A3': 203,
 'A4': 109152268}

Пример 2

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

(b'IDQU\xb6x?\xe4\x87@\x057.8e\x00\x02\x00\x9a\x13\x1b\xb4\xe1\x98\x9chct'
 b'\xaf\xaf\xdb\xdf\x10\x00\x02\x00\x18\x8e\xbb\x95/\xac<Kc`\xbf+\xa98\xbe\x9e'
 b'\xc8\xc6\x00 \x00\x00\x00%p\xd0?T\x9b@\x8f\xa3\xb7\x18dM\xae\xb5\xfc\xe1'
 b'\x1a\xb5~\xe4\xf7=x\xc4\xac\xef$\xbb\x02N\xe7[<\xdaS\xbe\xf1D\x00\x02'
 b'\x00Yp\xbfG\x81\xa4?F\xa2s>\xb6]\x85\xbe\xe6|\xa5\x00a\x00\x00\x00'
 b'f\xf9\xe1\x08\xfa\xcd\xd3}y\x0f\xa2\xe5\x01\xb9I\xd9F7\xbezV\x0e\x9f\x96'
 b'\x1fV6"\xf3\xe6\x00\x00\x006\x00\x00\x00w')

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

{'A1': {'B1': 120, 'B2': 0.641510019480342, 'B3': 101},
 'A2': [{'C1': {'D1': 16, 'D2': [-1670880396, -1347429409]},
         'C2': {'E1': 142,
                'E2': [-0.004552802070975304,
                       0.012413829565048218,
                       -0.6705508232116699,
                       -0.31012552976608276]},
         'C3': [8129066960018247587, 13193405393188289761, 1924583937636399300],
         'C4': [-21265, 9403],
         'C5': 2},
        {'C1': {'D1': 68, 'D2': [1323785020, -632045839]},
         'C2': {'E1': 112,
                'E2': [-0.7793219089508057,
                       0.7759162783622742,
                       0.3561822474002838,
                       -0.45016971230506897]},
         'C3': [18005682658491989369, 1126714652362398022, 4016782427692176927],
         'C4': [22070, 8947],
         'C5': -26}],
 'A3': 19,
 'A4': 464839064}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'#WAYW\x03\x00\x00\x00E\x00\x00\x00\xcc\xfd\x8b\xfbNP\xe4\xbf\x83\xc3)'
 b'o\xc0\xbb\x80)t\xbb\x80\x06\xe69\x97\xae\x17\xa7\x00\xb8V\xa6`\xf7\xad\xc8?'
 b'^C\xc4;\x03R\x91\xa3Tc\x8a\xee,\xc0\x98\xf8\xea\x85<\xe3\x8c0\x00\x00'
 b'\x007\x00\x00\x00>\x00\x00\x00Z\xa4E\xc4\xa7\xf3u\xbf=,m\xee`\x05\xdc'
 b'\x0c\xb02\xb1\xee\xf7\xceE=\x02\x00\x00\x00Q\x00\xce+\x05zPo\xbe\x0c\xc4'
 b'\x13\xc9\x1az\x17\x92\xa2Qb\xae\x80n\xe5\xd6\xcd\xaf\x8f??\xd3'
 b"\xef\xde\xbd\xdfY\x08\x06\xbb\xe3\xcc\xf9\xffU\xb3'\x88\x9dq\xa4\xf9"
 b'\xa8]\x85\xdag\x05\x0eyxpotU\x00\x00\x00\x8c\xd7\xc2>w\x9a\xb7\x19\x9cP!\xaf')

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

{'A1': [{'B1': 94, 'B2': 54248515, 'B3': 37202},
        {'B1': -93, 'B2': -292920492, 'B3': 49196},
        {'B1': -104, 'B2': 1015409400, 'B3': 36067}],
 'A2': -0.6348032868408438,
 'A3': 2990596587747132291,
 'A4': 12580587744197131124,
 'A5': 23,
 'A6': {'C1': 'yxpot',
        'C2': {'D1': -0.960749089717865,
               'D2': -294835139,
               'D3': -1247159890093537952,
               'D4': 0.04829308018088341,
               'D5': [42074, 50245],
               'D6': [918293765465385934,
                      -6732292679762635836,
                      -3614449388150169007,
                      -4765107665133138001,
                      -446731870616921633,
                      -6597318771013888513,
                      1010327879652583673]},
        'C3': 0.380550742149353,
        'C4': -5827287811464127881},
 'A7': 0.19280903071619604}

Пример 2

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

(b'#WAYW\x03\x00\x00\x00E\x00\x00\x00z\xe8\xd3\xf0\\\xb2\xe1\xbf\xe4\x8cz'
 b'\xe3\x9c\xb6\xcf\xeas\x19\xe1\x13!\xfet\xf2\x0f\xa9\x00\x8a\x98A\xa8'
 b'\x1d\xb6\xe9?\xb1\xc0\x94\x04\xbf3\x80\x86\x1e\xc2\n~`\x83\xa4(\nD\xbe|'
 b'E0\x00\x00\x007\x00\x00\x00>\x00\x00\x00[\xdf\xe2\x87\x98\xfaQ\x8a\xa1>&'
 b'\xea\xf6\xba=\x9e\xe20U\x84;\x03\x8b\xc3\xd6\xbe\x03\x00\x00\x00Q\x00-nF'
 b'@(%\xa2\x8e\xe5\x9c\xf5\xe0\x9ba\xb70\x07\xf1s\x8ao[\x94\xff!\xd8\x81'
 b'C\xf3\xd8<\x0e\x8c\x96q\xa3\x9eRt\xf4w\xd9\xfaSRa\xb1}\x10\x0et\x88\xab\x97F'
 b'\xcacoeewW\x00\x00\x00\xael\x89\xbd\x86\xf3\x0b\xf3\xe6\xa0f\xd4')

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

{'A1': [{'B1': -79, 'B2': -1090218816, 'B3': 32819},
        {'B1': -122, 'B2': 2114634270, 'B3': 33632},
        {'B1': -92, 'B2': -1102837208, 'B3': 17788}],
 'A2': -0.5530228332202249,
 'A3': 16919943110001855716,
 'A4': 17470868272497891699,
 'A5': 15,
 'A6': {'C1': 'coeew',
        'C2': {'D1': 0.3155083954334259,
               'D2': -1158223322,
               'D3': 232925307166957117,
               'D4': -0.41946062445640564,
               'D5': [57179, 34786, 64152],
               'D6': [-8168925919289381331,
                      3510381756680608997,
                      -30298762862399225,
                      1025933354454865953,
                      -831949189856258420,
                      9057127331842939255,
                      -3871240066693853680]},
        'C3': -0.06710182130336761,
        'C4': -3141646776263773306},
 'A7': 0.8034809385542456}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'VQRZ\x8ds\xdd\xf7\x1dL\x00\x00\x00Q\x00\x00\x00V\x00\x00\x00[\x00\x00'
 b'\x00`\x00\x00\x00e\x00\x00\x00j\x00\x00\x00o\x00\x00\x00\x9c\x1d\xaf'
 b'\xbe\x05%B\xbf\xbb\xa2\x01?\x02\x00\x00\x00t\x00:\x02\x00\x00\x00'
 b'|\x00\x00\x008\xb7\x97\xd4\xad\xd0\xc8\xbfK\x99\x97:N\xedm`\x7f\xf6uK'
 b"\xd6\xcf\xabEJg\xefm};'\x95\xe3\xbe\xd4\xb9\xce\xc1b\x0f\xcc\xcb\xf1\xc6"
 b'\x9b\xbd1\xa1L\xda\xee}\x1d\x80\xa4\x16\x0e\x86\x8e\xbf')

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

{'A1': {'B1': {'C1': 502783347,
               'C2': [{'D1': [75, 153, 151], 'D2': 20026},
                      {'D1': [237, 109, 96], 'D2': 63103},
                      {'D1': [117, 75, 214], 'D2': 43983},
                      {'D1': [69, 74, 103], 'D2': 28143},
                      {'D1': [125, 59, 39], 'D2': 58261},
                      {'D1': [190, 212, 185], 'D2': 49614},
                      {'D1': [98, 15, 204], 'D2': 61899},
                      {'D1': [198, 155, 189], 'D2': 41265}]},
        'B2': {'E1': [-0.34202277660369873,
                      -0.7583773732185364,
                      0.506389319896698],
               'E2': [2112805452, 379879453],
               'E3': 58}},
 'A2': [34318, 49038],
 'A3': -0.19386837845325444}

Пример 2

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

(b"VQRZ\x8d\x9a'A\xe4L\x00\x00\x00Q\x00\x00\x00V\x00\x00\x00[\x00\x00"
 b'\x00`\x00\x00\x00e\x00\x00\x00j\x00\x00\x00o\x00\x00\x00\xca\x87\x14'
 b'\xbf\xb9\x12G? H??\x02\x00\x00\x00t\x00H\x02\x00\x00\x00|\x00\x00\x00'
 b'\xe0\xd1=j\x16\x9e\xb2\xbf\x03\x93\xb0G\x87\xef\xcd\xe6\x80\x96\x9en'
 b'\x06\xbe6*9\x1fm\xf59\xfb\xb9\xb1\xa9\x08W\xc0z\xab2c\xb4l\xd3\xfd'
 b'\xd6\x04\xa3\x19\xd3F\xc99\xb4~$\xadL4\xd4|')

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

{'A1': {'B1': {'C1': 3829475226,
               'C2': [{'D1': [3, 147, 176], 'D2': 34631},
                      {'D1': [239, 205, 230], 'D2': 38528},
                      {'D1': [158, 110, 6], 'D2': 14014},
                      {'D1': [42, 57, 31], 'D2': 62829},
                      {'D1': [57, 251, 185], 'D2': 43441},
                      {'D1': [8, 87, 192], 'D2': 43898},
                      {'D1': [50, 99, 180], 'D2': 54124},
                      {'D1': [253, 214, 4], 'D2': 6563}]},
        'B2': {'E1': [-0.5801969766616821,
                      0.7776294350624084,
                      0.7471942901611328],
               'E2': [969492179, 2904850100],
               'E3': 72}},
 'A2': [13388, 31956],
 'A3': -0.07272472471033309}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ODKXz\x00\x8b\x13\xdc>?n\x17\xe0^-\xe5\xa0\x84\xc4\xf7\xf3 \xd0\xa98\x15\xf1'
 b'%:\x90r\xb5\xf4\xad\x80\xab\x90\xc67i\x17\x9e@\xa1[\xd0\x94\xc7\xbf\x9bJ'
 b'c"z\xc6}\x1e{\xea}h~K\x8f\x07\xd3\xfeD\xe4\x04\x00\x00\x00$\x00'
 b'\x86\x84\x8b\xbe\xea+2\xbf~\x10??\x89\x16\x12\xbf\x02IU?<\xd3?\xbf\xa5\xf2/?'
 b'\x80\xd6\xbe\xd2\xd1\xb3\xce?\x9ff9`\xc36)\x05\xfa\xe6x\x18M\xf5\xc6\xfd'
 b'\xeb?\x02\x00\x10\x00\x02\x00 \x009!D\x00\x00\x00\xe6\xb6]6\x12\x97\xed\xbf')

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

{'A1': {'B1': {'C1': 0.87472865972883,
               'C2': [{'D1': -997941019, 'D2': -803146761},
                      {'D1': -250267479, 'D2': 1922054693}],
               'C3': [62645, 32941],
               'C4': 8505,
               'C5': {'E1': 58436,
                      'E2': [4656184805422436523,
                             5376101444112898977,
                             16896131952560185955,
                             18362028417747937405],
                      'E3': [-0.27249544858932495,
                             -0.6959825754165649,
                             0.7463454008102417,
                             -0.5706563591957092,
                             0.833145260810852,
                             -0.749316930770874,
                             0.6872962117195129],
                      'E4': 0.23986265936189355,
                      'E5': 26271,
                      'E6': 16643621047471661113}},
        'B2': -0.9246913015210481},
 'A2': 139,
 'A3': 0.7455455660820007,
 'A4': [110, 23, 224, 94, 45]}

Пример 2

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

(b'ODKX\x8a\x00z"(\xa7\xbeY\xfb\xc5\xbe\x07\xba\xa2\xbde\x89\x17\x9e\xc7'
 b'\xf0"\x14\xef\xd0\xa5z\x9a1\xb7\xe2%\xb6\x82?\xc8m\x17\x01\xd9<@\xaaY'
 b'\x93\xa2\x05H\xc9\x99c\xaf\xb5\x1f*\xe3\xfa\x98+\xaa\xc8L\xd1\x81'
 b'\xc5v\x16\x8c.\\\xb7\x8b\xf9l`\x05\xf0\x9e\t\xa0\x1e5\x06\x00\x00\x00$\x00'
 b'Q\x9c\xd4>\xf9f\xa2\xb8\xce$_\xbf\x88\x15\x00?\x8b\xefr\xbf\xa9\xe9=\xbf'
 b'\xd2\xce\xad\xbd\x00H\x86\x9b\x1e\x16\x81\xbf\x083\x8b\xa0\x1e-\x1c\x89'
 b'\xd6p\xb0\xa6\xa9WJ\x1a\xee?\x02\x00\x10\x00\x02\x00 \x00\xb2\xef'
 b'T\x00\x00\x00\x1e\x10J\xbf\xe2\xaf\xe4\xbf')

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

{'A1': {'B1': {'C1': 0.9407092773592094,
               'C2': [{'D1': 1706926778, 'D2': -945940599},
                      {'D1': -283893008, 'D2': -1703238192}],
               'C3': [46897, 9698],
               'C4': -4174,
               'C5': {'E1': 13598,
                      'E2': [15636805141485552310,
                             5189732899362586684,
                             16368930660823570889,
                             9354342325757384954,
                             10067616846998566597,
                             11531923074578410745],
                      'E3': [0.4152550995349884,
                             -7.743942114757374e-05,
                             -0.8716553449630737,
                             0.500328540802002,
                             -0.9489676356315613,
                             -0.7418466210365295,
                             -0.08486713469028473],
                      'E4': -0.008342970963699514,
                      'E5': 13064,
                      'E6': 8130836931373080715}},
        'B2': -0.6464704261893564},
 'A2': 122,
 'A3': -0.3264780640602112,
 'A4': [89, 251, 197, 190, 7]}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'EOEOy\x12\xe5\x91a\x9e\xc5\x88\x17\x94\x00\x00\x00\x03\x00\x00'
 b'\x00\xaa\x00\x11W`c5\x87\x1f\x05H\x98\xc5\xa6\x85\x18\x00\x1b\x00'
 b'\x1e\x00!\x00\x1b\x02\x91w=C\xd3l\xcf\x05\x04\x00\x00\x00,\x00\x00\x00:\xe2'
 b'yU@\x97\xed\xbf\x02\x88\xf3\xac\xeb\xa6\xe4\xbf\xb0n\x19\xd92\xae'
 b'\xe3\xbf2\xa3\xfaQ\x9f\xb3\xe9\xbf\x02\xc0\xeb\xd7\x89\xd4\xef\xbf(\x87'
 b'?KN\x8b\xea\xbf`\x89\xdb\x81}\x0e\xae\xbf\xcc\xd7\xf9\x89M?\x14\xcdb\xbc'
 b'\xc0-}\xaaE1\x18\x0f\xea[#\xfc\x04(\x0f\x8b(\xfcT\xf0\x03]\xe6\xf5'
 b'\x04\x00$\x00\x00\x004\x00.@G\xe5\xdd\xf9e\xda\xc5m\x90]b\xf5\xf3\x97')

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

{'A1': 1695822543737447698,
 'A2': {'B1': 4125515011,
        'B2': [{'C1': 24663, 'C2': 99},
               {'C1': 34613, 'C2': 31},
               {'C1': 18437, 'C2': 152},
               {'C1': 42693, 'C2': 133}],
        'B3': {'D1': 1487,
               'D2': [539, 30609, 17213, 27859],
               'D3': [-0.9247132939772833,
                      -0.6453760507540667,
                      -0.6150144806119524,
                      -0.8031765557435391,
                      -0.9946946351246881,
                      -0.8295051068964527,
                      -0.058704301931146174],
               'D4': 55244,
               'D5': 0.8028865456581116,
               'D6': -6161718409355408108,
               'D7': [-278277691133120187, -1129000355501234172]},
        'B4': 3846651950,
        'B5': -630851107,
        'B6': 197,
        'B7': 109},
 'A3': [23952, 62818, 38899],
 'A4': 17}

Пример 2

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

(b'EOEOy\xe1C\xc5\xe7\x96d\xdd}\x8f\x00\x00\x00\x02\x00\x00\x00\xa5\x00\xb3'
 b'\x90\xc5\xb8\xb2\x0b\xb5J\t\x0f\x18\x00\x1b\x00\x1e\x00Nw\xcd\xbe\xf31p\x08O'
 b"\x8e\x04\x00\x00\x00'\x00\x00\x00X!\xfa\xd8\xc1n\xec\xbf.\xf5\x94"
 b'\xcf\xba+\xe0\xbf\xb8\n\xad\xcb\x06\xf4\xe0\xbf8jY\xba\x92\t\xea'
 b'\xbf\x86\x91\x11AT\x04\xe9?\x98\r\xe3P\xe4\x08\xe6\xbf\xc8\x90\xda'
 b'@\t\xa3\xd0\xbf\xe6d\xa2|\xee\xbe*\xaao\x99YG\xbc\xf7-\x93j\xd9X\xcdR^\xfe'
 b'\xec\xe3\x16\x0cj\x81\x87\xf3w\xbf\xf2\x03\x00!\x00\x00\x00/\x00\x84'
 b'>\x08\x9609\xa2\xa8\x1bH\xfciF\xca')

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

{'A1': 9069515823890383841,
 'A2': {'B1': 4072634355,
        'B2': [{'C1': 50576, 'C2': 184},
               {'C1': 2994, 'C2': 181},
               {'C1': 2378, 'C2': 15}],
        'B3': {'D1': 36431,
               'D2': [30542, 48845, 12787, 2160],
               'D3': [-0.8885201680978225,
                      -0.5053381018002818,
                      -0.5297883966489598,
                      -0.8136685981401746,
                      0.7817784567710511,
                      -0.688585432035711,
                      -0.25995093663574353],
               'D4': 25830,
               'D5': -0.4657946228981018,
               'D6': -595522600567854550,
               'D7': [6796720569143956269, -8682542006437417730]},
        'B4': 2517122692,
        'B5': -1465763536,
        'B6': 27,
        'B7': 72},
 'A3': [27132, 51782],
 'A4': 179}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xfaGRBS\x03\x00\x00\x00u\x00=\xdf\x02\x02\x00\x00\x00{\x00\x00\x00\t\x87'
 b'\xf8\xe5\xec\xf2\x86?\xd3\x19\xe7?\xa9v\xea%\xf8\xab\xdf.\xf9\xfe\x912\r?'
 b'\x94\xb6\xb4\xcc\xa5e\xa8`\x08\x00\x00\x00\x83\x00\xab\x1b\x01U\xe9\x99'
 b'\x08O\xca\xb5g3\xd8\xe7\x1e\xabym\xdb?\xc0\xfb\xea\xe4:\xe2\xb9\xbf^evvid'
 b'tb\xe7,slomktm\xf2\xbbcweizjm)Z\x00c\x00l\x00|vf,\x05c\x17F5\xaa6\xa0\x0e'
 b'J\x96\xe55\x81Y\xf2y\xa68\x01\xc8\xbe\xfd)\x89\t\xfa[\xbe\x91\x10W\x99'
 b'\x8f\xa3\xaf')

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

{'A1': [{'B1': 94, 'B2': 'evvidtb', 'B3': 231},
        {'B1': 44, 'B2': 'slomktm', 'B3': 242},
        {'B1': -69, 'B2': 'cweizjm', 'B3': 41}],
 'A2': 61,
 'A3': 735,
 'A4': {'C1': [744912508, 1175937797],
        'C2': -30967,
        'C3': -6664,
        'C4': {'D1': 0.7219024887814078,
               'D2': 30377,
               'D3': 2885166570,
               'D4': -17223969,
               'D5': 0.5515528321266174,
               'D6': 6964928586506876564,
               'D7': [-1607030219,
                      -443135474,
                      -229015243,
                      20489849,
                      704495304,
                      1543113097,
                      1460703678,
                      -1348235367]},
        'C5': 7083,
        'C6': 21761},
 'A5': 3704129099049507305,
 'A6': [0.4285568400479156, -0.10110824669662488]}

Пример 2

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

(b'\xfaGRBS\x04\x00\x00\x00~\x00}b<\x02\x00\x00\x00\x86\x00\x00\x00\x8a9'
 b'\xe3o"\xba9,h\xc5\xe6? \xf0Y\xde\xd1\xa5^\xb9`\xbaJ\xa3\xdc>pp_"'
 b'\x1eH\x90\x0c\x02\x00\x00\x00\x8e\x004"\xca\xab\xcc"\x92\x92D\x84\xcf;f\t'
 b'3`\xf5\xc2\xe9?\xc4Q6\x10\xaa\xd1\xdf?\x98lqmdrzn.\xffoiceyis\x9b\xbbqwhlprw'
 b'j\x12kvcmjgsnZ\x00c\x00l\x00u\x00z\r\xc1\xda\xbeT<\x9al\x9a\xed#\xc4_'
 b'\xca\xb9')

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

{'A1': [{'B1': -104, 'B2': 'lqmdrzn', 'B3': 46},
        {'B1': -1, 'B2': 'oiceyis', 'B3': 155},
        {'B1': -69, 'B2': 'qwhlprw', 'B3': 106},
        {'B1': 18, 'B2': 'kvcmjgs', 'B3': 110}],
 'A2': 125,
 'A3': 15458,
 'A4': {'C1': [3670084986, 2587645118],
        'C2': 14730,
        'C3': 28643,
        'C4': {'D1': 0.7115975250033595,
               'D2': 61472,
               'D3': 2781994585,
               'D4': -1168066210,
               'D5': 0.43093329668045044,
               'D6': 905302819364368496,
               'D7': [602774124, -1177919548]},
        'C5': 8756,
        'C6': -21558},
 'A5': 4309808798468547276,
 'A6': [0.805048644914035, 0.4971718939134713]}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xacVND\x02\x00\xa8\x00\x00\x00\xba4\x8b\xab\xe2\xc2\xb5\x199\xe4?\xaf\xa5r'
 b'\xcc\x95\x0f\xb1\xe7\xbe\x8aW\x86\xe0mx\x91\xd5rl\xc4y\x11\xc67\xac\xa3r'
 b'\x80\x188\x8a\t\x98\xd7?\x02\x00&\x00f,e?!kv\xd8\xe3\x0b2\xecg\x02\xfc%'
 b'\x84\x12\xc4\xe4\xd7\x9d\xab\x15\xf0\xcc]\xb2\xd8~9\nY<\x02\x00\x00\x00(\x00'
 b" 'hshg\x9a<\xaeK\xac}^o|\xfd=\x01A\xe0\xd4\xbf\x04\x00f\x00\xa8\xbb"
 b'\xcf\xbe_\xdb\xceN\x82<O\xf9\xd5X\x922\xc0>[P\xbf\xecy[\x9e\x15\\W\xdf\xf0'
 b'\xa4\xe2A\xb8\x02\x00\x00\x00j\x00\x16l*\x00\x00\x00l\x00\x00\x00')

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

{'A1': [{'B1': -14831,
         'B2': 1923329079,
         'B3': 0.3686546182438022,
         'B4': 'rl',
         'B5': {'C1': 0.8952087163925171,
                'C2': 33,
                'C3': 107,
                'C4': 55414,
                'C5': 227,
                'C6': 9522294074408448523},
         'B6': -672873454,
         'B7': -267015267,
         'B8': {'D1': -659399220,
                'D2': 14718,
                'D3': 22794,
                'D4': 60,
                'D5': [196, 121],
                'D6': 10016}},
        {'B1': 19374,
         'B2': 1868463532,
         'B3': -0.3261873733644831,
         'B4': 'hshg',
         'B5': {'C1': -0.4057285785675049,
                'C2': 95,
                'C3': 219,
                'C4': 20174,
                'C5': 130,
                'C6': 13849292714362359612},
         'B6': -1085252802,
         'B7': -1638172180,
         'B8': {'D1': -547922923,
                'D2': -23312,
                'D3': 16866,
                'D4': -72,
                'D5': [154, 60],
                'D6': 27670}}],
 'A2': [-70, 52, -117, -85, -30],
 'A3': 957986242,
 'A4': -1515241500,
 'A5': 114,
 'A6': 6308064130403112396,
 'A7': [-122, -32, 109, 120, -111, -43]}

Пример 2

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

(b'\xacVND\x02\x00\xa8\x00\x00\x00\xd6\x8d\xbdX\x16\xc2\xdaT\xd6\x83'
 b'\x0f.\x84\xaf\xf3S\xd0\xdc2\xe2\xac,\xe0\x17\x03\x85^\xe0aks\xe0\x9fD'
 b'\xce\xb7\x98\xf8v\xb0\xba\x14\x1b\x16\x13\xec\xbf\x03\x00&\x00<\xa1T?\xa8[$'
 b"\x93q%L\xaf\x9f\xe3xH\xb6\xf6\xe5dy\x10\x90,q\xd8\xc1RI'\x03\x0c\xfdF\x02"
 b'\x00\x00\x00)\x00!ewhb\xbb\xe7\x9d\x93)\xfc<\xe5|\xac\x94\xb3\xd2\xb8'
 b'\xe3?\x03\x00g\x00\xe8\xa3\x97\xbe\xd8\xce\xd2\x1f>\x96uMomU\xc4\xc94'
 b'\x17\xaf\x7f\x16\xa7/\x93\xfd\x0f\xed\xc6\xe1t\x8e\x980\x02\x00\x00\x00'
 b'j\x00\x17\xe6+\x00\x00\x00l\x00\x00\x00')

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

{'A1': [{'B1': -12732,
         'B2': 1996003511,
         'B3': -0.8773298767972246,
         'B4': 'aks',
         'B5': {'C1': 0.830585241317749,
                'C2': 168,
                'C3': 91,
                'C4': 37668,
                'C5': 113,
                'C6': 13134881232258026533},
         'B6': 2036655606,
         'B7': 1898745872,
         'B8': {'D1': 1230160344,
                'D2': 807,
                'D3': -756,
                'D4': 70,
                'D5': [224, 159],
                'D6': 25889}},
        {'B1': -27747,
         'B2': 3845979177,
         'B3': 0.6163114077984484,
         'B4': 'whb',
         'B5': {'C1': -0.2961723804473877,
                'C2': 216,
                'C3': 206,
                'C4': 8146,
                'C5': 62,
                'C6': 14538839425565947286},
         'B6': 2142181172,
         'B7': -1825593578,
         'B8': {'D1': -957542403,
                'D2': 29921,
                'D3': -26482,
                'D4': 48,
                'D5': [187, 231],
                'D6': 58903}}],
 'A2': [-42, -115, -67, 88, 22],
 'A3': -699082046,
 'A4': -2077356157,
 'A5': 175,
 'A6': 3219196541743944691,
 'A7': [-32, 23, 3, -123, 94, -32]}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x03DQR\x1f\x01\xbe\xed\xfd%\x7f\x99\x97\xca\xec\x00CK.Wk\xdd\x11\xd8'
 b'\xfa\xf4\x84\x13t\x94i`y\xe0\xe6\x85\x9dh<\xa7\x97I\xed?gA\xbf\xc1'
 b"\x0f\xfb\xac\xc8\x84\x95'\x05d\x00\xfe\xbf\xde\xf9\xea\xdax^\xe8["
 b'\x00\x00\x00\x04\x00\x00\x00\x13\x91\xb7\x9e\xad\x8c\xa4\xcdq\xbf}\xf0\x99'
 b's\xf8\x83\xda\xe4\x00\x00\x00\x02\x00\x00\x00#\x98\xb2\x92\xfe\x0323'
 b'\xc2\xf5#\x00\x00\x00\x03\x00\x00\x00%Ei\x8f$Bdr\xb6\xbe+>3\xc3\xf1\xd6[\x07'
 b'\x00\x00\x00\x02\x00\x00\x001md\xc90\xbc\'\xd1;\\\xbe\xc5\xce\xd5\xa6Eaga]"'
 b'\xf7\x8b\xe3p\xef\x90\x00\x00\x003\x9f\x86\x99')

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

{'A1': 7937,
 'A2': -0.4648219645023346,
 'A3': 127,
 'A4': 39319,
 'A5': 51948,
 'A6': {'B1': 91,
        'B2': [{'C1': [1466686737, 3640325252, 326407273, 1618600166],
                'C2': {'D1': -7946708549245809295,
                       'D2': -0.9919524788856506,
                       'D3': 29688,
                       'D4': -31782,
                       'D5': -28,
                       'D6': [133, 157],
                       'D7': -26446},
                'C3': 37630,
                'C4': 818,
                'C5': 868414755},
               {'C1': [1748805527, 1240285031, 1103085839],
                'C2': {'D1': 5001686247067120310,
                       'D2': -0.16722945868968964,
                       'D3': 50161,
                       'D4': -10661,
                       'D5': 7,
                       'D6': [251, 172],
                       'D7': 28004},
                'C3': 51504,
                'C4': 48167,
                'C5': -784638786}],
        'B3': [50638, 54694, 17761, 26465, 23842, 63371, 58224, 61328],
        'B4': {'E1': -930835161, 'E2': 90439934, 'E3': -0.4840037473199872},
        'B5': 159,
        'B6': 134,
        'B7': 153},
 'A7': 19246}

Пример 2

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

(b'\x03DQR\xbf\xb3?:\x17\x80$\xc3\x91?U\x00?A\x9a\x0fi\xb8C\xc6A\x14\x1f\x0e'
 b'\xc3\xd9\xcb\x19\xa5l\xd0Q\xeb5\xb9\x83 $\xfa\xa0\x98\xaa\x90\x15\xdd\x82+}'
 b'\x12p!?\xb2f\x05A(\xd5pK\x00\x00\x00\x02\x00\x00\x00\x13\xf4o~\x8a\xef\xc4cI'
 b'\xbfL7\x99X?z\xe5\x96\x00\x00\x00\x02\x00\x00\x00\x1b6&b\xa5\xf5~z'
 b'\xca{\x90\x00\x00\x00\x04\x00\x00\x00\x1d\xec\xdeAU\xf7\x84\r\x82\xbf'
 b';Z\xfe\x08\x03\xb5V\x07\x00\x00\x00\x02\x00\x00\x00-8E8\x14?\\L\x01\xd8$rU'
 b'[\xe4~\x85fO\xe5\xf6\xd11|O\xe7\xac\x00\x00\x00/\x99\xef\xa3')

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

{'A1': 49075,
 'A2': 0.7269210815429688,
 'A3': 36,
 'A4': 50065,
 'A5': 16213,
 'A6': {'B1': 75,
        'B2': [{'C1': [258586691, 3326153759],
                'C2': {'D1': -833308270847040695,
                       'D2': -0.7977233529090881,
                       'D3': 22591,
                       'D4': 31461,
                       'D5': -106,
                       'D6': [14, 195],
                       'D7': 13862},
                'C3': 25253,
                'C4': 62846,
                'C5': 2060090256},
               {'C1': [3653966245, 1825591787, 901350176, 620404888],
                'C2': {'D1': -1378592598448140926,
                       'D2': -0.731857180595398,
                       'D3': 2051,
                       'D4': -19114,
                       'D5': 7,
                       'D6': [170, 144],
                       'D7': 14405},
                'C3': 14356,
                'C4': 16220,
                'C5': 1275189284}],
        'B3': [29269, 23524, 32389, 26191, 58870, 53553, 31823, 59308],
        'B4': {'E1': 366838315, 'E2': 2098360353, 'E3': 0.07186920967872878},
        'B5': 153,
        'B6': 239,
        'B7': 163},
 'A7': 16794}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'MDYOZ\xef\x00\x02\x00\x00\x00t"\x9c\xff\xb0\xe8P\x9c\xcd\xf7S\x1c\xab%j\xab)'
 b'h\x1b\x00\x00\x00\x05\x00\x00\x00\x84\\\xf7\x9f\x0eOi\xa6\x85\xfc?'
 b"\x88\x10\xb7\x9f\xb3\xef\x1dE\xd3\x14x=\xff\xd7\xfe'\xd2~\x9b\xcc"
 b'\x00\x00\x00\x05\x002\xbbq\xda\x9cu\tZ\xe0\x923\xa2T\xe128\xd2\xbc\xa8'
 b'\xb8(\xe6Y*,v\x00c0]\x00\x00\x00\x07\x00Q\\\xd9E\x0e\xed\x01\xac'
 b'\x00\x00\x00<?2\xe7\xf5\x00\x00\x00_?\n]$m\x8c\x99\x0e\x0e\xd2G\xed'
 b'z\x89\xb6U\xb9t5D\x17\x91-\xd2')

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

{'A1': {'B1': 23279,
        'B2': [{'C1': {'D1': 18435483046653107148,
                       'D2': [47007, 46063, 7493, 54036, 30781],
                       'D3': [-69, 113, -38],
                       'D4': 2624915802},
                'C2': 0.6988518834114075},
               {'C1': {'D1': 6424996703721697373,
                       'D2': [57490, 13218, 21729, 12856, 53948, 43192, 10470],
                       'D3': [92, -39, 69],
                       'D4': 250413484},
                'C2': 0.5404837131500244}],
        'B3': 2494149428933336269,
        'B4': -2221,
        'B5': 2065785994147883035,
        'B6': [1837930766, 248661997, 2055845461, 3111400772, 395390418]},
 'A2': 1559731982,
 'A3': 5722287895943809040}

Пример 2

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

(b'MDYO\x9c6\x00\x02\x00\x00\x00n|\xfaA\xd2\x06\x1e\xcc\xa7|\xe3\xfb\n'
 b'\xba\t\xac:?\x0e\x00\x00\x00\x05\x00\x00\x00~\x04\xe8YX\x0b\xc8\xcdx\xef)'
 b'6\x18\xe4\x89s\xfa^\x19\xc9(\xf5\x899a\x1f\x13\xa5ji\xde\xb6\x80\xce\x9f'
 b'\x00\x00\x00\x07\x002\xf1$b|\xe4\x8e\xd4}\xe3F\xc3\xd4\xa3\xb1\xfe1\xb2\xcd'
 b'n\x00\x00\x00\x02\x00U-\xe8X\n\x1d5V\x00\x00\x00@>p\x83\xd8\x00\x00'
 b'\x00Y\xbf"\n\x93\x8cJ\xfd\x8a\t\xe5\xc84^\x81\xca\x87xB\xa2\x97\xc9\xf2'
 b'\x19\x84')

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

{'A1': {'B1': -25546,
        'B2': [{'C1': {'D1': 11919455769054989983,
                       'D2': [58505, 29690, 24089, 51496, 62857, 14689, 7955],
                       'D3': [-15, 36, 98],
                       'D4': 2095353556},
                'C2': 0.23487794399261475},
               {'C1': {'D1': 15322286062558170478,
                       'D2': [32227, 18115],
                       'D3': [45, -24, 88],
                       'D4': 169686358},
                'C2': -0.632973849773407}],
        'B3': 9005582775182347431,
        'B4': 31971,
        'B5': -357268669715562738,
        'B6': [2353724810, 166053940, 1585564295, 2017632919, 3388086660]},
 'A2': 82336088,
 'A3': 849154449051563544}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'PVYIL\x81Fs\xf4\x88iW\x89g\x16\xe3!\xd1\xa0BB\xf2\x00]\x00\x84\xdboeka\x00'
 b'\x00\x00\x8e\x00\x03\x00\x95<}\rG\xa7c\xcc\xc8>T\x9a\x8c\x9c\xd0\xe6\x117'
 b'\xadW\x15q\xd4\x1d\xcaJ\\\xb7\x8fFC\xd8\xb2>\x85\xae\xdapwJ^tyj\x80\xbd'
 b'\xb3\xde\xbczQ\xfc\x8a\xc2\xc9>\x84\x9b_\xd8\x1bJD\xb9\xcc\x00\x00\x00?\x00'
 b"\x00\x00E\x00\x00\x00K\x00\x00\x00Q\x00\x00\x00W\x9e[w\x82\xf3'\x0fh\\"
 b'\xd3\xb6\x95\x8aB\x90\xa1\xf0\x0b\xc5\x00\x04\x00\x00\x00\x8aB\xd3\x08\xa7'
 b'\xc1\xed\xa0')

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

{'A1': -9131483700349282423,
 'A2': {'B1': 7428374369784578626,
        'B2': -14,
        'B3': {'C1': 0.2589978873729706,
               'C2': -10213,
               'C3': 1246017996,
               'C4': [{'D1': 19036, 'D2': -1215347133},
                      {'D1': 55474, 'D2': 1048948442},
                      {'D1': 28791, 'D2': 1247704185},
                      {'D1': 27264, 'D2': -1112285508},
                      {'D1': 31313, 'D2': -58015031}],
               'C5': -98,
               'C6': 6590880560523995228},
        'B4': {'E1': -11338, 'E2': -27254, 'E3': 17040},
        'B5': 219,
        'B6': 'oeka',
        'B7': {'F1': [-95, -16, 11, -59], 'F2': 66},
        'B8': [54024, 42945, 60832]},
 'A3': 0.015445060096681118,
 'A4': -1486631736,
 'A5': 0.2076207995414734,
 'A6': {'G1': 156, 'G2': -790228681, 'G3': -83, 'G4': 1461023188},
 'A7': [29, -54]}

Пример 2

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

(b'PVYIL\xb1\xdf\xf4\r\x85\xda\xb3\x17\xcb\xee\xf7\xd2H\x1f\x05\xca\x00\x00]'
 b'\x00\x840juco\x00\x00\x00\x8c\x00\x02\x00\x93\xbd\xd0\xf9}*\xfb\xa2\x05\xbf'
 b'\x05\xde,0\x9fq]i\xa1+nh\x9bzS\x19\xcd7\xd6\x06ou\xdf\xf6z9\xef,'
 b'\xca\x93\xa3\xaf\xccb\x9e\xb2\x19\x06\x95m\xf5\xaen\xcdA?\x15\xb4\x1a\x145j'
 b'\xed\xa2Y\x00\x00\x00?\x00\x00\x00E\x00\x00\x00K\x00\x00\x00Q\x00\x00\x00Wp'
 b'v\x1cI)\xa6\xa1f6g\x8b\xf5@\xe3\x812I\x00\x02\x00\x00\x00\x8a\xfeR'
 b'\xc7\xf0\xe7')

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

{'A1': -5629512670272376041,
 'A2': {'B1': 14694955116681692618,
        'B2': 0,
        'B3': {'C1': 0.5847793817520142,
               'C2': 5173,
               'C3': 1793958489,
               'C4': [{'D1': 6605, 'D2': 936773231},
                      {'D1': 30175, 'D2': -159761937},
                      {'D1': 11466, 'D2': -1817989172},
                      {'D1': 25246, 'D2': -1306982763},
                      {'D1': 28149, 'D2': -1368470207}],
               'C5': 112,
               'C6': 8510757839061476918},
        'B4': {'E1': 26507, 'E2': -2752, 'E3': -7295},
        'B5': 48,
        'B6': 'juco',
        'B7': {'F1': [50, 73], 'F2': 254},
        'B8': [21191, 61671]},
 'A3': -0.10203836113214493,
 'A4': 721134085,
 'A5': -0.5229213237762451,
 'A6': {'G1': 48, 'G2': -1619960471, 'G3': -95, 'G4': 728656027},
 'A7': [122, 83]}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x9dCBB%.\x7f\xa6\x10x"t\xb5\x8f\x86\x9f\x8b\x9eykgacrvf\x05\x00'
 b':\x00\x00\x00*/\xa2j`\x00\xd0g\x0f6\x9c\xcf\x123\xfd\xff\xd2\xaa\xa2x'
 b'\x9b\xb5q(\xc9\x8c\xb1\xa8,\xc4\x80>\xfa\x15,\xadD?\xb4@\xb1\xa2\x11?'
 b'\x83X\xb3\xdeD?\xb2\x0f\x9a\xef.?\xec\xec\x7f\xad\xcd,i\xfcBr\x95H'
 b'/\x98\x99\t\xfc\x9e\x1e\xe0\xbfY\xdd?\x02\x00\x00\x00X\x00')

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

{'A1': 37,
 'A2': -5371630556475392210,
 'A3': -31089,
 'A4': -97,
 'A5': {'B1': 40587,
        'B2': 'ykgacrvf',
        'B3': [{'C1': -22351, 'C2': 0.25149667263031006},
               {'C1': 5626, 'C2': 0.7682673931121826},
               {'C1': 16564, 'C2': 0.5688887238502502},
               {'C1': 22659, 'C2': 0.7690231204032898},
               {'C1': 4018, 'C2': 0.6833435297012329}],
        'B4': 1789013802,
        'B5': {'D1': 691751346626720322,
               'D2': 0.4586028755825138,
               'D3': [-1384125204, -60216115]}},
 'A6': [906979280, 856870812, 2865954813, 3046865058, 2361993329]}

Пример 2

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

(b'\x9dCBB\xc0)\x07?\x17\xb2y\x93\xee\xd0\xc1\xef\x9bXnnvaayhw\x05\x00'
 b':\x00\x00\x00\xff\x16\xe7\x83l\x00\xfbAn\xb8\xe2c\xe5jc\xe6\xca23\x90'
 b'\x01\x95\x88p\x85\xde\xc9=\x80,p\xbf\xb9\xb0\x8b|\x1f?\xc6r920?)\x03\x89\xc2'
 b'a?\xb7\x17R\x02X?\x82\x1d4F6\xdb\xc9\x1e\xa8\xbc"o\xc0\xb6o\x14"g)1'
 b'\xc2\xf9\xbf\xf4\xc60;P\xe8H\xf2\xd3\xa6<\xde\xbf\x05\x00\x00\x00X\x00')

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

{'A1': 192,
 'A2': -1255526065305090263,
 'A3': -15920,
 'A4': -17,
 'A5': {'B1': 22683,
        'B2': 'nnvaayhw',
        'B3': [{'C1': 15817, 'C2': -0.9381790161132812},
               {'C1': -20295, 'C2': 0.6229941248893738},
               {'C1': 29382, 'C2': 0.6882663369178772},
               {'C1': 809, 'C2': 0.8818746209144592},
               {'C1': 6071, 'C2': 0.8437854051589966}],
        'B4': 2212959999,
        'B5': {'D1': 5781268177728043458,
               'D2': -0.47245188424962103,
               'D3': [1177820546,
                      516545334,
                      1864547496,
                      342865600,
                      824796962]}},
 'A6': [3094233595, 1793418210, 852158051, 2499907635, 3733287048]}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'OFP\xe5#\xee\xbestqo\x05\x00<\x00\x00\x00C\xad\xba\xdb*oUAu\xb5\xe2'
 b'\x82\xefw[\xe1\x03\x00\x00\x00n\x00\x00\x00\x80\x00\x00\x00buclzfuqougtfna'
 b'\x03\x00-\x00\x00\x00k\xad\xac\x97\x03\x000\x00\x00\x00\xd5\xe7\xb3\xd2'
 b'\x03\x003\x00\x00\x00\xefJ\xa7\x91\x03\x006\x00\x00\x000\x9f\xf0\xf0'
 b'\x03\x009\x00\x00\x00\x98\t\xef\xb3k)QU\x88a\x9c\xc3\x07\xf9\xd7\x0c\xe9\xcb'
 b'\xf1\x08 \xea\xb4\x03\x00\x00\x00t\x00')

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

{'A1': -0.46511760354042053,
 'A2': 29811,
 'A3': 28529,
 'A4': [{'B1': 'buc', 'B2': [107, 173, 172, 151]},
        {'B1': 'lzf', 'B2': [213, 231, 179, 210]},
        {'B1': 'uqo', 'B2': [239, 74, 167, 145]},
        {'B1': 'ugt', 'B2': [48, 159, 240, 240]},
        {'B1': 'fna', 'B2': [152, 9, 239, 179]}],
 'A5': {'C1': 4707791215351475523, 'C2': -19083, 'C3': 2012185314, 'C4': 57691},
 'A6': [10603, 21841, 24968],
 'A7': {'D1': -76, 'D2': [-116931684, -873919273, -366999311]}}

Пример 2

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

(b'OFP\xca\xd3y?\xd9p\xdb\xdf\x05\x009\x00\x00\x00\x8ck\xf4\x9f\xa5\xe0\x8e'
 b'\x97\xbe9\xa3-\x9c\xce\xcf\x98\x04\x00\x00\x00k\x00\x00\x00{\x00\x00\x00gxz'
 b'errtinqsl\x02\x00-\x00\x00\x00\xe2N\xe7\xde\x02\x00/\x00\x00\x009\x00\x19'
 b'\x93\x03\x001\x00\x00\x00m^\xaf\xe1\x03\x004\x00\x00\x00\xa7p\xf3'
 b'\x9f\x02\x007\x00\x00\x00I\xfe\xf95\xd5\xfb\x81\xaekM\x00]k_\xeb2\x13'
 b'a@\x87\x84\x02\x00\x00\x00s\x00')

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

{'A1': 0.9758878946304321,
 'A2': 28889,
 'A3': -8229,
 'A4': [{'B1': 'gx', 'B2': [226, 78, 231, 222]},
        {'B1': 'ze', 'B2': [57, 0, 25, 147]},
        {'B1': 'rrt', 'B2': [109, 94, 175, 225]},
        {'B1': 'inq', 'B2': [167, 112, 243, 159]},
        {'B1': 'sl', 'B2': [73, 254, 249, 53]}],
 'A5': {'C1': -7525830925331698804, 'C2': 14782, 'C3': -828625501, 'C4': 39119},
 'A6': [-1067, -20863, 19819, 23808],
 'A7': {'D1': -124, 'D2': [854286187, -2025823981]}}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LUUC\xa6\xe1B\x00\x00\x00K\x00\x00\x00T\x00\x00\x00]\x00\x00\x00f\x00'
 b'\x00\x00o\x00\x00\x00x\x00\x00\x00\x04\xb7Rh\xf5(\xdf\xbf:\x12R>\xa2\x00'
 b'\x00\x00 1\x0c\xc53j\xe9\xbf\xf3)zD\xca\xf7\x86\x92\x16\xa6\x9f\x8fvauxb\xb0'
 b'\xe73\x87teaxc\x831\xb0hisuww@2\x9fkqjpow \xbc\x14\x1drczld\xa4\xb4;hgzrbx'
 b'h\x03\xfe\x0cosjog\xe0pnZ\x83+\xde\xbf\x9e@\t\xda\x14\xaf\xee\xbfj\xb3\xf7'
 b'\xb4\t_\xe4?\x1c\x81\x13\x12\xa6\n\xda?2m\xe50|\x1d\xa0e\x9dX\xf7'
 b'\x81\x00\x00\x00\xafh\xa9\x8e:\xb3\xac\x15')

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

{'A1': 225,
 'A2': [{'B1': -1885362666, 'B2': 'vauxb'},
        {'B1': -2026641488, 'B2': 'teaxc'},
        {'B1': 1756377475, 'B2': 'isuww'},
        {'B1': 1805595200, 'B2': 'qjpow'},
        {'B1': 487898144, 'B2': 'rczld'},
        {'B1': 1748743332, 'B2': 'gzrbx'},
        {'B1': 217973608, 'B2': 'osjog'}],
 'A3': -0.4868749159603427,
 'A4': 0.2051476538181305,
 'A5': {'C1': 109,
        'C2': 6385371585045082341,
        'C3': -9,
        'C4': {'D1': [-0.47140582877342574,
                      -0.9588722475546267,
                      0.6366013083003115,
                      0.40689994588139355],
               'D2': 50},
        'C5': 1561820234873661615},
 'A6': -0.7942141388498705,
 'A7': [1148856819, 2458318794]}

Пример 2

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

(b'LUUC\xa6\xbcB\x00\x00\x00K\x00\x00\x00T\x00\x00\x00]\x00\x00\x00f\x00'
 b'\x00\x00o\x00\x00\x00x\x00\x00\x00\xcc\x15\xa6\xfbWb\xdf\xbf\t>G?\xa2\x00'
 b'\x00\x00\xe8<\xeb\x84\xb8\x04\xcd?,\xc9\x13\xdf\xd0^\xa6i\xf8\xc5+\x08ij'
 b'owo\x02\xecW\x80lzdthb\x1f\x90\xafdxuslyc-Wfeiyk\x05\xd0\x02\xa8ipfnsI'
 b'\xa3\xd2\x0bdyusb8B\xc4"ysiajP\xfb\xd9\x0fp\xed\xc7\xbf\xf0p\xa3'
 b'\xf0\x86b\xbd\xbf\x9e\x1dK\x07\x85\xba\xe3?t\xeb]\xfaJ\x07\xe5\xbf\x97/\xd1'
 b'\xb6\xd0\xe63|\xed\xa3\x18\x81\x00\x00\x00\x14\x1b~\xcaa\xf6W\xdb')

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

{'A1': 188,
 'A2': [{'B1': 137086456, 'B2': 'ijowo'},
        {'B1': -2141721598, 'B2': 'lzdth'},
        {'B1': -1349509278, 'B2': 'dxusl'},
        {'B1': 1462592377, 'B2': 'feiyk'},
        {'B1': -1476210683, 'B2': 'ipfns'},
        {'B1': 198353737, 'B2': 'dyusb'},
        {'B1': 583287352, 'B2': 'ysiaj'}],
 'A3': -0.4903774220950623,
 'A4': 0.778290331363678,
 'A5': {'C1': 47,
        'C2': 11812233960020293329,
        'C3': 24,
        'C4': {'D1': [-0.18693352483748038,
                      -0.11478465437852825,
                      0.6165185110520957,
                      -0.6571402444818504],
               'D2': -105},
        'C5': -2641371756559983852},
 'A6': 0.22670656671696254,
 'A7': [3742615852, 1772510928]}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'aACG\x00\x00\x00$W\x06\x00\x00\x00PA\\\x00\x02\x00|RQ/\x90}\x9c|\x16'
 b'8\xf6\xd2\x0fy\xd0\x00\x84\xcc\xbeD\xf7%\x1a\re\x9f\x97\xb4\xa7\xf3\xf0c\xb4'
 b')H\xe3\xd1GH\x17]\x0fS\xbf\xe6\x07\x86H\xca\x19\x16k\x8bJQ\xcd\xc8'
 b'\xb3\xce\xdb[\x98\xbe2O\xdb\x9d${\xa5\x1bk,\xe0\x8b\xe7\xa6\x82<.^\xcfww\xaa'
 b'\x1f\xb4?\xe5ME6l;\x1a\x0f\x94\xe0\x10\x03J\xa1\xcfIMQ@A\xdb\xaf\xe5\x84H'
 b'$#c\x88\x08\x95\xbf\x82\xc5\xa1?\xed\xa0rM4\xc0\xf0\xab\xc9\xc9?\xcf\x13'
 b'\xad#~/\xc8~a')

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

{'A1': [{'B1': {'C1': 204,
                'C2': -0.19234903156757355,
                'C3': [6669, 26015, -26700],
                'C4': [-1477185437, -1272362781, -783857641],
                'C5': 23823,
                'C6': 83,
                'C7': -0.6884185239476064,
                'C8': [27531, 19025, 52680, 46030, 56155]},
         'B2': 22278},
        {'B1': {'C1': 152,
                'C2': -0.17413274943828583,
                'C3': [-25308, 31653, 7019],
                'C4': [752913383, -1501414354, 1590654839],
                'C5': 43551,
                'C6': -76,
                'C7': 0.6656824171967373,
                'C8': [3988, 57360, 842, 41423, 18765]},
         'B2': 16732}],
 'A2': {'D1': [1363165659, 2951054408],
        'D2': 82,
        'D3': 1362071677,
        'D4': -1669589448,
        'D5': -10,
        'D6': -770737712},
 'A3': {'E1': 9251,
        'E2': 7171991845843682721,
        'E3': 0.9258357532435451,
        'E4': 171,
        'E5': -13879,
        'E6': 0.2427879737191445,
        'E7': 32353}}

Пример 2

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

(b'aACG\x00\x00\x00$\x0f\xf0\x00\x00\x00P\xec\x82\x00\x02\x00|\xd7\x89\x87\xd0'
 b'\xea\x82dkK\xd5dP\xeb\xa1\x00\x84\x01\xbfLZ\xc5r\xe3v|\xe0h\xdb7\x90}Q'
 b'\xf5\x01\xfdJ~\x83\xaf\x82\xdc\xc8\xbf\xe1\xc0\xe3\xd2\xb5-\xda\x89ZF\xfdy:'
 b'i\xe3\xeb\x16+\xbf+"\x02\xe5\xc7p\x9c9\xcb-P-\xb5X\xacH\x00\xb7|\xcb\x91\x8c'
 b'\x1a.\xbf\xea)\xa8\x162\xb3\\\xc6zBZ\xfa\x14\xb9#\xbe\xc1\xd51\x8b\x8c'
 b'Z\xa9\xe0\xa7W}i\x06\x8c\x13\xd7g\xb5p\xbf\xe5\xd1\xd1\x99\xd0\x8e8\xc7p'
 b'w\xbf\xe1h>\xd3s\xff`\x9f\t')

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

{'A1': [{'B1': {'C1': 1,
                'C2': -0.7982600331306458,
                'C3': [29411, 30332, -8088],
                'C4': [-617115523, 1375011325, 1249805231],
                'C5': 33500,
                'C6': -56,
                'C7': -0.554796134508645,
                'C8': [35162, 18173, 31034, 27107, 60182]},
         'B2': 4080},
        {'B1': {'C1': 43,
                'C2': -0.6684876680374146,
                'C3': [-6713, 28828, 14795],
                'C4': [760229301, 1487685632, -1216558191],
                'C5': 35866,
                'C6': 46,
                'C7': -0.817585032802167,
                'C8': [50810, 16986, 64020, 47395, 48833]},
         'B2': -4990}],
 'A2': {'D1': [3576793996, 1521082535],
        'D2': 215,
        'D3': 2307379434,
        'D4': -2107348149,
        'D5': -43,
        'D6': 1683024801},
 'A3': {'E1': 22397,
        'E2': 7567890240688862576,
        'E3': -0.6818626407807136,
        'E4': 199,
        'E5': 28791,
        'E6': -0.5439752702659284,
        'E7': 40713}}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TOUJ\xb6\x1a\xbb  \x96\xfe0\x00J\x00\xf0\xaf\xdc\xf8\x8f\xe4\xd1UoE\xbc\xcc"'
 b's4\xe6\xea\x02\x00\x00\x00b\x00\x9f\x83\xc2G\x17\x80\xe2@mb\x1bv}\xcb'
 b'\x1e\r\x16?|\x15\xc9e\x00|\xee\xbf\x02\x00\x00\x00.\x00#\x95eqm\xd0'
 b'\x1b\xa0\xcd\xa8\x15?JD\xe2N\x0c/\xe2\xbf\x02\x00\x00\x00H\x00\xaaI\xc6^'
 b'\xd1>i\tV3')

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

{'A1': 539015962,
 'A2': -362,
 'A3': [{'B1': {'C1': -880970213,
                'C2': 0.5861376523971558,
                'C3': -0.9526369083402382},
         'B2': 'mb',
         'B3': 38179},
        {'B1': {'C1': -1608789907,
                'C2': 0.584606945514679,
                'C3': -0.5682431736660274},
         'B2': 'eq',
         'B3': 18858}],
 'A4': 240,
 'A5': {'D1': 8022549090828606639,
        'D2': -1520470155081237435,
        'D3': [1053908678, 861276521]},
 'A6': 159,
 'A7': [-125, -62, 71, 23, -128, -30, 64]}

Пример 2

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

(b'TOUJ\xb6R\xde\xb2\xe6\xb2\xce0\x00J\x00\xd3\xfc\x02\x96\xa4\xaf\xfcX\r'
 b'\x02\xff\x8d\xb0&\xa9\xdbZ\x08\x00\x00\x00b\x00\xc7\x1bH\x04\xa4,\x05raq'
 b'D\xd1\xfc\x97h\x1bh?\xd0\xb7\x8d\xdd\x81K\xdd?\x02\x00\x00\x00.\x00\x9b\x12'
 b'ag\xbc\x01\xb2\x9aa\xa7\xce=(X7\x00\xec\xfb\xde\xbf\x02\x00\x00\x00H\x00'
 b"\x83\x8b\x9f\x987\xe9U\xf2'kN\xe5\xc1\x84\xb2v\xd3\t\xcaH\x9c\xfaBO"
 b'\x94j-\xb6;@2\xa2\xf8[')

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

{'A1': 3870482002,
 'A2': -12622,
 'A3': [{'B1': {'C1': -1745039036,
                'C2': 0.9066681861877441,
                'C3': 0.45773359905331024},
         'B2': 'aq',
         'B3': 4763},
        {'B1': {'C1': -1699610180,
                'C2': 0.10090518742799759,
                'C3': -0.4841260912047596},
         'B2': 'ag',
         'B3': 35715}],
 'A4': 211,
 'A5': {'D1': 961796351754371836,
        'D2': 6547012466949095170,
        'D3': [-382232417,
               1797780053,
               -2067667634,
               164853426,
               -90421046,
               1788104514,
               1077655085,
               1543021106]},
 'A6': 199,
 'A7': [27, 72, 4, -92, 44, 5, 114]}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'TXJ\x002\x00G\x00\\\x00q\x00\x86\x00\x9b\x00\xb0\x00\xc5\x00\xd2\x00\x00\x00'
 b'\xe0\xed\xa5P\x942\x10G\x97\xa1\xc6\xcb\xc5\x1b\x1a\xdc\xd8\x00\x13\x94'
 b'\xf1\x1e!n\x8a\x96\x02\x00*\x00\x00\x00qI\xacp\xb2\x05\xd023\xe9\xaf/'
 b'E/\x16\x02\x00?\x00\x00\x00\xac\xe8BXT\x95\xf0zD\xe9\x0c\xd4\xba\xf3\xd8'
 b'\x02\x00T\x00\x00\x00M\xeaA\xfe\x1c\x06\xf8\x8f\xc0l\x89\xc7l\xe0'
 b'\x10\x02\x00i\x00\x00\x00O/,\xc9V\xfe\xdb\xd3\xb4\x8c\x04uW\x02z\x02\x00'
 b'~\x00\x00\x00RC\xee\x08\xd0R\xedV\x97\x1a3p\xdea\x1c\x02\x00\x93\x00\x00'
 b'\x00\xc5\xc1u\x9c\x00\xc7\xc9\x05\xceSu\x16\xa7\xe4\n\x02\x00\xa8\x00'
 b'\x00\x00W\x1c\x98\xb5\\+\x9c\xf3\xbc#c\xefj\xe28\x02\x00\xbd\x00\x00\x00c'
 b'\xc7\x06+$$\x0c\xcbmc\x01<\xb0\xbc\xd5V\xae\xde\x97\xeeW\x84\xc6\xd5\xd1rBr!')

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

{'A1': [{'B1': [519148563, 2525654561],
         'B2': 113,
         'B3': -21431,
         'B4': -804933008},
        {'B1': [2951295794, 372196655],
         'B2': -84,
         'B3': 17128,
         'B4': -258649000},
        {'B1': [216614010, 3639851732],
         'B2': 77,
         'B3': 16874,
         'B4': -133817090},
        {'B1': [2305605775, 283143367],
         'B2': 79,
         'B3': 11311,
         'B4': -604088631},
        {'B1': [76330195, 2046973813], 'B2': 82, 'B3': -4541, 'B4': -313339896},
        {'B1': [857380694, 476175984],
         'B2': -59,
         'B3': 30145,
         'B4': -909705060},
        {'B1': [1968426501, 182757142],
         'B2': 87,
         'B3': -26596,
         'B4': -1674879819},
        {'B1': [1663286515, 954362607], 'B2': 99, 'B3': 1735, 'B4': 203695147}],
 'A2': {'C1': {'D1': 203, 'D2': 109}, 'C2': 2956722531},
 'A3': [5120648388909854176, -2586724499629629033],
 'A4': {'E1': -10820,
        'E2': [-20906, -26658, 22510, -14716, -11819, 17010],
        'E3': 8562}}

Пример 2

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

(b'TXJ\x002\x00G\x00\\\x00q\x00\x86\x00\x9b\x00\xb0\x00\xc5\x00\xd2\x00\x00\x00'
 b'\xcd\xa0\x7f\x15\x80\xd8aJ\x11\x04\x9e\x1bt\xb6\x90E\xd8\x00\x12>\xec{L\x8b'
 b'+9\x02\x00*\x00\x00\x00p\x835\xe6/\xbd\xa4\x0c\x0b\xc2\xea"\xe3\xea\x9c\x02'
 b'\x00?\x00\x00\x00.\x8fS\xc2\xa7\x1b\xd3\xf4\x85j-y\xcc|$\x02\x00T\x00'
 b'\x00\x00\xc1-1\xce"\xa5\x94\xb5\xacK\xef`*0N\x02\x00i\x00\x00\x00^'
 b'\xf5\xe2\xa8\xff\x05\x0c\x1a$\xeb\x05Y\x05R\xa1\x02\x00~\x00\x00\x00'
 b'I\x8c\x86\xd4\xd2\x08k#V\x1eY\xeb!Z(\x02\x00\x93\x00\x00\x004\x0cs'
 b'\x88\xa3Y\xe1G\xe7\xb3\xb4\x113\xa2i\x02\x00\xa8\x00\x00\x00\xe3r'
 b'\xba\xe9\x95\xf5_\x9cDr\xe3\xa1]\xbed\x02\x00\xbd\x00\x00\x00e'
 b'\x80\xc9\xb6\xa0_\xdf\xa7\xc5W\xf2/X\x8bn\x16\xf9\xf0wf\xee\xca\xb57\xf9'
 b'\xee\x1b\xb4\xf8')

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

{'A1': [{'B1': [2079079954, 959155020],
         'B2': 112,
         'B3': 13699,
         'B4': -1531105306},
        {'B1': [3938585356, 2632639266],
         'B2': 46,
         'B3': 21391,
         'B4': -753162302},
        {'B1': [761955828, 612158585],
         'B2': -63,
         'B3': 12589,
         'B4': -1801116978},
        {'B1': [4014714037, 1311779424],
         'B2': 94,
         'B3': -7435,
         'B4': 201719720},
        {'B1': [99296282, 2706507097],
         'B2': 73,
         'B3': -31092,
         'B4': 1795740372},
        {'B1': [1495160355, 676995563],
         'B2': 52,
         'B3': 29452,
         'B4': -514219128},
        {'B1': [3031689031, 1772237585],
         'B2': -29,
         'B3': -17806,
         'B4': 1609930217},
        {'B1': [3815916700, 1690197409],
         'B2': 101,
         'B3': -13952,
         'B4': -547381066}],
 'A2': {'C1': {'D1': 167, 'D2': 197}, 'C2': 1479537239},
 'A3': [5359803076175700173, 5012706995059164177],
 'A4': {'E1': 28299,
        'E2': [-1770, 30704, -4506, -18998, -1737, 7150],
        'E3': 63668}}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'DRE\xbe\xdau\xa8A\x1b\x8d$\x03E?Y\x1b>\x00\x04\x00W\xb5\x17\xe0c\x01\x84\x00'
 b'\x04\x00[w\xc6\xf93\xbb9NV\x14`g\xb8\x87L\xfe\xa5\x1f:/\xc5\xf8\xa1\xb7C\xcf'
 b"\xb4 \x96\xa3|a\xed\xc0\xc2\x0e\xb3\x8d\x17?\xe8\x00Z'k\xc8\xce\xd2g\xf1"
 b'.\xda/\xf2bx\x95wekt\xfc|a!\x97K.F\xbf5g!T\xdd\x1e\xef\xd4Ni\x04>'
 b'\x99\x12\xfa\x1e\xac%\xc7!\xd1@}\xbf\x10\x95\xfc\x8b\x03\xf0S\x1b\xc4x\xe4='
 b'*6\xe8')

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

{'A1': {'B1': 190,
        'B2': 3665143873,
        'B3': 1985282607205538075,
        'B4': 62,
        'B5': 'wekt',
        'B6': -75,
        'B7': 23,
        'B8': 3764584836},
 'A2': [{'C1': [64636, 24865, 38731], 'C2': 11846, 'C3': -0.7086048722267151},
        {'C1': [21725, 7919, 54350], 'C2': 26884, 'C3': 0.2989729046821594},
        {'C1': [7852, 9671, 8657], 'C2': 16509, 'C3': -0.5647885799407959},
        {'C1': [35587, 61523, 7108], 'C2': 30948, 'C3': 0.04155626893043518}],
 'A3': 119,
 'A4': {'D1': [3338220475, 961435156, 1617410183, 1291756831, 976209400],
        'D2': -6793886953505778013,
        'D3': 2086792640,
        'D4': 194},
 'A5': 246648087,
 'A6': 0.7500429887716338,
 'A7': 53863,
 'A8': -1067676162175371115}

Пример 2

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

(b'DRE\xcfad\x11\x1e\xfb\xddW\x92\\\xad>\x1a\xcb\x00\x07\x00W\xa0\x0e5'
 b'\xb8\xba\xc7\x00\x03\x00^\x1cn\xcf\xaf\x9f\x17M\xae\x02\xeeUt\xdd'
 b'H\xfe\xeb\xe6L\x0cq\xf1[\\\xd5\xb8\xe7q\x92+\xcf\x02\x96\x1e\xd3W\xd92'
 b'\xd3?\xb3\xb0K\x87\xefh\x00O*6q\xff\xbc\xd4\x19\xfe8gzcwzzv3r\x16\x03\xc2.'
 b'\xb0Q\xbe\xa1\xec\xaa\xe1\x8b\x1e\x90\xbf\x7fC\xeb=\xf9gkB\x1e'
 b'\x8e\xaa\xd6\xba.\xdb?t\x03\xc8')

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

{'A1': {'B1': 207,
        'B2': 1633947934,
        'B3': -297985714204885478,
        'B4': 203,
        'B5': 'gzcwzzv',
        'B6': -96,
        'B7': 14,
        'B8': 901298887},
 'A2': [{'C1': [13170, 5635, 49710], 'C2': -20399, 'C3': -0.3162587285041809},
        {'C1': [57739, 7824, 49023], 'C2': 17387, 'C3': 0.12177928537130356},
        {'C1': [16926, 36522, 54970], 'C2': 11995, 'C3': 0.9531826972961426}],
 'A3': 28,
 'A4': {'D1': [1859104671, 390966786, 3998577885, 1224666086, 1275884017],
        'D2': 6583371745442501163,
        'D3': 3473053214,
        'D4': 211},
 'A5': 1473852115,
 'A6': 0.07690879887323376,
 'A7': 20266,
 'A8': 3923197936893820472}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YHAJw\xbf\xaf\x9d\xb6\xb9m\xd3`\x90\x84\x94\x81\x00A\x00YC/%\xe7\x86\xb9\xf2'
 b'\xb6\x92\x95\x00\x00\x00\x06\x00\x00\x00a\x9e*m\xa6J\xfchZ\xa4l\xb4J\xa9'
 b'\xab\xa2\xba;e\xbe\xfc\x9a\xfe\xbc\xfao9\xe7\x15\x00\x02\x009f\xa2\xbeY\x1a'
 b'\xca?\x10@\xcf\xbft\x8cr\xbe\x94\x90\xbc6\xf3\x00\x04\x00I\xa0\xd8slibmx')

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

{'A1': -0.06175013555085829,
 'A2': -28540,
 'A3': {'B1': 38017,
        'B2': [{'C1': {'D1': -6379,
                       'D2': [-0.493369996547699, -0.030570613220334053],
                       'D3': 102},
                'C2': 162},
               {'C1': {'D1': 14067,
                       'D2': [-0.2120162546634674,
                              0.5634889006614685,
                              -0.9552680253982544,
                              -0.2901667356491089],
                       'D3': -96},
                'C2': 216}],
        'B3': 17199,
        'B4': 2731299832222618261},
 'A4': 'slibmx',
 'A5': 2653580710,
 'A6': 19196,
 'A7': [26714, -23444, -19382, -22101, -23878],
 'A8': 15205}

Пример 2

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

(b'YHAJw?\xd8t\xfbA{\xf1 \rs\x99\x81\x00I\x00a\x18\x8e\x10\xa7ml\xd7*/z\x00'
 b'\x00\x00\x04\x00\x00\x00i\xbbc\xa5m]\xc9A\xc1l\\\x8c\xb8U\xce\xc8iH\xd2?->'
 b'\xf6>+2\x00\xbf<p\xce\xbf\x01\xbcA\x19\xd0\x00\x04\x009\xc1\x81\xbf\x15}'
 b"\xcf\xbfco)?A'\xba\xbf\x1f\x13l\xdc\x1a\x00\x04\x00Q\x88\xa5dyeq")

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

{'A1': 0.38213998217521983,
 'A2': 3443,
 'A3': {'B1': 39297,
        'B2': [{'C1': {'D1': 6608,
                       'D2': [0.6767419576644897,
                              0.16718292236328125,
                              -0.7360962629318237,
                              -0.5067787766456604],
                       'D3': -63},
                'C2': 129},
               {'C1': {'D1': -9190,
                       'D2': [-0.583950936794281,
                              -0.8884149193763733,
                              0.7545124292373657,
                              -0.6213901042938232],
                       'D3': -120},
                'C2': 165}],
        'B3': 6286,
        'B4': 1200048139951288186},
 'A4': 'dyeq',
 'A5': 3143869805,
 'A6': 24009,
 'A7': [16833, 27740, -29512, 21966, -14231],
 'A8': 18642}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CPQ8\x03\x00\x00\x00\\\x00\x14\xf4\xbbg\x1cj\xa0$_\x00\x00\x00h\x00'
 b'\x00\x00q\x00\x00\x00z\x00\x00\x00\x83\x00\x00\x00\x8c\x00\x00\x00\x95\x00'
 b"\x00\x00\x9e\x00\x00\x00\x8c\x081\xbe0{\xfah\x83'\x90\xb3\x9f\x1d"
 b'8\x8c\xb7\xbf\xf8\x90\x19;\x05\x00\x00\x00\xaf\x00\x00\x00E\x11h\xbe'
 b"\x12\xfe\x84X\xe1oc-\x19\x89C\xf9'`?\xf9r%\xc5\x08\xe2\xbb\xc7\xbeB3\xd7\xa0"
 b'\x0b\xbf\xae\xe9=\xf7\xf1\xda\xab\xddcF\x96>\x1a<\xd6\x0b\xdaRE\xd5>h'
 b'.-\xe3\xb0\x87t\xd3\xbe}\x1au\xcc\xf1\x0b\x0e\x8f>l\xcd\x86\xa8\xece+'
 b'9\xa1\xe5\x8bj\x87\x82\xab7=PG\x1e\x1b\x8dyIb\x11\xc1')

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

{'A1': [25, -119, 67],
 'A2': {'B1': 1740370964,
        'B2': 28,
        'B3': 106,
        'B4': 9376,
        'B5': [{'C1': 0.8756099343299866, 'C2': -987401479, 'C3': 8},
               {'C1': -0.39010530710220337, 'C2': -1596509374, 'C3': 11},
               {'C1': 0.11410283297300339, 'C2': -1411714569, 'C3': -35},
               {'C1': 0.2935057580471039, 'C2': 198589466, 'C3': -38},
               {'C1': 0.41654449701309204, 'C2': -483578264, 'C3': -80},
               {'C1': -0.41299840807914734, 'C2': -864740739, 'C3': -15},
               {'C1': 0.27940401434898376, 'C2': -1467560596, 'C3': -20}],
        'B6': {'D1': -1590088859,
               'D2': -2023060507,
               'D3': 0.04484129697084427,
               'D4': 80,
               'D5': -1927602617},
        'B7': -0.17288416624069214,
        'B8': [31536, 26874, 10115]},
 'A3': -0.09198332522619368,
 'A4': 991531256,
 'A5': [121, 73, 98, 17, -63],
 'A6': -0.226628378033638,
 'A7': 3270580768044547602}

Пример 2

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

(b'CPQ8\x05\x00\x00\x00\\\x00\xaf\xedq\xb1\x95\x9fn\x8fa\x00\x00\x00j\x00'
 b'\x00\x00s\x00\x00\x00|\x00\x00\x00\x85\x00\x00\x00\x8e\x00\x00\x00\x97\x00'
 b'\x00\x00\xa0\x00\x00\x00\xfb\xf6\x98\xbeC3\xc3\xd3\xf6*\x80\xd6\x1c{'
 b'\xa8\xb6\xb5?\tA\xa8\x16\x04\x00\x00\x00\xb1\x00\x00\x00\xa5\rv>'
 b'\xe82\xff\x17\xa7\x17Q\x83\x07^\xac\x99\xf0\xc4\xa0=\xbfU\xd7,6\x80\xc8]'
 b'(?\x15\xe9L\xbf^\xca\xc2z?#\xa3"e`+R(>\xed\xc9j\xe7I\xb8\xe0\xe3=\xa282'
 b'\xdb\xf79\xe28?\xbe\xb7%\xe1E\xb9;X>\xa3\xfa\xd0\x84[\xc2\x94\xa9Z`\xd2-\xb7'
 b'\xce\x9c\xf1=\x08\xf4:\xa7\xf2\x1f\xc5\x06T')

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

{'A1': [7, 94, -84, -103, -16],
 'A2': {'B1': 2977033647,
        'B2': -107,
        'B3': 159,
        'B4': 36718,
        'B5': [{'C1': -0.740734338760376, 'C2': 908908373, 'C3': -128},
               {'C1': 0.6576809883117676, 'C2': -1085478635, 'C3': 94},
               {'C1': 0.9795347452163696, 'C2': 1696768803, 'C3': 96},
               {'C1': 0.16437594592571259, 'C2': -412431891, 'C3': 73},
               {'C1': 0.11126846075057983, 'C2': -617465694, 'C3': -9},
               {'C1': 0.7222018837928772, 'C2': -517621826, 'C3': 69},
               {'C1': 0.21116532385349274, 'C2': -2066679133, 'C3': 91}],
        'B6': {'D1': 1521063106,
               'D2': -1221733792,
               'D3': 0.11797486245632172,
               'D4': 8,
               'D5': -223921420},
        'B7': -0.2987593114376068,
        'B8': [13123, 54211, 10998]},
 'A3': 0.08481839185409434,
 'A4': 380125449,
 'A5': [31, -59, 6, 84],
 'A6': 0.2402864247560501,
 'A7': 9462370298511700712}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GGET6Q\xca`\x90\x8e\xc4\x05\xc9\xbb\xc9/\x8a\x04\xbbE\x8b\xe5\r\x85'
 b'a\x00\x00\x00\x02\x00\x00\x00s\xb0\x00\x00\x00\x02\x00\x00\x00w\xd1\xbf'
 b'\xbb_M\xf5\xb7$\xc0\rp[:9\xd7\x02Y\xf6N\x16\x88\xa6>Ta?\xc7\x9d\x95\xb6'
 b'\xdce\x80?\x14J-\xc2\xe0x\xf0\xf0)\xd5\x1d\xf1\x07"\x9e\x81\xd6\xbfH]z^\xdcN'
 b'\xa2\xf0\xae\xdf$WS\xc1RV\xc9>\xa0\xfd\xb3\x00O\x00a\xd2\x0b\x82*^'
 b'\xd6o\x12\xdb\x9b\xa7\x8f\x9c\x9d\x02\xa3')

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

{'A1': [20938, 24720, -28988, 1481, -17463, 12170, 1211, 17803],
 'A2': -452098719,
 'A3': [{'B1': {'C1': -4404387459351587555, 'C2': [-3833, 8862, -32298]},
         'B2': -0.7826763391494751},
        {'B1': {'C1': 6835424796171231012, 'C2': [22355, -16046, 22217]},
         'B2': 0.31443557143211365}],
 'A4': 176,
 'A5': [15135334091200032530, 15824425950946067107],
 'A6': -47,
 'A7': {'D1': -0.10692298172866099,
        'D2': [968374225521279577, -698596116035382175],
        'D3': 0.18449660710102123},
 'A8': 0.5792568325996399}

Пример 2

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

(b'GGET6Y\t\x95\xf2\xeeB\x98\xae\xb8y\xc4>\xd0\xbe\x7f\xbc\x1cM\x98'
 b'\xcd\x00\x00\x00\x03\x00\x00\x00\x85`\x00\x00\x00\x03\x00\x00'
 b'\x00\x8b\xed\xbf\xedx\xa8\xb0\xba\x8b\x88\xaa\xcfx]\xb6\x0cd\x9d\xc3'
 b'(\x95\xb1\xef*\xdd\x03?\xba\xf8\xd7\xab\xbe}p>\xe7\xf3\xaf\x1b\x109\xe3j'
 b'\x16\xfcB\x96{s\x0b\x89\xb6?\x16\x03\xc5D\x89\xad\xa2\xe1 \xebDB\xf6\x10'
 b'\x06\x93\\?4\x84\xdc" \x87z3\xa7\xc1\x84\x97\xb8C\x9ak\x7f?NP\xf6\x00O\x00'
 b'a\x00sP\xd17\x01\xe7\x9d\x95\xef*N\xd9m\x8a\x03\x872\xa6:\x8c\r\x04TB\x88')

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

{'A1': [22793, -27150, -4542, -26450, -18311, -15298, -12098, 32700],
 'A2': 474847437,
 'A3': [{'B1': {'C1': 1950122287551675458, 'C2': [-27013, 29451, -30282]},
         'B2': 0.5859950184822083},
        {'B1': {'C1': 4938669381461797700, 'C2': [17142, 4102, -27812]},
         'B2': 0.7051522731781006},
        {'B1': {'C1': 2459114355466682756, 'C2': [-26696, 17306, 27519]},
         'B2': 0.8059228658676147}],
 'A4': 96,
 'A5': [5823496274487121391, 3048613062266554162, 11978040146480349832],
 'A6': -19,
 'A7': {'D1': -0.9209788753254182,
        'D2': [-6138555423201139555, -4384089645790864125],
        'D3': 0.10535953467341641},
 'A8': 0.4530310332775116}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'jMOP\x08\x00\x1e\x00\x00\x002\x00\x02\x00>\x00\x00\x00\x02\x00t\x00g\x85'
 b'\x01;\xb4\xda\x1d\x04poomwgodJ\rb0\x0e\xa6\xf1{\x1d\x88}V\xc5\x0c'
 b'\xd3j\xe7\xdcK\xa2&\x00\x00\x00jo\xf1I:=\xc4\x8a\x99\xd0\x85\xf5\x99\xaa'
 b"F`\xe1\xa3'79\x04\xfdr\x1f\xc0@j~.Y\x16\x1f?+RL\xbe\xb1>g\x0b"
 b'\xb2\x9f\x1f\xe6\xdd\xaa\x9f\xb9\xce\xf7\xd3\x02\x02\x00@\x00^\xf7\xf9\xd7'
 b'i\xd1!\x85{\x1cS0)7!-\x13m\xa0\xa6\x03\x00D\x00\x02\x00P\x00\x1c\x13\x8cE'
 b'\x0f\xb3Y(G\x8e\xd7\x8f\x0c@`\x95\xef\xb9.\xb1\x08\x00T\x00')

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

{'A1': 'poomwgod',
 'A2': {'B1': 3269,
        'B2': 27347,
        'B3': -1572086553,
        'B4': {'C1': {'D1': 3402, 'D2': 98, 'D3': 48},
               'C2': 6232287119565497870}},
 'A3': 'jo',
 'A4': [{'E1': [18929, 15674],
         'E2': -671484066,
         'E3': 3482158253727666537,
         'E4': -6440027538010851543,
         'E5': [3499723460, 2862216581, 2749456454]},
        {'E1': [14119, 1081],
         'E2': 1166807836,
         'E3': -8081834570022276337,
         'E4': -5679397641413181428,
         'E5': [3223286525,
                780036672,
                1059001945,
                3192672811,
                191315633,
                3860832178,
                3114248925,
                47445966]}],
 'A5': 296633618095244647}

Пример 2

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

(b'jMOP\x02\x00\x1e\x00\x00\x00,\x00\x02\x008\x00\x00\x00\x02\x00j\x00\xfe\xf7'
 b'\xf0vY\xe7\x8d\x1dtq\xd2\xb8\x18\x1d1\x87\x0b\xaf\xa7\xb4\x98\x9f'
 b'\xbc\r\x05\xbd?\x08\xcdS \x00\x00\x00ae\xe8\xc0\xe7f\xd9\xca\xf2#\x021'
 b'D\xdf\xb7\xa3F\xcd\xd8L\\\xca\xdb\xca\xbfY,\xb9\x83\n~\xfd\xa3\xc8\x08\x12'
 b'4\xdaW:3\x04\xc0\x96,\xd2\x00i5h\x02\x00:\x00oy\x94-!a\xfa`\xeb\xd8'
 b'0\xbf\xec\x86\xe9\x886\xbf\xac\xa3\x06\x00>\x00\x02\x00V\x00\xcb$'
 b'\xc5\x89\x00l\xc9\t\x02\x16s\xd9B\x8b\xda\x0f\xed\x16\xa7\xd0\x04\x00Z\x00')

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

{'A1': 'tq',
 'A2': {'B1': 3516,
        'B2': 48389,
        'B3': 1405945919,
        'B4': {'C1': {'D1': 47314, 'D2': 24, 'D3': 29},
               'C2': 11500140280779867953}},
 'A3': 'ae',
 'A4': [{'E1': [-16152, 26343],
         'E2': 764705135,
         'E3': -4669994308127268575,
         'E4': -6652732308586920212,
         'E5': [603114201,
                3745788162,
                3443958711,
                3395046616,
                1505741531,
                176404780]},
        {'E1': [-642, -14173],
         'E2': -1983568693,
         'E3': -2777852347147523072,
         'E4': -3411732985280820414,
         'E5': [3660845576, 70466135, 3526137536, 1748330752]}],
 'A5': 2129612570249721854}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'JVGN\x00\x03\x00)\x00\x00\x00\x02\x00\x00\x00G\x00\x00\x00Y\xfd\xbf\xef\x1c'
 b'a\xe0\x0b7\xc2\xa8.\x0ea\xa3\x03@\xb0\xbeC\xcf\xa6g\x81K\xc7?\x0f(7\x0e \xa6'
 b'\x935\x18?\x1b\xef\x12\xf9\xa0\xab\xe1\x92\xac\xbd\xc7\xe4&-obv\xcf\xee\xa2'
 b'\x83i\xab\x8b\xc4~\xb9\xcdg3\x12\x97\xf4\x00\x02\x00\x00\x00I\x95\xcaP\tX'
 b'\xe4D\xc2\x05t\x83\x9a\x14\xa6c\xc7\xf7\x9d\xf8M\xf8\x1e\xda%')

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

{'A1': [{'B1': 1736526791,
         'B2': {'C1': 0.5592073798179626, 'C2': 14},
         'B3': 32},
        {'B1': -1500302056,
         'B2': {'C1': 0.6091166734695435, 'C2': 249},
         'B3': 160},
        {'B1': -1411280212,
         'B2': {'C1': -0.09760312736034393, 'C2': 45},
         'B3': 111}],
 'A2': 'bv',
 'A3': {'D1': [-3463652378104067132, 9131555562592573428],
        'D2': [10793527458023097538, 393083765282726855, 17842690312470714917]},
 'A4': -3,
 'A5': -0.9722146392684794,
 'A6': 12118639459810099376,
 'A7': -0.19122180342674255}

Пример 2

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

(b'JVGN\x00\x03\x00)\x00\x00\x00\x02\x00\x00\x00G\x00\x00\x00Y\xa3?\xd1\xe5'
 b'\xe0\xc3\x88i\xb0\x01\xc6]i\xf3\x95\xc6v\xbf)o\x13,\x89\xa1\x14=\xfdD'
 b"\xc1\xaaJ\xdc:\xf7\x14\xbfh`-$\x94\xde'\n\x84\xbf\x10xV\n\x1cev\x84\x0fU"
 b'\xc6\x983\xbb_k\x88A[\xae\\\xbd\x1c\x00\x02\x00\x00\x00I\x11\xce\xd6\xc2o'
 b'Qv\xed\xcdK\xed\xf4\xc4\n\xa1\xd2\x8e\x0e~l\xb4\xfdr\x14')

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

{'A1': [{'B1': 747217172,
         'B2': {'C1': 0.12366629391908646, 'C2': 170},
         'B3': 74},
        {'B1': -600115436,
         'B2': {'C1': -0.9077175259590149, 'C2': 36},
         'B3': 148},
        {'B1': -567866748,
         'B2': {'C1': -0.5643361806869507, 'C2': 10},
         'B3': 28}],
 'A2': 'ev',
 'A3': {'D1': [-8930825224606991521, 7748515020914081052],
        'D2': [1283199074426779373,
               14793179036545360338,
               10236258008417792532]},
 'A4': -93,
 'A5': 0.2796556386471378,
 'A6': 127892349066266230,
 'A7': -0.6618511080741882}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'IDZWU\x00S\xbf*\xbf\xb7\x00\x04\x00\x00\x00~\x00\x00\x00\x05\x00\x00\x00'
 b'\x9eO\x10\xf0\xf6\x01\xa7/hi\x8f\x10\x83\x8c\xc8\x03\x82\xc9(\x95\xa9WKs'
 b'd\xcc\xe4\xa6\xf7\xb8&\x92\xf9\x0b\x1d\x00\x00\x00\x1b\x00\x00\x00+8'
 b'G\xea\t\xc3}\x1a/\x9d\x96\xb0\xaf\xf1\x85zF\x00\x00\x00\x02\x00;\x00\x00\x00'
 b'\x02\x00C2\xf1\xed+\x03\xaf\x1c\xd6.\xcb\n\x04+kU\xc6\xab\xe6\xa8JO'
 b'\xe0\xba\x17\xfe\xa7\xe5\xb9\x0b\x82\x15#\x8b\xd3\x11\x03\xe8\x9f-\x92\x9e'
 b'\xd6\x19~*\x0c\x8cxeq(V\x02#\xee\x9dF\xc3\xac\x07\x9e\x85\xa6\xd5\x8e'
 b'}\xa7\x84]\xe7\xcfo\xbd')

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

{'A1': {'B1': {'C1': [{'D1': -1083676842769487473, 'D2': 1189949517236193576},
                      {'D1': -7662497309424038684, 'D2': -6415456668351919331}],
               'C2': [4055467317125782063, 11355457780179106374],
               'C3': 50,
               'C4': 17432637027443856942,
               'C5': [-888536021, 1800783531, -425178545],
               'C6': 224,
               'C7': -5037277661123507326,
               'C8': 21},
        'B2': -0.6669878363609314,
        'B3': [2561372883123740461,
               10565117180836973708,
               8675464675254739950,
               11332960655954052518],
        'B4': [54670, 32167, 33885, 59343, 28605]},
 'A2': 20240}

Пример 2

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

(b'IDZWU\x00k\xbe\xc3\x7f\xc2\x00\x04\x00\x00\x00\x96\x00\x00\x00'
 b'\x07\x00\x00\x00\xb6\xccE8N)X\xdd\x90\xd0i\x03\xac\xd2@\xa5\xb5i+\x82'
 b'C|\xca\x81{\x13\x8ajP\x1fe\xd8\xdd\x82\xc5\x00\x00\x00\x1b\x00\x00\x00+\x90'
 b"\xa9S\xe3m\x9e<\x94\xb5Z\x04]k\xec'\x072\x1b\xf3\xd6\xfb\x19\x97\xbdJ"
 b'\x07\xdc\xd0\x11\x96\xa9\xc0\x93\xa0\x95\xf4>\xd5%;\x00\x00\x00\x02\x00'
 b';\x00\x00\x00\x05\x00Cp\x9c\x86\xcc\x08>\xff\xf7\x82;\xf9.\xb4\x99\xea\x15y'
 b'9\xf3!\x08\x03\x8c\x97\x10\xbbH\xbd\xe1\x19Ad&\x86\xb6=\xe9\xfa\xac\x081'
 b'\x19\xef\x93)\xdf\xab\x90\x81\xc8m\xe4\xd4\xbcml\x10\x8c+`:\xe1\xf4{P'
 b'n\xff\xf6\x08\x9a\xe7\xd7\xabA\x9d\x9d\x9d')

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

{'A1': {'B1': {'C1': [{'D1': 4057225775958511721, 'D2': 264817653207886123},
                      {'D1': -9060260816141741174, 'D2': 7660657488447767237}],
               'C2': [10423955048787491988,
                      13067762068058023687,
                      3610747630928893885,
                      5334475069850036672,
                      10637667196107826491],
               'C3': 112,
               'C4': 11278926652584753026,
               'C5': [1006186164, -1712712327, 972235016],
               'C6': 3,
               'C7': -8316159790350999271,
               'C8': 65},
        'B2': -0.38183408975601196,
        'B3': [7216603570188712620,
               590281542919118763,
               10412824187773434989,
               7786877873649541620],
        'B4': [31568, 28415, 62984, 39655, 55211, 16797, 40349]},
 'A2': -13243}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'DDF\xa1\xbfILr~\xf9\x97\x00l?\xe4\xfe\xdc\xac\xc0\xdb0XS\xf8\xf3\xa3\xed\x00'
 b'\x00\x00\x05\x00\x00\x00\xaf\x00\xb9\xce\xd9\x98O\xa4\x0c\x87\xf6\x8b\xa02'
 b'\xc5\x16\\0F\xbf*5h\xe3\xf5\x92@\xe0\xa5\xd9\xcc\x97o3\xab\xbe4\x9f'
 b'`\xa7\xe9#cC\x8e\r\x95\x84\xb4\x0c\xcf\xa8\xf08\xb8\x15C\x01\x00&87'
 b'\xb6\x08-\x89\xff*tL\xe6`\xc0\xdf\x06q@\xc1\xf9\xdc\xc8\xbb\x00\x04\x00\x00'
 b'\x00nd\xeaZ\x95s\xe2D\x00\x05\x00\x00\x00zo\xae{\\*\x9br\xbe\x19'
 b'\x00\x07\x00\x00\x00\x87i\xd4q\x91\xd0\xb4\x00\x04\x00\x00\x00\x96\xc2\x11'
 b'\xb6p\xd7\xf3\x01\x00\x05\x00\x00\x00\xa2\x00r\x00\x7f\x00\x8e\x00\x9a\x00'
 b'\xa7\xa5\xb4\x9b4\xd2\x80\xf66\x1cN')

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

{'A1': -0.7863227128982544,
 'A2': 32505,
 'A3': -105,
 'A4': {'B1': 6, 'B2': 113},
 'A5': {'C1': 0.6561110853279839,
        'C2': 22611,
        'C3': 4176716781,
        'C4': [{'D1': -14149, 'D2': [64, -63, -7, -36]},
               {'D1': -7612, 'D2': [100, -22, 90, -107, 115]},
               {'D1': -16871, 'D2': [111, -82, 123, 92, 42, -101, 114]},
               {'D1': -12108, 'D2': [105, -44, 113, -111]},
               {'D1': -3327, 'D2': [-62, 17, -74, 112, -41]}],
        'C5': {'E1': 11940339163238299190, 'E2': 7246},
        'C6': 206,
        'C7': {'F1': [15679369668693849739,
                      11543505494730622655,
                      3041452451645505760,
                      11950808036982107070,
                      3791855685556462403,
                      10236001925271965608],
               'F2': [4030248981, 1124139046],
               'F3': 4050906536083062570},
        'C8': 1951196768},
 'A6': 49375}

Пример 2

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

(b'DDF\xa1>\xa5[\xbd=5E\x00l\xbf\xd3u\xdf\x93\xb6\xca\x88[K!\x9c\xda\xa8\x00'
 b'\x00\x00\x03\x00\x00\x00\x92\x00\x98\x87\x01#\x93~\xab55\xc5\xdd\x15|b\xbe@'
 b'Z\x94Q\xdf\xd5\xfd JR\x04\x1a\x99i\xee\x95j^\xc6\xf3\x1d*rJ\x1f\x0c\xaf2\x1a'
 b'\xf3\xd0\x94m_\xa9/J\xef\x1b\x93S\xd3\xe5\xefKr\xda\xd4\x15\x15D\xdd\xea'
 b'\x94\xc1\xc4\x11\xdf\x9b\x1f\xbd\x14\xa4=x@\x9a\x00\x06\x00\x00\x00n'
 b'\x839\xa4\x15Z\x00\x03\x00\x00\x00|c\xd6\x87\xf4\xa9\x00\x03\x00\x00'
 b'\x00\x87\x00t\x00\x7f\x00\x8a\xc5k\n\xe0H$B~\xdf\xb5')

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

{'A1': 0.322965532541275,
 'A2': 15669,
 'A3': 69,
 'A4': {'B1': -33, 'B2': -101},
 'A5': {'C1': -0.3040694181937984,
        'C2': 23371,
        'C3': 563927720,
        'C4': [{'D1': 16538, 'D2': [31, -67, 20, -92, 61, 120]},
               {'D1': 5466, 'D2': [-125, 57, -92]},
               {'D1': -2903, 'D2': [99, -42, -121]}],
        'C5': {'E1': 14225475806379131518, 'E2': 57269},
        'C6': 135,
        'C7': {'F1': [82071390470354373,
                      15930776020433525396,
                      5899669320023822852,
                      1916679589852765894,
                      17518204795899284655,
                      3610466128459816873],
               'F2': [793440027, 2471744485],
               'F3': 17243001882504664388},
        'C8': -571829055},
 'A6': 50193}