ИМБО-02-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'HWZ\xd1\x00\x00\x00T?u\xeeZ\xbfS\xb3\x80lfpyctp\xbe\xa4\x1d\x1b@,3\x00\x00'
 b'\x00\x16\x00\x00\x00\x1a\xd0eN\xe9\xc1\xc3R\x1a\xeb\x1b\xea\xda\xbf\x18'
 b'\xfc\x14\x1d\x11\xc1\xb2\x00\x04\x00&\x9bk(\xa0\x16\x94\x01X\x00\x02'
 b'\x00\x00\x00.\x9a<\xafH\xa9]\xe9F?*\x8b\xe3\x00\x06\x00\x00\x00\x10\x00\x02'
 b'\x00\x1e=\x14\xd72\x006\xaflF\xc3')

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

{'A1': {'B1': 0.6661970019340515,
        'B2': 'lfpyct',
        'B3': [{'C1': 28862, 'C2': 42013}, {'C1': 6976, 'C2': 11315}],
        'B4': 0.03633803874254227,
        'B5': {'D1': 487702962,
               'D2': [-12187, 20201, -15933, 21018],
               'D3': -1687476064,
               'D4': 378798424,
               'D5': [-350491942, -1088881644],
               'D6': -1707299000,
               'D7': -1453463226},
        'B6': -1351858493},
 'A2': [0.9606682062149048, -0.8269577026367188]}

Пример 2

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

(b'HWZ\xd1\x00\x00\x00Y\xbf\x1b\x11\xac>@Uejhqsn#<ZF\xb2\x8d\xac\xc4\xd6\x9bp'
 b'\x1f\x00\x00\x00\x15\x00\x00\x00\x19\x00\x00\x00\x1d\xf2\xcd\xee\x9b\xccBy'
 b'\x88X_B#\x98]\x81"\x8cb\x00\x03\x00-\xee\xcc$\x85\n\x19\x81\x91\x00'
 b'\x02\x00\x00\x003\x9e\xebCC\xb3\xa8\x84R>DS\xee\x00\x05\x00\x00\x00\x10\x00'
 b'\x03\x00!?Q\x87\x85\x00;\x02\\j\xfe')

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

{'A1': {'B1': 0.191726416349411,
        'B2': 'jhqsn',
        'B3': [{'C1': 9020, 'C2': 23110},
               {'C1': -19827, 'C2': 44228},
               {'C1': -10597, 'C2': 28703}],
        'B4': 0.8184741139411926,
        'B5': {'D1': -2128442270,
               'D2': [-3379, -4453, -13246],
               'D3': -288611195,
               'D4': 169443729,
               'D5': [2038978655, 1109629021],
               'D6': -1628748989,
               'D7': -1280801710},
        'B6': 39611134},
 'A2': [-0.6057384014129639, 0.1878257542848587]}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x02QKZculj\x00\x00\x00R\x00\x03\x00\x00\x00n\xbf\xef1\x88c\x05V\xa0\x92B'
 b'z\xf0\xdb\x1d\x93\x15?\xdc\xdb\xc3\xfe\xab\x13\x84\xfdg"\x96\x92['
 b'\x8c:\xbf\xe4&:Mt\xca2\xc1@\x00\xee\xe9v;z?\xe5-\xc9X9@\xe4m\x8c\xc3s\xf1&'
 b'<\xac\x00\x12\x00"\x002\x00B\xff\xc5n\xfa$;\xeb\x07\x9bV\xc5\x19\x8d\xc4'
 b'\x8d\xbb\xb0:\xc4\xc0B\x17\x85\xa0\x83P')

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

{'A1': 'culj',
 'A2': {'B1': [{'C1': -0.9747964796067272, 'C2': -7907622820822281451},
               {'C1': 0.45091342801998047, 'C2': -187142829416674246},
               {'C1': -0.6296664727036101, 'C2': -4521612999760921734},
               {'C1': 0.6618391726606458, 'C2': 7893899149608107180}],
        'B2': -59,
        'B3': [28410, 9275, -5369],
        'B4': [2606155033, 2378468795],
        'B5': {'D1': 45114, 'D2': 196, 'D3': -64}},
 'A3': [16919, -31328, -31920]}

Пример 2

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

(b'\x02QKZuxei\x00\x00\x00R\x00\x02\x00\x00\x00n?\xe1\xd8\x9b}O-\xf6\xf6\xaf'
 b'U=\xfc^\xf9a?\xe2"\xc2B\x8c\x13N9\x80\x05\x84#%6\xb8\xbf\xb6\xfd.h\x9c'
 b'\xf6\xc0\xd0\x17\x136\xde\x12\xf1\xf4\xbf\xef\x1d\xd7\x0b\xb4'
 b'\xd2\x8a\xf9\xe0\x8f\xa3Aax\x8c\x00\x12\x00"\x002\x00B%\xa9\xb1\x0b\xb1z'
 b'\xb5t=1\xe3\x02\xe9\xd4\x92\xae\x7f\x14\xf5\x1a\xe7i\x8eS')

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

{'A1': 'uxei',
 'A2': {'B1': [{'C1': 0.5576913306662721, 'C2': -671224094739465887},
               {'C1': 0.566743020987454, 'C2': 4143317722264319672},
               {'C1': -0.08980073980361691, 'C2': -3452269462981250572},
               {'C1': -0.9723925808562666, 'C2': -441194832142960500}],
        'B2': 9641,
        'B3': [-20213, -20102, -19084],
        'B4': [1026679554, 3923022510],
        'B5': {'D1': 32532, 'D2': 245, 'D3': 26}},
 'A3': [-6295, -29101]}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'RXJZ\x00\x84\xca\xf0wLiG\x9a\\M\x1cb\x07\xbf\xaa\x05\xc8\x9c\x9ae\xa0\x18?'
 b'\xe0\x81\xcd\xe9\xf7\xe5<\x91\t0\x1aX\x99\x0e\xdcx\xd7\xee\x99o'
 b'\xa2\x84\x9b\xbfpjdu)?\xd8\x87\xb6\x0b|n$\x80T\xfcs\xdd\xb5#\xd0&\x9bl'
 b'?\xecF\xcc\x90\xf5\xe9\xe8\x00\x02\x00\x00\x000\x9fk\x95\x11\x85\xcf'
 b'\xbb\xd1Z\x90\xf27}\x02\xbf\xb1\x88\xfe\xb8;\xa8\xf0\x00\x02\x00\x00\x008Y`'
 b'\xca\xb6\x9a:\xd6\xca\xe5\xf0l\xc3\xf1}\xbf\x12\xe3; }\xa9\x8a\x00\x00\x00#'
 b'\x00\x00\x00@?:\xe6\x0b')

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

{'A1': {'B1': -0.5737797617912292,
        'B2': 545106314,
        'B3': {'C1': 2433298458, 'C2': 6384150286857399961, 'C3': 111},
        'B4': {'D1': 2630195625636771107,
               'D2': -802776212,
               'D3': [{'E1': 0.8836424666654326,
                       'E2': [2726599615, 1886020725],
                       'E3': -97,
                       'E4': [107, -107, 17, -123, -49],
                       'E5': 13533697933810564354},
                      {'E1': -0.06849662778737176,
                       'E2': [692050055, 3054206062],
                       'E3': 89,
                       'E4': [96, -54, -74, -102, 58],
                       'E5': 15477435890191823229}]},
        'B5': 0.7300726771354675},
 'A2': [3404756812, 1766300252, 1293705735],
 'A3': -0.05082537566813561,
 'A4': 24,
 'A5': 0.5158452577299282}

Пример 2

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

(b'RXJZ\x00\x84j/\xf5\x15\x1a\xa6\xaf\x9b\r\x02f\x85\xbf\xd6\xad\xf6a\xb2'
 b'd(\xec\xbf\xba\xd9\x8a\xaf\x03\xc7\x90\x14\x9e\xfa\x9e\x8e\x97\xd0\xc74'
 b'\x90#\xdeGa\xf3tEL\x15enU\x98wf\x93Y<\x07EC\x9c@}\x9a\xa5\xc9\x98n\x95G'
 b'\xbf\xecaRLtNj\x00\x02\x00\x00\x000\x80\xdf"\x91S\x17\xbc\xf6\x93E4\xbd\xdeo'
 b'\xbf\xd6\xa4[%|\x9d\x14\x00\x02\x00\x00\x008\xf6\xd6\xd3~\xca\xf9'
 b'\xae\xbe\x8f\xac5\xba\xff\xc0>\x96\x0ff\xfd9b\x17\x00\x00\x00#\x00\x00\x00@'
 b'\xbfM\x7f\xa9')

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

{'A1': {'B1': 0.2930862307548523,
        'B2': 4248396311,
        'B3': {'C1': 345963166, 'C2': 10274910628868006878, 'C3': 71},
        'B4': {'D1': 4991004612855768521,
               'D2': -1737583289,
               'D3': [{'E1': -0.8868800633667437,
                       'E2': [1643344965, 1276470638],
                       'E3': -128,
                       'E4': [-33, 34, -111, 83, 23],
                       'E5': 13616232448848158319},
                      {'E1': -0.3537814966279751,
                       'E2': [1436055398, 2472098823],
                       'E3': -10,
                       'E4': [-42, -45, 126, -54, -7],
                       'E5': 12591659577973080000}]},
        'B5': -0.8027291893959045},
 'A2': [1781527829, 447131547, 218261125],
 'A3': -0.35436782398898226,
 'A4': -20,
 'A5': -0.10488192341634162}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'VYG\x81  FZ\xbe\x84\xefjtx\x00\x00\x00~U+\x02@\x00\x04\x00\x96\xb3N'
 b'\xd6w"\xeb\x00\x02\x00\x1a?\xe8z\x12\xf6X\x1e|\x9f\xc1\x80\xbd^\x8d\x00\x02'
 b'\x00,\xbf\xe6K\xe9\xcc\x82\xbb\xe4s\xec\xa5Bq\t\x00\x02\x00>\xbf\xd5C\xe8'
 b'\xa7\t\xb0P\x03\x054\x9e4\xfc\x00\x02\x00P?\xd6\xa4K\xb6\xbcS\x80\xfa\xcf'
 b'\xa6@m\xe0\x00\x02\x00b?\xc7\xd3=X\xdc\x0e\xe0\x00\x1c\x00.\x00@\x00R'
 b'\x00d\x00\x05\x00\x00\x00t\x08\xab| \xbe\xf9mT\x1fJ=\xef\xc0\xc7\xc2\xfc'
 b"#g\xb1'6M\x1dB\x80\xfb\x92\x18o\x95\x0c\xf1<\x03")

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

{'A1': 538986074,
 'A2': {'B1': -0.25963908433914185, 'B2': 'tx'},
 'A3': {'C1': [{'D1': 3598131947, 'D2': [179, 78], 'D3': 0.764901620045705},
               {'D1': 2159894157, 'D2': [159, 193], 'D3': -0.6967667574261864},
               {'D1': 2772594953, 'D2': [115, 236], 'D3': -0.3322698241452189},
               {'D1': 882783484, 'D2': [3, 5], 'D3': 0.3537778172042678},
               {'D1': 2789240288, 'D2': [250, 207], 'D3': 0.18613402212951424}],
        'C2': 2219,
        'C3': [31776, -16647, 27988, 8010, 15855, -16185, -15620],
        'C4': 9063},
 'A4': 21803,
 'A5': 576,
 'A6': [-1322830259, 490897659, -1843892331, 217136131]}

Пример 2

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

(b'VYG\x81\xa0\xe6\xcf\x98?-\x99\xddec\x00\x00\x00B\xc8\tG\xd9\x00\x03'
 b'\x00Z4\x96\xa7\x0c\x84\x16\x00\x02\x00\x1a?\xc1\xb4\x97-\x95\xf5@'
 b'%\x02\x00\x06F\xc8\x00\x02\x00,?\xcc5\x06\x02\xfb\xadP\x00\x1c\x00.\x00\x02'
 b'\x00\x00\x00>\x92C\xa7\x91\xda\xbf(\xb6X"\xe5\xf91&\x83\x91\x90\x9bq\x04'
 b'\x93z3\x04xV\x9c\xc4s\xae')

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

{'A1': -1595486312,
 'A2': {'B1': 0.6781290173530579, 'B2': 'ec'},
 'A3': {'C1': [{'D1': 2802615318, 'D2': [52, 150], 'D3': 0.13832368589275212},
               {'D1': 411336, 'D2': [37, 2], 'D3': 0.22036814828548268}],
        'C2': 37443,
        'C3': [-22639, -9537, 10422, 22562, -6663, 12582, -31855],
        'C4': -28517},
 'A4': 51209,
 'A5': 18393,
 'A6': [1896125306, 855930966, -1664846930]}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'IQT\xa9\xd6"\x00\x00\x001\x00`\x00\x8f\x00\x16\xe2\xde\xdf{D\xe7\xe0\x90'
 b'\xaf\x00\xfa\xb4\xca\x81HwK\xc4I\x06\xf6<\x8d\xcf\x89\x1cico\xdc\xe6l'
 b'\x92\x96\x9aN\x81\xd0\x1eg.\x18\xe3\xd9?\x8bLM\x96#\x03\x00*\x00\x02\x00'
 b'\x00\x00-\x00\x00\x00\xc21v\xb2\xc9T\x7f8&\xbeak\n>\xa7\x82\rs~\x81\xfb\xa1'
 b'\xf8\xc8\x13I\xa2Y\xcf\xbfJ\xd0\x8f\xb4@\x02\x00X\x00\x03\x00\x00'
 b'\x00Z\x00\x00\x00T=\xb6[\xeb\rM\x8cD\xbfed#\xceN\x19\x9cv\xd6s"\xfeJ'
 b'\xb1\xd8MD]\xec\xbf\xc3+\x04\xb2l\x02\x00\x87\x00\x03\x00\x00\x00'
 b'\x89\x00\x00\x00\x08\xd2\xf8)g\xc0)st?')

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

{'A1': 214,
 'A2': {'B1': 0.030032293871045113, 'B2': 478793613},
 'A3': [{'C1': 2169412246,
         'C2': 0.40448574573063656,
         'C3': 139,
         'C4': 597052748,
         'C5': 'ico',
         'C6': [59100, 37484],
         'C7': [12738, -19850, 21705],
         'C8': -0.16232489049434662},
        {'C1': 2717614462,
         'C2': -0.24492291038729497,
         'C3': 74,
         'C4': 1085575120,
         'C5': 'ak',
         'C6': [15882, 33447, 29453],
         'C7': [15700, 23478, 3563],
         'C8': -0.7677658200263977},
        {'C1': 4263670742,
         'C2': -0.88638510898958,
         'C3': 195,
         'C4': 1823605803,
         'C5': 'ed',
         'C6': [52771, 6478, 30364],
         'C7': [-11768, 10744, -16281],
         'C8': 0.9548822045326233}],
 'A4': 22,
 'A5': {'D1': 2078269154, 'D2': 68, 'D3': 231},
 'A6': -28448,
 'A7': 175,
 'A8': -4302213865723480838}

Пример 2

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

(b'IQT\xa9""\x00\x00\x002\x00c\x00\x92\x00\x06v\x0b\xa3u\xbf\x06\xe5O;\xefN1'
 b'\xf44\xf2\xb5\xa1S\xc0@i?\x87-\xd1\x8dftem\xba\x88\x19Y\xa6\x00:\xd0\xec\x83'
 b'$\x02\xf6Z\xe7?\x92,\x1b\x05\xd2\x04\x00*\x00\x02\x00\x00\x00.'
 b'\x00\x00\x00\xaa:OS\xe6r\xc5"\x16?inwx\x8eE\x08s\n?qC/\x82|W!\x9d\xb8v\xd9?k'
 b'Q\xa1\xadL\x04\x00Y\x00\x03\x00\x00\x00]\x00\x00\x00\xf2LR\xe68\xf8l\xc6'
 b'\x1c\xbfxkma6\xe1\xc1M\xe0(L\x12\x90\x1b\x85\x8c\xec \xbe?\xb2;'
 b'\x90\x07\xca\x04\x00\x8a\x00\x02\x00\x00\x00\x8e\x00\x00\x00E9>\x01\xf6'
 b'\x8b\xcd\xa9F?')

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

{'A1': 34,
 'A2': {'B1': 0.9111442565917969, 'B2': 2379296135},
 'A3': [{'C1': 3493462182,
         'C2': 0.7298536340568922,
         'C3': 146,
         'C4': 3523549996,
         'C5': 'ftem',
         'C6': [35002, 22809],
         'C7': [15018, 21327, 29414],
         'C8': 0.5864680409431458},
        {'C1': 2184135537,
         'C2': 0.39787116379499543,
         'C3': 107,
         'C4': 1286447441,
         'C5': 'inwx',
         'C6': [17806, 29448, 16138],
         'C7': [19698, -6574, -1992],
         'C8': -0.6124026775360107},
        {'C1': 306981088,
         'C2': 0.11768988066351782,
         'C3': 178,
         'C4': 3389493307,
         'C5': 'xkma',
         'C6': [57654, 19905],
         'C7': [14661, 318, -29706],
         'C8': 0.7760284543037415}],
 'A4': 6,
 'A5': {'D1': 1973619574, 'D2': 191, 'D3': 6},
 'A6': 20453,
 'A7': 61243,
 'A8': 6026297828273566030}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'MZSG\x8d&\xb4\r\xd7>\xe4^>s\x00\x00\x00s\xe1=T\xae\x87\x97\xf7\xeb\xc5\xca'
 b'\xcdz\xee\xf9\xc2"\x80\xe3\xbf^Q\xe3\x0e,\x9b\xdaKn[\xc0\xf6\xeb\xeb>_\x0e6y'
 b'[(\x1f\xaa\xf7z\xf4*\xce\xb6D\x1b\xb9\x87\x00\xa9\xf7\xa6\xdd\xb6'
 b'\x0c\x00\x14\x02\x00G\x00\x00\x00\xf0\xad\xe2\x95\xc5\xd5\x81\xa2\xf9Gm'
 b'\xc0\x02\x00Y\x00\x00\x00\xb3q*\rK\x00\x00\x00]\x00\x00\x00\x02\x00\x00\x00k'
 b'\x00\x00\x00\xa8b[\xa0\x1e\xc7\xca?')

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

{'A1': -19418,
 'A2': -10483,
 'A3': 0.21766754984855652,
 'A4': {'B1': [{'C1': 335547574, 'C2': [-2135, -8794], 'C3': -1780306448},
               {'C1': -1066579975, 'C2': [-10811, -23935], 'C3': 220885427}],
        'B2': 0.20920164899759652},
 'A5': 1413341555,
 'A6': 14828882340332668846,
 'A7': -0.6093915756350292,
 'A8': {'D1': [20830, 3811, -25812, 19418, 23406],
        'D2': [3895155451572778688, 17616665202452355961, 38202648624025130]}}

Пример 2

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

(b'MZSG\x8d\x19\x17\xd3=\x9f\x141?s\x00\x00\x00v\xab\xcb\x04\x8fJ0LjvN'
 b'\x95z|\x838\x15w\xea?tL\xc6\xd9\xb4\xc0\xe6\x1f\xbbg\x7f\xff\x88\xa6\xd1'
 b'\xed\xce3\x16\xf3i\x83\xd7A\x1d\xd2\xff\x9a\xc5\x14E|\xcb#<\x94\x82\xee\xd8'
 b'\x0eP\x02\x02\x00G\x00\x00\x00\x1d\x11g\xd3z\xf7\xc33\xe5\x16\x13'
 b'\xc0\x02\x00Y\x00\x00\x00\xb2W\xae8K\x00\x00\x00]\x00\x00\x00\x02'
 b'\x00\x00\x00k\x00\x00\x00\x1cEH\xd9\x8d\x93\xe4\xbf')

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

{'A1': 5913,
 'A2': 15827,
 'A3': 0.6917209029197693,
 'A4': {'B1': [{'C1': 38801112, 'C2': [-27588, -4478], 'C3': -748220131},
               {'C1': -1072490779, 'C2': [-2182, 13251], 'C3': 950949810}],
        'B2': -0.6430119746966372},
 'A5': 80456566,
 'A6': 10758666758751537807,
 'A7': 0.8270364860326389,
 'A8': {'D1': [19572, -9786, -16204, 8166, 26555],
        'D2': [3733182625834663807, 15140329916168008470, 2579291847742823167]}}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'NSOl\xfb\xe2\x8a,F\xb7H?]b_]\xdcq\xfb\xecw\x00Ey\xec\xff4\x13\x88\xbe8\x1f'
 b'\x15\t\x15\xa9\xd7`\xb6Q\x9cU\xbc,\x07\x8a>&\x1a6t\xea25\xc0\x93\x7f)7\x00'
 b'Y\x02M>\xde\xf2\x8eV\xad\x86\x82l\x9c\x90\x10\x014S\xc5\x08_O_\xf6'
 b'\xd2\xe4\xbf\x0c\x1e\xbf\xc6\x0b\xfe\xc7\x9c\xf8\x1e\xfaRb\xe9\xbf2I'
 b"\x00\x00\x00X\x00\x00\x00M\xef\x06}\x1aT~\xd5\x16\x00'\x008\x00\x02\x00\x00"
 b'\x00g\x00\x00\x00\x06\xc0<\x02\x00\x00\x00o\x00\x00\x00\x03\x00\x00\x00'
 b'q\x00\x00\x00\xe4')

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

{'A1': 747299579,
 'A2': 0.7840465307235718,
 'A3': -1370376470330908067,
 'A4': {'B1': [{'C1': -1279675,
                'C2': -0.2657715082168579,
                'C3': 6978232055445659448,
                'C4': 182},
               {'C1': -1135240111,
                'C2': 0.2695859670639038,
                'C3': -4596711862108284378,
                'C4': 147},
               {'C1': 3615103,
                'C2': 0.2002042680978775,
                'C3': 7818959982108275422,
                'C4': 156}],
        'B2': [{'D1': 4240,
                'D2': 3310564353,
                'D3': -0.6507522450947087,
                'D4': 12},
               {'D1': 48926,
                'D2': 3355315142,
                'D3': -0.7932524571586046,
                'D4': 50}],
        'B3': {'E1': 6,
               'E2': 15552,
               'E3': [77, 239],
               'E4': [32006, 21530, -10882],
               'E5': -28}}}

Пример 2

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

(b'NSOl\x97q\xde\xf4"\xab\x16\xbfB\xf1\xc8\x7f?\x99\x01a\x9e\x00Q^2:\xe8\xdc'
 b'F?uw\x1c\xa3^ \x91\xb0CWzo\xb2a\xc7J\xbf\xeb3\xfc\xf9ii\xf9>l\\\x04\x12\x91'
 b'\xe5\xe9S?d\xf8\x0cDO\x01\xda\xa0\xaaj\x0b\x96\xbe\xdd\xb3\x84k\xea\xf3h'
 b'\xb9\xec\xbf\xdc\xac\x0b\xe0\xf2\xad\xf4~[rx\xd7\xa8\xe1?\x14[n|O?'
 b'z\xee\xb3\xd48]%\xe1?A\xfb$\x98\x90X\xf7\x04L_2\xa4\xed\xe3?\xa5I\x00\x00'
 b'\x00X\x00\x00\x00g\x00\x00\x00v\x00\x00\x004\xb8\x8a\xd7\x01:\x08'
 b"\xac\x82\x16\x00'\x008\x00\x04\x00\x00\x00\x85\x00\x00\x00\x8d1\x93\x03"
 b'\x00\x00\x00\x95\x00\x00\x00\x03\x00\x00\x00\x98\x00\x00\x00H')

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

{'A1': -186748521,
 'A2': -0.5885487794876099,
 'A3': 6990036594661585218,
 'A4': {'B1': [{'C1': 976379473,
                'C2': 0.7768082618713379,
                'C3': -5723758060575623307,
                'C4': 67},
               {'C1': -1301317033,
                'C2': -0.7921047806739807,
                'C3': 4537774003439023083,
                'C4': 108},
               {'C1': -1861090212,
                'C2': 0.8277876973152161,
                'C3': -6856166042762413980,
                'C4': 170}],
        'B2': [{'D1': 2922,
                'D2': 3017653910,
                'D3': -0.8976330532053542,
                'D4': 220},
               {'D1': 2988,
                'D2': 4105040608,
                'D3': 0.5518605568384911,
                'D4': 20},
               {'D1': 28251,
                'D2': 2050969468,
                'D3': 0.5358110532739582,
                'D4': 65},
               {'D1': 9467,
                'D2': 4149776536,
                'D3': 0.6227589591820792,
                'D4': 165}],
        'B3': {'E1': -115,
               'E2': -27855,
               'E3': [52, 184, 138],
               'E4': [471, 2106, -32084],
               'E5': 72}}}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xecJYA\x00G\x0f\x00\x00\x00\x06\x00k<Z\xe2\xd9\xb6\x02)\xd5R\x9c\xb7^\xa0xW'
 b'\xaf+\\\x03\xa8\xe1\xe6\x99\x1f\x1b\xdaB\xce9\xd4\xee\xb97y\xa3$\x9a\xf2I'
 b'\xbbw\x8e\xf5\xf1/\xae\x04\xf9\x17DeGX\x89\x82@\x8b\x82\xfa]\xab\xaalkhl\x00'
 b"\x04\x00\x00\x00\r\x89\xea\xbf\xe8\x8a\xca'\xf1eV\x00\x00\x00=\x14p*\xbb\xc4"
 b'\x15T\r\xfe\x7f\xbd*\x8d\x7fZ\xc3\xa2\xf1\x99pF\x85+ \xf9Z\x85?\x04'
 b'\x89\x93\x8f')

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

{'A1': {'B1': 4200442794,
        'B2': 'lkhl',
        'B3': [{'C1': 15450, 'C2': [226, 217], 'C3': -5331653012662470818},
               {'C1': 41080, 'C2': [87, 175], 'C3': 3124376265367656735},
               {'C1': 7130, 'C2': [66, 206], 'C3': 4167218034491630372},
               {'C1': 39666, 'C2': [73, 187], 'C3': 8615093553442194681}],
        'B4': 35306,
        'B5': -0.7669420986305038,
        'B6': {'D1': 5956, 'D2': 7297899068796210050},
        'B7': [5232, 10939, -15339, 21517]},
 'A2': 15,
 'A3': [-25182934, -1921033533, -1561224848, 1183132448, -111508161, 76125071]}

Пример 2

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

(b'\xecJYA\x00/\xf1\x00\x00\x00\x03\x00S\x9d\x05e\xe9i\xa5\x83\x03@\xef\x11'
 b'\x18\xc4\x94\x10\xa5\x9aOvh\xa6|\xfc\x02\x8b\xbf!\x84\xe3\xfas\x04Q3\x97'
 b'\x9e\x8e\xf6zemw\x00\x02\x00\x00\x00\r\x99\xde\xbf\xd1A\rK0\xa9\x0c\x00'
 b'\x00\x00%\x7f\xd0\xa75*\x82$\xfbf"`Ho\x8c\xc35\\\x86\x9d8')

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

{'A1': {'B1': 2543750902,
        'B2': 'zemw',
        'B3': [{'C1': 40197, 'C2': [101, 233], 'C3': 7612634795137241368},
               {'C1': 50324, 'C2': [16, 165], 'C3': -7327507876866622462}],
        'B4': 39390,
        'B5': -0.2695954546239967,
        'B6': {'D1': 35775, 'D2': 2415305964988420403},
        'B7': [32720, -22731, 10882, 9467]},
 'A2': -15,
 'A3': [1713528904, 1871495989, 1552325944]}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'PHN+\x16\x82\x08\xda\xf2\xbc\x1fJ\x00\x04\x00\x00\x00<\xc5\xba\x13d>\x89'
 b"G\x05ik\xe9\x9f\xac\x1d\xd1\x81\xf5{\x8f\xd2\xa3':D_\xa2\x97\x00\\\x1c"
 b'>\xc87\x01\x8d\xdf\x00\x00\x00\x04\x00w\xbf\x14\x98\x0e6\xec\xa2V'
 b'\xbe\x82\x86G!\xa6\x1d;=n-\xd5\xc5T4\xe6>\x99\xae\x90\xbb\x19\xab\x1f}\x8b*?'
 b'\xb8\xa6\xdc\x88\xb5\xf8P?\xcf\x1e\x13\xff\xda\x7f\x10\xbf\xec\xae\x18H'
 b'\xc4\x10,KWl|')

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

{'A1': 1621868552275107658,
 'A2': [{'B1': -0.5804451704025269, 'B2': 921477718},
        {'B1': -0.254930704832077, 'B2': 564534587},
        {'B1': 0.058149177581071854, 'B2': 3310630118},
        {'B1': 0.30015993118286133, 'B2': 3139021599}],
 'A3': 3317306212,
 'A4': 62,
 'A5': 35143,
 'A6': {'C1': 90794985,
        'C2': {'D1': [40876, 7633, 33269, 31631],
               'D2': -3268725773332143465,
               'D3': {'E1': 32139,
                      'E2': 42,
                      'E3': [0.09629610383669385,
                             0.24310541146132225,
                             -0.8962518140037949]}},
        'C3': 28,
        'C4': 0.39104464650154114,
        'C5': [-115, -33],
        'C6': [75, 87, 108, 124]}}

Пример 2

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

(b'PHN+\x1a\x95\xf7\x0b\xd6\xd1\xd3\xb2\x00\x02\x00\x00\x00<:\x1c\x90\x97\x1ez'
 b'\xf4\xfd\xbe\xc4w\xf8\xa1\x12S/D\x1ey\r\xf9\x8a\xf8\x13\xce~{\x00LM?-K\xec'
 b'\xdd?\x00\x00\x00\x05\x00g=\xf7\xe2\xb6\xa1\xc7\xf3Z\xbfd6\x84\xee6\xa3='
 b"'f\xdf\xbf\xbc;\xa16\rV0\xbf\xd5k\xdf\x9c\xe9i\xa0?\xacgm\xf8&\x0b Q"
 b'-\xa2b\xc8')

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

{'A1': 1915708846736790450,
 'A2': [{'B1': 0.12103788554668427, 'B2': 2714235738},
        {'B1': -0.8914568424224854, 'B2': 3996558141}],
 'A3': 974950551,
 'A4': 30,
 'A5': 31476,
 'A6': {'C1': 4257137783,
        'C2': {'D1': [63649, 4691, 12100, 7801],
               'D2': 1006988789782838907,
               'D3': {'E1': 10086,
                      'E2': -33,
                      'E3': [-0.11028487748748073,
                             -0.33470907519736137,
                             0.05547660497815898]}},
        'C3': 77,
        'C4': 0.6769397258758545,
        'C5': [-35, 63],
        'C6': [81, 45, 162, 98, 200]}}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'UPBU\x15^v%\xd2qyctr\x083\xc9\xf8\xca"\xc4s\x10\x1e\xee\xaft\x05Tt\xd6\xb0'
 b'\xc0\r\xef\x00\x03\x00\x00\x00t\xd3\xe2\x96W\xfd\xb5q\xcd\xcc\x0e\xf1'
 b'B"\x82\xf4\xea\xa4i\x00\x02\x00\x00\x00z\xac\xb8\xa8\x92\xb3\x8f\x90'
 b'\x06N\xcd\xf5\x88E\x84X7\xa4\x92\x00\x03\x00\x00\x00~p\xa5\xc4\x99\xa3K\xdf'
 b'\xcf\xcc\x18a\x00\x00\x00\x05\x00\x00\x00\x84\x00\x00\x00\x05'
 b'\x00\x00\x00\x8e\xfc\xfb\xf7\xc6\x04\xb5Op\xee>\x03T>\xc3\x98\xdd'
 b'\xfa\x96\x18$\xff\x13\x9d\x9c6\xd16EYA\xc1\x0b\xd8\r&\xc2')

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

{'A1': 358512165,
 'A2': 210,
 'A3': 'qyctr',
 'A4': 137611768,
 'A5': 14565420143340351151,
 'A6': [{'B1': {'C1': 1946506356,
                'C2': -42,
                'C3': -1329590801,
                'C4': [-773, -2106, 1205]},
         'B2': 54242,
         'B3': -106,
         'B4': 87,
         'B5': 4256526797,
         'B6': 204},
        {'B1': {'C1': 250692130,
                'C2': -126,
                'C3': -185949079,
                'C4': [20336, -4546]},
         'B2': 44216,
         'B3': -88,
         'B4': -110,
         'B5': 3012530182,
         'B6': 78},
        {'B1': {'C1': -839546811,
                'C2': -124,
                'C3': 1480041618,
                'C4': [852, 16067, -26403]},
         'B2': 28837,
         'B3': -60,
         'B4': -103,
         'B5': 2739658703,
         'B6': 204}],
 'A7': {'D1': 6241, 'D2': [64150, 6180, 65299, 40348, 14033]},
 'A8': [13893, 22849, 49419, 55309, 9922]}

Пример 2

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

(b'UPBU\xe3\x8fN*\xeatduex\x8b\xb5\x1c\x80\x1e2\xe9\x98\xf5\x81ws\xb4\xfe'
 b'\x10\xa7 \\F\xe8\xe2\x00\x02\x00\x00\x00t\x9e\x17\xbc\x95hEG\x08\x06i$'
 b'"\x0b\xaf\xb6\x86B\xe1\x00\x03\x00\x00\x00x\xdcE:\x7f^\x07\xa9'
 b'\x9b\xb7\xa7\x82\x9a\x02\xe8\x07P/\x1e\x00\x02\x00\x00\x00~\x86<]\xfc{\xe1f'
 b'b\xd8;\x00\x00\x00\x00\x03\x00\x00\x00\x82\x00\x00\x00\x04\x00\x00\x00\x88'
 b'\xd9?\xa8Q\xf5b\x82w\xf9!%\x9c\xab:\x14\xf5<\xa0\x17\x10\xe8\x87\xc3\xde'
 b'\xfb[Q+')

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

{'A1': -477147606,
 'A2': 234,
 'A3': 'tduex',
 'A4': -1951064960,
 'A5': 2176058413136574323,
 'A6': [{'B1': {'C1': -1258418009,
                'C2': 32,
                'C3': 1548151010,
                'C4': [-9921, -22447]},
         'B2': 40471,
         'B3': -68,
         'B4': -107,
         'B5': 1749370632,
         'B6': 6},
        {'B1': {'C1': 1763975691,
                'C2': -81,
                'C3': -1232715039,
                'C4': [-2718, -32137, -1759]},
         'B2': 56389,
         'B3': 58,
         'B4': 127,
         'B5': 1577560475,
         'B6': 183},
        {'B1': {'C1': -1484613118,
                'C2': -24,
                'C3': 122695454,
                'C4': [9628, -21702]},
         'B2': 34364,
         'B3': 93,
         'B4': -4,
         'B5': 2078369378,
         'B6': 216}],
 'A7': {'D1': 15104, 'D2': [5365, 15520, 5904]},
 'A8': [59527, 50142, 64347, 20779]}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XFQY\xd2\x02\x00\x00\x00i\x00\x00\x00\x1b\xfe|\nV\x1cHY\x04\x00\x00'
 b'\x00m\x00\x00\x00\xf5\x0e#@#\x1d\xca\xf5\xb0J\x1b\xc0aF.HR\x19\xff\xa45wd'
 b'vqtikc\x875\xbd\xb2_/\xc1\x02\x00\x00\x00)\x00\x00\x00\xaf\xe5\x1cpw`\xdf'
 b'\x95\xf8eoyvkft\xca\xc6Hs\x7f"m\x12\x02\x00\x00\x00I\x00\x00\x001\x00Q'
 b'\x00\xc8\x12\xd7l0\xa4\x1a\xa0')

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

{'A1': -46,
 'A2': [{'B1': 53,
         'B2': 'wdvqtik',
         'B3': {'C1': -4526293879200839837, 'C2': [1210992225, 2768181586]}},
        {'B1': 248,
         'B2': 'eoyvkft',
         'B3': {'C1': 1327755395934504650, 'C2': [1880941999, 2514444407]}}],
 'A3': 6433423223567482395,
 'A4': {'D1': [4808, 27863, 42032, 40986],
        'D2': 1076039413,
        'D3': [7459, -2614],
        'D4': -1071953232}}

Пример 2

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

(b"XFQYj\x03\x00\x00\x00\x89\x00\x00\x00\x83'\xb0\x07+\xf3\xe83\x02\x00\x00"
 b'\x00\x8f\x00\x00\x00\xbf\x82\xc8\x93\xed\xf1\x8d\x8a\x19\xfb\xc7e\xa7!\xe6'
 b'\xe7\x95\xe4=n%ljixbwxE6\x91-D\xd2J\x1b\x02\x00\x00\x00)\x00\x00\x00;XT'
 b'm_\xcf\xa6\x05\xc2fwyrsqo6\xd1D!+7$\xc0\x02\x00\x00\x00I\x00\x00'
 b'\x008\x8b\x9b\x1b\xc6\xfe\x0f\xeedhkhqjey\xcc\x1c\xa1\xe2\xa2@\x14'
 b'\xfa\x02\x00\x00\x00i\x00\x00\x001\x00Q\x00q\x003K\x87\xdb')

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

{'A1': 106,
 'A2': [{'B1': 37,
         'B2': 'ljixbwx',
         'B3': {'C1': 1966615377564743237, 'C2': [3890618791, 1849549973]}},
        {'B1': 194,
         'B2': 'fwyrsqo',
         'B3': {'C1': -4601492260884524746, 'C2': [1834244155, 94818143]}},
        {'B1': 100,
         'B2': 'hkhqjey',
         'B3': {'C1': -426644996362265396, 'C2': [463178552, 3994025670]}}],
 'A3': 3740506856669325187,
 'A4': {'D1': [19251, 56199],
        'D2': 2479391423,
        'D3': [-3603, -30067],
        'D4': 1707604761}}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'JSGT)\xbfJ\xaf\xc3\xbf$\x80\xb5?"A\xa1>\xa8.%\xbe\x9a;\xa7?\x009'
 b'\xf7>\xe2\xad\r\xbe\xfdi\xc7?\n-\xf6>\xeb\x08m\x00C\x16\xf1\xd9\xcej'
 b'\xc3K\xbed\xe2\x9c\x9c\x03\xcf\xbe\x11g\xbd]\x1e\x83?!M\xc0\xa0\xbe\x85\x0b'
 b'!ilygk\xf42]$\xbf\xec\t\x122\x13\xcc`\xc0\x8a\x87\xa85S\xfd\xe9\x10')

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

{'A1': [{'B1': -0.7917444109916687, 'B2': -0.6425889134407043},
        {'B1': 0.6338139176368713, 'B2': 0.32847705483436584},
        {'B1': -0.3012363612651825, 'B2': 0.500884473323822},
        {'B1': 0.4427265226840973, 'B2': -0.4949476420879364},
        {'B1': 0.5397638082504272, 'B2': 0.45904865860939026}],
 'A2': {'C1': {'D1': -31937, 'D2': 8525, 'D3': -16224},
        'C2': -0.25985053181648254,
        'C3': 'ilygk',
        'C4': 4096941348,
        'C5': -0.876107309157657,
        'C6': 192,
        'C7': 9982132046085875984},
 'A3': [5873, 55758, 27331, 19390, 25826, 40092],
 'A4': [63946257, 1740463390]}

Пример 2

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

(b'JSGT)?\x1c\xca\xf9\xbff\xff\xb1\xbf:\xa55\xbf\x1c\xec7>\xea\xb1;?9\xdc'
 b'l>/\xfd\xc1\xbe\x8a\xbe\\?\x08>|=\x18\xb3\xf0\x00C\xde\x14\\t\x12'
 b'\x9eH\xd0\x0f\xe8\xbd\xf2\x90\xb7\xb7\xd2b\\u\x12\xddW\\\xac\xcb'
 b'\x19\xbfr\x95\xd2dmusyy\xa5\xb4n?\xd92\x90\xe2O\xca\xcc\ny(EEd2O\xa4')

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

{'A1': [{'B1': 0.6124721169471741, 'B2': -0.9023390412330627},
        {'B1': -0.7290833592414856, 'B2': -0.6129793524742126},
        {'B1': 0.4583834111690521, 'B2': 0.7260196208953857},
        {'B1': 0.17186643183231354, 'B2': -0.27098357677459717},
        {'B1': 0.5322034358978271, 'B2': 0.03728097677230835}],
 'A2': {'C1': {'D1': -8873, 'D2': 23724, 'D3': -13543},
        'C2': -0.9475985765457153,
        'C3': 'dmusy',
        'C4': 2040902766,
        'C5': 0.39371130085707473,
        'C6': 10,
        'C7': 8730304041993785252},
 'A3': [56852, 23668, 4766, 18640, 4072, 48626],
 'A4': [2427959250, 1650226450]}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x16RGLQQ\x00\x00\x00\x7f\xbf\xd9\x05-\x9d\x18\xf9\xa4>\xe1x\xc1>\xc5'
 b'\x12\x84\xa3\xf0&$\x8d\xefL|\xb2\xbf\x1co\xb9%\xb0\xd8\x0euFb\xcdm?\xe2c\xf0'
 b'z\xce\x9e4~\x8e:\xd0\x92Q\xbc[\xb8?\xb2F\xa1\x03J\xf0\x90M\xe8b\xdfF\x95x'
 b'\xf2\xaa\xbf\xb4\t\xbbq\x8b!\xa0\xff$\xd2i\x1d\xef\x8d\xf2\x82?\xe5\x1ez)'
 b'v~\xbcv\x06\x07\xbf\x1bK\x17\xe5\\yV:Ayockley\x00\x04\x00y?4m\x17\x00'
 b'\x02\x00}')

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

{'A1': 81,
 'A2': {'B1': 'ockl', 'B2': 0.7047895789146423, 'B3': 'ey'},
 'A3': -0.3909410509258129,
 'A4': {'C1': 0.4403744041919708,
        'C2': 0.3849068880081177,
        'C3': -93,
        'C4': -1142185263468086094},
 'A5': -0.611079752445221,
 'A6': 2715908131913097933,
 'A7': [{'D1': 109,
         'D2': 0.5746996306015206,
         'D3': 2123250384,
         'D4': -1840137125},
        {'D1': 184,
         'D2': 0.07139021234883303,
         'D3': 1307075295,
         'D4': 1184200946},
        {'D1': 170,
         'D2': -0.07827350160653745,
         'D3': -14364055,
         'D4': 502238706},
        {'D1': 130,
         'D2': 0.6599703607389169,
         'D3': 1980106687,
         'D4': 457906149}],
 'A8': [92, 121, 86, 58, 65, 121]}

Пример 2

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

(b'\x16RGLQ\xf8\x00\x00\x00\x82\xbf\xe1V_.\x99\xad\xb2\xbc\xfa\xc8\x02\xbe\xa2'
 b'\xef7\xb9\x07\xee\x8b\xb1\xea\xe9Y\xfc\xbe\x1f\xef3F-\xa1\xa9{\xa7V\xf8\x1e'
 b'?\xd8\xab\x13\x92\x17L\x18\x85Q\xbd\x17s\xfa0\xda\xda\xbf\xe8rW\x93\xde\xec'
 b'\x8ezB\xa3\xf3+\x18&\xfc\xd2\xbf\xcc\x04N\x81\x8a\xfa\x00E6\x0f\xa4\x86k'
 b'p\x86\x96?\xc1\x04Q\x17\xceg\xe0\xde\xda\xa8\xad\xec\x9f\x07\xeaE'
 b'\xff=\x19\xf4\xe8qhiteljry\x00\x03\x00y=\x01\x8f\xb5\x00\x06\x00|')

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

{'A1': -8,
 'A2': {'B1': 'qhi', 'B2': 0.031631190329790115, 'B3': 'teljry'},
 'A3': -0.5417934332048644,
 'A4': {'C1': -0.030612949281930923,
        'C2': -0.3182313144207001,
        'C3': -71,
        'C4': 571547798989265404},
 'A5': -0.15618591010570526,
 'A6': 5056875705903044344,
 'A7': [{'D1': 30,
         'D2': 0.3854416777296037,
         'D3': -2058240745,
         'D4': 1945776346},
        {'D1': 218,
         'D2': -0.7639577758885865,
         'D3': 2051187699,
         'D4': 723003132},
        {'D1': 210,
         'D2': -0.21888142896018792,
         'D3': 1161170852,
         'D4': -2039779194},
        {'D1': 150,
         'D2': 0.13294423735061311,
         'D3': -556095315,
         'D4': -325122070}],
 'A8': [69, -1, 61, 25, -12, -24]}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'UUA\xf5\x03\x00B\x00\x00\x00E\x00\x00\x00Y\x00\x00\x00m\x00\x00\x00\xdc<'
 b'p4\xba,\xd0\xc1\xcd\xbf\x1a\x96\xdem\xe8-\xae\xcf\xee?\xbb\xe9\x90 \x96\x8a'
 b'-\xed\x1b\xde\x02\xfd*\x16\xcb\xb6\x1d\xfd\xad9\x81\x00Dwhfd\x00\xf1^'
 b'\xb2\xab\xe3q\xbf\xde\xe2g9\xfd\xea\xf2M\xc3jn%\xdc\x90c^\x84@\xd0'
 b'\xbf\x00#\x1aSw8fUQ\x99\xfe\xa2<\rA\xb06e\xdc?\xb6\xf4\x1bMq\xb5\x9d'
 b'\x9c\xc3Q\x8a\xb9\xc3\xd4\xd4\xbdF\x02\rt\xde\xb7\xcd\x89\xea\x06')

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

{'A1': 'hfd',
 'A2': {'B1': [{'C1': -0.0043675143151029605,
                'C2': [-7458, 14695, -5379, 19954, 27331, 9582]},
               {'C1': -0.2539378091589819,
                'C2': [8960, 21274, 14455, 21862, -26287, -23810]},
               {'C1': 0.4436775895339513,
                'C2': [-2890, 19739, -19087, -25443, 20931, -18038]}],
        'B2': 15580,
        'B3': -0.23247720893815282,
        'B4': 38426,
        'B5': {'D1': 0.9628516098632038,
               'D2': 546367931,
               'D3': [-315782506, -50143717, -1228204502, 967703837]},
        'B6': {'E1': -1110125373,
               'E2': 70,
               'E3': 2,
               'E4': [13, 116, -34, -73, -51, -119, -22, 6]}},
 'A3': 30532}

Пример 2

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

(b'UUA\xf5\x06\x00B\x00\x00\x00H\x00\x00\x00\\\x00\x00\x00p\x00\x00\x00Gn'
 b"\xd0dse#x\xb5\xbfg\r\x80-'\x0f\x1a\x90\xa1\xbf\xaad\x89\xa4\x00~N\x05a\xab"
 b'C\x84\xce\x82\x8a\xb1IEsK\x84\x00W\x9cwyekvl\xc0I^\xf2\xa0a\xd0\xbf'
 b'\xa9\x81HG\x04\xad\x02\xf9\\\xfa\x04RD\xa6\xfc\xe6\x9d4\xee?xjT|\xd4\x99=%'
 b'N\xb5\r(Z\xac\x0fj\xb4\xab\xec\xbfc\x85\x9e|\xa0z\nW\xde\xce\xc8\xf8]<p>'
 b'\xc5\xefC\x16\xe0\xf4B\xb8\x89L')

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

{'A1': 'wyekvl',
 'A2': {'B1': [{'C1': -0.25595878285198737,
                'C2': [-32343, 18248, -21244, -1790, -1444, 20996]},
               {'C1': 0.9439229499304891,
                'C2': [27256, 31828, -26156, 9533, -19122, 10253]},
               {'C1': -0.8959600516804003,
                'C2': [-31389, 31902, 31392, 22282, -12578, -1848]}],
        'B2': 28231,
        'B3': -0.0838644144709122,
        'B4': 3431,
        'B5': {'D1': -0.03430253443692788,
               'D2': 2760467626,
               'D3': [89030144, -2075939999, -1316322610, 1265845577]},
        'B6': {'E1': 1047542877,
               'E2': 197,
               'E3': -17,
               'E4': [67, 22, -32, -12, 66, -72, -119, 76]}},
 'A3': 40023}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xf2TBJXx{\x9e*:\xaf\xde\x06\xb9\xd5cqdrr\xe3\x93b\xc9\x997?\xcc?3JS'
 b'\x8bc\xdc\xef\xd6"\x18\t\x98\xd5Pa\xe0\x9dxk\x0b4\xbd\t\xa6\xb6\xd4['
 b'\x7f\x00\x8c\x00\x99\x00\xfb4\xad\xde\xfc \xab\xd8\xbf\x88]\x97=G\xafd\xc7O'
 b'\x86\xdb\x8e\xba\x9f\xb5Y]\xfcq\x17Z\xc8]v1\xce\xce\n\x87Q\x04\x83\xa1'
 b"\xbc'a\x19\x9ee\x8f\xb4\xbe\xa7\x04\xcb\xfd\xb4\x94\xb4\x15\xc2\xda\xcf"
 b'\xf8\x8b\x0b\x9d\x98\xca=\xfd\n#\xad\x90\x8b\xd4\x1c\x06X\r\xaf\xbe'
 b'\xc7\x99\xf6t\x8e\xf5\x06\xaf<\xf0\x03l\xbf\x94\xe7\x84\x9f\x01\x84\x8b'
 b'\xdaP')

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

{'A1': [31608, 10910, 44858, 1758, 54713],
 'A2': 'cqdrr',
 'A3': {'B1': {'C1': -29,
               'C2': 25235,
               'C3': 0.7171903252601624,
               'C4': 1244872652,
               'C5': 3697511251},
        'B2': -17,
        'B3': 152576726,
        'B4': 7744113146294490520,
        'B5': 13323,
        'B6': 3064334781,
        'B7': -44,
        'B8': 91},
 'A4': [{'D1': 0.09892389923334122, 'D2': 2077438781620947709, 'D3': 6},
        {'D1': -0.34189867973327637, 'D2': -5834706275015419449, 'D3': 60},
        {'D1': -0.9219350814819336, 'D2': -2698918409172359276, 'D3': 80}],
 'A5': {'E1': -5,
        'E2': -0.3854448766166627,
        'E3': [-4078942641979957880,
               6464248463769699919,
               8529193558575545437,
               -9005983714390389199,
               -8113905321796715359],
        'E4': 10715468461819543220,
        'E5': 832032127792059828}}

Пример 2

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

(b'\xf2TBJX\xa3\x03\x1da1\xfc\x95\x8a\xef\xd9ixlwiA8\xde\xffj\x01>\xc0|L\x96S'
 b'\x89ct3\x91<)\xab\xb9\x1d\x17\xdb\xa6\xf1\xadO\xcd\xc4b\xf3\x0f\xe4\xcb\xc1'
 b"\x7f\x00\x8c\x00\x99\x007\x82\xdf\xb1/\xd6+\xe2?\xa28\x86\xa4}\xcbR\x7f'"
 b'\x10y\x8d\xdf\x83\xe8\xdc\xd5\x14\x13vD\xf6f@\x03\xf0\x86S\x98>\xc5\x05\xf7'
 b'+b\x14d\xe8\xd4t8\xe8\xf6\xe1\xaf\xec\xc7\xdd\xc1\xf8\xdd\xa6n'
 b'\xff\xb5\xba\xf1N]\xbe\xf9\xe1\x93\xa0K\xc2\x08\xf4\xda\x83\xd0\xad>'
 b'(\xf0\xd121\xfaV\xdf\xcb\xf5L\xa5>-\xc9%\xe1\xcb\xda\xf3\xd2\x1a')

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

{'A1': [931, 24861, 64561, 35477, 55791],
 'A2': 'ixlwi',
 'A3': {'B1': {'C1': 65,
               'C2': 56888,
               'C3': 0.12638472020626068,
               'C4': 2521595072,
               'C5': 1952680275},
        'B2': 51,
        'B3': -1423360879,
        'B4': 5741510798909840825,
        'B5': -15155,
        'B6': 3826250594,
        'B7': -53,
        'B8': -63},
 'A4': [{'D1': -0.21612145006656647, 'D2': -862225698569068039, 'D3': 218},
        {'D1': 0.3394814431667328, 'D2': -2353418666041544664, 'D3': 203},
        {'D1': 0.32285276055336, 'D2': -3246010337213429459, 'D3': 26}],
 'A5': {'E1': 55,
        'E2': 0.5678511554278745,
        'E3': [9174619131398731938,
               -2528626194594066393,
               4640667239951045845,
               415807364558942211,
               8418609119998651383],
        'E4': 15981002042901981240,
        'E5': 13453940312550275265}}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'DIO\x8b\xb2\x14\xc7{g\xd7\x8d\x00Y>\xab\x82Q>\xc0-\xbc\x00\x00\x00\x03\x00bJ'
 b'\x9f\x15\x83\xa5\xaad\x9c\xdcj\x00\x05\x00\x00\x00\x1b\xe9#\x04\x12h'
 b'\xc5x\x00\x02\x00\x00\x00.\xec\xcb\xc2\x00\x00\x00%\x00\x00\x002\xbf'
 b'\x03\xe7\xb2w\x17%\xe9E\xb3\xe0\xa4>\xd3\xb0\x03\xdfJ\x00\x02\x00;\xc87\x00'
 b'C9\x18\xec\xfb\x13\xb4\x10\xaf\xb7\xed\xd0\x93[\r6\x7fN')

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

{'A1': 10066130964127930253,
 'A2': {'B1': 51255,
        'B2': {'C1': -4682644433846983191,
               'C2': 5022605005481553923,
               'C3': 57162,
               'C4': [{'D1': [19103, 5507, 42410, 25756, 56426],
                       'D2': 233,
                       'D3': [35, 4]},
                      {'D1': [4712, 50552], 'D2': 236, 'D3': [-53, -62]}]},
        'B3': 957934843,
        'B4': 19},
 'A3': 0.3349786102771759,
 'A4': 0.37534892559051514,
 'A5': [3020992439, 3989869403, 221675342]}

Пример 2

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

(b'DIO\xf1_\x7f"\xa3\xa1\xb3I\x00\x83<\xe7\xd8\xf3\xbf\x10rR\x00\x00\x00'
 b'\x02\x00\x8c;\xe4\xb0\x82\x00\x02\x00\x00\x00\x1bO\x17\xca%\x10\xfch'
 b'\x01\x00\x00\x03\x00\x00\x00(\x92R\xb7B\xf0\xed\x1a;\x8aw|0\xa9\x00\x05\x00'
 b'\x00\x007\xdaql\x07\xf4\xab/\xe0\xa9w\xe2u\xc4\x00\x05\x00\x00\x00J\xbb\xcd'
 b'\xed\x00\x00\x00\x1f\x00\x00\x00.\x00\x00\x00A\x00\x00\x00T\xf5]\xb7'
 b'\xaa\xdf"\x89;\xd7\x7fh\xf5,\xff"\xb4\xce\xc5\x00\x04\x00]h\x19\x00m\x11'
 b'V\xbe\xcb\xe8b9Me\xa7y\xb6\x84')

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

{'A1': 17392760072679043913,
 'A2': {'B1': 26649,
        'B2': {'C1': -766254417067210437,
               'C2': -2918498631281597772,
               'C3': 52933,
               'C4': [{'D1': [15332, 45186], 'D2': 79, 'D3': [23, -54]},
                      {'D1': [9488, 64616, 256], 'D2': 146, 'D3': [82, -73]},
                      {'D1': [17136, 60698, 15242, 30588, 12457],
                       'D2': 218,
                       'D3': [113, 108]},
                      {'D1': [2036, 43823, 57513, 30690, 30148],
                       'D2': 187,
                       'D3': [-51, -19]}]},
        'B3': 290897611,
        'B4': -24},
 'A3': 0.028301691636443138,
 'A4': -0.5642443895339966,
 'A5': [1647922533, 2809771652]}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'DCQD#\xc2\x07"\xbe\xb8dz\xe0Q\xe7N\xde\x00\x02\x00\x1fwHN\xf9\xda\x00\x00'
 b'\x00k\xd9\xa2\xf6c.+\x1c@k\xd1\x03\x083z\xed\xe5-\r\xa0\xac\xc24P\xd5\xf2{'
 b'hd\x93\x83)\x91\xaa\x84\x16/\x96>\x8c\xcb\x81=\x85\xbf\x13\xf5\xd1\xae\xf8p'
 b'\x0b\xffA"nx\xb5t\x17\x82\xdc\x84\xd6G\xbd\xc8\xe1\xdf[\x08\x1f\x80\xac^'
 b'!a\xe5"\t\xab\x8b\x00\x00\x00\x02\x00\x00\x00C\x00\x00\x00\x04\x00KriW'
 b'\xc3\x88\xd2$\x12?\xe6\xe7b\xae\x98~\xd2b\xe6\x8a\xa6,q4g')

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

{'A1': 599918370,
 'A2': -0.3601415753364563,
 'A3': 224,
 'A4': 1374113502,
 'A5': {'B1': [{'C1': 2734056238,
                'C2': 723271787,
                'C3': -788330445,
                'C4': 31469,
                'C5': -450032224},
               {'C1': 2898408528,
                'C2': 3589438312,
                'C3': 1687388969,
                'C4': -28246,
                'C5': -2078920810}],
        'B2': 119,
        'B3': 1213135322,
        'B4': {'D1': 8713,
               'D2': 43915,
               'D3': [0.27499011158943176, 0.06530585139989853],
               'D4': [17713131191479828289,
                      2481053165459833564,
                      9571916938467204955,
                      585327954383430117],
               'D5': [29289, 22467],
               'D6': -1999494126,
               'D7': 0.7157452974388099,
               'D8': 7126535906675209319},
        'B5': -39}}

Пример 2

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

(b'DCQD\x80K\xe2(>\x9deH|\x8bh\x16-\x00\x02\x00\x1fe\x03\xcb\xb5\xed\x00\x00'
 b'\x00[}a\xc4\x89q\xd30\xb510\t\xad\x00\\\xae\xd4Y@\x02U\xa6\xc4\xaam3X'
 b'\xeei\xb2q\xd1\xce\x1aqR\xa1\x96?l\xbeG?sq\xb3x\xb6$\x91F\xd3\xc2\x15\xfc'
 b'\xe3\x93|\xf6\x8a\xca\x12G\x1b\xect\x00\x00\x00\x02\x00\x00\x00C\x00'
 b'\x00\x00\x02\x00K\xa2%.\xc9\x1e\xed???\xe8\xe5\xd5\xaf\x8aM\x18\xe9\x1d\xc9'
 b'\x1d\xb4\x84*:')

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

{'A1': 2152456744,
 'A2': 0.30741333961486816,
 'A3': 124,
 'A4': 2338854445,
 'A5': {'B1': [{'C1': 1640270193,
                'C2': 3543184689,
                'C3': 805940480,
                'C4': 23726,
                'C5': -732348414},
               {'C1': 1436992682,
                'C2': 1832081646,
                'C3': 1773302225,
                'C4': -12774,
                'C5': 1901240726}],
        'B2': 101,
        'B3': 63682029,
        'B4': {'D1': 18203,
               'D2': 60532,
               'D3': [0.924778401851654, 0.9509536623954773],
               'D4': [8698179936689832469, 18222570682192677394],
               'D5': [41509, 11977],
               'D6': 518864703,
               'D7': 0.7780559948463717,
               'D8': 16797803314581613114},
        'B5': 125}}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'RUMFQ\\\x00\x00\x00\x1a\xf0\xd5S\n9/\xbcehonbuqibD\\\xf8\xce\r\xb4'
 b'\xd3\xbf\x8e\xfc\xcc)\x93\x14\x98\x06\xae\x0c\xc4\x1a\x8a\xee-\xc18\xd2'
 b'\xf5O0\x1a\xfe\x19\xb2\x98\xd1\xcfp\xde\xbfW>\xe1L\xbb\xdda\xc9PO\xda'
 b'\x14=/\x8e_f\x16\xa9\xd9\x81\x84\xba{\xa6\xed\\\x04\x00\x00\x00,\x00\x07}'
 b'\xa4\x8a\x97\xf5H:\xaa\xd9u\x82\xb0>\xa9\x133<\n\xb3\x92\x1f\x0f/}\xe6')

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

{'A1': {'B1': {'C1': [{'D1': 15148069749680380612, 'D2': 20469, 'D3': 6704},
                      {'D1': 16028539572928518654, 'D2': 22463, 'D3': 57662},
                      {'D1': 15730880849289001804, 'D2': 15636, 'D3': 36399},
                      {'D1': 13440009959825106527, 'D2': 42619, 'D3': 23789}],
               'C2': 4199876683737890055,
               'C3': 55722,
               'C4': {'E1': 117,
                      'E2': -1455509374,
                      'E3': 13075,
                      'E4': 9020445206926002748},
               'C5': -26},
        'B2': -4886624354154713062,
        'B3': 'eho'},
 'A2': 'nbuqib',
 'A3': -0.3078646203225086,
 'A4': [64654, 10700, 5267, 1688, 3246]}

Пример 2

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

(b'RUMFQ\x8c\x00\x00\x00S_R\xff\xb8^\x95\xefrbyrqyzlj\xe8\x82\xe9-\x10\xb3'
 b'\xd1\xbfR35#H\xaa\xf2\x979\x15s5r\x08\xb4d2\xd3)\x7fN\xf2\xb4[N\xcf'
 b'\xb3!\x85\x91<\xee\xf4\xcc~\x13\xcc\t\xa3\xd7lcr\xd5I\x7f>[y\x1ex\xf8t\xf7'
 b'7\x02\xc2\xabF\xd6lsP\xac(\xf6<\x9e\x92\x00\xf8[\xcf\x0e\x85\xaf\xc3~Q\xf3bo'
 b'\x90\x9e^\xe5\xb59\x1b\xc2\xa6\x9f`\x94\x82\xe9\xdf\xd4\r\x87\xe5D'
 b'\x0b\xa3\xacV\x08\x00\x00\x00,\x00\\\x971\xbc\xf1\x0bY\xf3\x19\x98*\x87\xe9K'
 b'\xe7S\xe2\xbe\xa4G\x03{\xe0\xde\x17n')

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

{'A1': {'B1': {'C1': [{'D1': 15218336815236920691, 'D2': 32553, 'D3': 62030},
                      {'D1': 10485824363562949556, 'D2': 60988, 'D3': 52468},
                      {'D1': 7164338202483626878, 'D2': 54642, 'D3': 32585},
                      {'D1': 17831150019457669950, 'D2': 567, 'D3': 43970},
                      {'D1': 17737616593932572230, 'D2': 40508, 'D3': 146},
                      {'D1': 9134337455251479544, 'D2': 62289, 'D3': 28514},
                      {'D1': 13986836521129254544, 'D2': 40870, 'D3': 37984},
                      {'D1': 4964522657721608578, 'D2': 41739, 'D3': 22188}],
               'C2': -911684316693424292,
               'C3': 38937,
               'C4': {'E1': 42,
                      'E2': -414455417,
                      'E3': 57939,
                      'E4': 1720058926642734270},
               'C5': 110},
        'B2': -1182935178464305325,
        'B3': 'rby'},
 'A2': 'rqyzlj',
 'A3': -0.27655415042504083,
 'A4': [13138, 9013, 43592, 38898, 5433]}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'MUS\x80i\x89i\x00\x02\xef?\xb1\xc8\x8bP\xb9\x1f\xcf\xabtn\xcb\xab\x0f'
 b'\xce\xf8\x03us\x17\x9bs\xbc\x86\xf21`\xb0\x8d\x06\xe0\xd1\x08d\x97\x8b;X'
 b'J\xc0ei\xa7\xa7\xacM\xad\x9f\x9b`\xf8\x1b\xa6\x91:\x89\\\x15d\xb1\x8b.'
 b'H\x86rI\x8b\x9d\xddB\x1b`\x1d9\xd6\x84x\xd3\xf8Mw\xd1\xad\xf7\xa8\x1f'
 b'\x18\x9f3?b\x17{}7cvbL\x00\x00\x00O\x00\x00\x00R\x00\x00\x00U\x00\x00\x00'
 b'X\x00\x00\x00[\x00\x00\x00^\x00\x00\x00\xdc\x02\x00\x00\x00a\x00\x00\x00w_6'
 b'=H\x00\xe3\x91}R\x8f\x8a?')

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

{'A1': -30359,
 'A2': {'B1': 'cvb',
        'B2': [{'C1': 139, 'C2': [-99, -35]},
               {'C1': 66, 'C2': [27, 96]},
               {'C1': 29, 'C2': [57, -42]},
               {'C1': 132, 'C2': [120, -45]},
               {'C1': 248, 'C2': [77, 119]},
               {'C1': 209, 'C2': [-83, -9]},
               {'C1': 168, 'C2': [31, 24]}],
        'B3': 220,
        'B4': [1648309151, 930970391],
        'B5': {'D1': 0.04452463611960411,
               'D2': 72,
               'D3': 0.012968677956665342}},
 'A3': [-5093417484472553726,
        1129219806850699039,
        8330277720403736782,
        472227463145096892,
        6357828781298209248,
        5597032774384336970,
        -7951637338489380947,
        3353969390920698170],
 'A4': 1232242248}

Пример 2

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

(b'MUS\x80[Di\x00\xb9Rc\xee\xa8\x81\x0c\xad\xbe\xc7m\xa6\xb0\xb8\x84Z>k\xee\x14'
 b'\x85\xa0I\xcb]\xdfe^\x81\xac\x8c\xaeu\x87l\xf1\x11\xbb\x87\xc3j\xe0\xf6\x92'
 b'iPB\xb5@\x13,\x183\xd1\x14\xa3A\xe8\xab\r\x81\x12\x91\xfd\xdebVo\xe9[\x91-'
 b'\xbb\xed)ql-\x04\xb4\xfc\x10\xf2\xbbe5\x92Ny\x91\x86\xba\xb0g\xc1\xaa%mvi'
 b'L\x00\x00\x00O\x00\x00\x00R\x00\x00\x00U\x00\x00\x00X\x00\x00\x00'
 b'[\x00\x00\x00^\x00\x00\x00\xd5\x02\x00\x00\x00a\x00\x00\x00\xf5{:?8\xfc\xd4'
 b'\x03A/\xa1\xdd\xbf')

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

{'A1': 17499,
 'A2': {'B1': 'mvi',
        'B2': [{'C1': 233, 'C2': [91, -111]},
               {'C1': 45, 'C2': [-69, -19]},
               {'C1': 41, 'C2': [113, 108]},
               {'C1': 45, 'C2': [4, -76]},
               {'C1': 252, 'C2': [16, -14]},
               {'C1': 187, 'C2': [101, 53]},
               {'C1': 146, 'C2': [78, 121]}],
        'B3': 213,
        'B4': [2965014161, 631947623],
        'B5': {'D1': 0.7284539341926575, 'D2': 56, 'D3': -0.46296292637937575}},
 'A3': [-5977260042873515335,
        6522541229185288126,
        -3798328317268038850,
        -5869126542736105635,
        -4357308428718405771,
        -5385653790014250902,
        -6695496728614005952,
        -175338565001287615],
 'A4': 1867932382}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ZBH%\x00.\x14\x06\xd1=\xe0\xe7\xbe\xf2\xce3u\x81dizgfvh\x04\xbf\x0e'
 b'\xea9\x00J\x00_\x00q\x00\x86\x00\x9a\x00\xaf\xb5>1\x9fU\x9b\xb9\x9a\x1a\xac'
 b'\xb31nht?>\xfb\xe9\x19\x08\xe9I\xc2\x8a$\x86\xba\xf58\xc7\x8a<\xac'
 b'W\xe4\x00\x00\x00\x07\x00C\xef\x9e\x1d\x1a:\xbc\x88K?\xd6\xee\xbe'
 b'\x8dj\xc7\x00\x00\x00\x07\x00X3|\xdc7S\x8edK\xbfH\xae\xae\x00\x00\x00'
 b'\x04\x00m\xa4\x80\xd4\xc5\xf7\xd0\x1a\xa8\x08/\x92\xbf7F\xd5\x00\x00'
 b'\x00\x07\x00\x7fi\\<?\x1e\\\x0cR%\xce?B\xe7b\x00\x00\x00\x06\x00\x94'
 b'r8\xac\xee\xde\xb4\xcaG,\x9er?\x11\x9a=\x00\x00\x00\x07\x00\xa8\x86N\xd4'
 b'\xc3')

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

{'A1': {'B1': 6168728186137654065,
        'B2': {'C1': 'nht', 'C2': 0.7460313439369202, 'C3': 6408},
        'B3': 3913925258},
 'A2': 1443070794315316978,
 'A3': -50,
 'A4': 51,
 'A5': {'D1': 30081, 'D2': 'dizgfvh', 'D3': 4},
 'A6': -0.5582614541053772,
 'A7': [{'E1': 0.021038003265857697,
         'E2': [36, -122, -70, -11, 56, -57, -118],
         'E3': 61342,
         'E4': 7450},
        {'E1': -0.27620527148246765,
         'E2': [58, -68, -120, 75, 63, -42, -18],
         'E3': 13180,
         'E4': -9161},
        {'E1': -0.7839154005050659,
         'E2': [83, -114, 100, 75],
         'E3': 42112,
         'E4': -11067},
        {'E1': -0.7159245610237122,
         'E2': [-9, -48, 26, -88, 8, 47, -110],
         'E3': 26972,
         'E4': 15423},
        {'E1': 0.7613431215286255,
         'E2': [30, 92, 12, 82, 37, -50],
         'E3': 29240,
         'E4': -21266},
        {'E1': 0.5687597393989563,
         'E2': [-34, -76, -54, 71, 44, -98, 114],
         'E3': 34382,
         'E4': -11069}],
 'A8': 3040752031}

Пример 2

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

(b'ZBH%\x00.E\x84\x10\xd0\x9d\x18K\xc5\x96\xae\x12\x99shhfush^>3\xec\xb7\x00H'
 b'\x00X\x00j\x00}\x00\x93\x00\xa4\xbc\x82\xfc\xd3\xcc\xd0M\xb5\xbe\xbd'
 b'\x86\x8fwgz>\x12\xdd\x07\xe4G\x92\x80R\xba\x8aS\x8a\xa6\xa2\xbf\x1cs\xd5'
 b'\x00\x00\x00\x05\x00C\xf8\x92\x8b|\xe0\xb0\xbe\xdd\xc3T\x00\x00\x00\x02'
 b'\x00V\xc2\x87\xb9W\x83\xd6\xce\xb6?tC{\x00\x00\x00\x04\x00f\x1fH\x84\x12'
 b'\x05\xab\xd6\x8f\x83\xbf}`\x16\x00\x00\x00\x05\x00x\xb9GZ:\x9a\x1ew\x00\xbf'
 b'\xc2\xdd\xb6\xbf8\x97k\x00\x00\x00\x08\x00\x8b/k\xb6\xef\xfb\x15\x9a'
 b'?;\xfd\xc8\x00\x00\x00\x03\x00\xa1z\x142\xa8')

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

{'A1': {'B1': -3688362651831925105,
        'B2': {'C1': 'wgz', 'C2': 0.14342127740383148, 'C3': -7097},
        'B3': 2457883322},
 'A2': 5009147173717691333,
 'A3': -106,
 'A4': -82,
 'A5': {'D1': 4761, 'D2': 'shhfush', 'D3': 94},
 'A6': 0.17570768296718597,
 'A7': [{'E1': -0.6111424565315247,
         'E2': [-118, 83, -118, -90, -94],
         'E3': 63634,
         'E4': -29828},
        {'E1': -0.4331308603286743,
         'E2': [-32, -80],
         'E3': 49799,
         'E4': -18089},
        {'E1': 0.9541546702384949,
         'E2': [-125, -42, -50, -74],
         'E3': 8008,
         'E4': -31726},
        {'E1': -0.9897474050521851,
         'E2': [5, -85, -42, -113, -125],
         'E3': 47431,
         'E4': 23098},
        {'E1': -0.7210604548454285,
         'E2': [-102, 30, 119, 0, -65, -62, -35, -74],
         'E3': 12139,
         'E4': -18705},
        {'E1': 0.7343411445617676,
         'E2': [-5, 21, -102],
         'E3': 31252,
         'E4': 12968}],
 'A8': 3162701011}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CEUw\x16\x08\x1b\xe1\xe2:Tiiafzyolzotf\x16\x02\x007\x00\xe0u"\xa1'
 b'\xd3\xef\xaf?\x02\x00\x00\x00O\x00i\x96m\x1b>\xf0\x8bU\xae\xa0\x96\xed\xbf|'
 b'Z\xabj\xa5\xf9t\xf7b2\xb4\xbc%\x07\nAo\x87C\xbaq\x00\xfe\x15\xee'
 b'\xbe\x82\x18\xbbg\xee\xe7')

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

{'A1': 7589756018139793430,
 'A2': {'B1': 'iafz', 'B2': 'yolzotf'},
 'A3': 22,
 'A4': [{'C1': 1789614716, 'C2': -4849195498131359323},
        {'C1': 1091176229, 'C2': 1584704607337285487}],
 'A5': {'D1': 0.062376607341530166,
        'D2': [411221742, -403806277],
        'D3': 105,
        'D4': 0.1517852246761322},
 'A6': -0.9246371655430021}

Пример 2

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

(b'CEUw\x02X\xb4%\xf2\x89sMyhdshhkpnwm\x94\x05\x007\x00`g\xaee\xca\xfb\xb2?'
 b'\x02\x00\x00\x00s\x00\r\xb4\x01m\xbet\xc9M\xcd\x1a\xde\xdc\xbf\x0c\xd4YYi'
 b'\xc1y\x0b\xbdN\xc0W\xe8\xa46\xb6cY\xce\x902UG\x95\xb2D\xfbs]\xbe\x8fg\x95'
 b'\xebE\x9f\xc3\x9f \xcbR\xabyR\x1e\x0fa[\xb8\x80\xdbB\xf8\xa5\x010@'
 b'\xa0\x16\x00\x0f\x0f\x90\xfd2\x11\xb5\x9d')

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

{'A1': 5580956036349843458,
 'A2': {'B1': 'yhds', 'B2': 'hhkpnwm'},
 'A3': -108,
 'A4': [{'C1': 1499059212, 'C2': 6323140450676490601},
        {'C1': -1237932824, 'C2': -7690084163045664413},
        {'C1': 1945846962, 'C2': -6969905821365846435},
        {'C1': -887054397, 'C2': 6584560753099516754},
        {'C1': 1121681592, 'C2': 6368647031399928}],
 'A5': {'D1': 0.07415451986744648,
        'D2': [-40890609, -1649077966],
        'D3': 13,
        'D4': -0.23145180940628052},
 'A6': -0.4510561947746716}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xacVEG\xa7xp\x18f\x00\x8e\x00v$\x7fn\x03\x00\x00\x00\xa6\x00\xf5\x1euN\x07m'
 b'\x0f\x06\xde@k\xd9n{\xf3\xabD4~>J\x94\xf0\xc9*4lN\x92A\xc0d\x90\x8e'
 b'\xe1o\x08\xd2\x08E\xdb\x00\x02\x00\x1e\x00\x00\x00!\xe6w\xbf\x03\x00'
 b'\x00\x00"\x00\x00\x00\xdf\x03\x00.\x00\x00\x00\x1f\xbd\x0b\xbf\x03\x00\x00'
 b'\x004\x00\x00\x00\x95<\xbe\x8ex"\x89\xf0Kk\x80\xee\xbf\x13\x02\x9c>\x02\x00'
 b'\x00\x00@\x00>l\x0e\xac\xe3^2\x18\xcf\x81I\xd3@\xe1\xf5\xa7\xf6~\xc8}'
 b'\xa9\xf7xIG\xcf\x19A\x81\x07\x00\x80\x00\x00\x00sw]\\\x8eYvNh\x19')

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

{'A1': 410024103,
 'A2': {'B1': 2022620732,
        'B2': -0.9531761630244413,
        'B3': 0.30470332503318787,
        'B4': [{'C1': [16606, -9877],
                'C2': -0.9683552384376526,
                'C3': [2884860782, 1048458308, 3387987018],
                'C4': -33},
               {'C1': [13354, 20076, 16786],
                'C2': -0.5458545088768005,
                'C3': [2391827648, 3523768289, 14370056],
                'C4': -107}],
        'B5': 2886626366},
 'A3': {'D1': 200,
        'D2': 1859783552014985597,
        'D3': 33089,
        'D4': [24291, 6194, -32305, -11447, -7872, -22539, 32502],
        'D5': 115,
        'D6': 23927,
        'D7': 1985580636},
 'A4': 1853826166,
 'A5': [78, 104, 25],
 'A6': 436687567026724597}

Пример 2

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

(b'\xacVEG#\x1ec\xb8d\x00\x82\x00+-+\xe5\x02\x00\x00\x00\x9a\x00\x92D'
 b'e\xba\xb0\xc9,\xfe13\xcfo\x9bC\xba\xaca\x95\xe6\xc6\x8d3\x9fd \xf0'
 b'\xed\xffS\x89\xcbX\xdfB"4zm1\xf2\x03\x00\x1e\x00\x00\x00\xb9\x8e\xd5\xbe'
 b'\x03\x00\x00\x00$\x00\x00\x00(\x03\x000\x00\x00\x00oI\xe2\xbe\x02'
 b'\x00\x00\x006\x00\x00\x00\x91\xe8\xce\x80\x04(\xf9\xf2\xe48\xa6\xc1?'
 b'p\xd2w\xbf\x02\x00\x00\x00>\x00\xef\x97]"\xcf\'\x1c\xc0\xf9_\x90a\xa3<'
 b'OU\xa6\xef\x90\x02\x00~\x00\x00\x00q4\r\xa2kL\x95\xe9\x80')

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

{'A1': 3093503523,
 'A2': {'B1': 75550440,
        'B2': 0.13788520030170415,
        'B3': -0.9680547714233398,
        'B4': [{'C1': [13105, 28623, 17307],
                'C2': -0.4171045124530792,
                'C3': [2506206394, 864929510, 4028654751],
                'C4': 40},
               {'C1': [-19, -30381, 22731],
                'C2': -0.4419665038585663,
                'C3': [874660575, 4063325562],
                'C4': -111}],
        'B5': 576559087},
 'A3': {'D1': 249,
        'D2': -6461170968535396257,
        'D3': 37103,
        'D4': [10191, -16356],
        'D5': 113,
        'D6': 3380,
        'D7': -1790153822},
 'A4': -450155221,
 'A5': [233, 128],
 'A6': 18315235545487590546}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\rQYXP\x00\x00\x00\x9af\xdc\xed\xd9?\xb3l[\xf3\xc6\x80\xd0?\xe5u5\x02xG'
 b'\xde?\xdb\x97\xc1\x9dg\x9d\xb0\x15\xcdb\x16\xbf\xd0\xab\x1d\x05\xd7\xd7'
 b'\\\xbfU\xa4V\xbf\xe6^\x1eN\xc9\xea`v\x0e}\xe4z=\xbaFK\x88\xb8\xdesx\x99'
 b'0<\xc2\xbf\xdeB<#\xc1\x04\xa4\xbf\xca|\x1f\xe2\x03,\x00\xbf\xeb\x9fadEs&\xcc'
 b'$\x8d\xcd\xbf\x9c\xccJ\x9b\xab\xef\x00\xbe\x8bb>?\xec\xfe\xb5+\x97Z\xf2\xa5'
 b'\x95\x9a^\xb0Y\xf45\xd7\xd3W\x1ale?\x98\xe7\x96\x00\x00\x00\r\x00\x00\x00'
 b'O\xd1\x00\x00\x00\x91\xbfR\\\xbf>\xe4\xde\xa1C\x1f\xea\xd6w\x0f')

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

{'A1': {'B1': {'C1': [{'D1': [0.07587217999980855,
                              0.6705575035323326,
                              0.4311374699741135],
                       'D2': 365781526,
                       'D3': -0.2604439312993827,
                       'D4': -0.8345388174057007,
                       'D5': -0.6989890612451966,
                       'D6': [8506875166406326854, 5442803415236778288],
                       'D7': 15554},
                      {'D1': [-0.47279265872573206,
                              -0.2069129804206966,
                              -0.8632056196616744],
                       'D2': 3424947661,
                       'D3': -0.02812305998939646,
                       'D4': -0.27223390340805054,
                       'D5': 0.9060922480956306,
                       'D6': [-6515131554445265867, -2894874364469756008],
                       'D7': -6250}],
               'C2': -47},
        'B2': [-0.8217276930809021, 0.4470110237598419],
        'B3': 1126165206,
        'B4': 30479},
 'A2': 1725754841}

Пример 2

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

(b'\rQYXP\x00\x00\x00\x9a\xab1\xba\xa3?\xe2\x15V\x9c\xb9\xd8b\xbf\xd6\x9b'
 b'-\xa59\n\xd4\xbf\xcf\x1cJ>c5\x88\xf9\x96-;\xbf\xe5\xe9\xb9\x0f\x06 '
 b'\x08>\xaeD\x8c\xbf\xe4\xcf\xd4\xa9\xf3\xe7\xf6\xfe\x17\xd1\xf0\xac\x18\x89'
 b'\xb9\x9b\x08s\x8c\xce\xc2+$O\x8d\xbf\xd0\x8cS\xffm\x07\xb4\xbf'
 b'\xd1\xc1\x91\x8b\x03\xa8\x90\xbf\xda\xc6\xc5\xa6\xddB\x9c\x07N\x8e\xc4\xbf'
 b'\xe9^\xaf5\xda\x8f\xbe\xbe\xfb{G\xbf\xd5\x94\x85~\x18h\xd4\x91X\x01p\xe9'
 b"\x02+\xd8\x1f\xceo\x10?\x99\xd4'>N\x00\x00\x00\r\x00\x00\x00O\x17\x00\x00"
 b'\x00\x91?f\xca\xcc=\xc0 c2\xf9\x0b\x86a\xb4')

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

{'A1': {'B1': {'C1': [{'D1': [0.5651047764829509,
                              -0.35322133193055305,
                              -0.24305084272638688],
                       'D2': 4187368763,
                       'D3': -0.684780625671011,
                       'D4': 0.3403667211532593,
                       'D5': -0.6503699607267197,
                       'D6': [-137410432001865287, -7275438149415589084],
                       'D7': 20365},
                      {'D1': [-0.2585649485009711,
                              -0.27743948531736695,
                              -0.4183820848020703],
                       'D2': 122588868,
                       'D3': -0.7928081561881226,
                       'D4': -0.4911749064922333,
                       'D5': -0.3371900302314661,
                       'D6': [-7973621555802264616, 2291891375955366951],
                       'D7': 15950}],
               'C2': 23},
        'B2': [0.9015319347381592, 0.0938117727637291],
        'B3': 855182214,
        'B4': 25012},
 'A2': -1422804317}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'6MJO#/\xbe|`3\x80J`\x00n\xa2E\xea\xb4\x02\x05\xce\x0c\x17\xc8\x05\x89\x8b'
 b'\xd8YK;\xe2J\x80\xe0 \x1e\xd44gj\x19\xca8\xb2\x96\xd1\xe6&\x86C\xfe\x06\x03:'
 b'\n\x8c$R\xd9\x12peg\x05*\n5aa\xddBv~\t\x99\x7f\xad\x19\xea$y\xd7'
 b'A\xfb\x80\xadj,$\xbf`\x94Q\xbee,\xe3>\x87\x11\xbe\xb2\x1c\x00\x00\x00'
 b'(\x008\x00H\x00\x02\x00X\x00\x91L\xbf?\xdc;\xc0\xdb\xa0g\x90GN\xed'
 b'\xe1\x0fl\x10\x03\xe0\x11\xc2')

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

{'A1': 12067,
 'A2': 861961406,
 'A3': 19072,
 'A4': {'B1': 0.44369807839393616,
        'B2': -1296166521,
        'B3': {'C1': 16177012197032679896, 'C2': 886316576},
        'B4': [{'D1': [-904304025, -778653128],
                'D2': 1132865254,
                'D3': 1790,
                'D4': 3,
                'D5': 58},
               {'D1': [1378126858, 1701843673],
                'D2': 170526055,
                'D3': 24885,
                'D4': 97,
                'D5': 221},
               {'D1': [159282754, 430800793],
                'D2': 3615040746,
                'D3': -1215,
                'D4': -128,
                'D5': 173}],
        'B5': [-0.6413027048110962, -0.2046675682067871],
        'B6': [1069501585, -608158756, 1200646048],
        'B7': {'E1': -2304980527974585010, 'E2': -15855}},
 'A5': 3930432110,
 'A6': -76,
 'A7': 9873517759404311810,
 'A8': -117}

Пример 2

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

(b'6MJO(\x84\xb4"ag\x89\x07`\x00\xd8\x85\xbef\xb48Z\xc2\x0ej\xcf\xe9\x84\x92'
 b"nZ\xab\x04frKJ\xa2R\xfe\xd1\x9c\r\x1dW\x1cG\xc7'n\xfd\xbc\\\x08\xf7E\x9e"
 b"z\xcfN\xf4\x9f\x85'\xff\x13\xe4\xee\xfd\x0b\x02\x1a,\x90\xe6\xe97"
 b'\xe3\xe2\x8a6\x1c#\xc0z\x9e\x91\xa1\x8c\x81it?j\x8fF\xbd\xdc\x17\xf3>'
 b'\x89\xd3yb\x1c\x00\x00\x00(\x008\x00H\x00\x02\x00X\x00\xe3Y\xf0\x98\xefq'
 b'N|X\xfb\x8ey\x06\x8b{d\xc2\x87\xf2\x9d\x19\x9d')

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

{'A1': -31704,
 'A2': 1734419124,
 'A3': 1929,
 'A4': {'B1': 0.47479140758514404,
        'B2': 1652151177,
        'B3': {'C1': 5353498364550535790, 'C2': -771861854},
        'B4': [{'D1': [1461521820, 667371292],
                'D2': 1555889518,
                'D3': -2296,
                'D4': 69,
                'D5': 158},
               {'D1': [-196161670, -14187105],
                'D2': 4260291603,
                'D3': 523,
                'D4': 26,
                'D5': 44},
               {'D1': [938075792, 915071715],
                'D2': 2059412252,
                'D3': -28258,
                'D4': -95,
                'D5': 140}],
        'B5': [0.9547348618507385, -0.04847661405801773],
        'B6': [-1729078813, 2085515759, 2039413592],
        'B7': {'E1': -7065435596411663610, 'E2': -25319}},
 'A5': 1723762136,
 'A6': -76,
 'A7': 9577414137001171512,
 'A8': -110}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xf4UTABg\x8fe\xca\xd7\xde\xe2\x9a\xf8\x9c\x0f\xa7\xfa \x1f\x98*\xe6\x02'
 b"\x00\x00\x00o\x00\x00\x00\x8d\xb2\xe6\x97\x16bG\xea\xdaXn\x855^_\xd0\xe1'ni "
 b'\x7f\xab=0\xad\x95z\x06\x00\x00\x00s\x00\x00\x00\xc7~\x1f\xee5'
 b'\xfc\x19\x11\xbd>\xce\x85}\xa1\x80\xe0Fu\x92\xa1\xea^\\?\x04\x00\x00\x00\x7f'
 b'\x00\xe0u\x0c\x19\x02\x00\x8f\x00\x00\x00\x13\x80`\xbe\xb7\xbe5\xac\xe3'
 b'\x11\x01\xc4\xa2\xd9\x8bnnp\xef\xb2\x9bc\xc5R\xcc\x0c\x98\x1cx&(n\xbb'
 b'ix\xeb\xa5OE\xe2\t\xa2\n\xcc')

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

{'A1': -899313817,
 'A2': {'B1': {'C1': 12038012920549007063,
               'C2': 8442,
               'C3': [{'D1': 31,
                       'D2': -104,
                       'D3': 58922,
                       'D4': [48823, 44085],
                       'D5': 16881569577398874765,
                       'D6': [22746, -31378],
                       'D7': 7597053472237641269,
                       'D8': 0.08373856544494629},
                      {'D1': 48,
                       'D2': -83,
                       'D3': 31381,
                       'D4': [4579, 50177, 55714, 28299, 28782, 45807],
                       'D5': 1232293281621049031,
                       'D6': [16061, -31282],
                       'D7': 11642496933980840317,
                       'D8': 0.8608232736587524}],
               'C4': [1388667803, 479726796, 1848125048, -344430149],
               'C5': -32},
        'B2': 3189,
        'B3': 25,
        'B4': [-498774107, -871718391],
        'B5': -0.21923856437206268}}

Пример 2

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

(b'\xf4UTAB\x83\x80\xe7b\xd09}i\xe9\x16\xd0dP\xed\xb8z\t\xff\x02\x00\x00\x00o'
 b'\x00\x00\x00\xcd\xe5\x17\x99aS\xb1&\xe1V/\xf4\x85bPf\xf3\xaf\xac\xc0\x93'
 b'*\xba\xbe\xee\xd4\xdc}\x04\x00\x00\x00s\x00\x00\x00\xca\x8f\xc7\xa6\x9a'
 b'\xc7\xf2\xa2\xa3\xe5~q\xf47r\x0c\x97\xaa\xbaF\x0f\xf0\xa3\xbe\x03'
 b'\x00\x00\x00{\x003\xd1mO\x04\x00\x87\x00\x00\x00\x10W\x0f\xbf3\xbb\xe98\xd4'
 b'\x1a\x197\xeb\xef\xd5\xb0\x8a~\xc9\xbb\x94w\xefcAp\x7f\x91\xf7'
 b'\xc9\xc4\xdf\x02X\xd3\xe8\xacx\x96:<\x80\x1e\x83')

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

{'A1': 1659338883,
 'A2': {'B1': {'C1': 7264331390701615568,
               'C2': 60752,
               'C3': [{'D1': -72,
                       'D2': 122,
                       'D3': 65289,
                       'D4': [47923, 14569],
                       'D5': 2788101322964461005,
                       'D6': [22241, -3025],
                       'D7': 13883665211204854405,
                       'D8': -0.3636060655117035},
                      {'D1': -18,
                       'D2': -44,
                       'D3': 32220,
                       'D4': [6868, 14105, 61419, 45269],
                       'D5': 11741666645545291722,
                       'D6': [-6749, 29054],
                       'D7': 5096573494048733172,
                       'D8': -0.3201908767223358}],
               'C4': [-1144422774, 1676638100, -1853919167],
               'C5': 51},
        'B2': 28113,
        'B3': 79,
        'B4': [-540751369, -388802558, 982939820, -2095153092],
        'B5': -0.5599222183227539}}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xc1GIWMJifcffkkqc\xae\x0b\xb5\xbf\xe1+\x99\n\xfbR0>e\x1bv\xe89\xc7\xbf\xe76'
 b'Q\x9d\xfa\x86\x04!5\xa7~\xbe\x978?\xb5I\xf6\x86b,\xc0\xba\x18"\x0e'
 b'\xc9|\xa9\xbf\xe8\xc1\xea\xc0\xac\xa2hm^\x92\x85}JB\x00\x02\x00\x00\x00j'
 b'\x00rk\x9e\x03\x89\x19P\xf4I,\xbd\xa2w\xa6\x00\x00\x00\x05\x00'
 b'\x8e\xda\x9c\x9c\xd4\xbe@\x9d\xf2\xb3\x8b*\xa4Qk\x1c\x86b\xbf\xeb'
 b'\xc7=\x1e\x01I\x98?\x14\x16\xc0$\xa2\x00\x00\x00\x03\x00l\x1c\xee\xd6+\xd0w'
 b'\xb0vY\xe0')

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

{'A1': 74,
 'A2': 'ifcffkkq',
 'A3': {'B1': 1672350645,
        'B2': [{'C1': -0.5365719999777578,
                'C2': 62,
                'C3': 1696298728,
                'C4': 14791},
               {'C1': -0.7253807149429012,
                'C2': 33,
                'C3': 900169406,
                'C4': 38712},
               {'C1': 0.08315983563277296,
                'C2': 186,
                'C3': 404885193,
                'C4': 31913},
               {'C1': -0.7736715090914688,
                'C2': 109,
                'C3': 1586660733,
                'C4': 19010}],
        'B3': [-100, -100],
        'B4': {'D1': -8418735883819383198,
               'D2': -0.8680711351428725,
               'D3': 0.5784721374511719,
               'D4': 9378,
               'D5': [54462, 16541, 62131]},
        'B5': 107,
        'B6': 11386095024748120364},
 'A4': -0.07932977378368378,
 'A5': [7406, -10709, -12169, -20362, 23008],
 'A6': -38}

Пример 2

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

(b'\xc1GIWM\xe0wmigywxx\xcb2GY\xbf\xe5\xacp\x1f\xe7\xd4\\;\x89\xc4\x7f\xfc_'
 b'\xf0?\xe0\x01,\xa6\xa7}\x1a\xaa\x04\xfa4\x05P\xed\xbf\xe1\x8a\xbc'
 b'\xc8\x9c\xfb\xd2BW3\x12xxA?\xe3w\xab\xad\xba+\x10\x10\x9f@\xe3\x04'
 b'\x1cq\x00\x03\x00\x00\x00j\x00s\x0c\xca\x8b{\xee\x1cM\xe0\x9b>\xc6*\x8c\x00'
 b'\x00\x00\x02\x00\x8f\x151]^\xa5\x8bg\xd7]R\xd2\xd39~8\xc0\xd26?\xeeu/\x8b'
 b'g\x95&\xbe_\x0c\xe2\xde*\x00\x00\x00\x03\x00m\x1b\xa4\xe0H')

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

{'A1': -32,
 'A2': 'wmigywxx',
 'A3': {'B1': 3409069913,
        'B2': [{'C1': -0.6772995589405002,
                'C2': 59,
                'C3': -1983610884,
                'C4': 24560},
               {'C1': 0.5001433615651962,
                'C2': 170,
                'C3': 83506181,
                'C4': 20717},
               {'C1': -0.5481857221819786,
                'C2': 66,
                'C3': 1462964856,
                'C4': 30785},
               {'C1': 0.6083582299337156,
                'C2': 16,
                'C3': -1623137532,
                'C4': 7281}],
        'B3': [49, 93, 94],
        'B4': {'D1': -3255194891377913290,
               'D2': 0.951804897570274,
               'D3': -0.2178225815296173,
               'D4': 56874,
               'D5': [42379, 26583, 23890]},
        'B5': 12,
        'B6': 14594895280031522971},
 'A4': 0.3870433568954468,
 'A5': [7076, -8120],
 'A6': 21}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b"\x08FKZS>.tg\xbbgp>\xf4^\xb3\xf2'*N!\x8e)GxU+\x00\xa2]\x8d\x9d}\xe7\x99T"
 b'\xf0Z\xfb\xec\xe1\x00\x00\x00\x00\x03\x00\x00\x00\\Q\x00r\x9e\xa6\x00'
 b'\x00\x00\x05\x00\x80Px\x06Wt\xc4|\x9d\x06\xc8\xe8/\x18\xffU?z\x1b2'
 b'\xf1U\x05\x00\xbe\x04\xfdi\x00\x00\x00\x8d\xbfl.\x11?\xe3\xc4\xe9\x99\x8c7 '
 b'\xbd+S\x03?\xea"\xb8\xd2\x91u\xe4\xbfx\x00\xae\xbf\xebB\xfc\xda[\xd9h'
 b'Ed\xc0\xc5\xf1?Uh\xdc\xbf[\xaf\xab\xb0\xdf\xe6\x0f6]&\xb2^\x0b\xf3'
 b'M\x00\x00\x00\x02\x00\x85')

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

{'A1': 0.17036591470241547,
 'A2': {'B1': 187,
        'B2': {'C1': 'gp',
               'C2': 0.4772849977016449,
               'C3': 17448961796329056583,
               'C4': 2018847488,
               'C5': 2724040093,
               'C6': 9072388564449950700,
               'C7': -7936},
        'B3': [{'D1': -0.9225779175758362, 'D2': 0.61778717031277},
               {'D1': -0.041827213019132614, 'D2': 0.8167385208759552},
               {'D1': -0.9687603712081909, 'D2': -0.8519272103138009}],
        'B4': [81, 0, 114, -98, -90],
        'B5': [69, 100, -64, -59, -15]},
 'A3': 80,
 'A4': 30726,
 'A5': {'E1': 87,
        'E2': 116,
        'E3': 14158363981012021016,
        'E4': -171,
        'E5': 0.006373595232902263},
 'A6': -1106969239,
 'A7': {'F1': 2967463439,
        'F2': 3917329798406075213,
        'F3': [0.8336312770843506, -0.8581492304801941]}}

Пример 2

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

(b'\x08FKZS\xbeTs8\xd8ky\xbd\x07\x0c\x9c\xa7dN\xf1E$\xc3\x96\x96?\x7f\xe3\\&Hy'
 b'f\x80\xb2\xe8\xf4iO\xa3\x90\xc4\x00\x00\x00\x02\x00\x00\x00\\*\x05'
 b'\x980\x81\x00\x00\x00\x05\x00tb?\xb5\x9d\xf6\x8b57\x9b\xc8\x0ek\x9aY\x92'
 b'?\xd98\x93K|:<\x7f\xfa\xfe\x9c\x00\x00\x00\x85\xbe\x00\xd5\xe3?\xd3\xf5\xed'
 b'\xe2h\xec\xd4?l?\x99?\xe9l\x9e\xb8\x1c\xc3\x86\x96\xc4\xec\xe1\xa0?/\x08'
 b'G\xbeK\xc2c\xbf\x15\x8a\x0f\x87\x8bo\x82\xdc\xcd\x9c\x8a\xe9\xf3\xa6'
 b'z\x00\x00\x00\x03\x00y')

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

{'A1': -0.20747077465057373,
 'A2': {'B1': 216,
        'B2': {'C1': 'ky',
               'C2': -0.032971009612083435,
               'C3': 12061852500159153046,
               'C4': 2520743907,
               'C5': 1546012793,
               'C6': 7386100102490312611,
               'C7': -28476},
        'B3': [{'D1': -0.12581591308116913, 'D2': 0.31188532934511426},
               {'D1': 0.9228454232215881, 'D2': 0.7945092769569875}],
        'B4': [42, 5, -104, 48, -127],
        'B5': [-106, -60, -20, -31, -96]},
 'A3': 98,
 'A4': 16309,
 'A5': {'E1': -99,
        'E2': -10,
        'E3': 10030984887253494682,
        'E4': 22930,
        'E5': 0.39407808658225796},
 'A6': 2147155612,
 'A7': {'F1': 2274062210,
        'F2': -2536198894695242118,
        'F3': [0.683720052242279, -0.19898371398448944, -0.5841378569602966]}}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'UCI\x00\x1e\x00>\x00C\x00H\x00M\x00R\x00W\x00\\\x9c\x08olqi\x00\x00\x00'
 b'\x83\xe2{;U\\e\xef\xf6\xdc\x86\xbf\x0eb\xa5\xd9\xbf\xc6\xe8\x1c\x93w\xddx'
 b'\x15\x92\x9ey\xe6)fX\xdf<\xf1\t\xa3\xfb\x9eb\x05V\xe1i\xb2\xbf\xb4\xf9'
 b'\xc9\x9f\x9f\x86V(\x1a$\xe4\xcch\x84\xd7!\x13$\xd0\xear1\x0f\r6\xc2'
 b'|\x0e$\x1c]"\xd6\x00\x00\x00\x03\x00\x00\x00a\xb7\xbd\xb3\xablP]\xd3\xc3'
 b'\x17.\x1a\xf0\x01\xf6\xa8\x94z\x93\x9a\xe0\xbf\xf3\xf4\x00d\x00\x00\x00'
 b'\x04\x00s\xca\xbfjb')

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

{'A1': {'B1': 123,
        'B2': 4275425014145539206,
        'B3': -0.5561926960945129,
        'B4': 217,
        'B5': -0.17895848465535003,
        'B6': 1554479067785946712,
        'B7': -8388},
 'A2': [{'C1': 4043940859, 'C2': 158},
        {'C1': 1644517089, 'C2': 105},
        {'C1': 2998908153, 'C2': 201},
        {'C1': 2678031958, 'C2': 40},
        {'C1': 438625484, 'C2': 104},
        {'C1': 2228691219, 'C2': 36},
        {'C1': 3505025585, 'C2': 15}],
 'A3': -100,
 'A4': 2159,
 'A5': 'lqi',
 'A6': {'D1': 10699026158176957428,
        'D2': {'E1': [124, 14, 36, 28, 93],
               'E2': 34,
               'E3': 214,
               'E4': [13, 54, -62]},
        'D3': [3082662827, 1817206227, 3273076250, 4026660520],
        'D4': 3401542242},
 'A7': 226}

Пример 2

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

(b'UCI\x00\x1e\x00>\x00C\x00H\x00M\x00R\x00W\x00\\?\x1c2gfp\x00\x00\x00'
 b'{3\xdd\xb5-\x17=\xe1\x1c\x9d\x99\xbf\x05\xe2\x86\xf8?\xd6\x9f\xb1'
 b'v\xe4\x03\xc8$\xc2\xe0\xc02\x8d#*\xec\x1e\xbci\rma\x83\xf3\xf7\xed\xfb'
 b"[\xa73?\xc9\xbe\x94)b\x16\x92'\x10:\xfc;\xfe\x97\x884M\x18\xdet"
 b'\xb1\xad\xed\xcb0\x1dM\xea`5\xfa\x00\x00\x00\x03\x00\x00\x00a\x067b\x07\x98'
 b'\xc3\xcd05\xb6\xd9\x1fz[\xdd\xec\x00d\x00\x00\x00\x02\x00s%\xc8|\xf9')

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

{'A1': {'B1': -35,
        'B2': 13055116449354128793,
        'B3': -0.5229877233505249,
        'B4': 248,
        'B5': 0.3534969006578277,
        'B6': 2648926646933725994,
        'B7': -5090},
 'A2': [{'C1': 3161001325, 'C2': 97},
        {'C1': 2213804013, 'C2': 251},
        {'C1': 1537684287, 'C2': 201},
        {'C1': 3197380962, 'C2': 22},
        {'C1': 2452033594, 'C2': 252},
        {'C1': 1006540680, 'C2': 52},
        {'C1': 1293475444, 'C2': 177}],
 'A3': 63,
 'A4': 7218,
 'A5': 'gfp',
 'A6': {'D1': 3870519658991574508,
        'D2': {'E1': [48, 29, 77, -22, 96],
               'E2': 53,
               'E3': 250,
               'E4': [-83, -19, -53]},
        'D3': [104292871, 2562968880],
        'D4': 633896185},
 'A7': 51}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'IBVA\x00HK\xe0\x00\x00\x00\x02\x00\x00\x00\x92\x11!\xeb|\x02\x1cq\x0e'
 b'9\x1d?\xee\xc5\xd2&\xcd\xfc\xe8\xbf\xefH(\xbf\xeb\xb8P\xf1H\x96\xa5\xcd\xdb'
 b'\xa0\xc8\xd5\x08\xaa\x1f\xb1\x95\xf9(*\x8e\xd2\r{l\xb9\x94\x13\xea\x00Awe'
 b'\x004\xb4-:\xfb\x00\x02\x00F\xbf(P\x1f?\x14\xc1\xe6>\xa6j::\x0fP\xc1=\x18'
 b'\xd0\x1dd\x80\xce\xdab\x8f\x00\x03\x00\x00\x00R\xbeY\xfa\xd7\xbe\xb9'
 b'\x05\xde\xbfV\xc1\x00m\xdb\xb7\xae\x96\x03\xaal\xe7W\x84\xf9\xbc\xb3'
 b'\x00\x03\x00\x00\x00r\x00\x00\x00^\x00\x00\x00~')

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

{'A1': {'B1': {'C1': {'D1': 43551,
                      'D2': -1315571416,
                      'D3': 3066619351633017236,
                      'D4': 334102593},
               'C2': 3022863099,
               'C3': 'we'},
        'B2': 19424,
        'B3': [{'E1': [14863, 20673, 15640, 53277, 25728, 52954],
                'E2': 25231,
                'E3': [-0.657472550868988,
                       0.5810836553573608,
                       0.325029194355011]},
               {'E1': [28123, 47022, 38403, 43628, 59223, 34041],
                'E2': 48307,
                'E3': [-0.21287094056606293,
                       -0.3613728880882263,
                       -0.8388824462890625]}],
        'B4': 287435644,
        'B5': 35418382,
        'B6': {'F1': 14621,
               'F2': 0.9616480596449977,
               'F3': -0.9775584934666401},
        'B7': 61768},
 'A2': 2527448539,
 'A3': -1597451000}

Пример 2

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

(b"IBVA\x00H\xcaW\x00\x00\x00\x02\x00\x00\x00\x92~\x00\x1e(-0\x9a\xfbf'?\xdc"
 b'\xe0\xcb\x97pq\x0c\xbf\xdc`\xcd\xe1oD\xd8\xbf\x1c\xfc{\x9aKR\xdd`\xef'
 b"\x97\xec\xd8\x1f'\x17\xd8\ts\xa7#S\x94\\\x11\x99\xd1Myu\x004>\x02"
 b'\xe1\xb1\x00\x02\x00F\xbe\x0ex5\xbft\x89-\xa7\x05\xb5\x08\xcd\xf8V\xe7\x19 '
 b'\x12\x162\xae\x00\x02\x00\x00\x00R\xbe\x83\x03P\xbf\x03PL?:\xc9w\xbe\xe0'
 b"7\xd8\xf0\xd3\x7f\x15\xb6\\\x89\xc6'\x87\xc1\xc0YL\x00\x04\x00\x00"
 b'\x00n\x00\x00\x00Z\x00\x00\x00~')

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

{'A1': {'B1': {'C1': {'D1': 38892,
                      'D2': -669047017,
                      'D3': -2879643325037308836,
                      'D4': 295293261},
               'C2': 1040376241,
               'C3': 'yu'},
        'B2': 51799,
        'B3': [{'E1': [42757, 46344, 52728, 22247, 6432, 4630],
                'E2': 12974,
                'E3': [-0.13913042843341827, -0.9552181363105774]},
               {'E1': [61651, 32533, 46684, 35270, 10119, 49600],
                'E2': 22860,
                'E3': [-0.25588464736938477,
                       -0.5129439830780029,
                       0.7296366095542908,
                       -0.4379260540008545]}],
        'B4': 2113936936,
        'B5': 758160123,
        'B6': {'F1': 26151,
               'F2': 0.4512204150103265,
               'F3': -0.4434084607610891},
        'B7': 48924},
 'A2': 4235958859,
 'A3': 1390239983}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CRE\xe9g\x003\x00R\x00q\x00\x90\x00\xaf\xa8%(kn\x0c\x1dwYF\xae\x11?'
 b'\x95T^\xf3\xdfI@I\xef>\x0e\x00\x00\x00\x06\x00\x00\x00\xca\xd3'
 b'\xe4\xda\xe7\x00\x00\x00\x02\x00\x00\x00/\x00\x00\x00\x02\x00\x00\x001\xed'
 b'T/GE\xc6\x00m*\xaa\x0c\x1eA\xe4\xa1\x00\x00\x00\x02\x00\x00\x00N\x00\x00'
 b'\x00\x02\x00\x00\x00PD3\xb2j\xe0\xd3\x19\x8e\xfc,F\x96\x1d\xfb'
 b'\xf0\x00\x00\x00\x02\x00\x00\x00m\x00\x00\x00\x02\x00\x00\x00o\xc9\x8c\x1d'
 b'\xdaM\xf0\xb9&\n\xb2\xed\xa3\xa4\xdaB\x00\x00\x00\x02\x00\x00\x00\x8c'
 b'\x00\x00\x00\x02\x00\x00\x00\x8e\xc5Y\xdc\x0c_\xa6\xc6g\xc5\x94\x8b\xeb'
 b'\x82\xe1\xc8\x00\x00\x00\x02\x00\x00\x00\xab\x00\x00\x00\x02\x00'
 b'\x00\x00\xad\x8b\x13\t7\x949\x04I\xc8\xad\xea\xbf\x18\xabq>\x95\x0f\xe6=\xde'
 b'\xff\r\xbc\x0f,x?#\xed\x85\xbe\xfa\x84\xa3')

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

{'A1': -5785,
 'A2': {'B1': [{'C1': [-45, -28],
                'C2': [-38, -25],
                'C3': -1345398405517148051,
                'C4': 10922,
                'C5': 12},
               {'C1': [30, 65],
                'C2': [-28, -95],
                'C3': 4914467790499551630,
                'C4': -980,
                'C5': 70},
               {'C1': [-106, 29],
                'C2': [-5, -16],
                'C3': -3923728351898846938,
                'C4': 2738,
                'C5': 237},
               {'C1': [-93, -92],
                'C2': [-38, 66],
                'C3': -4226104829608016281,
                'C4': -14956,
                'C5': 139},
               {'C1': [-21, -126],
                'C2': [-31, -56],
                'C3': -8425380343565450167,
                'C4': -14163,
                'C5': 234}],
        'B2': -22491,
        'B3': [10347, 28172, 7543, 22854, 44561]},
 'A3': {'D1': 0.020829661974695712, 'D2': 1240415758},
 'A4': [-0.5963659882545471,
        0.2911369204521179,
        0.10888490825891495,
        -0.008738629519939423,
        0.6403430104255676,
        -0.4892931878566742]}

Пример 2

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

(b'CRE\xf8\xb1\x003\x00R\x00q\x00\x90\x00\xaf\r\xbbO\xdb!\xe9\xea$M'
 b'\x93\xc9\xc6?\xd3\x96\xa7\xc7\xe8\xe1\xf4\xab(6"\x00\x00\x00\x08\x00'
 b'\x00\x00\xca\xf8\xc1V\xd9\x00\x00\x00\x02\x00\x00\x00/\x00\x00\x00\x02\x00'
 b'\x00\x001\x96\x13}\x173s;5\xd6f\xb2\x9c\xee\xbe\xe7\x00\x00\x00\x02\x00\x00'
 b'\x00N\x00\x00\x00\x02\x00\x00\x00P\x91\x9f?M\xbb|a\xd7\n\xac \x08C\xa5'
 b'Y\x00\x00\x00\x02\x00\x00\x00m\x00\x00\x00\x02\x00\x00\x00o7\xcbn\xfb0\x02v'
 b'5\xfaLM\xd9\x06W\n\x00\x00\x00\x02\x00\x00\x00\x8c\x00\x00\x00\x02'
 b'\x00\x00\x00\x8es\xdc\x927\xce\x08\xf7\xeaz\xdd&\x99\x80Q\x94\x00'
 b'\x00\x00\x02\x00\x00\x00\xab\x00\x00\x00\x02\x00\x00\x00\xad\x0c'
 b'O\xd9\x02\xb0\xb0\xa3\xf5)\xd0\xcf\xbe\xde\n\xf5\xbe\x8c\xael>\xc3\xc6?\xbf>'
 b'\x9e\xdf\xbe\x15\xb3X>\xc4\x0eu?cj\xe0\xbf\x1f\xd9\xb2')

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

{'A1': -1871,
 'A2': {'B1': [{'C1': [-8, -63],
                'C2': [86, -39],
                'C3': -7632619404861949131,
                'C4': -10650,
                'C5': 178},
               {'C1': [-100, -18],
                'C2': [-66, -25],
                'C3': -7953568813822484009,
                'C4': 2732,
                'C5': 32},
               {'C1': [8, 67],
                'C2': [-91, 89],
                'C3': 4020429117479614005,
                'C4': -1460,
                'C5': 77},
               {'C1': [-39, 6],
                'C2': [87, 10],
                'C3': 8348708577615607786,
                'C4': 31453,
                'C5': 38},
               {'C1': [-103, -128],
                'C2': [81, -108],
                'C3': 887166257192805365,
                'C4': 10704,
                'C5': 207}],
        'B2': 3515,
        'B3': [20443, 8681, 59940, 19859, 51654]},
 'A3': {'D1': 0.3060702755206244, 'D2': -1423428062},
 'A4': [-0.4336773455142975,
        -0.27476823329925537,
        0.3823718726634979,
        -0.7446116805076599,
        -0.14619195461273193,
        0.38292279839515686,
        0.8883495330810547,
        -0.6244155168533325]}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'IBAg\x12\x95B\xd4n\xce\xb2\xe4!\xc4}/|\xa9\xbf\xb3\x8b\xb9]?\x9e\xc0\xa6\x9b'
 b'\x1d\xc5?\xd2\x95e\x91\xde*\xf4\xbfZ\xda\xdfC\xf0\xbd\xc45\xd7\xbf\xecwN'
 b'\xe0\x8f|\xe4\xcdFf\xfcbqhz\x00`\x00\x00\x00}\x00\x00\x00\x83\x00\x00'
 b'\x00\x89\x00\x00\x00\x8f\t\r\xe5w6R\x99?.w\n\x0b\xf3\xe0\x90\xad8\xda'
 b"\xd1lG\x05\x17Y\xc8\r\xa3b\xf1\xf6'\x12\xb7<:P|\xd9X\x0b\\\x98Bu\\\xe0"
 b'\xf6\x14(\xd3\xec\xb6\xe9\x85z\xd9!\xa4<\xdb\xc3\xb6\x83T\xb7\xed\xa4')

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

{'A1': {'B1': 4757, 'B2': 1121218254},
 'A2': 12890465161238772905,
 'A3': {'C1': -0.07635077025008297,
        'C2': -1499783739,
        'C3': {'D1': 0.2903684544077543,
               'D2': -0.8549022078514099,
               'D3': 17392,
               'D4': -0.0958058163523674,
               'D5': -0.8895639787623648,
               'D6': -851024132},
        'C4': 'bqhz',
        'C5': {'E1': [10425051224900126469,
                      1682595896700891638,
                      2815514186364255449],
               'E2': 22539,
               'E3': 23704,
               'E4': 66}},
 'A4': [{'F1': 30044, 'F2': 3774223400},
        {'F1': -11284, 'F2': 3068757370},
        {'F1': -9951, 'F2': 2755451843},
        {'F1': -18813, 'F2': 1421340068}],
 'A5': [2317, -6793, 13906, -26305, 11895, 2571, -3104]}

Пример 2

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

(b'IBAg\x91\x17hh\x9dR\xba\n\x9a\x9eO\x83\x0e\x87?\xd0\xaa\xa1\xaf\xc3'
 b'\xfe\x98\x1a\xcfO\x10\xbf\xd9</8Y\xa8\xa8>\xd4\x8b\xab\x83\xe6?2\xbb+?\xdbq.'
 b'["\x80 \n\xbc\xdf~dxbn\x00`\x00\x00\x00}\x00\x00\x00\x83\x00\x00'
 b'\x00\x89\x00\x00\x00\x8f\xba\xf7\xaad3\xe4e~jU\xc3\x11\xf3\xd1\t\xb5\xbbp'
 b'\x0e\xc2\xe3b\xc2\xd7g\x10 \xe2\x99YBQ\xef\xa2\xe5\x97\xba&(\xb9k+,:\xf1\xf2'
 b'K\xbd\x1c\xbe\x15\x15\xd0\xaay)p\xa3<i\xf4\xdeO\x18\xcbpW')

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

{'A1': {'B1': -28393, 'B2': 1751686482},
 'A2': 13405697245551201927,
 'A3': {'C1': 0.26041452564820977,
        'C2': 449793808,
        'C3': {'D1': -0.3942983675284588,
               'D2': 0.41512808203697205,
               'D3': -31770,
               'D4': 0.6981684565544128,
               'D5': 0.428783024786755,
               'D6': 180150142},
        'C4': 'dxbn',
        'C5': {'E1': [699671407084364642,
                      14039803682319669593,
                      4778864162532473382],
               'E2': 10425,
               'E3': 27435,
               'E4': 44}},
 'A4': [{'F1': 15089, 'F2': 4065049884},
        {'F1': -16875, 'F2': 365996665},
        {'F1': 10608, 'F2': 2738645492},
        {'F1': -8625, 'F2': 415985751}],
 'A5': [-17673, -21916, 13284, 25982, 27221, -15599, -3119]}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'VWNsiuijckx\xdc\xde\xd0\xd0~\xb8#|\x00\x00\x00w\xd2ra\xd0\x00\x80\xbe\x1d%'
 b'\xe2\x16\xdc\xd0\xe0\xbar\x07\xe6\xe7\xe7\x9c\x19\xbf!4e\xa9\xa5,'
 b'\x81\xe5\x18H\xffYs\xeeO\xe2\x14;6\xa5\rF\xa7E\xbeK\x0c\xe7\xc0c'
 b'\xeb\xf4\xe4\x91\x1c\xf5\xec\x02S\x84\xda?l^\xa2\x12C19\xd3\xa2\xd9{\xbe'
 b"\xb7\x0c\x009\x0b\xa3\xab!z\x0f\x81?\xb6\x1b\xda\x83D\x04\xa0\xf1\xb0>''"
 b"\x17gzz\x00\x03\x00\x00\x00}R\xd5;\xc1\xf0U\xb7'm\x0f\xe4\xfd")

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

{'A1': {'B1': 'siuijckx', 'B2': 15915387727071683452},
 'A2': {'C1': 4054859303, 'C2': 10007},
 'A3': -764255792,
 'A4': {'D1': 'gzz', 'D2': 1389706177, 'D3': -1128794751625075459},
 'A5': [{'E1': 48669, 'E2': [37, -30, 22, -36, -48, -32, -70, 114]},
        {'E1': 2022, 'E2': [-25, -25, -100, 25, -65, 33, 52, 101]},
        {'E1': 43429, 'E2': [44, -127, -27, 24, 72, -1, 89, 115]},
        {'E1': 61007, 'E2': [-30, 20, 59, 54, -91, 13, 70, -89]},
        {'E1': 17854, 'E2': [75, 12, -25, -64, 99, -21, -12, -28]},
        {'E1': 37148, 'E2': [-11, -20, 2, 83, -124, -38, 63, 108]},
        {'E1': 24226, 'E2': [18, 67, 49, 57, -45, -94, -39, 123]}],
 'A6': -0.357513427734375,
 'A7': 4110559040302092161,
 'A8': 0.08636251167992492}

Пример 2

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

(b'VWNgwkvxsnl\xf9\xa4\x99bt\x9e\x96\x03\x00\x00\x00wu\x83\x8b\x94\x00'
 b'\x7f\xa0\x9e,x*\x1c\x86\x98\xb2\\\xa1\xe3\xea\xe8$M\xd0\xbf-\xff\xa3\xdf\xad'
 b'\x88n\xc2\x1e:@\xf9L\xe27\xba\x06\x92{\x1d\x8d5\xeb\xce\xbf\xfd\xb7\xd3\xcf'
 b',G$!\xce\xa7\\nVIkP\xadc\xebg\xa1\xa2\xb6\xf1\x9a\xb0\xb4\xbe\xf8\xb0\xc1['
 b'\x01\n\xef\x85\x05P\x93?\xdf\xb9\x12k\x8f\x1d\x98\xc4Cf0\xf3\x0clc\x00'
 b'\x02\x00\x00\x00}\xa2\xfbm\xd5\xa9|\t@w\xad\xa7\x06')

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

{'A1': {'B1': 'gwkvxsnl', 'B2': 17988671459766998531},
 'A2': {'C1': 3292751408, 'C2': 62220},
 'A3': 1971555220,
 'A4': {'D1': 'lc', 'D2': 2734386645, 'D3': -6234097611697182970},
 'A5': [{'E1': 41118, 'E2': [44, 120, 42, 28, -122, -104, -78, 92]},
        {'E1': 41443, 'E2': [-22, -24, 36, 77, -48, -65, 45, -1]},
        {'E1': 41951, 'E2': [-83, -120, 110, -62, 30, 58, 64, -7]},
        {'E1': 19682, 'E2': [55, -70, 6, -110, 123, 29, -115, 53]},
        {'E1': 60366, 'E2': [-65, -3, -73, -45, -49, 44, 71, 36]},
        {'E1': 8654, 'E2': [-89, 92, 110, 86, 73, 107, 80, -83]},
        {'E1': 25579, 'E2': [103, -95, -94, -74, -15, -102, -80, -76]}],
 'A6': -0.4857235252857208,
 'A7': 6557534556273332371,
 'A8': 0.49567089561284083}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BPT\x005\x96)zqyg\x00\x00\x00\x02\x00w`\x1a\xb5n\x81Z\x85\xcc\xa5\x8b\xbc'
 b'\x7f\x1bI$\xc2\x8cH\xf8Y)C\xd3\xc2H\x1d\xd3\x00\x04\x00\x7f\xc73\x1ez<?K\xfb'
 b'\xd7?\x15\x10(e\x00\x00\x00\x03\x00\x00\x000\xa0\xb8/\x8a\xbf\xe0'
 b'X\xb7\x7f\xd8xz=\xc2\xeb\xe3+\xb1|\xa3\xf8\x00\x00\x00\x02\x00\x00\x0036'
 b'm\x19 \xbf\xee\xa8\xce\xab~=>\xbf\xbf\x89\x18\xddj\xc3\xc0\xbf\x1f\xdf\xb0?'
 b'nxn\x85\x862S6\xd6\xdc\x9d')

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

{'A1': {'B1': [{'C1': 0.7968115210533142,
                'C2': 1058345000,
                'C3': 101,
                'C4': [-57, 51, 30],
                'C5': 2696425354,
                'C6': -0.5108296868309161},
               {'C1': 0.09517648071050644,
                'C2': 733052067,
                'C3': 248,
                'C4': [122, 60],
                'C5': 913119520,
                'C6': -0.9581063603854216}],
        'B2': -0.12318568616571124},
 'A2': -106,
 'A3': 41,
 'A4': 'zqyg',
 'A5': [-0.624506950378418, 0.9315251111984253],
 'A6': 96,
 'A7': 448097921,
 'A8': {'D1': 6522844646702087963,
        'D2': 5270551371705768233,
        'D3': 67,
        'D4': 211,
        'D5': -1035461165,
        'D6': [-31354, 12883, 14038, -9059]}}

Пример 2

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

(b'BPT\x006\xba\xacxruv\x00\x00\x00\x03\x00xv\x05\xd1\xa29\xf5n\x93,\xa8\xec'
 b'CQ\xe6\x9f\xd1\xa6\xee\xd8=i\x1a\xb1\xc6\xc6k\x9e\x00\x04\x00\x84w 9o'
 b'\x982\xbfY\x9er4\xfb\xcc\x13V\x00\x00\x00\x03\x00\x00\x000\r\x9e\tW?'
 b'\xea\xe7=*\x87\xf5J\xbe\xe9\xf4\x91:K&n\xd5\x00\x00\x00\x03\x00\x00\x003'
 b'\xca\x9e\x81?\xbf\xea\x82= >\xbb\x8e\xbf\xcb\xbc>e\xc8}\x00\xbf\r\x1b\xe8'
 b"\xbe\\\x8eQ>\xd1\x03'D3\xe7\x897\xbe\xb2\xc2")

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

{'A1': {'B1': [{'C1': -0.8500739336013794,
                'C2': 888917011,
                'C3': 86,
                'C4': [119, 32, 57],
                'C5': 228460887,
                'C6': 0.8407274084744725},
               {'C1': -0.4569440186023712,
                'C2': 978003566,
                'C3': 213,
                'C4': [111, -104, 50],
                'C5': 3399385407,
                'C6': -0.8283982877527352}],
        'B2': -0.21668224305992823},
 'A2': -70,
 'A3': -84,
 'A4': 'xruv',
 'A5': [-0.5512070655822754, -0.21538664400577545, 0.40822717547416687],
 'A6': 118,
 'A7': 97624633,
 'A8': {'D1': 17685234606752416593,
        'D2': -1828512408787206807,
        'D3': 26,
        'D4': 177,
        'D5': -960074850,
        'D6': [17459, -6263, 14270, -19774]}}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'#PUU\x03\x00\x00\x00)\x00q\x00\x00\x00\xb9\x8c\xfch?\x15\xf9F\xa7\x05'
 b'\x1f\x9bMa\x1a\xe7Zw\x97 \xce\xed\x08\xbeq}\x0c\xb42\xc4\x11\x04\x00\x1e'
 b'\x002a\x8b\xf4c5\x15\xfc\x90\xa5\x87\xc2\xaf\xa9\xd2?\xa1\x17w\xb6\x04\x00"'
 b'\x00C\xdc\xb6\xda\x9f|~a\xbe9\xa9\xa5rZ\xe3\xbfg\x9a\xc7\x87\x03\x00&'
 b'\x00\xcaP\x15:\xf0\xc1\xf6D\xcegi\x1d\xf0\xdc\xef?\xfc\xd0\x87\xe0&\xb8P'
 b'\xdb\xb0\xb8e\x95\x86\xb3u\x0bW\x04\xc3\xde\x90\xcf\xb1S\x18\xce\xfd'
 b'\xbb\xa5\xef\xc0\xf9\xe0\xcf\xfe[\xa3\xe2\x16\xa4}')

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

{'A1': [{'B1': 298070708,
         'B2': [90, 119, -105, 32],
         'B3': -282260698219978446,
         'B4': 0.2916068458276522},
        {'B1': 3061258145,
         'B2': [-50, -19, 8, -66],
         'B3': 7025189494755613763,
         'B4': -0.6047909961287627},
        {'B1': 2278005351,
         'B2': [113, 125, 12],
         'B3': 4969372476360708298,
         'B4': 0.9957199644516039}],
 'A2': {'C1': 15803333569558335740,
        'C2': {'D1': 176, 'D2': -2037029448, 'D3': 1460368819, 'D4': -15612},
        'C3': [-34, -112],
        'C4': [408138191, 2780560846, 3774464239],
        'C5': 9053386313580674767},
 'A3': {'E1': 185, 'E2': 0.9101035594940186},
 'A4': 2806446357,
 'A5': 1302011653,
 'A6': 97,
 'A7': -6374}

Пример 2

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

(b'#PUU\x04\x00\x00\x00+\x00\x8b\x00\x00\x00q\xfd\xc8\xce\xbe\x81'
 b"\x04\xd5\xcd\x15\xb1\xd7w\xbe\x93'\x8c\x12Ti\xcd\xf76\xc7\x98\xa2&W\x96p"
 b'\xa1\x9e&\x03\x00\x1e\x00G6D`n\x08\xae\xebb\xfbb\x89\xa6\xe9\xeb\xbfl'
 b'L\xf6e\x03\x00!\x00\xc3\xc9\x18\x96Q.\xf5m\x90\xa6)\xe9R\x97\xc1?\xb6'
 b'$\xf1~\x04\x00$\x00e\x9ex~\xd1p\r\xa5H\x19\x06\x85+\xce\xd6?\x94'
 b'\x88p\xbc\x03\x00(\x00G5\xc3\x14\xbc8#!\x0c\x8dBC\x07<\xe6\xbf\x0f'
 b'\x9bB\x00\xe1i]\xdf\x9d\xf1J\x93#O0\xb8\xc2\xef\x02\x17\x1d\x83\xb2d\xf2'
 b'\xca$\x81\xe0&\x01\x854g\xf8\xa5\xe6\x19\x83\x8fu')

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

{'A1': [{'B1': 647930224,
         'B2': [-116, 18, 84],
         'B3': -1464223558694324665,
         'B4': -0.8722717936833357},
        {'B1': 1710640236,
         'B2': [105, -51, -9],
         'B3': 7923290047373691331,
         'B4': 0.13743053803346017},
        {'B1': 2129732790,
         'B2': [54, -57, -104, -94],
         'B3': -6553457837681893787,
         'B4': 0.35633361807449093},
        {'B1': 3161491604,
         'B2': [38, 87, -106],
         'B3': 2387814607889839431,
         'B4': -0.6948276818915544}],
 'A2': {'C1': 16095137058384943887,
        'C2': {'D1': 157, 'D2': 596855537, 'D3': 3266850895, 'D4': 751},
        'C3': [23, 29],
        'C4': [4066685571, 3766559946, 881131814],
        'C5': 8471133571374250087},
 'A3': {'E1': 113, 'E2': -0.4038771688938141},
 'A4': 3453289601,
 'A5': 2010624277,
 'A6': 190,
 'A7': 10131}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'lVXO\xb0\x82\x06\xdf0\xbf5\xe2\xb1[\xedT\x8d\xa7TL\xdf\xfe\xff\xdd'
 b'\xd2\xc5<\x80\xaf\xda\x01F\xac\x1c\xa8=\x86E\xe4\x0c\x103\xfa\x89\xae<0\xc1'
 b'\xd4\x8a\xeeh\x95\xb8\xd1\xb1\xc9:\xa3\xb0\x0c|f=\xd1\xf2[\x18'
 b'\x12\x0e\x13\x81\xa0\xcbz1\xa8%\xbfh8d\xcb\x03\x00\x00\x00\x82\x00=5K'
 b'X\xc5\x11t\x0b\x14\xdc\xbf\x1c\xae\x1dut\x10\xe8\xbfm\xcb\xed#\xc3ap\xd1'
 b'\x1a\xd5\x1d\xe1\xbc\xbc2.L\xbe\xcd\xbc\xfa\xdex*A\xbf\xd0\xc0\x91>\x83\xce'
 b't?')

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

{'A1': {'B1': 3741745840,
        'B2': [{'C1': 48,
                'C2': [13759, -19998, -4773],
                'C3': 36180,
                'C4': 3746321575,
                'C5': -2},
               {'C1': 221,
                'C2': [-14894, -32708, -9553],
                'C3': 17921,
                'C4': 1034427564,
                'C5': 17798},
               {'C1': 228,
                'C2': [4108, -1485, -20855],
                'C3': 12348,
                'C4': 4002075841,
                'C5': -27288},
               {'C1': 184,
                'C2': [-20015, 15049, -20317],
                'C3': 31756,
                'C4': 4073799014,
                'C5': 6235},
               {'C1': 18,
                'C2': [4878, -24447, 31435],
                'C3': 43057,
                'C4': 946388773,
                'C5': -13468}]},
 'A2': [-0.754554271697998, 0.28467416763305664, 0.9562761187553406],
 'A3': 61,
 'A4': 19253,
 'A5': {'D1': -0.43872343382743884,
        'D2': -0.7520086562557853,
        'D3': 602786669,
        'D4': 25027,
        'D5': 13599992492997661040,
        'D6': -0.19939497113227844,
        'D7': [-51, -68],
        'D8': -8454}}

Пример 2

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

(b'lVXOU"\xaaL5iQ\x81\x15\xbc\x01\xab\xd0&\xe0\xd2r(\xb5u\xc6\xa4\xe7\xe7\\d}?'
 b"\xe7\x93\xf6\x99\x13=\x84\x0e'\xa5\x90{\xf8\x89/\xc7\xadh\x9d\xb0\xab&0\xb4"
 b'k\xda1\xa6?A\x95\xa5\xa7a\x8b\x85u\xf0\xf0\xa2\xd1\xa2f2\x05\x83\x8e|'
 b'\xe7\x97\xc1\x04\x00\x00\x00\x82\x00\xb1\x89j\xa4J\x04\xfa\x1d\x0e\xd6?'
 b'\x98C\x9d\xdcUM\xc9\xbf\xda!z>\x05\xbe\x18\xd7\xadN\xc9\x85\xbf\xee\x0eY'
 b'%\xbf+l\x08\x00\xecD\x94\xbd\x80\xe2G?\xae\x05|\xbf\x89\xf9\x08?')

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

{'A1': {'B1': 1286218325,
        'B2': [{'C1': 53,
                'C2': [20841, 5505, 444],
                'C3': 53419,
                'C4': 1926422566,
                'C5': -19160},
               {'C1': 117,
                'C2': [-23354, -6169, 25692],
                'C3': 16253,
                'C4': 2583073767,
                'C5': 15635},
               {'C1': 132,
                'C2': [9998, -28507, -1925],
                'C3': 12169,
                'C4': 2640883143,
                'C5': -21584},
               {'C1': 38,
                'C2': [-19408, -9621, -22991],
                'C3': 16703,
                'C4': 1638376853,
                'C5': -31349},
               {'C1': 117,
                'C2': [-3856, -11870, 26274],
                'C3': 1330,
                'C4': 3883699843,
                'C5': -15977}]},
 'A2': [-0.07239708304405212,
        0.7807998657226562,
        -0.9844616651535034,
        0.5350576043128967],
 'A3': 177,
 'A4': 27273,
 'A5': {'D1': 0.3446116391725502,
        'D2': -0.19767258903678164,
        'D3': 1048191450,
        'D4': -16891,
        'D5': 17203616201233520408,
        'D6': -0.6458901166915894,
        'D7': [43, 108],
        'D8': 8}}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'UQHNp\xdf\xc9\x00 g\x00\xc0\t\xf1+\x1a\xe7\xbc\xba\xa9\xc6\xc1e.'
 b'\xd1\xd0\xc9/m/\x192\xb0\x0c\xe1\xf8\xbf\xee\xd2h\xcaa\x92<m\xa3\xb9\xe8@?D3'
 b'\x18\xac\x1b\x00\x00\x00\x05\x00\x00\x00,\xe8%\xbfC\xbe\xdf\x0f\xea\x00'
 b'\x00\x00\x02\x00\x00\x00?]\x00\xaa\xf1\xbe\x91a~:j\x00\x00\x00'
 b'\x04\x00\x00\x00O\xeb\x96\x90=\xce\xfcBe\xe8\x00\x00\x00\x03\x00\x00'
 b'\x00a\x05\xe0\xbfaO\xc2\xe4\x88\x00\x00\x00\x02\x00\x00\x00rTj\xbe\xb0-\x15'
 b'{M\x00\x00\x00\x02\x00\x00\x00\x82\x83\xea\xd2k<\xb2\x91\x14)\x97'
 b'\x00\x00\x00\x04\x00\x00\x00\x92\x8c?\xf6\xbe\xbf\xea\x8b[V\x00\x00\x00'
 b'\x03\x00\x00\x00\xa4?\xe2&7\x1d\nn\x02\x1c\xda \xcd?\xe8\x8a\x92b\x1ab'
 b'\x9e\x00\x00\x001\x00\x00\x00A\x00\x00\x00S\x00\x00\x00d\x00\x00\x00'
 b't\x00\x00\x00\x84\x00\x00\x00\x96\x00\x00\x00\xa7G\x00\x00\x00\xb5')

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

{'A1': 57289,
 'A2': {'B1': 2953634296, 'B2': -0.9631847336536974},
 'A3': 103,
 'A4': {'C1': -51,
        'C2': 0.7669155040813,
        'C3': {'D1': [{'E1': 0.7664046287536621,
                       'E2': 44059,
                       'E3': [109, 163, 185, 232, 64]},
                      {'E1': -0.7646312117576599, 'E2': 4074, 'E3': [232, 37]},
                      {'E1': -0.2839469313621521,
                       'E2': 14954,
                       'E3': [93, 0, 170, 241]},
                      {'E1': 0.10106708109378815,
                       'E2': 26088,
                       'E3': [235, 150, 144]},
                      {'E1': -0.8801232576370239, 'E2': 58504, 'E3': [5, 224]},
                      {'E1': -0.3440939486026764, 'E2': 31565, 'E3': [84, 106]},
                      {'E1': 0.021797694265842438,
                       'E2': 10647,
                       'E3': [131, 234, 210, 107]},
                      {'E1': -0.3748362958431244,
                       'E2': 23382,
                       'E3': [140, 63, 246]}],
               'D2': 71,
               'D3': {'F1': 0.5671649520112967, 'F2': [28, 218, 32]}}},
 'A5': 2545,
 'A6': [43, 26, -25, -68, -70, -87, -58, -63],
 'A7': 7290995541418143023,
 'A8': 6450}

Пример 2

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

(b'UQHNpej\x00 \xbf\x00\xc8JPV\r\x84%2\x87\xa0M0\xca\x0b!\x87\x82\x87\xaa|$'
 b"'\xa7\x1e\xcf?\xed\x05\x05\x18\xf0\x90\xa2\xce\xc5\xcf?\x16\xe2\x05\xf2"
 b'\xbd\x00\x00\x00\x03\x00\x00\x00,/\xdc\xff\xe0?\x19\x1b\xf6\x98:\x00'
 b'\x00\x00\x04\x00\x00\x00=3\xb89\xa9zl=_\x19&K>\x00\x00\x00\x06\x00'
 b'\x00\x00O\xb8\xfc\xc6\xa6 \xbd\xd3 N\x1a\xa0\x00\x00\x00\x05\x00\x00'
 b'\x00c\xed\xd2\xb5\xe3\xfd\xde\xbe\xd0\xa8\xad\x03\x16\x00\x00'
 b'\x00\x06\x00\x00\x00v\x1cA;7\xc8a\x1b\xd2\x00\x00\x00\x02\x00\x00'
 b'\x00\x8aQ\xa5\xbfq\x87\xc9\xc3W\x00\x00\x00\x02\x00\x00\x00\x9a\xefQp\x08X?'
 b'c0m3\xb5\x00\x00\x00\x05\x00\x00\x00\xaa\xbf\xdcc\x9f\xcc\xb8\x9f\xd4T7\xa4'
 b'\xa1\xbf\xd95k\x00\x04\\(\x00\x00\x00/\x00\x00\x00A\x00\x00\x00U\x00\x00\x00'
 b'h\x00\x00\x00|\x00\x00\x00\x8c\x00\x00\x00\x9c\x00\x00\x00\xafM\x00\x00'
 b'\x00\xbd')

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

{'A1': 25962,
 'A2': {'B1': 665263823, 'B2': 0.9068627822021151},
 'A3': -65,
 'A4': {'C1': -95,
        'C2': -0.3938853740850754,
        'C3': {'D1': [{'E1': 0.5893862843513489,
                       'E2': 62141,
                       'E3': [206, 197, 207]},
                      {'E1': 0.5980829000473022,
                       'E2': 38970,
                       'E3': [47, 220, 255, 224]},
                      {'E1': 0.0544673427939415,
                       'E2': 19262,
                       'E3': [51, 184, 57, 169, 122, 108]},
                      {'E1': -0.10308896005153656,
                       'E2': 6816,
                       'E3': [184, 252, 198, 166, 32]},
                      {'E1': -0.40753689408302307,
                       'E2': 790,
                       'E3': [237, 210, 181, 227, 253, 222]},
                      {'E1': 0.0028043019119650126, 'E2': 7122, 'E3': [28, 65]},
                      {'E1': -0.9434781670570374, 'E2': 50007, 'E3': [81, 165]},
                      {'E1': 0.8874576687812805,
                       'E2': 13237,
                       'E3': [239, 81, 112, 8, 88]}],
               'D2': 77,
               'D3': {'F1': -0.44358057968429176, 'F2': [84, 55, 164]}}},
 'A5': 19024,
 'A6': [86, 13, -124, 37, 50, -121, -96, 77],
 'A7': 3515634697751398314,
 'A8': 31780}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BHQ\xbc\xb5\x00g\xb8dup\x92\xd4Z\xd9\xc4\xc7`\xcb\xf2Ib\xc5\num*\xf8'
 b"\x94&M\x15\xcb\\'\xf7\xa6\x87\xc8\x0bfsF\xf2l\x7f\x8cB\xb3I\xa8\xf0"
 b'Z|\xa8\xb2\x04\x00\x00\x00\x8d\x00uP\x9c\x1f\xf1\x1d\xfe\xdf\xd2>`[\xdf5'
 b'\xe7\xe0?p\x92\xf0\xad\xf7}\xdf\x1b\xd1?\xbc\x96\xb7DX_\xe7?"Z\x8a'
 b'l\xe4\x15\xea?\x80\x8fD\xb9g\xe6\xad?\xc2\xb1\xb4?{\xdb\xe4\xbf\xa8\xa8\x1f'
 b'-\xb3\xbe\xe6?\x9d\x00\x00\x00 \x8ehtF/\xbe?\x1b\x89\x9a]F\xce\x07(\x91N\xf5'
 b'\xf9\xad\xfd7\xc3\xcbC\xe5\xea\x8bW')

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

{'A1': [{'B1': 3093758133,
         'B2': 'du',
         'B3': 112,
         'B4': 14654932835737719954,
         'B5': -14},
        {'B1': 180707913,
         'B2': 'um',
         'B3': 42,
         'B4': 2836365157685695736,
         'B5': -9},
        {'B1': 197691302,
         'B2': 'fs',
         'B3': 70,
         'B4': 12126420570078145778,
         'B5': -16}],
 'A2': {'C1': -1297580966,
        'C2': [1570408731, 671600198, -101364079, -1019740755],
        'C3': 117,
        'C4': [40016, 61727, 65053, 53983],
        'C5': 0.5282239305916006},
 'A3': 37488,
 'A4': [0.26732623387826404,
        0.7303887693530764,
        0.8151723976068903,
        0.0583984769494057,
        -0.6517921680693279,
        0.7107787972756983],
 'A5': {'D1': -354073653, 'D2': 22411},
 'A6': 0.11790886251451882}

Пример 2

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

(b'BHQ\xbc\x1dx\xd7\x11tn\xbd<\x9d\x81\x05@\xa6\x03\xfc\x01\x1d\xb2Q>xz~a'
 b"\xd2Q\x94'm=9\xf0q\xafy\xbbdy\x0e\xfc\x06x\x98\\\xc7_\xa6\x06"
 b'\xb2\xb5\x9e\xbd\x05\x00\x00\x00\x8d\x00\xd8\x11\xb8\xd8\xac\np\xdd\\\xda'
 b'\t)\xae\xf5<\xeb?\xd4\x8b\xcc\xfaE\xf5,\x1f\xe2?\xceo\xdd\xe0\x07\x1f\xeb'
 b'?\x1c\xc0\x12\xe8ih\xe1?`t-\x17\xb8\t\xa6?\xe8q\xf2\x89;\xec\xcc'
 b'?\x0c\xde\xa5[\xf1?\xe9\xbf\xa1\x00\x00\x00\x12-o\xa2E\x9e\xe0\xbf\x14\xcfM'
 b'u\x8a\x90%\xe8\xe1\x02\x1c7\x9e\xa8G\xa17\xb2X`\x9f0\xb5\xa8>\x85')

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

{'A1': [{'B1': 299333661,
         'B2': 'tn',
         'B3': 189,
         'B4': 18159540916388470076,
         'B5': 1},
        {'B1': 1045541405,
         'B2': 'xz',
         'B3': 126,
         'B4': 4124572850500784737,
         'B5': -16},
        {'B1': 3145314161,
         'B2': 'dy',
         'B3': 14,
         'B4': 11988519933592471292,
         'B5': 6}],
 'A2': {'C1': -1113672270,
        'C2': [1968033556, -400191350, 924582625, -1589139298, 1616425527],
        'C3': -40,
        'C4': [47121, 44248, 28682, 23773],
        'C5': 0.85119136825261},
 'A3': 35796,
 'A4': [0.5663056173796917,
        0.8475379363912852,
        0.5439958126717133,
        0.04304290087632334,
        0.22595924602218465,
        -0.7890555181501795],
 'A5': {'D1': -1464520545, 'D2': -31426},
 'A6': -0.5193203136963425}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'EQJU~\x02\x00L\x00\x00\x00\x07\x00\x00\x00f\x00\x00\x00\xb4$\xf11\xc3'
 b'^\xe1\xbfT\xae\x06?8 U?\xd1&.?\x1b\x81l\xbfb\xa5\xc1<\x82\x00\x00\x00>'
 b'\xf64\x9a\xf7|\x1d\x9c\xab\x81z\xe4\x85qqfheaqspbii\x01\x06\x00\x00'
 b'\x00@\x00\x00\x00\x8a\x9a\xb2\xb2\x1a\x06\x00\x00\x00F\x00\x00\x00\xac>'
 b'\x1a\x98\x97\xbe)j\x82\xe4\xe3\x8f05<\x80\xfa\x7f\xf2\xc8\xc4\x1fz\xb9\x116'
 b'8D\xde\xe3\x7f\x8fS\xd0\x14\x17\x99\x8e\x13(\xbd\xcd\x953\x9e\xd1Tc5h'
 b'\xc8\xdf\xb1G\xb6\xab\x02\xc7\x8c\x02\x81t\x86')

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

{'A1': [{'B1': 1, 'B2': 'qqfhea', 'B3': -1296917878},
        {'B1': 26, 'B2': 'qspbii', 'B3': -1743110484}],
 'A2': {'C1': [1781120663,
               -1880890238,
               -2143537872,
               -923631622,
               -1183178812,
               1144534545,
               -1887444002],
        'C2': -0.5428176856450109,
        'C3': [0.5260975360870361,
               0.8325228691101074,
               0.6802797913551331,
               -0.9238449931144714,
               0.02363843098282814],
        'C4': {'D1': 83,
               'D2': -4816578298298034992,
               'D3': 3847011765983614413,
               'D4': [104, -56, -33, -79, 71, -74],
               'D5': -8758233527377001813}},
 'A3': 11249284847127295550,
 'A4': -461733461,
 'A5': 133}

Пример 2

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

(b'EQJU~\x03\x00K\x00\x00\x00\x06\x00\x00\x00r\x00\x00\x00\xf4\xd2\xde\x04Y'
 b'\xd5\xdb?+\xa3^\xbfg\xc0\xd8>\xa2\x87\xda\xbd\xff\x82&\xbf<Y\x04?\x8a'
 b'\x00\x00\x00\x85\xe7\x92`\x19\x1d*q\x83\x1b\x9f\xb5\xa5fzxzulafpyy\x85'
 b'\x04\x00\x00\x00@\x00\x00\x00\x1aRZ\x08\xf6\x04\x00\x00\x00D\x00\x00'
 b'\x00\xfc=\xe4BR\x03\x00\x00\x00H\x00\x00\x00\x03\xc2.7\xffw\xa2\xd9Ph'
 b'aR\x9b\x93M\rb\x15\xd3\x02\xdcz\xf3{+\xf5iJ\xba\xab\x8e8\x96L'
 b'\x18\x0f\xe9\x80\xf4^\xd3z\x18v\xdc\x0b\xd7\xf9\x850!`ntF=\xfa\xf0\xc3')

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

{'A1': [{'B1': 133, 'B2': 'fzxz', 'B3': 140136986},
        {'B1': 246, 'B2': 'ulaf', 'B3': 1122254332},
        {'B1': 82, 'B2': 'pyy', 'B3': 925811203}],
 'A2': {'C1': [-643663873,
               1382115408,
               223187867,
               47388002,
               2079554268,
               1248458027],
        'C2': 0.43489671207070946,
        'C3': [-0.8696772456169128,
               0.42334291338920593,
               -0.10670401155948639,
               -0.6504363417625427,
               0.516986608505249],
        'C4': {'D1': -70,
               'D2': -1653075821004812629,
               'D3': -2560832422302256000,
               'D4': [11, -41, -7, -123, 48, 33],
               'D5': -4327684100821062048}},
 'A3': 8154362070139332485,
 'A4': -1247863933,
 'A5': 165}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'LRARhefdqpte\xe68\xdf\x12\xd3R\x02\x13\xc2-\xd5\x00\x03\x001\xc7'
 b'\x02?\xeb\x9c\x01\xbc\xdf\x02~\x007\x00\x02\x00\x00\x00G\x92\xef\x00'
 b'S\xc1}\x04\x8f2UL\xdc\x10V\x92\xe1\xbe\x06\x07\xe0S\xf7%\x06\xb0T6\n\x02rW'
 b'\x1f\x14#B\xda\xba\x9e_\x00\x00\x00\x02\x00Q]b\xe9\x96\xf6')

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

{'A1': {'B1': 'hefdqpte',
        'B2': {'C1': 230,
               'C2': 14559,
               'C3': 1356518081643556309,
               'C4': [-16003, 1167, 12885]},
        'B3': 50946,
        'B4': 0.8627937973870556,
        'B5': {'D1': 1289490518,
               'D2': -27935,
               'D3': -0.1308894157409668,
               'D4': 1408705798,
               'D5': -80,
               'D6': 84}},
 'A2': [{'E1': 906625650, 'E2': 87}, {'E1': 521413442, 'E2': -38}],
 'A3': -27921,
 'A4': {'F1': 95, 'F2': [186, 158], 'F3': 93, 'F4': 1659475702}}

Пример 2

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

(b'LRARpwopjdexJ\xa4\x05\xee\xec\x92I\x14)\xc4\x8b\x00\x03\x001\t'
 b"\xb9\xbf\xd5\x17\xd8\x0e'_\xcc\x007\x00\x04\x00\x00\x00G\x1f\xe1\x00"
 b']\x9e\xed\xd6/\xb3\x07\x10\xae\x8e\xa1f\x1c?\x14]r\xd5\xbab\x82\x81Tf'
 b'\xb4\x82\xd8!\xe2\xb2\xbf\t\xa0\x0f\x91\xbb\xac\x1e\xa6f\xb8s\x16N'
 b'\xd6\xca\x00\x00\x00\x02\x00[P\xc2\xdcH!')

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

{'A1': {'B1': 'pwopjdex',
        'B2': {'C1': 74,
               'C2': 41989,
               'C3': 17216296318099113099,
               'C4': [-24851, -10705, -19705]},
        'B3': 2489,
        'B4': -0.3295803201885945,
        'B5': {'D1': 279875233,
               'D2': 26140,
               'D3': 0.5795508623123169,
               'D4': 3585761922,
               'D5': -127,
               'D6': 84}},
 'A2': [{'E1': 1723106008, 'E2': 33},
        {'E1': -491602167, 'E2': -96},
        {'E1': 261209004, 'E2': 30},
        {'E1': -1503217549, 'E2': 22}],
 'A3': 8161,
 'A4': {'F1': -54, 'F2': [78, 214], 'F3': 80, 'F4': 3269216289}}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'PQX=\xb1\x85\xa1_\x00\xc0*\xfd8\x0cS\xa4?\\_\x08\xc6\x0b\xf8\xdd?\x9dq.'
 b'\xa4U\x83\xc2\xd4.\xb6\x12\xedW\x1f\xbb\xe8\xf0\xfa\x97\r\x99\x1c\xb7'
 b'n9\xc3\xde\xe6\xa3\xa1\x1c=\x02\xb6\xda\xea\xf4\x02\x00\x00\x00\x19\x00'
 b'\x00\x00\xe5%\xdd\xc4\xbcO)}\xfb\xf8\x0e?\xe6Q\xbf\xc9\xdf\x03'
 b'\x00\x00\x00\x1d\x00\x00\x00#\x00ir\x0b\xbfU\xd6\x13\xbf\xdb\xbfM?\xb1\xbeP'
 b'?\xee=\xc0\x7f\x99qN\x0b\x98v\xa5\xa1G\xd0\xdd\x98\x80;\xafE\x91\xa8\r'
 b'\x94f\xc0\xf0\xb1\xb4\xd7\xa1\xdb[\x03\xa1\xee\xe6\xff\xd7\xe0"s\xc2'
 b'\xf3\xf6\xb9*\xb4c\xa7_\xc9v\xbd\xd2m')

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

{'A1': 2709893437,
 'A2': {'B1': {'C1': 18,
               'C2': 10951330326267254765,
               'C3': 13,
               'C4': [{'D1': 1857494169,
                       'D2': -421608647,
                       'D3': 0.038240086287260056,
                       'D4': 2,
                       'D5': -185935178,
                       'D6': [29085, 42030]},
                      {'D1': -992139803,
                       'D2': 2099859388,
                       'D3': 0.5584866404533386,
                       'D4': 230,
                       'D5': -540426415,
                       'D6': [33621, 54466, 46638]}]},
        'B2': [-0.5447145104408264,
               -0.5774891972541809,
               0.8037087321281433,
               0.8154097199440002],
        'B3': [814713486687878638,
               -7431554804018219368,
               -7778375639506142336,
               -2620576337073487770,
               -2245044521909812389,
               -5464350727557975262,
               7913595813125662563]},
 'A3': 0.039696104008347444,
 'A4': 0.46826452578669886}

Пример 2

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

(b'PQX\x11e\xc7\xf2a\x00\x08h\x7f\x04\x04\x11\xdc\xbf\xd4]52.\xfd\xd0?&\xe5W'
 b'g\xf0\xfd\xcf\xe9q\x81[\x99\x1a\xe5g\x07&\x08\x99\x10\xe2\x9e\xf3\x8e\\(\xeb'
 b'\xfa\xed+\x1a\xec\x1c\xbfJM\x89}u\x03\x00\x00\x00\x19\x00\x00\x00'
 b'-\x98\x80\xb2\x0fL~\xa3\xacX\xe1\xbea\xeew\x90\xdc\x03\x00\x00'
 b'\x00\x1f\x00\x00\x00%\x00\xb0\x0et?\x9c\x82&>\xb4\xae6?\x8d,Y\xbfM'
 b']\xd1\xee\xc4\x10\x89\xd2\xc4\xeeRT\xb8&\xff\xae\xcb\xdf\x86\x9b\x8a'
 b"\xa2\xc0\xc7Fvo\xba> \xfdM\xf2.x\xd9\x91\xde\xe5'\xec\x90\x16bP\t8\x95\xa8"
 b'\xfbe\xff\xe7E\x8b\xbf')

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

{'A1': 4073153809,
 'A2': {'B1': {'C1': 26,
               'C2': 16289688112475891685,
               'C3': -98,
               'C4': [{'D1': 677154547,
                       'D2': 737016555,
                       'D3': -0.6129776239395142,
                       'D4': 74,
                       'D5': 1971161421,
                       'D6': [58662, 26455, 65008]},
                      {'D1': -1300195283,
                       'D2': -1552004081,
                       'D3': -0.4401296377182007,
                       'D4': 97,
                       'D5': -594511890,
                       'D6': [59855, 33137, 39259]}]},
        'B2': [0.9533491134643555,
               0.1626076102256775,
               0.7136032581329346,
               -0.8483360409736633],
        'B3': [-3276068815928992435,
               -5836904018918314300,
               -4053060948434952245,
               5619683363816175174,
               2874948655146086130,
               -7694389722514812692,
               -4644541727977899096]},
 'A3': -0.4385385555193584,
 'A4': 0.26545290854616366}