ИКБО-30-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GTCW\x02kG\xcawpszia)\xf9h"Q\xa2\xfb\x05\x0bc\xaf]\xf9\xdd\xce\xff\xc0\x17'
 b'\xac\x8f\x97\xdc\xc6\xfb\xf6\x83\xbc\xb4JA5\xbeP\xa0-\xc3\x06#\x99\x9a\xe2}'
 b'\xf6\xb5\xe2\xcd;}\x82\xb6\xc52+\xe1\x02\x00\x00\x00O\x00\x00\x00'
 b'\xbc\xb5\x1f\xe8\xb0~\xbf_h#\xbf')

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

{'A1': 27394,
 'A2': -13753,
 'A3': 'wpszia',
 'A4': 431116658697369897,
 'A5': [{'B1': {'C1': 11, 'C2': [13907061627110141795, 17797037003222526999]},
         'B2': {'D1': 48259, 'D2': 893471412}},
        {'B1': {'C1': -66, 'C2': [11139973665228955728, 9024032651966053858]},
         'B2': {'D1': 46722, 'D2': -517262651}}],
 'A6': [-0.9948868751525879, -0.6383113265037537],
 'A7': [-68, -75],
 'A8': 31}

Пример 2

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

(b'GTCW\x90\x7f\xa1\xf8roxgse`\x0b\x18n&\xd3\xde\xf2/Y\x8cL&\xea\xba\xf1{\xfc'
 b'%G\x04O\xab\x0f\xe5\xadE\xc1\x82\xfc\xecD\xd48\xa5\xf2-Q\xfd\xe9g~p\x9e\xc8:'
 b'\xed\xc0\xac\x11\xa2\xd2\xb1~\x08\x00\x00\x00O\x00\x00\x00O\xf9\x93\x04'
 b'\xbe>?\x0bu\x03\xbe\x9f\xa5(?9\x996\xbe\xca\xf6_?\x11\xf1W\xbf\xcb}\\>\xdd'
 b'xY\xbf')

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

{'A1': 32656,
 'A2': -1887,
 'A3': 'roxgse',
 'A4': 17500657364017613664,
 'A5': [{'B1': {'C1': 47, 'C2': [8931125050880068697, 16505599515198694908]},
         'B2': {'D1': 17837, 'D2': -318995775}},
        {'B1': {'C1': 68, 'C2': [16860721837731297492, 13901832258088631911]},
         'B2': {'D1': 4524, 'D2': 2125583010}}],
 'A6': [0.7450869083404541,
        -0.12837617099285126,
        0.6587771773338318,
        -0.17831887304782867,
        0.8748594522476196,
        -0.8435221314430237,
        0.21532361209392548,
        -0.8495004773139954],
 'A7': [79, -7],
 'A8': 147}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x12RRIk\xa9V59\xaf%\xaa\x8f\x16\x84\x04Y\x00?\xf9\x86k\xdd\x8e\xa8\x05\x92N'
 b'r\xb0d\x89\xe5?\x02\x00z\x00\x18\xb8\xf6\xe7\xa9a\xb3\xb7\xbd\x10'
 b'\xd3\xdc\x017?\xae\x8c\x9b\x1e:\x7fv\x13/c\xc2\x0e\x92\x8ey\x07\xbc!\xcd'
 b'*\x95v\xe6\xffG\x00\x00\x00I\x00\x00\x00K\x00\x00\x00a\xadz\xe0\x95\xc2\x88'
 b'3\xda\x03\x00M\x00\x00\x00\xafsjbjvfdyo`\xde9!,\xc4\xcf\xbf\x9eh'
 b'\xdd\x17P\x01')

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

{'A1': 894871915,
 'A2': 325409879368249145,
 'A3': {'B1': 97,
        'B2': 15723061093400083117,
        'B3': [{'C1': 205, 'C2': 42},
               {'C1': 149, 'C2': 118},
               {'C1': 230, 'C2': 255}],
        'B4': 29615,
        'B5': 'jbjvfdyo',
        'B6': -0.24817420599332518},
 'A4': 407732847919954239,
 'A5': 0.6730216451855588,
 'A6': [{'D1': 158, 'D2': 56680}, {'D1': 23, 'D2': 336}],
 'A7': [13237031112141092888,
        12555814767271547069,
        3392185233148124044,
        13548931657210184291],
 'A8': 33}

Пример 2

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

(b'\x12RRIz\xe1?4\xf4\xbaw\xf5\x84\xa6\xdb\xb9Y\x00W\xf2\x89IB%\xb9\xe6^N'
 b'\x8fi}\x02\xe7\xbf\x02\x00z\x00\xf4l\x11\x148\xf5.\xe3\xa7\x92'
 b'\x1c\x8e\xa3\x0b\xc0\xe9=w\x02\xfd"4\x07U]\xb6\xbaE\x01\xaf\x9fl.\x11'
 b'\x8e\xc6\x13\x05\xe6G\x00\x00\x00I\x00\x00\x00K\x00\x00\x00C\xdaI'
 b'\xe0\xa6\x0b\x0f\x83\x9e\x03\x00M\x00\x00\x00Z<khocqmho\xdcE\xf1\xf36#'
 b'\xd4\xbf\xd6\x7f\xe0\x17\x12\xca')

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

{'A1': 876601722,
 'A2': 13392481006900460276,
 'A3': {'B1': 67,
        'B2': 11421989622660483546,
        'B3': [{'C1': 17, 'C2': 142},
               {'C1': 198, 'C2': 19},
               {'C1': 5, 'C2': 230}],
        'B4': 15450,
        'B5': 'khocqmho',
        'B6': -0.31464933226115277},
 'A4': -1821383607662808489,
 'A5': -0.7190539418902053,
 'A6': [{'D1': 214, 'D2': 57471}, {'D1': 23, 'D2': 51730}],
 'A7': [16370291316741991668,
        16843475403457467047,
        6126923142939178813,
        7827167097392903773],
 'A8': 46}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FECD\xb0\\\x00\xc0o\xcc\x82\xbe\x11\xb1\xbf\xe2e\x04\x17\xe1\tp\xbaw'
 b'\xe7`\x87\xe8\x03\x00\x00\x00\x10\x00\xd2m~\x02\x00\x13\x00\xf3\xea\xc8'
 b'3\x8a\xbb=\x1e\xf36\xcf\x80\xe27U\xe2\xb3\xa0\x05\x00\x00\x00+\x00\xf73\xef'
 b'\x04\x000\x00\xb0\xbd\x15\x004\x00\x18\xca\xfc\xe9\x17?\x14\xd2\x02\x00'
 b'J\x00\x00\x00\x12jbw\xb0\x15\xef?N\x00')

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

{'A1': {'B1': 0.971397622273175,
        'B2': {'C1': 15137793619441535512,
               'C2': [{'D1': 112,
                       'D2': 30650,
                       'D3': 3901186279,
                       'D4': [101, 4, 23],
                       'D5': [-46, 109, 126],
                       'D6': [-31, 9],
                       'D7': -5389},
                      {'D1': -128,
                       'D2': 14306,
                       'D3': 2696143445,
                       'D4': [200, 51, 138, 187, 61],
                       'D5': [-9, 51, -17],
                       'D6': [30, -13, 54, -49],
                       'D7': -16976}]}},
 'A2': -0.06667700475048743,
 'A3': -30}

Пример 2

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

(b'FECD\xb0{\x00\xa0K\x0e\x89\xae\xd4\xb1?]kYt9\x00.\x83AH\x92\xc6x'
 b'\x85\x81\x03\x00\x00\x00\x10\x00f\xc6?\x04\x00\x13\x00\x11\xfa\xa8u\xac'
 b'=(\x89\xb5 \xa8\x9cX\xe2\xc6\x04\x00\x00\x00-\x006\xbe\xe0\x02\x001\x00\xf3'
 b"c\x00c|\xd8\xdc\x9b\x1b\xb5r\x91\xc9\x1cJB1\x04\x00\x00\x00I\x00\xab'"
 b'\x1d\x04\x00M\x00\xf1\xf9\x17\x003\x00Q\x00\x19\xd1@\x1cO\x15_\x8b\x03\x00g'
 b'\x00\x00\x00\xcaMV\n\x92\xc7\xe5\xbfm\x00')

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

{'A1': {'B1': -0.6806116296669924,
        'B2': {'C1': 10042769123580104985,
               'C2': [{'D1': 65,
                       'D2': 37448,
                       'D3': 2173008070,
                       'D4': [107, 89, 116],
                       'D5': [102, -58, 63],
                       'D6': [57, 0, 46, -125],
                       'D7': -1519},
                      {'D1': -75,
                       'D2': 43040,
                       'D3': 3336722588,
                       'D4': [168, 117, 172, 61],
                       'D5': [54, -66, -32],
                       'D6': [40, -119],
                       'D7': 25587},
                      {'D1': 114,
                       'D2': 51601,
                       'D3': 826427932,
                       'D4': [0, 99, 124, 216],
                       'D5': [-85, 39, 29],
                       'D6': [-36, -101, 27, -75],
                       'D7': -1551}]}},
 'A2': 0.0696515164002407,
 'A3': 93}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'RYFD\xc2\x8f\x00\x00\x00\x03\x00\x00\x00\x95\x00\x00\x00\x0fp\xea>0F0'
 b'\xc8b\xb8\x8e\x97\xc9A\x1f\x9d\x12\xae\xbc\x9c\x95\xbe\x01\xe1J\x8a\xc6'
 b'\xca\xde\xd9\xcd\x0ec&%\xa4h}\x06\x19E/]\xfd3\xd3\x01Q\xd4\x1f\xb0|9\x92\xd1'
 b'.\x98zC7<\x04-\x87(\r\xe29\xac=\xf3\xdf\x18\xae\xbb\xbb\x0f\xce)-hX\x10'
 b'\xdd#\x19o\x16n\xfe\x1b7\xc0v^i\xa2/\x02\x00\x98\x00\x00\x00\xe1sN'
 b'\xbf\x8b\xa6.?\xee{\x14?v\x82E\xc6ms\xe1\xbfpe\x02\x00\x8d\x00\xae\x18aau'
 b'\x96;!\xf1')

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

{'A1': {'B1': {'C1': 'pe', 'C2': 6318},
        'B2': 'aau',
        'B3': 0.4578861892223358,
        'B4': 3358606896},
 'A2': [{'D1': 47202,
         'D2': 1103730574,
         'D3': 13733054972924435743,
         'D4': -1974804223,
         'D5': 3655256774},
        {'D1': 3789,
         'D2': 2753898083,
         'D3': 18256800438248963432,
         'D4': 1359074099,
         'D5': 2091917268},
        {'D1': 37433,
         'D2': 2056793809,
         'D3': 948156348975822659,
         'D4': 1034697186,
         'D5': 2920865779},
        {'D1': 48059,
         'D2': 757714447,
         'D3': 1616538433072683112,
         'D4': 924581486,
         'D5': 1767798464}],
 'A3': 12194,
 'A4': [15254, 61729],
 'A5': [-0.806455671787262, 0.6822287440299988, 0.580016016960144],
 'A6': -0.5453404304972327}

Пример 2

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

(b'RYFD\xc2\x90\x00\x00\x00\x03\x00\x00\x00\x96\x00\x00\x00\xae\x1c6'
 b'\xbf\xa8\x02ou\xf4\xb3D\xe4]\xce\x14<GV\x92\x01%\x8d\xe5\xdc\x08k\x86iS\xab|'
 b'\x8b`\xd3Jsg\xf1%\xb8\x03\x8e\xc6g\x10\x95\x84\xf8\xf4 v\x13\xae\xbb"'
 b'i\xaf\xafB\x8d\x02\xc9\xbb{\xcc\x9e\xf4\xdf\xbc\x14\x07\xa6\xb6\xbd\xb8'
 b'\xf7rddHSn\x18u\xd3\xb3\xbb\xfe\xd4\xa8\xee\x18\xa0(*\xe5q\xf2\x02'
 b'\x00\x99\x00\x00\x00\xb2y ?\xcdg5>\xf9\xe7\x12?\xc8\xeeN\xb0\xe0A\xe5?wzq'
 b'\x03\x00\x8d\x00DZxjb\xeae\x8a(')

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

{'A1': {'B1': {'C1': 'wzq', 'C2': 23108},
        'B2': 'xjb',
        'B3': -0.7113751173019409,
        'B4': 1970209448},
 'A2': [{'D1': 46068,
         'D2': 3462259780,
         'D3': 10170537061510495252,
         'D4': 1795742949,
         'D5': 2874370438},
        {'D1': 35708,
         'D2': 1934283616,
         'D3': 7477820377920827751,
         'D4': -125528816,
         'D5': 326508788},
        {'D1': 48046,
         'D2': 2947508514,
         'D3': 11442656799703076162,
         'D4': 347922420,
         'D5': 3182863879},
        {'D1': 63416,
         'D2': 1214538866,
         'D3': 18355462427062595155,
         'D4': 418293972,
         'D5': 3844745376}],
 'A3': -3471,
 'A4': [26090, 10378],
 'A5': [0.6268569231033325, 0.1771537810564041, 0.5738521218299866],
 'A6': 0.664291710235795}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ENM\xae\x00\x00\x00|\x9c\xbcM\xe1\xbf\xcf\xba\xffY\x15\xd8\x18=U_0\xbe\x07]|'
 b'\xbfU\xd0f>\x8fiQ\xbf^\xab\x94\xbf$sj>o\x1chn\x86\x9e_2\x96o\xa0'
 b'\xdf\x0f\x04\x19Apga_ge\x99\xbf\xeeu\xe0L\x7f5\xd2\x11\x81\x95\xe9'
 b'\x00\x00\x00\x02\x00\x00\x00@|\x03i{\xb0Ae\xbf\xe1\r\x8a\xf8\r\x83\xb0\x00'
 b'\xca8z\x00\x00\x00\x03\x00\x00\x00Yi\x00\x00\x00D\x00\x00\x00_\x00\x00\x00,'
 b'\x16\x00\x00\x00\x03\x00=\xd1\x81R+\x00\x02\x00t\xbfW3\xe4')

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

{'A1': {'B1': {'C1': 0.23350679874420166,
               'C2': 7964227122759102368,
               'C3': -33,
               'C4': 15,
               'C5': 1049,
               'C6': 65},
        'B2': 22,
        'B3': 'pga',
        'B4': -780053973,
        'B5': [{'D1': -0.9518891805725451,
                'D2': 293705193,
                'D3': [24423, 26009],
                'D4': 124},
               {'D1': -0.5329031796246593,
                'D2': 13252730,
                'D3': [873, 31664, 16741],
                'D4': 105}],
        'B6': -0.8406355381011963},
 'A2': 2629586401,
 'A3': -0.24789420938367424,
 'A4': [0.05209273099899292,
        -0.13219255208969116,
        -0.8352111577987671,
        0.28010037541389465,
        -0.8698055744171143,
        -0.6423860788345337]}

Пример 2

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

(b"ENM\xae\x00\x00\x00\x7f\xf3=\xa5\xc4?\xcc \x1a\x1e*D\xb0?N'\xb7?#)\x19"
 b'\xbd\xb5E\x9a\xbe\xf2\xc02\xbd\x0c\x048?\x14l\xe5\xbf\x1d\xfb\x94\x03y\xc1)'
 b'j\xf2\x94\x9e\xc7-N\r\x00ee\x99\xc0\xc8\xcc\xbdg\x8a=\xbf\xef\x1b\xa3l'
 b'\xfc\x01~@ \x02\xe3\x00\x00\x00\x04\x00\x00\x00?,\x8d\xae\x83.\x03\xd9?\xbf'
 b'U\xb2i\xe8\x87\xf0\x0b\xfb \x9a\x00\x00\x00\x03\x00\x00\x00\\\xdc\x00'
 b'\x00\x00G\x00\x00\x00b\x00\x00\x00,\x00\x00\x00\x00\x02\x00=\xee\xd1'
 b'\xddr\x00\x02\x00w\xbe;Q\x17')

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

{'A1': {'B1': {'C1': -0.6171200275421143,
               'C2': 250443637927875742,
               'C3': -57,
               'C4': 45,
               'C5': 19981,
               'C6': 0},
        'B2': 0,
        'B3': 'ee',
        'B4': -288236174,
        'B5': [{'D1': -0.972123825893547,
                'D2': 1075839715,
                'D3': [-26176, -14132, -17049, -30147],
                'D4': 44},
               {'D1': 0.12240138135578582,
                'D2': 201007258,
                'D3': [-29266, -31954, 985],
                'D4': -36}],
        'B6': -0.18292652070522308},
 'A2': 4080903620,
 'A3': 0.21972967598825255,
 'A4': [0.8052935004234314,
        0.6373458504676819,
        -0.08851166069507599,
        -0.4741225838661194,
        -0.03418371081352234,
        0.5797865986824036]}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZMH\x1a\x02\x00\x00\x00}\x00\x13T\xfc}VN\xb0\x86in\x99\x04.\xf3\xc5\xf9o\xf7'
 b'\x0c\xc32\x96\xaa\xe5\xd3\xc8\t\x1d\xf5\x8a\xc8\xd0\x84\x11\x14u\xaaS'
 b'\xd6\xbfxC\xc6:\xb1l\xb6.\x08\xe3\xcfs\x16\xfc\xcb?\xb4\x03\x00\x85\x00\x00'
 b'\x00a?\x86\x7f\xccx"\xa0\xa3\xb4\xb6\x18uy\xfd\xb43e\xfa_S\xa3\xb0'
 b'\x06\x00Y\x00\xc9\xbc>i\x1d\xcd\xf4=\x07\xa8\x11n\x9b\x04\x00l\x00!\xeb\xa1'
 b'm\xb2-\x90\xce_\x00\x00\x00p\x00\x00\x00\x0c\xfcU,JS\xd3?\x0c\xf8\xdd'
 b'rq\x8e\xea\xbf\x9c\x93\x94\x1c_m\xe3\xbf')

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

{'A1': {'B1': [{'C1': 176,
                'C2': [51, 101, -6, 95, 83, -93],
                'C3': 4464418656834469065},
               {'C1': 155,
                'C2': [7, -88, 17, 110],
                'C3': -3562297060883305695}],
        'B2': [-8741400743338290157,
               -448685208882286999,
               -1897539148218304657,
               -3402316733119608621]},
 'A2': -0.348856558164947,
 'A3': 3365997279957107576,
 'A4': 0.21863060622106212,
 'A5': {'D1': -76,
        'D2': [0.3019586022346068, -0.8298880809304605, -0.6071010168276305],
        'D3': 2139504481,
        'D4': 1780809317530892492},
 'A6': -1258456715}

Пример 2

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

(b'ZMH\x1a\x02\x00\x00\x00z\x00\xd1\x16\xb0\x04\x99O}w\t\x08\x0e\xbe\xb0\xd5'
 b'\x0b\xa3\xa8^\x8e\x03K#\x8ag\x88\x837\xb0^1\x9f\xd6\x84P\xb9\xab@1\xd3?m\xc6'
 b'L=\x1fw\xcf\xb0\x80bql\xed\x05\xb4\xbf\xf5\x02\x00\x82\x00\x00\x00tZh'
 b'\xc2x\x06P>\\$\xef\xe7u\x93\xb6\xd3y\xef\xeb,\xbc \x05\x00Y\x00m'
 b'?\xc8\xe0\x8d\x90Q\xe4\xc7\x9f\xcf\x02\x00k\x00\xc8\x87\x86p[\x06<\x12^\x00'
 b'\x00\x00m\x00\x00\x00H\xf4o/\xdf\xc6\xe0\xbf\x08J\xea\x1a\xe4\xf5\xe6\xbf')

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

{'A1': {'B1': [{'C1': 32,
                'C2': [121, -17, -21, 44, -68],
                'C3': -1994654220912410771},
               {'C1': 207, 'C2': [-57, -97], 'C3': 1313932181084997576}],
        'B2': [8610125581229496017,
               -6698025065703929847,
               7460814537781829288,
               -2981610145542863992]},
 'A2': 0.29988114137564303,
 'A3': -5706211226798995859,
 'A4': -0.07821544549495663,
 'A5': {'D1': -11,
        'D2': [-0.5242763449201755, -0.7175159955680224],
        'D3': 3261618804,
        'D4': -1734127352913328520},
 'A6': -743009419}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'QVD\xb4\x02\x00\x00\x00k\x00\xc0\xf0\x1e\x0f:\xb6b\xef\xbf\xa4k\xb9\x04O'
 b'\xd1\xda?%\x80\xcb\x97I\x04t\x8e?\xe3\xed\x8b\xa1\xc9n\xce\xfc'
 b'\x1e\xdb\xbd\xb1\xd7\x0b\x00\x00\x00\x7frU\x96\x04@\xc4\xbf<\xb8\xdf'
 b'\xb1\xf9\x9b\xe0?\xf4b\xf2\xd9\xf7+\xd5\xbf/\xc0\xcc\xcdFe\xce\xe2?d\x92'
 b'\xa6Y\xe8\x9b\x85\x9a\x94\xb2u\x0cN=\x00\x00\x00yB\xc1],\x00\x8f\xfbI'
 b'\xf7@\x19J\x15\x04\x00\x00\x005\x00\xec\xd7\xc4\xfd\xed\x82^\x00j'
 b'\xa1\x10\x10\xdc\xda\x85\x94\x02\x00\x00\x00g\x00h\xd7.\xe4\xe0m')

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

{'A1': [{'B1': {'C1': {'D1': 30, 'D2': [219, 189, 177, 215]},
                'C2': {'E1': [-0.9807997831312303, 0.41902518712384507],
                       'E2': 37,
                       'E3': 0.014869721885565346,
                       'E4': -230124718671532573}},
         'B2': {'F1': 1534066389890497423,
                'F2': [29311, -27051, 16388, -16444],
                'F3': -10260,
                'F4': -572},
         'B3': -32019},
        {'B1': {'C1': {'D1': 148, 'D2': [178, 117, 12, 78]},
                'C2': {'E1': [0.5190399622058588, -0.33080860408658386],
                       'E2': 47,
                       'E3': 0.5876947768105296,
                       'E4': -7312266997727325596}},
         'B2': {'F1': 10702200728213037418,
                'F2': [17017, 24001],
                'F3': -10392,
                'F4': -7122},
         'B3': 28128}],
 'A2': 192}

Пример 2

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

(b'QVD\xb4\x02\x00\x00\x00y\x00D\x1c)\xd4\xb0\xc3\xa2\xe6?\x1cW\x00\xda\xcb'
 b'\xec\xd4?$\xf8\xf3\x82\\@\xfc\xc7\xbf\xa5d\xda\x1d\x93\xd8\xb7d\xecwr@'
 b'{\x0b\x00\x00\x00\xc7\xd7\x8d\x88\xb8\xe5\xd6/(\x1fMn`\xb6\xf2\xc0$;\x90'
 b'F\xd8[\xd3?\x10k\xfe\x98\xb1\r\xe8\xbf\xb8\x16\xb4\x0e\x8a\xed\xd6\xe5?/L'
 b'\x94u\x1ec\x05\x96&\x17\x95^\x9aE\x00\x00\x00M\xebfJ \xe2\t\x01\x8b'
 b'\n,\x00\x00o\xcahh\xf5\xb6\xbf\x08\x00\x00\x005\x00\xbb4\xe173\xe2f'
 b'\x00P\x15\xbf\xeb\xfb\xbe5\t\x05\x00\x00\x00o\x00\x83\x14\xbd\xacn{')

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

{'A1': [{'B1': {'C1': {'D1': 236, 'D2': [119, 114, 64, 123]},
                'C2': {'E1': [0.7073687032400673, 0.3269528988761168],
                       'E2': 36,
                       'E3': -0.1873856021610718,
                       'E4': 7257507450903487653}},
         'B2': {'F1': 13814498735789076224,
                'F2': [-10297,
                       -30579,
                       -6728,
                       12246,
                       7976,
                       28237,
                       -18848,
                       -16142],
                'F3': 13499,
                'F4': 14305},
         'B3': -7629},
        {'B1': {'C1': {'D1': 38, 'D2': [23, 149, 94, 154]},
                'C2': {'E1': [0.30248076334912555, -0.7516715992127008],
                       'E2': -72,
                       'E3': 0.6824863144335065,
                       'E4': -7636588610663986129}},
         'B2': {'F1': 663646509308253520,
                'F2': [-5299, 19046, -7648, 265, 2699],
                'F3': 5251,
                'F4': -21315},
         'B3': 31598}],
 'A2': 68}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZIC\xd1\x18\x00q1Pu\x1e%\xc9ix\x9b\xc2]:D\x83d#\x85\xc5\x91\xc4F'
 b'\x00{\xc5\x00\x03\x00\x07\xa6@\x0e;\x86\x88 \x1d\x95\x00\x02\x00\x13'
 b'\x00\x02\x00\x15\xcc\xc3\xe0\x83\xcey\x1bq8\x00\x02\x00\x1d\xf6\x97\xb8'
 b'N\xa6\x90?\xefk\x0e\x8a&\xd7\x82\x9d!\xdf=\xfe\x83\x0f\xb1\x00\x9b$W\x00'
 b'\x00\x00\x02\x00\x00\x00\x1f\x00\x00\x00\x02\x00A\xbf\xed\x1f\xb3\xeb]\xbb'
 b'\xf4\x00E\xb0\xc0-K\x9eJ9\xe8\xf1\xe5x\xa9\x91F\xff\x06|n^\x96\x14\xae')

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

{'A1': 24,
 'A2': {'B1': {'C1': -22896,
               'C2': 0.9818184564853569,
               'C3': 2636242749,
               'C4': 18339519360476587095,
               'C5': [{'D1': [827356446, 633956728, 2613206330],
                       'D2': -6467153416081104867,
                       'D3': 149,
                       'D4': [68, 131]},
                      {'D1': [1680049605, 2445559296],
                       'D2': -3691860412804293775,
                       'D3': 56,
                       'D4': [123, 197]}],
               'C6': [-2409, -18354],
               'C7': -0.9101199719424344},
        'B2': 12736229549005224424,
        'B3': [61925, 30889, 37190, 65286, 31854, 24214, 5294]}}

Пример 2

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

(b'ZIC\xd1\xca\x00wZ\xc2\xc5\x95]\xae\x0e\xe7\xa5\xac)6<@}\x98\x93Zhzx'
 b'\xe0\x94l\x00\x03\x00\x074\xa5\xa5\xbe;\xb2i\x995\x00\x02\x00\x13'
 b'\x00\x02\x00\x15\xf7\xd54\xe6\xc4\xf0\xc3N\x1f\x00\x02\x00\x1d\xc4\x91\xb1'
 b'2-Y\xb8\x05z\xea2\xd3?\xec\xa5\xdfP\xe5x<\xf4\xee\x1b)\x86\x82\xcbH$\xfb*'
 b'=\x00\x00\x00\x02\x00\x00\x00\x1f\x00\x00\x00\x05\x00A\xbf\xacW\xdd\xda'
 b'\x1b\xe3\x80\x00Ka\x13\x1f\x88&\xa6O\x90\xdcs\x01\xcbx+\xecU|\x89\x0e'
 b',\xe8\xc6')

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

{'A1': 202,
 'A2': {'B1': {'C1': 13011,
               'C2': 0.8952480869300028,
               'C3': 4109245225,
               'C4': 9692532858773252669,
               'C5': [{'D1': [1522714005, 1571688167, 2779523382],
                       'D2': 3793620497593428377,
                       'D3': 53,
                       'D4': [60, 64]},
                      {'D1': [2107151194, 1752856800],
                       'D2': -588506010550746290,
                       'D3': 31,
                       'D4': [148, 108]}],
               'C6': [-15215, -20174, 11609, -18427, 31466],
               'C7': -0.05535786902868889},
        'B2': 6994969315860959120,
        'B3': [56435, 459, 30763, 60501, 31881, 3628, 59590]}}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xd4QPIC\x00\x00\x005\x00\x00\x00P\x00\x02\x00\x00\x00^\x95\x7fo\x08a'
 b'\x98AC\x00\x00\x00f\x96\x1b\xe3\xac\x95\xd7~\xfe\x06*\xc2\xdcQ3\xf53ypppi'
 b'a\xacM\xfbO\x00\x00\x00)\x00\x00\x00\x06\x00/\xac\tH\xe3\x18fgpkbyyg'
 b'\xd9p\xc4\x0e\x00\x00\x00C\x00\x00\x00\x07\x00Ib\x123\x9e\xc01d\xfa\x803'
 b'\xaeB;\xbc\xf8G\x15\xb6\xe0\xfe\xfb\xad8\xe2\x8b\xbd\xaf\xabM\xac'
 b'\xe0\xef\xba\xd50\xc4\x08\x13\xd0V\xbf\x08@9')

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

{'A1': [{'B1': 2890791759,
         'B2': {'C1': 49884, 'C2': 20787, 'C3': 62771},
         'B3': 'ypppia'},
        {'B1': 3648046094,
         'B2': {'C1': 44041, 'C2': 18659, 'C3': 6246},
         'B3': 'gpkbyyg'}],
 'A2': {'D1': [1645360030, 3224462586],
        'D2': 10772450915481305411,
        'D3': {'E1': -128,
               'E2': 867058235,
               'E3': -1124579563,
               'E4': [182, 224, 254, 251, 173, 56, 226],
               'E5': -8377346581561810705,
               'E6': 13462720279601205334,
               'E7': -0.5322299599647522}},
 'A3': -27109,
 'A4': -475228713,
 'A5': 2130576938}

Пример 2

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

(b'\xd4QPIC\x00\x00\x005\x00\x00\x00K\x00\x02\x00\x00\x00Y\xf7\x0e\x08/\xe9'
 b'\x9b^\x8c\x00\x00\x00a\xd8\\\xe5m\x92\x13>q\xc0\x01\xad\x02\xcc\xe5x\x8ck'
 b'aqnsg\x9fR\xb9\xe1\x00\x00\x00)\x00\x00\x00\x06\x00/\xf1\x1f\xce\xa5\xab'
 b'\x91ph\xcf\xc2\xe2\xd6\x00\x00\x00C\x00\x00\x00\x02\x00I\xab.\x05'
 b'\xa6\xf9s\xae4\xdb\xf8\x92\xff\xcfRF\xa5Zi\xea\xecq\xb7\x99`oSy'
 b'\x1a\xf5\x85\x97\x1bqQ\x9b\xc8\x06\x1e\xf1I>\x9e\x02\xaf')

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

{'A1': [{'B1': 2672998881,
         'B2': {'C1': 44290, 'C2': 52453, 'C3': 30860},
         'B3': 'kaqnsg'},
        {'B1': 3485655766,
         'B2': {'C1': 61727, 'C2': 52901, 'C3': 43921},
         'B3': 'ph'}],
 'A2': {'D1': [2871920038, 4185108020],
        'D2': 17802175378917908108,
        'D3': {'E1': -37,
               'E2': 4170383311,
               'E3': 1380361562,
               'E4': [105, 234, 236, 113, 183, 153, 96],
               'E5': 8021888517972268827,
               'E6': 8165478882797875529,
               'E7': 0.30861422419548035}},
 'A3': -10148,
 'A4': -445804013,
 'A5': 1047642113}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xe4KDXBT\x00x\x00\x9c\x00\x04\xab\xbb\xbe\x02\x00\x00\x00\xae\x00!\xfb.'
 b'\xc7\xd8p\xb651w\x15D\xc1\x80\xaf`\xd0\x94\xb2^*\x84y\x1a\xc2\\\xbe'
 b'\xa1P\xa3n\xa9\xd8\xd7\xf5\xb9i`\x0b\x1bv\xf4\xc4m\x02\xf2W\xdb?df\x85n\x1b^'
 b'\n[E\x01\xa9\xfdb\xbc\x02\x00F\x00\x03\x00H\x00\x10\x920?\xa3\xd59\xa9'
 b'K\x00qidi\x14\xfd\xdf\xfc+6T\x04|\x94\xc21\x97_\x04\x00f\x00\x05\x00j\x00'
 b'q)\xaf\xbeWu\xebxo\x00lebograU\xf1\x8b_\xf0\xc3\xd7F\x84\xa0\xba'
 b'\x07\x00\x8a\x00\x02\x00\x91\x00\xc9\x8e\x01?\x08\xce8\xed\x93\x00d\x8d'
 b'\x97VL\xe6bs')

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

{'A1': [{'B1': 'df',
         'B2': [-123, 110, 27],
         'B3': 0.6897287368774414,
         'B4': -1455827549,
         'B5': {'C1': 7133043207748389470, 'C2': 188}},
        {'B1': 'qidi',
         'B2': [20, -3, -33, -4, 43],
         'B3': -0.34211304783821106,
         'B4': 2028696919,
         'B5': {'C1': -7552041157132004298, 'C2': 95}},
        {'B1': 'lebogra',
         'B2': [85, -15],
         'B3': 0.5060849785804749,
         'B4': -315044344,
         'B5': {'C1': -6880296438196052085, 'C2': 186}}],
 'A2': {'D1': -0.3665391206741333,
        'D2': [1452772708, 1935861324],
        'D3': 3341744929,
        'D4': [901148888, 1142257457],
        'D5': 1622114497,
        'D6': 208,
        'D7': -4460118872403561836,
        'D8': -16804},
 'A3': 1856196769,
 'A4': 169,
 'A5': -40,
 'A6': 1773794775,
 'A7': 1981483872,
 'A8': 0.4272427581518763}

Пример 2

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

(b'\xe4KDXBS\x00w\x00\x9e\x00\xcd\xcba?\x02\x00\x00\x00\xb0\x004\xe9w'
 b"{\xd4\xe1\xf0W\xa5\xc1\xb34\xc8\xef\x0eR\x14\x06'D\xe98\\\xc9S\xf44"
 b"\x88\xb0\x0ev;?\xecd\xeee\x8c\x18L\xf7,\xb1\x83ymO\xd1\xbfzx@|\xb7'"
 b' \xd1k\xb8\xc5\x15\xff\x02\x00F\x00\x02\x00H\x00\xa8\xed\xe6\xbe\x9f'
 b'\x82U\x80J\x00czmxt\x83\x14iM\x12\x93\x16$.F\xed\x9b\xe0\x05\x00e\x00\x04'
 b'\x00j\x00`R\xe6=6:\x92\xe4n\x00vqchdps\xd8\xc7\xdd\xfcN\xb9\n\x9e\xbd\xd5"\\'
 b'\xb60\x07\x00\x89\x00\x05\x00\x90\x00\xee\xd8\xc5\xbe\x9e\x11b\xda\x95\x00'
 b'\xad\xfd\xbf\t\xb3\xff/\xa5')

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

{'A1': [{'B1': 'zx',
         'B2': [64, 124],
         'B3': -0.4510319232940674,
         'B4': -2141879649,
         'B5': {'C1': 1568862818418042807, 'C2': 255}},
        {'B1': 'czmxt',
         'B2': [-125, 20, 105, 77],
         'B3': 0.11246180534362793,
         'B4': -460178890,
         'B5': {'C1': -7211030264362396910, 'C2': 224}},
        {'B1': 'vqchdps',
         'B2': [-40, -57, -35, -4, 78],
         'B3': -0.38642066717147827,
         'B4': -631107170,
         'B5': {'C1': -5306327959544657223, 'C2': 48}}],
 'A2': {'D1': 0.8820160031318665,
        'D2': [163577261, 2771386291],
        'D3': 2071456052,
        'D4': [1475404244, 884195749],
        'D5': 1376710600,
        'D6': 20,
        'D7': 6037458174968342278,
        'D8': 13556},
 'A3': 1980674184,
 'A4': 59,
 'A5': 63,
 'A6': 1710122220,
 'A7': -146007924,
 'A8': -0.2704728781379966}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xfeXKC\x00\x00\x00M\xbe7)h:9W\x04\xa5Y\xfb\xd3\x00\x04\x00Zn\x00\x00\x00'
 b'\x03\x00\x00\x00j\x10\x10\xdeC\x00\x00\x00\x02\x00\x00\x00!dW\x12\xf3O_b'
 b'\xf5\x97)\xc4\x9b\x00\x00\x00\x02\x00\x00\x005\xba\x81\x1d\xf0$\xe9\xfd'
 b'Z\x00#\x007:\x13Zw^\x00\x00\x00\x02\x00ID` ;.\x81D\xa1Qa\xcf\xf8y-\x93\x97'
 b'zYC\xb8\xb5\xe2\xe8k\xe9K\xa8[a\x9f\xefp\x87\x7f\xa2&#\xc0-\xe4\x8d\x98')

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

{'A1': {'B1': 58,
        'B2': 324695902,
        'B3': [{'C1': -8637, 'C2': [16, 16], 'C3': 7230268562984624885},
               {'C1': -15205, 'C2': [151, 41], 'C3': -5007688393410609830}],
        'B4': 17504},
 'A2': -0.17886888980865479,
 'A3': 14905,
 'A4': 22276,
 'A5': -1520829485,
 'A6': {'D1': [540749441, 1151422817, 3489167661, 2476178009],
        'D2': 110,
        'D3': [4879850182422554955,
               12131397360797386623,
               11684065591569976728]}}

Пример 2

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

(b'\xfeXKC\x00\x00\x00c\xbe\xd8%\x0b\x98\xad\x17\xb7\x15d1\x9d\x00\x04\x00p'
 b'0\x00\x00\x00\x03\x00\x00\x00\x80\xf8\x05\x11\xea\x00\x00\x00'
 b'\x02\x00\x00\x00!\x98-\xf25\xdc\x8f\x1a\xf7\x90\xfe\xfe-\x00\x00\x00'
 b'\x02\x00\x00\x005\x8e!\x10\x87\xe4\x11\xa12\x1e\x18\xa7\x97\x00\x00\x00'
 b'\x02\x00\x00\x00I\xf6\x93\x0fj\xa2\xabqL\x00#\x007\x00K\xe4\x90\xfe$E'
 b'\x00\x00\x00\x03\x00]+\xedB\xca\x8b\xdf\x9c\x93\xe2\x85\xfd\x80\x07^'
 b'\x81\x02\xc4\x06&4\x8aZK\x9c\x82pk\ty\x9ai(\xabQ\xaa\xda\x8d\x94'
 b'\x08\x8aR\x81')

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

{'A1': {'B1': 228,
        'B2': -1862392763,
        'B3': [{'C1': 4586, 'C2': [248, 5], 'C3': -7481057092844971273},
               {'C1': -467, 'C2': [144, 254], 'C3': -8205258870259343054},
               {'C1': -22633, 'C2': [30, 24], 'C3': -679182168132718260}],
        'B4': 11245},
 'A2': -0.4221576154232025,
 'A3': 39085,
 'A4': 6071,
 'A5': 358887837,
 'A6': {'D1': [1120570335, 2626937477, 4253026142, 2164442118],
        'D2': 48,
        'D3': [2752977392650453616, 7712829540944882513, 12311308198308631169]}}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XMFb\xcfEi\x04\x8b\x02\x00m\x00\x00\x00\x8f(\x9f&\xcc\xa5\x87\xbbL'
 b'Y\xe2\x84\xfc\x93\x9d\x86\x03\x1d\xe7<\xfc8w\xd9\x17*\xcc\x17\xacN\xe46\x80'
 b'D\x19\xc6\x8a}@\xd7\xfa9\x85\xd3D[\xe0-M\xda\xb6\x85 \t\xe2t\x8e\x14q6J'
 b'7\x1ab\x00\xc8\x96\xc7\\kL\x85\xa4?\xc9\xbd?WM\x9a\x9co2\xf2\x94%2\xf0o'
 b'\x00\x00\x00v\x03lg\xe0\x17\xa9\x96\xd3u\xe6?F\xf8\xd7\xf7\xf9\x9bAO\x8b'
 b'\x80\xb0\xe0\xfb\ro\x8e')

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

{'A1': 74008015,
 'A2': 139,
 'A3': 'lg',
 'A4': [{'B1': [647964815,
                3146229196,
                2229426508,
                2258473980,
                1021779203,
                3648469244,
                399256087,
                920932012],
         'B2': {'C1': 15510535151646491776, 'C2': 250, 'C3': 57}},
        {'B1': [1531237253,
                3662491104,
                153126326,
                344880354,
                927610481,
                3355468314,
                1801242518,
                1067746636],
         'B2': {'C1': 8042472691543817673, 'C2': 50, 'C3': -14}}],
 'A5': -265149036,
 'A6': {'D1': 0.7018831198299686,
        'D2': [5711017300389787718, 10263437451258265739]},
 'A7': 886}

Пример 2

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

(b'XMFb@Z\xf8\xdf\x02\x02\x00m\x00\x00\x00\xbc\x18C\xaa2/\x93\x7f\xb4'
 b'\x01m\x98\xb5n\xc5\x1aJxx\xe0\xf6\tT\x93\xbfp\xe7*\x9e\xac\xef\xban'
 b'Y\xaa2\xcf8\x8c=\x03\x7f|\xfc\xb06\nI\n\t\xce\x89\x11\xc3\x86\xab\xe6'
 b'\xe7g\x89:\x8f9K\xcd\x02\x0e\xa0\x8f*N\x0cW\x1c\xdfH;\xfc\xc2q\xa8'
 b'\xb3\x18i\x82\xcb\xba\x96o\x00\x00\x00\x96+tn\xdc\x801w\x1c\xf3\xeb\xbf!'
 b'\xa1\x8b\xf5U\x16*\xb9?0\xf6\n\xd9b\xce\x0e')

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

{'A1': 3757595200,
 'A2': 2,
 'A3': 'tn',
 'A4': [{'B1': [2856523964,
                2140352306,
                2557280692,
                449146549,
                3765991498,
                2471758326,
                719810751,
                3136269470],
         'B2': {'C1': 4434982195612506478, 'C2': 3, 'C3': 127}},
        {'B1': [917568636,
                151669002,
                3272706510,
                3890654086,
                2402978151,
                47008569,
                714055694,
                475466830],
         'B2': {'C1': 12945722211145828575, 'C2': 24, 'C3': 105}}],
 'A5': -1766143102,
 'A6': {'D1': -0.8734266593928868,
        'D2': [13342501404486115617, 1066898846064717887]},
 'A7': 11158}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'SCG\x00W\xc0\xb34$?\xcaA@4\xf2\xccX\xdd\x94\x055\x80Q_\x0b\xbf\x1e\x85'
 b'\xa6B\x1e\x80\x8b\t0\xffF=\x05\x9bq\xc2\x9f\\\x00\xe5\x1d\x18i>j\xf2'
 b'\x9c\x96\xb3\xe6\xfe\xde\x8d\x7f/\xbe]\xa9\x0f\xfb_\xef\xe0&}%'
 b'\x91\xe5\xe5\xc7)%\xc3\r\x8f\x9b\x88\x00\x02\x00A\xbf\xc4s\x80/\x1f\xd0h0'
 b'\x00\x00\x00\x04\x00\x00\x00\x11\xcb\xa33Iw\x13\xaae\x08\x0c\xe0\xe2'
 b'\\\xaf\x93\xe7ZQ|9\x00C')

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

{'A1': {'B1': -0.1597748022173875,
        'B2': 48,
        'B3': [{'C1': -2480351767430078709, 'C2': -0.6192268133163452},
               {'C1': 4764386790447578950, 'C2': 0.032618943601846695},
               {'C1': -4422715150140893079, 'C2': 0.2294411063194275},
               {'C1': -7587466964859257041, 'C2': -0.21646521985530853}],
        'B4': 14673628401526614629,
        'B5': [2060, 57570, 23727, 37863, 23121, 31801],
        'B6': {'D1': [-4128, 9853, 9617, -6683, -14551, 9667, 3471, -25720],
               'D2': [-5, 95]}},
 'A2': -1061997532,
 'A3': 0.20511629662869058}

Пример 2

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

(b'SCG\x00K_\xfa\x87\x9a?\xe5\xe2\x82t\x9e\xb2z\xec\xdf\xc6\xd8\x8e=\x17'
 b'\xb7\xbe\x83\xcf\xd0\xb1\x11\x87\x0e\xa0z/\x91\xbe\xd3*\x8f\x82\xfc\xcd'
 b'R\x12{\xc0\x19\xbe\xbd\x10%\xcf\xa3G_\xcfZ\x80<F\xca\x8d\xcff\xc4\x9d'
 b'\x8b\xe3\xe7\x00\x02\x005?\xc0=\x10\x97\xd7\xff8=\x00\x00\x00\x03'
 b'\x00\x00\x00\x11\xbapx\xd2\xdf\x8cRmG\xc7\x81\x1cvI\xe7\x8c\xefv\x9b\xc2'
 b'\x007')

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

{'A1': {'B1': 0.12686355032200836,
        'B2': 61,
        'B3': [{'C1': -1378164327550478409, 'C2': -0.2574448585510254},
               {'C1': -5687616357500571759, 'C2': -0.41243407130241394},
               {'C1': -9008099402266722279, 'C2': -0.36926379799842834}],
        'B4': 13434370535535170157,
        'B5': [18375, 33052, 30281, 59276, 61302, 39874],
        'B6': {'D1': [18271,
                      -12454,
                      -32708,
                      18122,
                      -29233,
                      26308,
                      -25205,
                      -7193],
               'D2': [-49, -93]}},
 'A2': 1610254234,
 'A3': 0.6839000966770776}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'AKL\xaar\x83\xe1iqegiou\x93\x05\x00\x00\x00>\x008\x82f\xf4gxqjw\x02\x00'
 b'R\x00B\xbf<\xb8\xfa\xef\xe0\xbfp#%\x83\xb3/\xbf\xbf\x00\x15<\xee*\x08'
 b'=\x12\xda\xbfV\x92\xac\xc1\xcab\x9e\xba\xdc\xfc\x17\x10\xb1\x10b,'
 b'\x01\xca\x12\x02YD\x16\xaf\x13\xbf\x96\x9f\xeb\xbf\xcc\xf8\x87\xe4\x83\xf4'
 b'\xed?')

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

{'A1': {'B1': 3783488170,
        'B2': {'C1': 'iqegiou', 'C2': 147},
        'B3': [{'D1': -15956, 'D2': 25290},
               {'D1': -17762, 'D2': -804},
               {'D1': 4119, 'D2': 4273},
               {'D1': 11362, 'D2': -13823},
               {'D1': 530, 'D2': 17497}],
        'B4': -194608584},
 'A2': 'gxqjw',
 'A3': [-0.8632310611696734, 0.9360980475901441],
 'A4': [-0.5292943571457516, -0.12182161285194382],
 'A5': 5376,
 'A6': -0.4073631839525864,
 'A7': 37462}

Пример 2

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

(b'AKL\xc7\x0c\xda\x00qjpxwvj\xfa\x06\x00\x00\x00>\x00\xc3,\xe1arkbbh\x04\x00'
 b'V\x00J\xcd\\\x13X:\xe1\xbfp\x8c\xa8c6\xb4\xb9?\xee\xc2.\xa0K\xc4,T\xe9?'
 b'\xeab\xf8\xe7\xefN\xdb\x9e\x9b\xdc4\x7f\x98\x11#\xa9\xe6$\xc1\xb0'
 b'\x0b`\xef\xdd\x98U`xs\x0b\x9a\xd8\xe6?\xc6\x8a\xc6;\x82\x16\xe7?vD8\x9c\xd8|'
 b'\xea\xbf\x80\xae\xd5\xe1\xd5\xdf\x9d\xbf')

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

{'A1': {'B1': 14290119,
        'B2': {'C1': 'qjpxwvj', 'C2': 250},
        'B3': [{'D1': -6152, 'D2': 20207},
               {'D1': -24869, 'D2': -9061},
               {'D1': 32564, 'D2': 4504},
               {'D1': -22237, 'D2': 9446},
               {'D1': -20287, 'D2': 24587},
               {'D1': -8721, 'D2': 21912}],
        'B4': 1642147011},
 'A2': 'rkbbh',
 'A3': [0.7139406417516163,
        0.721497647046214,
        -0.8277400065582146,
        -0.02917417708287795],
 'A4': [-0.5383720758604025, 0.10040607388559564],
 'A5': 49902,
 'A6': 0.7915252527136596,
 'A7': 25322}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BOB\x0e\xf2\x93>\x03\x00\x00\x00S\x00\x00\x00\xfd\xf8V\x00\x00\x00n\x00\x00'
 b'\x00\x86\x00\x00\x00\x05\x00\x9e\x00Hq\xd9W\xd07\xc7?\xe2\xd3D\x85\xb7q\xaa'
 b'Rh\x9f[\x07\x9bLT\xf6\x15\xb7\r\x02@\xa4p{\x117`\xfd\x83\xd4\xe8\xcf7\xb5d'
 b'\xa5i\xd6wGf\xbbged\x18\xc4\x16\xbeI\x87\x8a\xc0\x9b\x88\xe7\xe0\xfb\xa2'
 b"\x10B\xee\x1bj\xc8^T\xed\xbf5\xc7_\xbfs'\x06xm\xfd\xff\x06\x13\xe6\xe8\xablP"
 b'\xcc\xa1\xc8\xc8\xd3?G\x9b:\xbfF\xf0l\xce\x18\xbd\xbb\x19\xb7^\x1c\x962\xd5'
 b"'\x90\x06\xb5\xe3\xbf;\x1e]{S")

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

{'A1': 0.2889561057090759,
 'A2': 'ged',
 'A3': {'B1': 63741,
        'B2': [{'C1': -0.14723241329193115,
                'C2': [-30903, -16246, -30565, -7961, -23813, 16912],
                'C3': -0.9165491022439463},
               {'C1': -0.8741334080696106,
                'C2': [10099, 30726, -659, 1791, -6637, -21528],
                'C3': 0.30912986565204537},
               {'C1': -0.7289318442344666,
                'C2': [-4026, -12692, -17128, 6587, 24247, -27108],
                'C3': -0.6158478560961724}],
        'B3': [59, 30, 93, 123, 83],
        'B4': 0.18139080323715917,
        'B5': {'D1': 5956698490179736546,
               'D2': 17749896260101054312,
               'D3': 21,
               'D4': -73,
               'D5': 3968088470412329485,
               'D6': 64864,
               'D7': 11917849765245146243}},
 'A4': -10647,
 'A5': 3144042359}

Пример 2

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

(b'BOBz\x92\x13>\x02\x00\x00\x00S\x00\x00\x00UoU\x00\x00\x00m\x00\x00'
 b'\x00\x85\x00\x00\x00\x06\x00\x9d\x00\x1e\xfa\xd7.n\xfe\xeb\xbf\xe5\xa7z'
 b'<\xb9\xc9\xcey\x03m3\xc4<sJ\xabG\x12)\x83\x0f\xfb\x88\xdb\xb8\xe8\xe0;k\xe9Z'
 b'R\x141\xdaq\x8f\xb0\xc3\xcf}Lqo\x1c\xd2D?\x90T\x13\x1esFc\x0cO\xb9\xac'
 b'\xaa,i\x9a\x91\x8e~\xdd\xbf\x82\x1as?\x80\xfbAb\xc0\xac\xde\xae$\xddG'
 b'\xa1\x1a\x1d\xd7z\x18\x1a\xee?x;\x06\xbe\x1f\x93\xed\xeei\xf0\x16H(\xc7\xaa'
 b'\xa1\xb2M\xbaB\xf1\x82\xeb\xbf\xb2\xf5\xe1\xb8\xcb\x1a')

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

{'A1': 0.1441134512424469,
 'A2': 'qo',
 'A3': {'B1': 28501,
        'B2': [{'C1': 0.7688310146331787,
                'C2': [21648, 7699, 18035, 3171, -18097, -21844],
                'C3': -0.46084942072924906},
               {'C1': 0.9496232271194458,
                'C2': [-1152, 25153, -21312, -20770, -8924, -24249],
                'C3': 0.9406855010246631},
               {'C1': -0.13108623027801514,
                'C2': [-27873, -4371, -3991, 18454, -14552, -24150],
                'C3': -0.8597341826702432}],
        'B3': [178, 245, 225, 184, 203, 26],
        'B4': -0.8748083987155189,
        'B5': {'D1': 8777174521212479461,
               'D2': 12342804433589202179,
               'D3': 71,
               'D4': 18,
               'D5': 16769394593888174889,
               'D6': 15328,
               'D7': 8203923634559576427}},
 'A4': -20337,
 'A5': 1283313603}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'WIB\xfb?\x98\xe4\x8a\x97\xd7\x07\xa1\x00\x00\x00\x88yq\xbf\xd9\x81\xef6\xa3'
 b'\xfa\xd0\x8e\x00\x02\x00\x00\x00\x10\xe0\xba\x1e\xc1\xb1|\xc9 \xe3w\xe6'
 b'\xefzg?\xb5\x86\xe7\x002\x82\x80\xaf\xe8\xb0\xd9\xd6~\xf9\xa0B\xa1\x13</'
 b'\xff\xbf\xea\x93\xb9\xe73\x18**\xceRX\xf5E)\xc2w\x1ap4i\xee\xbf\xe6tth'
 b'\xd2\x1c\x04Sr\xc3\x00\x00\x00\x03\x00c\x9e+\xbf\xbdg\xc4\xf5\xe6'
 b'\xd9\xc7\xc1\x8d\x1e\xaa\xff^\x1fN\x00\x00\x00\x02\x00tudWz\x00\x00\x00\x12'
 b'\x00\x00\x00!\x00\x00\x007\x00\x00\x00M\xff?\xe5\xc1\xe7\x19\x88\xcb'
 b'\x14\x00\x00\x00f\x00x\xf5r\xd1^\xfc\x11\xfbEV\xc0\xf1\x86')

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

{'A1': -342386939311696121,
 'A2': 161,
 'A3': {'B1': {'C1': -0.3985555680846291, 'C2': -114, 'C3': 'yq'},
        'B2': [{'D1': -2253454846290245344,
                'D2': -7305,
                'D3': 3874454119,
                'D4': 0.08408969645325648},
               {'D1': -5771168472822253152,
                'D2': 17057,
                'D3': 322711551,
                'D4': -0.8305329814545577},
               {'D1': 3084493336820918722,
                'D2': 30490,
                'D3': 1882483182,
                'D4': -0.7017156646041944}],
        'B3': 255,
        'B4': 0.6799197672574757,
        'B5': {'E1': [83, 114, 195], 'E2': -7049329971507694106},
        'B6': {'F1': 514522974,
               'F2': 8014,
               'F3': [55751, 49549],
               'F4': 1969510266},
        'B7': 4117942622,
        'B8': 18163575047388721542}}

Пример 2

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

(b'WIBo\xec\x92\xcc\xa4\xdb\xa8/\x8e\x00\x00\x00\x87jz?\xdf\xe8\xd8\x86\xb4'
 b'\xa6PX\x00\x02\x00\x00\x00\x10\x13wJ\xf3\xed\x02\xf5rCs:\xa2<\xeb?'
 b'\xae\xbcs\x98xm@\x82\x0fE\xa0\xfb\x15^6\xd3\x83Qm\x12\xba\xbf\xe4s'
 b'\xe8\xf0\xda\x154\xf0u`Q\xc2/\xa7\x1e0\xfa\xd07\x10\xd3?\xe6\xa5\xb3J'
 b'\xe1\x89\xbcT\xed\x00\x00\x00\x02\x00cn\x91\xc5\xc6*f\x86\x8f}\xc05\x02+'
 b'\x83\x88\xb0\xba\x93\x00\x00\x00\x02\x00s\xcf\xbelg\x00\x00\x00\x12\x00'
 b'\x00\x00!\x00\x00\x007\x00\x00\x00M\x8e?\xe3\xfd\xd9\x84anV\x00\x00\x00e'
 b"\x00wB_NQP\x10m'\xb0\xedqP")

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

{'A1': 8064982440350558255,
 'A2': 142,
 'A3': {'B1': {'C1': 0.49858678011751056, 'C2': 88, 'C3': 'jz'},
        'B2': [{'D1': 1402672220463101298,
                'D2': 17267,
                'D3': 983710955,
                'D4': 0.06003152118884225},
               {'D1': -9074958166418694602,
                'D2': -11389,
                'D3': 1366102714,
                'D4': -0.6391491607798003},
               {'D1': -1119883028065179874,
                'D2': 12538,
                'D3': 3493269715,
                'D4': 0.7077270948905645}],
        'B3': 142,
        'B4': 0.6247375093038936,
        'B5': {'E1': [84, 237], 'E2': 7967366670700676751},
        'B6': {'F1': 730040496,
               'F2': 47763,
               'F3': [32192, 13570],
               'F4': 3485363303},
        'B7': 1113542225,
        'B8': 5769231139901108560}}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BGLg\xa6\x94&4U\xa2\x9b\x13#W\xa64\xc3\x02\x00E\x00\x1c\x15DT\xd7:\xdc'
 b'?\xd4\xcd\x91\x16\xf58w#\x02\x00o\x00\x00\x00\xb1\x069?L\xf9\xfa-!\x99\xb5%o'
 b'\xea\x8aT\xc1\x9a+\x8b\x15\x02\x0f\x9e\xbc%yp\xccju\xc6\x03\x00\x00\x00G'
 b'\x00\x00\x00\xc4H\xf7\xabZ\x16\x99[\x1bp{\x14\x03\x00\x00\x00[\x00\x00\x00f'
 b'\x1a\xea\xc5-[\x86lJ\x00\x00\x00^\x00\x00\x00')

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

{'A1': 103,
 'A2': {'B1': 874943654,
        'B2': [85, -94, -101],
        'B3': 8979,
        'B4': -1019959721,
        'B5': 'yp',
        'B6': 0.44109137753578564},
 'A3': 2555573938852842964,
 'A4': [{'C1': 198, 'C2': [-52, 106, 117], 'C3': 6600331307576150212},
        {'C1': 20, 'C2': [27, 112, 123], 'C3': 7820038055127554662}],
 'A5': -79,
 'A6': {'D1': 6, 'D2': 11034151117982023481, 'D3': -361814603},
 'A7': 150179181982995594,
 'A8': 633118223}

Пример 2

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

(b'BGL\x07\x12\x1f;#\xb5\xfc\x867:\xa2\x92A\xc6\x02\x00E\x00\xf8\xec\xf1'
 b'x\x02\x03\xe6\xbfY\x9b\x05PS\xa8\xff\xd6\x03\x00\x81\x00\x00\x00K'
 b'\xb0\xf5\x16\xa7\xb7]\x83D\n\xb2\xc4\xe2\x15a\x84\x01\xa6\x01\x83\x81'
 b'f\xbeG\x83aqr:-\x1c\xef\x03\x00\x00\x00G\x00\x00\x00\xb8l\x11\xddO'
 b'\xd0\xa3\x04\xe8w`\x02\x00\x00\x00[\x00\x00\x00\xdb^<\x08Y\x80\xecY\xda\x00'
 b'V\x02\x00\x00\x00n\x00\x00\x00\x12\x96\x06Wl\x17\xd3CJ\x00\x00\x00]\x00\x00'
 b'\x00p\x00\x00\x00')

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

{'A1': 7,
 'A2': {'B1': 591077138,
        'B2': [-75, -4, -122],
        'B3': 14903,
        'B4': -968781150,
        'B5': 'qr',
        'B6': -0.6878673898894752},
 'A3': 15492286318956092249,
 'A4': [{'C1': 239, 'C2': [58, 45, 28], 'C3': 334339838785449144},
        {'C1': 96, 'C2': [-24, 119], 'C3': 6479695083757919963},
        {'C1': 86, 'C2': [-38, 0], 'C3': 4887275774711076370}],
 'A5': 75,
 'A6': {'D1': 176, 'D2': 739860677331982069, 'D3': 367183026},
 'A7': 7386328906967647329,
 'A8': 1635993534}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FYRC\xf3\xedI\x04\x00B\x00\x00\x00\xc7\\\x98\xa2 Q\xd7\xcb\x8d\x00\x83'
 b'\xd5Ub\x00\x00\x00\x9fFM\xd2\x00\xa3e?|\x00\x00\x00\x80\xc3\x8d\xa2&J'
 b'\xb6\x1d\xa2\x00\x00\x00w\t\xd9\xf4\x03\x00\x00\x00\xac\x00\x00\x00cckh\xc1O'
 b'\x9e\xeaGwY\xea\x19\x82\xdbv\x83q\xafz\x9e\xc1\\ju\x9e\xaf\xd0x\xaa'
 b':S\x07\x00\x00\x00F\x00+\xf2\x0f?0:\xf1\xb8W4E\xbe\xe8P\xac\x13\xea\x03\x15G'
 b'\x04\x00\x00\x00l\x000x*?Ku/\xcb\xa8\xbcc\xc0\xf4F\x90VC\x9aLwj\x0e'
 b'\x82\xc71$\xaa3\xfa\xe0\\m\x07\x00\x00\x00\x86\x00\xa4\x95\xac\xbd]2\x83')

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

{'A1': 1240331075,
 'A2': 'cckh',
 'A3': {'B1': 199, 'B2': 39004, 'B3': 8354},
 'A4': [{'C1': 6184993701665429329,
         'C2': {'D1': [-358723647,
                       -363235513,
                       1994097177,
                       2058318211,
                       1784463774,
                       -793797003,
                       1396353656],
                'D2': 0.5622889399528503}},
        {'C1': 4568236620960843423,
         'C2': {'D1': [-1192150480, -1102760873, 330060008, 1192559594],
                'D2': 0.6658964157104492}},
        {'C1': 2140980202657661824,
         'C2': {'D1': [-886082229,
                       -1067205464,
                       1452295924,
                       2001508931,
                       -947777942,
                       866788401,
                       1834803450],
                'D2': -0.08426979184150696}}],
 'A5': 4107864439,
 'A6': [93, 50, 131]}

Пример 2

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

(b'FYR)\x01,\xdf\x04\x00B\x00\x00\x00\xe7\xc6i\x08\xe0\xa1\xc8\xb1\x15\xd1G'
 b'\xc7$R\x00\x00\x00\xb0\xe1\x8f\x97\xaf[\xe8`t\x00\x00\x00\xc4\xa3N\x03Y\xb7'
 b'\x8b\xe1\x92\x00\x00\x00\xf0\x95cZ\x08\x00\x00\x00\x9c\x00\x00\x00fxqiDI'
 b'\x85\x16\xe30\xaeU\xfc\xb4pw\x03\x00\x00\x00F\x00\x15\x86{\xbf\xc6ci]'
 b'O\xb8\xbaZ\x1d\xd4apo6\x04\xf9c\xb4\xfb\n\x9d\xfdK\x86\x06\x00\x00\x00'
 b'\\\x00\xd4\xcd\xbf>\xd5*\xc2\xcb\xdeC\x96ym\x1f\x8e\xa0\xe5I\x8a\xca\x8d\xec'
 b'[\xa6\x05\x00\x00\x00~\x00\xc1\x0fJ\xbe\xfde5l\xa4\x07"\xee')

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

{'A1': 3744203049,
 'A2': 'fxqi',
 'A3': {'B1': 231, 'B2': 27078, 'B3': 57352},
 'A4': [{'C1': 2650165869068535969,
         'C2': {'D1': [377833796, 1437479139, 2003875068],
                'D2': -0.9825146794319153}},
        {'C1': 6982932031958147504,
         'C2': {'D1': [1567187910,
                       1522186319,
                       1885459485,
                       -117164433,
                       184267875,
                       -2041840227],
                'D2': 0.37461721897125244}},
        {'C1': -2194458800477527100,
         'C2': {'D1': [-876467499,
                       2039890910,
                       -1601298579,
                       -896906779,
                       -1503925107],
                'D2': -0.1973257213830948}}],
 'A5': 1516475888,
 'A6': [253, 101, 53, 108, 164, 7, 34, 238]}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"\xd6ISV\xcc\x9e\x85.Q\x7f\xc3'\x00\x07\x00\x00\x00o\xbfj\xe2\x1c~\xe3"
 b'\xbb\x98\x85\xb5\x07\xb4u?\xbf\xeaj\xed\xa25g\xa0?\xd1\xba\x1b~\x9f\x03`'
 b'>%\xd8\xf9\x92b\n5\x04\x03\x85O;O?\xd3k\x8a\x9c\xfa\xef\x10?\xec'
 b'h\xa0\xbe\xe5^\xaeU\xectK\xc9h\xd5\x1e\xe5\x12\x86\x8e\xcb5\xc2\xa2\x8bM'
 b'\x13\xbc\x00\x00\x00\x02\x00v>\xf8\xfb\xb1p\x91\xd9kddmwby\xbf\xe5\xb8L ['
 b'd\x9a\xbf\xeb\xdd~(\xee\xf7\xb0')

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

{'A1': -3702375409669651673,
 'A2': 'kddmwby',
 'A3': [{'B1': -0.9175126552581787,
         'B2': {'C1': 126, 'C2': 16409877367289787509},
         'B3': 63,
         'B4': [-0.8255527656685793, 0.27698409428926674]},
        {'B1': 0.16196049749851227,
         'B2': {'C1': 146, 'C2': 7064517256839253819},
         'B3': 79,
         'B4': [0.30343880968187964, 0.8877719620167761]}],
 'A4': 1441559627,
 'A5': {'D1': [-13976, -10978, -6894, -31090, -13515, -15710, -29875, 5052],
        'D2': [-0.6787472373936396, -0.8707876967889572],
        'D3': 1056504753,
        'D4': 112,
        'D5': 37337}}

Пример 2

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

(b'\xd6ISV\xe9\x9e\xd4\x92\xebI~\x9a\x00\x06\x00\x00\x00o?\x0e?\x97\x90\xeb'
 b'\x05\xcbBg\\\x9f\xd0\xd2\xbf\xd1\xd1\x12\x94\xa5\xbf\xf8\xbf\xee\x17\x10'
 b'\xb4\xbb\x8cV>w\xb7S\xffv\x90\x9d\x017\xc1_\xb1}\xbf\xe5Y\x9c\x085'
 b'\xa3\xae\xbf\xdd\x9e\xff\xf1\xf6N\xc0\xa6\x1c\xf1\xaf\x15\xa3I\x84.\x06'
 b'\xc3\xb8\xafHz\x82\x87_z\xff\x00\x00\x00\x02\x00u\x04\x18\xef\xa8'
 b'\xe2\xe5\xb2lechcb\xbf\xeb\xa0\x0c\',6~\xbf\xdb\x04\xcb\xabv"8')

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

{'A1': -1612617889074282854,
 'A2': 'lechcb',
 'A3': [{'B1': 0.5556578040122986,
         'B2': {'C1': 144, 'C2': 16935165459859021776},
         'B3': -46,
         'B4': [-0.2783857776294094, -0.9403155832227508]},
        {'B1': 0.24191026389598846,
         'B2': {'C1': 255, 'C2': 8543501121677778865},
         'B3': 125,
         'B4': [-0.6671886597006187, -0.46282957676997327]}],
 'A4': -1508052561,
 'A5': {'D1': [5539, 18820, 11782, -15432, -20664, 31362, -30881, 31487],
        'D2': [-0.8632870450107502, -0.42216769928248565],
        'D3': 68743080,
        'D4': 226,
        'D5': 58802}}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'ZLM4?\xda\x7f{VX|\xb8\xf1\xc7g\xcc\xf0u\xd1f\x87\xbe\xc0\x95I\xe0\x9e\x9f'
 b'@\n\xa4\x13\x99\xcf\x06\r\x00y\x00\x00\x00\x04\x00\x7f\x1b\x94b\xb2'
 b'>\x8f\xf0\xb0g\xfc \xd8\xa8\x16w#%\x9e\xa1\x08\x8c\xfd\xb0\xbf/\xb1b\xbf'
 b'b\x9c*\xbfB\xaa\xc8\x00\x07\x00\x00\x005L\xb7T\x95\x00\x03\x00\x00\x00Cy'
 b'+5\x8e\xee\x91\\\x8e\xc2\xdd\xfb<\x1d\xea\xf3\xe9\xda\x88@\xb8\x00O\xa0i#'
 b'P\x00c\x00\x02\x00ucM\xf1\xf7\x89\x8e\x7f\xfbg\xc4\x8a\x8fS\xbc\x04\x01')

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

{'A1': 0.4140308707446354,
 'A2': [{'B1': 61895, 'B2': 26572},
        {'B1': 61557, 'B2': 53606},
        {'B1': 34750, 'B2': 49301}],
 'A3': 1239457439,
 'A4': 4614681172286309901,
 'A5': {'C1': {'D1': 17190623020874332988,
               'D2': 2155803557369495736,
               'D3': {'E1': [-992, -10072, 5751, 8997, -24927, 2188, -592],
                      'E2': 1287083157,
                      'E3': [-0.6863003969192505,
                             -0.8851953744888306,
                             -0.7604184150695801],
                      'E4': 2032874894}},
        'C2': [-24471, 9040]},
 'A6': {'F1': [1666052599, -1987149829, 1740933775, 1404830721],
        'F2': 7060,
        'F3': 25266,
        'F4': 0.28113317489624023,
        'F5': 103}}

Пример 2

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

(b'ZLM4?\xe8\xcd\xa7\xa4\xbd\x99T\x91+\xe4jI\x03&\xb4J\t\xba\x18~\xaf\xd1\xd0'
 b'\x81A0\xe6\xc6\xaf\x9dC\x00{\x00\x00\x00\x02\x00\x81\xf7\xcc\xb5t\xbf`\x14;'
 b'\xa6G\x0c\x19\xe5\x98\\\xe2i@\xd06UXg?I\xf3A?\n\xc2_>\xf2+\x95\x00'
 b'\x07\x00\x00\x005\xb4\x1f\xa6\xaa\x00\x03\x00\x00\x00C\xd7Y\x1f\xf5\x85'
 b'\xe3{\x19\x14\xd9\xa6F\xfe\xd9\xca(\xee\xaa\x88\xbc\x00O*\xd4r\x90\x0cl\x00'
 b'c\x00\x03\x00u_\xb9\x99V\xc7\x7f|\x17')

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

{'A1': 0.7751043527212382,
 'A2': [{'B1': 37163, 'B2': 58474},
        {'B1': 18691, 'B2': 9908},
        {'B1': 18953, 'B2': 47640}],
 'A3': 2125451728,
 'A4': -9132964801596646077,
 'A5': {'C1': {'D1': 9647690174411941446,
               'D2': 18363931232731564220,
               'D3': {'E1': [18188, 6629, -26532, -7575, 16592, 13909, 22631],
                      'E2': -1272994134,
                      'E3': [0.7888680100440979,
                             0.5420283675193787,
                             0.4729887545108795],
                      'E4': -682024971}},
        'C2': [10964, 29328, 3180]},
 'A6': {'F1': [1605998934, -947946473],
        'F2': 63436,
        'F3': 46452,
        'F4': -0.8753086924552917,
        'F5': 166}}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xa1SBJ\x9c\xb4o\x13]\xf4\xc6d\xd8\xd9D\xea?\x02\x00\x00\x00s\x00\x00'
 b'\x00\xc4I\x04\x00\x00\x00{\x00\xa8\xa3\x8f\xc4\r\x80\xb1q\xc4f\x0f'
 b'\xbf!\x00\x00\x00\x01\xfd&~#\x8aO)\x00jqhtkhjz*{8\xbe\xa39\x1b>V(\x91m( '
 b'\xca\x99\xee\xf5n?J\x00\x00\x001\x1cf\xfa\xd1\x8d\xd1R\x00fgxhvndit'
 b'\n\xa4>\x04\xc0g?4\x00\x00\x00]\x00\x00\x00\xe3\xdd\xda\x04\xad\xc8cW2'
 b'{\xc2\xabm\xe0a\xef')

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

{'A1': -100,
 'A2': 1561554868,
 'A3': 0.8209046579779327,
 'A4': [{'B1': 1334453118,
         'B2': {'C1': -0.560161828994751,
                'C2': {'D1': -997219416, 'D2': -32755, 'D3': 29105},
                'C3': 64769,
                'C4': 38},
         'B3': 'jqhtkhjz',
         'B4': [-0.18015733361244202, 0.15158705413341522]},
        {'B1': 3515732474,
         'B2': {'C1': 0.933440089225769,
                'C2': {'D1': 1838229590, 'D2': 8232, 'D3': 39370},
                'C3': 7217,
                'C4': 102},
         'B3': 'fgxhvndi',
         'B4': [0.3203922510147095, 0.9052736759185791]}],
 'A5': 18884,
 'A6': [81452515, 1466157229, 2881649458, 4016169069]}

Пример 2

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

(b'\xa1SBJ\xf0\xea\xe3\x1c\xcbV>\xa3X\x81\xcf\xe0?\x03\x00\x00\x00\x9c\x00\x00'
 b'\x002~\x02\x00\x00\x00\xa8\x00\x1bG\xff\x16\xc3\xdft\x85\x8d\x01\r'
 b'\xbf!\x00\x00\x00?\x02\x1d\x17\x1b;")\x00sbcypctq1[\x93\xbe\xe7\x00'
 b'\x0c\xbf\x1b"\xa9I\xf47dX\xfesS\xbfJ\x00\x00\x00O\xa6\x06U\xc20\x0eR\x00s'
 b'rlrfulb{\xe9\x05\xbeZ\xaar?\x1c\xe1cXq\xaaj/\x13;c>s\x00\x00\x00\x96'
 b"+\xa7'\xa1\xde\xeb{\x00ymrquark\x1c`\x7f\xbf\x9e\xcf\xe5\xbe4\x00\x00\x00"
 b']\x00\x00\x00\x86\x00\x00\x00xW\xe2\x1c.4\x00\xde')

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

{'A1': -16,
 'A2': 3407668202,
 'A3': 0.5253302317814341,
 'A4': [{'B1': 574298903,
         'B2': {'C1': -0.5508049130439758,
                'C2': {'D1': 385828635, 'D2': -8253, 'D3': 34164},
                'C3': 575,
                'C4': 29},
         'B3': 'sbcypctq',
         'B4': [-0.28780511021614075, -0.5468887686729431]},
        {'B1': 238076501,
         'B2': {'C1': -0.8259886503219604,
                'C2': {'D1': 1235821083, 'D2': 14324, 'D3': 22628},
                'C3': 42575,
                'C4': 6},
         'B3': 'srlrfulb',
         'B4': [-0.13077346980571747, 0.9479118585586548]},
        {'B1': 3957236007,
         'B2': {'C1': 0.22190503776073456,
                'C2': {'D1': 1482940700, 'D2': -21903, 'D3': 12138},
                'C3': 11158,
                'C4': -89},
         'B3': 'ymrquark',
         'B4': [-0.9975602626800537, -0.448849618434906]}],
 'A5': 32306,
 'A6': [484595576, 3724555310]}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'IQZD^Z\xd7\x88\xe5\x9f\xc9\x8b\x9f\xd7?\x1a\x9dC\x00\x00\x00g\x00\x00'
 b"\x00\x02\x00\x00\x00s\x00\x00\x00\x06\x00{\x00'$\x9e9X\x9e\x1b\x15\xa4gf"
 b'1P\xc5\x8f\xad8\x9d\x94f\xf7\xcci\x80;7\xe7#W\xfb\xd3\x10\xcd\x80W'
 b"\xc0N\xbf\x03\x00+\x00W\xd36\x8c\xf7\x9b{\xfa\xedg\xa7\xc8'\xdb_\x18|"
 b'\xea\xe6\xc3v\x06,\xe9p=\xa4~\xc0\xfa\xc7>\x03\x00O\x00\xee,\xf49\x07'
 b'\xec\xa5\xd0Q\xad*;Zoy\x7f\xd6\xfa\x87x')

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

{'A1': -10406,
 'A2': {'B1': 0.3691129178037831,
        'B2': 40218,
        'B3': {'C1': [{'D1': 2160922835,
                       'D2': -0.8076223731040955,
                       'D3': [-4228825734205663973,
                              -3677357782245790321,
                              -335760171244748695]},
                      {'D1': 2124692848,
                       'D2': 0.39058494567871094,
                       'D3': [-397552654580526249,
                              1756363343614404589,
                              -1644932656734475652]}],
               'C2': [972303598, 3500534791],
               'C3': [44369, 15146, 28506, 32633, 64214, 30855],
               'C4': 9255,
               'C5': -1638385250}}}

Пример 2

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

(b'IQZD^\xe1\xd5TV\xca\xff\xcf\xd3\xdd?\xba\xc2C\x00\x00\x00o\x00\x00'
 b"\x00\x02\x00\x00\x00{\x00\x00\x00\x08\x00\x83\x00'\xd6\xa7<\xc0dd"
 b'Y\xbc\xd1\xac\xf0OW\xed4\xf0\xab@\x14&%\xb4\xf3\\=\xc3\xa5c\xce|'
 b'\xb4\xe5S\x8c\xd2\xda>\x03\x00+\x00\xb7!\xcdCf\r\x02rbf\xab\xb4C\xc5\xee!f'
 b'\x7f\xd3\x03\x13\xa1\xa3\xff\x8c\x9c\x99(\xb3\x94LF\xf2\xdf\x8b\xff\xcb'
 b'3{\xbf\x04\x00O\x00\x849\xbb\xe2\xb5\xc5yX\xa6A\x90j\xf5\x07|\xdau'
 b'\xf1e\xb6\x06\xa2\x91\xdc')

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

{'A1': -10783,
 'A2': {'B1': 0.46605300883797907,
        'B2': 49850,
        'B3': {'C1': [{'D1': 1407562876,
                       'D2': 0.4273875951766968,
                       'D3': [6291511829503695204,
                              2676849296513447149,
                              -3574831421235334220]},
                      {'D1': 4287356914,
                       'D2': -0.9812590479850769,
                       'D3': [8215143403152548279,
                              2445108542293370466,
                              -26000069793448090,
                              5065587178086177932]}],
               'C2': [3803920772, 1484375477],
               'C3': [16806, 27280, 2037, 55932, 61813, 46693, 41478, 56465],
               'C4': 54823,
               'C5': 1690320039}}}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KXEN-\xb2\x8f4l\xf3\x00\x00\x00\x02\x00\x00\x008\x04\r>Z\xd8\xa3&+bD'
 b'\xf0\xae\x00J\xbf\xe0\xdd\xbdZ\x897h\x00\x02\x00}\xb7\xe3\xc1\x1c?{T0'
 b'\x05\x15\x04:smjgw\xb8{`fwumdr>\xe34\x90q@:j\xa2GC\rN\x12E\xd4\x117'
 b'\xd7;$\xd5mT\xdd\x10\xf39\x85D\x85\xe4Pb\x10\x01\xc5"\xd5\xc6\xe4\xed[X0\xc6'
 b'\x98\xb9 \x16\x80\xd8\xaf\xd3\xd2\xbf(\x82\xc3>\x8c\xbb\x9b')

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

{'A1': 766676788,
 'A2': 27891,
 'A3': [{'B1': 'smjgw', 'B2': 47227, 'B3': 24678},
        {'B1': 'wumdr', 'B2': 16099, 'B3': 13456}],
 'A4': 291958110751499819,
 'A5': 1648685230,
 'A6': {'C1': {'D1': 113,
               'D2': [4628128812289428814,
                      1316691636492122916,
                      -3067702462720558715,
                      4937603600375349701,
                      2510131053865949232,
                      -4136352710272165713],
               'D3': 54226},
        'C2': -0.5270678299218448,
        'C3': [-0.6582452654838562, 0.27486881613731384],
        'C4': [-73, -29, -63, 28]},
 'A7': 0.9817533493041992,
 'A8': 85263418}

Пример 2

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

(b'KXEN\xb0\xf2j\xa2\xb3V\x00\x00\x00\x03\x00\x00\x008\xd6Dc\x9e\xdd{'
 b'\xbf\x16\xd5\xe9U\xad\x00S\xbf\xd4\xbeL\xf0\x95\xd8\xbc\x00\x02\x00\x86'
 b'\xd2\xad\x96\x0b>%\xbc\x19>s\xd6\x87vbtjv\n\xc6\x0f,ldgwh\xf8d\xc31bacih\xaf'
 b'\xe3(\xf3\x92v\x00\xe6\x9b\xf5q\xcb\xa1A\x05\xa5\xef\x88gf\xc1m\x82\xee@'
 b'{@\x9e\xb6w\xc5<\xbc\xc3\xbav\x12\xb0):\xa1\xa7\t\xaa\x8a+\xfd\x18\x0c'
 b'\x9eZ\x7f\xf6v\xf2\xbe\xf8\xb8\xdc>\x18<\xec')

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

{'A1': 2968677026,
 'A2': 45910,
 'A3': [{'B1': 'vbtjv', 'B2': 2758, 'B3': 3884},
        {'B1': 'ldgwh', 'B2': 63588, 'B3': 49969},
        {'B1': 'bacih', 'B2': 45027, 'B3': 10483}],
 'A4': 15439574956504760086,
 'A5': -706128467,
 'A6': {'C1': {'D1': -110,
               'D2': [8503049653987691425,
                      4685333435553113793,
                      7891131457819680438,
                      8630371042360718866,
                      -5753002583022523766,
                      3169716155214102518],
               'D3': 30450},
        'C2': -0.32411502356206845,
        'C3': [-0.4857853651046753, 0.14866989850997925],
        'C4': [-46, -83, -106, 11]},
 'A7': 0.16185034811496735,
 'A8': 1047778951}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x8dBALB\xc3}?\x8fH\x11\xa5y\xa4\xf4BN\xff\xa5kuSx\x01\x0f\x02\x00i'
 b"\x00F'\xfd\x03\x00m\x00\xef\xa1\xdc\x14\xcc\xa5\x81\x9cj\xf7/\xae"
 b'\xc0v\x13\xad\x01\xa9\x9e\xd1\xba\x8eKDE\x07\x00\x00\x00,\x00\x00'
 b'\x00\x03\x00\x00\x00:\x00\x00\x00\xaby\xe8A*\x16\r\xed\xa4\xf5\x8a'
 b'\x8a\x05\x00\x00\x00M\x00\x00\x00\x02\x00\x00\x00W\x00\x00\x00=\x00Y'
 b'\x00\x85\n\xfe\xb8\x93>\x08\xc6t\xcf\xb7\xed')

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

{'A1': {'B1': {'C1': 0.9912606477737427,
               'C2': 4824661943188015247,
               'C3': 78,
               'C4': 1081277685393237503,
               'C5': [{'D1': [-2198,
                              -20945,
                              30400,
                              -21229,
                              -22271,
                              -11874,
                              -28998],
                       'D2': [75, 68, 69]},
                      {'D1': [31147, 16872, 5674, -4851, -2652],
                       'D2': [138, 138]}],
               'C6': 70,
               'C7': 64807},
        'B2': [3103656581, 3322429075, 3988246388]},
 'A2': -7169266835855203857}

Пример 2

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

(b"\x8dBAL\xdd?p\xbeB3\\\x07\x188Y'5'7\x9a\xec\xeba\xd6\xd5\x04\x00\x95"
 b"\x00U\x84%\x02\x00\x9d\x00\xd2\x15lb\xb64'\x82\x06\xad\x9b\xb4\x1e\xc5B\x02"
 b'\x00\x00\x00,\x00\x00\x00\x03\x00\x00\x000\x00\x00\x00\xaa\xa8+\x058'
 b'S\x02\x00\x00\x00C\x00\x00\x00\x02\x00\x00\x00G\x00\x00\x00\xd6\x13M</!\x8b'
 b'k\x1b\xde\xb7\x9dpe\xd2,\xc6\x07\x00\x00\x00Y\x00\x00\x00\x03\x00'
 b'\x00\x00g\x00\x00\x00%\xc0\x161\x92[\x82[\x83\xe9\xc7\x04\x00\x00'
 b'\x00z\x00\x00\x00\x03\x00\x00\x00\x82\x00\x00\x003\x00I\x00j\x00\x85'
 b'\x00\x06\x18.\xed\x90\x95\xbeQ')

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

{'A1': {'B1': {'C1': -0.23461861908435822,
               'C2': 2835359116260291394,
               'C3': 53,
               'C4': 15408610841009469223,
               'C5': [{'D1': [-21242, -19301], 'D2': [30, 197, 66]},
                      {'D1': [-22358, 1323], 'D2': [56, 83]},
                      {'D1': [5078, 15437, 8495, 27531, -8677, -25161, 25968],
                       'D2': [210, 44, 198]},
                      {'D1': [-16347, 12566, 23442, 23426],
                       'D2': [131, 233, 199]}],
               'C6': 85,
               'C7': 9604},
        'B2': [3979220998, 1371444624]},
 'A2': -9068221366747261486}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'VYL\xbf\xb3&\x8f\xe3\xfd\xee \x90\xff\xac_\xce\x00\x8b\x8b*\xf8\xb0\x1c\xd0'
 b'\xdc!l\x89\xe5\x12\x01~d.6\x00\x00\x00\x03\x00\x00\x00\x1e\xbf\xe41\x86\x12'
 b'\x0ceV>#Af\x00\x00\x00\x02\x00\x00\x003?\xd9\x80L`\xba\xf8\xdc\x00'
 b'\x00\x00!\x00\x00\x005\xd3 B\x94\xf9I\xb1\xbe\xa79T}\xa4\xa1-kJ;oO\x9d'
 b'(:\x10]0\x94L$\x10\xcb?x~\xeat\xb0_\xb7\x00\x08\x00O\xd8\x00\x00\x00\x05\x00'
 b'\x00\x00_)?_\x12\xd4<1\x83?\xaag\xa1\xe4\xa1\xd0 \xfe9C\xf9\x85\xd0N\x1d\xbf'
 b'\xeb\xb5:j\xc0b\xe4\x00\x02\x00G\x1e4\x8c\x99\x00\x00\x00d\x87\x11\xa0\xd2T'
 b'Y\xae\x07')

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

{'A1': -0.07480716053208214,
 'A2': -112,
 'A3': -5480498,
 'A4': {'B1': 0.05157190242690057,
        'B2': -127996375432409571,
        'B3': {'C1': -0.8658725819578561,
               'C2': [{'D1': 11830,
                       'D2': [1, 126, 100],
                       'D3': -0.6310453751095035},
                      {'D1': 16742, 'D2': [62, 35], 'D3': 0.39845570989917944}],
               'C3': 7732,
               'C4': 35993},
        'B4': {'E1': 2898647302599363620,
               'E2': 1210130711637030064,
               'E3': 24503,
               'E4': [-11488,
                      17044,
                      -1719,
                      -20034,
                      -22727,
                      21629,
                      -23391,
                      11627],
               'E5': -40,
               'E6': [74, 59, 111, 79, -99],
               'E7': 2972198813562581379},
        'B5': [34577, 41170, 21593, 44551]},
 'A5': -8418643118134338527,
 'A6': 1820976402}

Пример 2

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

(b'VYL\xbf\xe1(}3\xbdP\x96I\x86\x03\xeb\xfb\x00\x8eS\xb8\xac\x88j\x8eb\x10\x08"'
 b'U6}L9\xe4jV\x91\x00\x00\x00\x05\x00\x00\x00\x1e?\xe74\x047ho \xf8-M'
 b'\xcdN\x00\x00\x00\x03\x00\x00\x005\xbf\xe2fM\x9ea+\x9a\x00\x00\x00#\x00\x00'
 b'\x008-}\x1c\xa5\xe2\xe4\xe2\xdc\xad\x0bz\xac\x08\x18\xe0\xc7&\x8am\x81\x0c0'
 b'/\xb6\xe2\x1a\xf5\xd2\xad\x8c\xee\xcc\xb8Q\xff\xb8\xeenh\x00\x08\x00'
 b'R\xeb\x00\x00\x00\x05\x00\x00\x00b+\x0e(5M\xe6D\x9f?\xdeB_\xae\xc8\x17hd\x94'
 b"\x8f}\x8b'\xd2\x03\xbf\xe0\x0f\x97\xa1,\xa2:\x00\x02\x00JG\xaf\r}\x00\x00"
 b'\x00g\x16a\xa0\x0b\x913 ]')

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

{'A1': -0.5361925135171244,
 'A2': 73,
 'A3': -2046563333,
 'A4': {'B1': 0.472801132855571,
        'B2': 7247575469714297347,
        'B3': {'C1': -0.5019033573090106,
               'C2': [{'D1': 22161,
                       'D2': [125, 76, 57, -28, 106],
                       'D3': 0.725099666803974},
                      {'D1': 52558,
                       'D2': [-8, 45, 77],
                       'D3': -0.5749881833411223}],
               'C3': 18351,
               'C4': 3453},
        'B4': {'E1': 3472194919957123757,
               'E2': -8291464771920742162,
               'E3': 28264,
               'E4': [11645, 7333, -7452, -7460, -21237, 31404, 2072, -7993],
               'E5': -21,
               'E6': [38, -118, 109, -127, 12],
               'E7': 3102461402710164639},
        'B5': [5729, 40971, 37171, 8285]},
 'A5': 6032761402766025232,
 'A6': 136467766}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'NOEJ\xee\xbft\xfe\xc9\xb5NL\x13\x00\x04\x00"\x7fU\x03\x9d/\x00\x00'
 b'\x00U\x00\x00\x00\xa2\x7f\n\xdb\xb4tdkk$J\xc7\x9bx0\xed\x1c#\xd9\xfa[bb'
 b'\x19\x93=\x98\xee}\x00\x00\x00\x08\x00*\x96\xaf\x8f \xc7\xe7 \xab'
 b'A\x92\x85\xe24\xeaW\x00\xe07\xf2\x1a\x9d\xb7\xd6\xd8W\x00\x04\x00'
 b'&\x00\x00\x002\xb5\xf4\xe0^\x04\xb0\xe5\xef\xc5^\t\x88p\xa3\xe3tf\xf81'
 b'\xec\x8b\xd8N\xa6\xfd\xf8x~g\x12oHc\xac\xe7J\xec\x98\x00\x00\x00\x08\x00'
 b'w\xdaf\xa6\xe7!`\xeb2\xe9q\xcb\xb6\xdb\xf9\xe35\xa2\xa8\xab\x9fuO\xee'
 b'.\xa8\x00\x02\x00u\x00\x00\x00\x7f\xa0py\xd8N\xe8\x80 \xe7\xcfs\xa9h\xd6'
 b'\x0cDw\xff\x07V')

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

{'A1': -0.9570127129554749,
 'A2': {'B1': 3041807379, 'B2': 'tdkk', 'B3': 127},
 'A3': 1426300207,
 'A4': [{'C1': 3084310615,
         'C2': [36, 74, -57, -101],
         'C3': {'D1': 7089256883618901629,
                'D2': [120, 48, -19, 28, 35, -39, -6, 91],
                'D3': -26961,
                'D4': -28896,
                'D5': -57,
                'D6': [3877677889, 2458247732, 3931570400, 938613405]},
         'C4': 13111351109592606191,
         'C5': -59,
         'C6': 6776097131722929254,
         'C7': -1999,
         'C8': -20},
        {'C1': 1341009576,
         'C2': [-117, -40],
         'C3': {'D1': 8018768730799139992,
                'D2': [78, -90, -3, -8, 120, 126, 103, 18],
                'D3': -9626,
                'D4': -22809,
                'D5': 33,
                'D6': [1626026729, 1909176027, 4192417186, 2829819765]},
         'C4': 11560874213403820064,
         'C5': -25,
         'C6': -3498266217803922313,
         'C7': -249,
         'C8': 86}],
 'A5': 2131418036}

Пример 2

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

(b'NOEJ\xee>\xcf\x17~\x9c\xa7\xe2\xa0\x00\x02\x00"Q\xe4m\xb65\x00\x00'
 b'\x00M\x00\x00\x00\x9a\xc7\x88\xbfQek\xc4\x94a\xf6\xb3\xe5\x12\x03\x13Ih8'
 b'\xbaM\x00\x00\x00\x02\x00(E\xd3U`\xec\xed\xd53\xb0\xa5\x8b{\xd2\x9f\xed\xa0'
 b'Q\x97\xdc\xc9\xa8h\x7f\xe0\xb3\x00\x04\x00$\x00\x00\x00*\xdf\xa0\xa0'
 b')D\x9c\xd0\x82\x95W\xee\xd2\x8f\x843\xcb\xe0d)\xc2p\xe2g\xa2a~\r'
 b'\xa1\xa0\x92h\xbag\xf1\x82\x11\xb2\xa8\x00\x00\x00\x08\x00o\xe3\n\x12'
 b'\xb2\xb1\xe1s\x1f\x102\xc6\xfb!\xb4\xc4\xdfP\xef\xcd=C\xee_I\x01\x00\x02'
 b'\x00m\x00\x00\x00w\xd4r\xbe\xf5\x82c\xfc\x1d\xff\x9c\x8e2\xcf\x8b'
 b'\x0ed\x1c\x0f\xa9\xf3')

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

{'A1': 0.4044761061668396,
 'A2': {'B1': 2628248224, 'B2': 'ek', 'B3': 81},
 'A3': -462571979,
 'A4': [{'C1': 1753211059,
         'C2': [-60, -108, 97, -10],
         'C3': {'D1': 1297902323614923341,
                'D2': [-77, -27],
                'D3': 17875,
                'D4': 21856,
                'D5': -20,
                'D6': [3990172592, 2777381842, 2683150417, 2547829160]},
         'C4': 16114055565836865666,
         'C5': -107,
         'C6': 6336233239597009888,
         'C7': 25641,
         'C8': -62},
        {'C1': 3999222017,
         'C2': [112, -30],
         'C3': {'D1': 7546458412579664552,
                'D2': [103, -94, 97, 126, 13, -95, -96, -110],
                'D3': -7414,
                'D4': 4786,
                'D5': -79,
                'D6': [3782418192, 851901217, 3032801104, 4023205187]},
         'C4': 15308508045049592861,
         'C5': -1,
         'C6': -7165734090127285220,
         'C7': 4009,
         'C8': -13}],
 'A5': -947339439}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"NLNM\x02^B\xa65c\x14&D\xc0p\xe6\x00\x02\x00\x82\xa6;\xfbE\xeb'\x8a=?\xe7M{"
 b'P\x88\x9c\xf2\xf1n\xd9\xda\xc5s\x00\x02\x00\x86QZ\xa4\xc0i\x17\xa5\x83?\xda'
 b'(\xc8\xe2\x11\xa7\x1cS\x83\x02\xb7?-\x00\x02\x00\x8aXON8.u\xb4\xe4'
 b'?\xb4\xd5\x08\xdf&\x05\xe0\x80\xea\xdb\xc1h1\x00\x02\x00\x8e\xc1\xca'
 b'\xcb>\x00\xf4,\x8e?\xd5\x1e\xa6\x13}\rP\x00\x02\x00\x92U\xe7*\xcf:&'
 b'\xc2K\x00\x02\x00\xa2\xcd\xb7\xad\xae\xe7\x81X\xa0\x1b\x9a}\x0f\x8c{'
 b'*\xca?\xc7\xec\x99j\xff\x15\x08\xbf\xda_\x98@.\x82\xc0\xb5A')

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

{'A1': 39731878,
 'A2': 13667,
 'A3': {'B1': [{'C1': 20,
                'C2': 38,
                'C3': {'D1': 1153462502, 'D2': [52663, 44462]},
                'C4': 11978443911638518333,
                'C5': 0.7282082150385618},
               {'C1': 241,
                'C2': 110,
                'C3': {'D1': -639974029, 'D2': [59265, 22688]},
                'C4': 5862179011279955331,
                'C5': 0.4087393005089426},
               {'C1': 83,
                'C2': 131,
                'C3': {'D1': 45563693, 'D2': [7066, 32015]},
                'C4': 6363390801702401252,
                'C5': 0.08137565086328591},
               {'C1': 128,
                'C2': 234,
                'C3': {'D1': -608081871, 'D2': [35963, 10954]},
                'C4': 13964197061780057230,
                'C5': 0.3299956503216963}],
        'B2': [0.18690793728288946, -0.4120846392416233],
        'B3': [85, 231, 42, 207, 58, 38, 194],
        'B4': 75},
 'A4': [181, 65]}

Пример 2

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

(b'NLNM\xd4\xdd\xc9\xa5\x94\xaap\x91\xd06\xd4O\x00\x02\x00\x82\x1b\xe7[\xcb'
 b'\x00\xf70I\xbf\xe23r\xdc\xd9?\x06`xm\x84s\xd5\x00\x02\x00\x86\x91@'
 b';\xe3\xbd\xa5\xa6\xb3\xbf\xb0\xaan\xe5\xc9=\x80\xb2\xb1\x08v\xd6N'
 b'\x00\x02\x00\x8a\xa9Z\xd3\x0f\x1e\x148\xcd?\xea\x9f\xc2I\xdbF\xf4\xdbV:\xb0'
 b'\xef\xa4\x00\x02\x00\x8e\x8a\x93\xf6,\x07\xf8kB?\xe0\xb6\xfb|\xe7'
 b'\xa2R\x00\x03\x00\x92\xe3\x8e\xef\xac]G"5\x00\x05\x00\xaa\xb1]\xec\xe9\x06N'
 b'w\xca\xc83\xc0\xbc/\xdf9\x8c\xbf\xd7\xec\xaa\x13\xf8\x8b\x84?\xba'
 b'\x88\x86\x8d\xe6v`\xbf\xe2\x94;\x98\xde\xbf\xc6sT\xc9@\xd5')

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

{'A1': -723662427,
 'A2': -27478,
 'A3': {'B1': [{'C1': 112,
                'C2': 145,
                'C3': {'D1': -801713073, 'D2': [45405, 60649]},
                'C4': 2010676686096904265,
                'C5': -0.568780356736142},
               {'C1': 96,
                'C2': 120,
                'C3': {'D1': 1837396949, 'D2': [1614, 30666]},
                'C4': 10466431383334397619,
                'C5': -0.06510060415279462},
               {'C1': 178,
                'C2': 177,
                'C3': {'D1': 142005838, 'D2': [51251, 49340]},
                'C4': 12203298202196392141,
                'C5': 0.8320018236647386},
               {'C1': 219,
                'C2': 86,
                'C3': {'D1': 984674212, 'D2': [12255, 14732]},
                'C4': 9985595467783236418,
                'C5': 0.5223367156550671}],
        'B2': [-0.37381984663277756, 0.10364571537362499, -0.5805948243851098],
        'B3': [227, 142, 239, 172, 93, 71, 34],
        'B4': 53},
 'A4': [115, 84, 201, 64, 213]}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'WXH\xd1\x02\x00\x00\x00a\x00\x00\x00\x06\xb5}\x00\x0e)\xb7U\xd0\xcf\xcd5'
 b'\x82\xfa\xaf\x8b\xd8\xea\xe9?cu\xbcc\xb5>\xd6"\x05-\x02\x00\x00\x00 \x00'
 b'\xd5\xee\x08j\xcf\xc4\xa6\xbe\x19M\xfeD\xfa"\x00pkrbv\xc7\x90Z\xbf'
 b'|\xad\xf3\xef\x05\x00\x00\x00?\x00\x91\x97\x17\xb2_\xdf1?\xf2:\xa4|\xfaD'
 b'\x00*\x00\x00\x00L\x00\x00\x00,3\xc63\xf1\x04\xbf;1\x8e\x90\xbe\x88iV'
 b'\xbf\xd7\x96Z\xbf\x04\x00\x00\x00i\x00h\xf9\xca;\x04\x00m\x00')

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

{'A1': [{'B1': 'cu',
         'B2': 1778970325,
         'B3': -0.32572028040885925,
         'B4': 25,
         'B5': -96141747,
         'B6': {'C1': 0.35427653789520264, 'C2': 755311318}},
        {'B1': 'pkrbv',
         'B2': -1307076719,
         'B3': 0.6948146224021912,
         'B4': 242,
         'B5': -92494790,
         'B6': {'C1': -0.8537716269493103, 'C2': -269243012}}],
 'A2': -19194,
 'A3': {'D1': [44, 51, -58, 51],
        'D2': 1003157864,
        'D3': [0.005829446483403444,
               -0.2823348343372345,
               -0.837547779083252,
               -0.8538641333580017]},
 'A4': [10510, 21943, 53200, 13773],
 'A5': 0.8099177101392601}

Пример 2

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

(b'WXH\xd1\x02\x00\x00\x00`\x00\x00\x00^Av\x00\xb51\x16\xbc9\x89\x18>jB6u'
 b'cp\xe4\xbfdueM\xb7b>\xaa.\x084\x03\x00\x00\x00 \x00\x83H0\xb7J|\xc6'
 b'>p\x85\xab\xdd\xc5#\x00keiC \xa9=\xe0"U\x9b\x03\x00\x00\x00@\x00\x8b\x8d;'
 b'I7Z\xfb>\x89\x9c\xdf\xd3\xb6C\x00+\x00\x00\x00K\x00\x00\x00\x8e\xfa\xae\x1d'
 b'0\xbf\xaf\x07\x06\xbf\x88\x9e}\xbf\x02\x00\x00\x00h\x00\x0fN1\x7f'
 b'\x03\x00j\x00')

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

{'A1': [{'B1': 'due',
         'B2': -1221572477,
         'B3': 0.3876670002937317,
         'B4': 112,
         'B5': -975328379,
         'B6': {'C1': 0.2214023619890213, 'C2': 872951466}},
        {'B1': 'kei',
         'B2': 1228639627,
         'B3': 0.4909226596355438,
         'B4': 137,
         'B5': -1227628644,
         'B6': {'C1': 0.08258106559515, 'C2': -1688919328}}],
 'A2': 16734,
 'A3': {'D1': [-114, -6],
        'D2': 2133937679,
        'D3': [-0.6879528760910034, -0.5235547423362732, -0.9907002449035645]},
 'A4': [12725, 48150, 35129, 15896],
 'A5': -0.6387193002029339}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'cFQJjbmckpy\x08\x9a\x00\x00\x00_\x00\x05\x00\x00\x00{\x00\x03\x00\x80\xbf'
 b'\xeaO$nV\t,\xbf.T\x10\xdd\xc7\x00\x88\xb8A\xa7\xb8#\xda\x9a\x17\xcc'
 b'U\x01\'\xe2o\xe9\xe7{\x95E\xdf\xc34\xa9\x8b\x95\xe72\x16G"\xf0l\xe4'
 b'(\x1b)\x1e\xef\x82]\xb1\x8f\xbe\x96\xcd\x9e\x1f\x1e\x9d\x014c?\xe0s\xeer'
 b"L\xa5*\xff(O\x86\xc8\xe7F\x81\x0c<\xf6\xb4\x00\x03\x00'\x00\x02\x00]\xdd"
 b'\xedW\x9d\xd6\xe5\xaak\x82m\x19\xbb\x9a\x19\xb6\xf2*')

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

{'A1': 'jbmckp',
 'A2': 30984,
 'A3': -102,
 'A4': {'B1': 0.5141517860803664,
        'B2': -14135418,
        'B3': -3970127026433755468,
        'B4': [{'C1': -8761,
                'C2': 38483188958897114,
                'C3': 11103568071768924783},
               {'C1': -5657,
                'C2': 8905100665550055819,
                'C3': 10801657302535565420},
               {'C1': -7128,
                'C2': 1957129527102386575,
                'C3': 13733390192723533057}],
        'B5': [52, 99]},
 'A5': {'D1': [-35, -19, 87, -99, -42],
        'D2': [-441816190, 1830402970, 431419946]},
 'A6': -0.8221609263421548,
 'A7': -0.6809701919555664}

Пример 2

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

(b'cFQJvgnkayr\xc7G\x00\x00\x00O\x00\x04\x00\x00\x00k\x00\x03\x00o?'
 b"\xee\x8b\xf4\xc9\x03C\x00>Z<\xd0\xcf'q\x97\x92\xd5\xdc\x087ehb\x86\xde\x92Ag"
 b'\xd86.s\xa7\x8a\xa4\xc2\xff\x1c\xf5I\xad\x1a\xa6*\xb8\xd9\xfc\xba'
 b'\x99\x84\xc2\xbf\xe8\x9e\x0ff\x9e\t\xe0\xfc\xcf\x11\xf2\xee\x9d\x0cF|'
 b"L\xf0\x8a\x00\x02\x00'\x00\x04\x00K\xa8\xe6!\x8d\xbc{\xa8\xa7\x9b"
 b'\xb0h\xd9\xeb\xae\x01\xdb')

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

{'A1': 'vgnkay',
 'A2': 29383,
 'A3': 71,
 'A4': {'B1': -0.7692944530720602,
        'B2': -53538318,
        'B3': -1252831624466468726,
        'B4': [{'C1': -12505,
                'C2': 8185172294986381157,
                'C3': 7521722618156771288},
               {'C1': 13870,
                'C2': 8333782075723160821,
                'C3': 5308928836723333628}],
        'B5': [-70, -103, -124, -62]},
 'A5': {'D1': [-88, -26, 33, -115],
        'D2': [-1132746585, -1682937639, -340917797]},
 'A6': 0.9545844961195087,
 'A7': 0.21312260627746582}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'UKBA\x99jnowozjn7\x00z\x00\x99\x85q\xc4\x9d\x0e\xb6\xa0boH\xc7`\xb4\x0b'
 b'\xa8S\xb5=\xfa\xe3\xbd\x9dI%\xbf\x9b\xba\xb9\xea\x82\xf6\x0fS_\xce\xe7h\xb1'
 b'#\xbc\xbd1\xdf\xe9G&Q#\xfc\x84\x11\x00\x00\x00\xba~Z\x0f\xca\xfa\xcb\x18'
 b"\xbe\x8cE'K\x10\x94\xa6a0* \xcc{\x06\x9a\xca\x10<p\xccUi\xbel\xbe\xb1\x8b"
 b'6?\xde\x88<_d\x9d\xc2\xbb)\xfd\x1c\xfc\xc8\x87Q\xbf\xe8\xe3\xe6\xbaz\x0b'
 b'H\xe8LT\x00\x00\x00\x13+o\xe4\xc6 S\xa5\n\x10\xd9\xe1')

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

{'A1': 153,
 'A2': 'jnowozjn',
 'A3': [{'B1': -0.09186495095491409,
         'B2': -8399,
         'B3': -23,
         'B4': {'C1': 592520775, 'C2': 252},
         'B5': -124,
         'B6': {'D1': [34201, 50289, 3741, 41142, 28514, 51016, 46176, 43019],
                'D2': -19117,
                'D3': [-0.11131713539361954, -0.6456544995307922],
                'D4': [-17765, -5447, -2430, 21263, -12705, 26855]},
         'B7': 257588922,
         'B8': 2829822688959920842},
        {'B1': -0.8184781074523926,
         'B2': -7192,
         'B3': -26,
         'B4': {'C1': 1208711866, 'C2': 232},
         'B5': 76,
         'B6': {'D1': [4171, 42644, 12385, 8234, 31692, 39430, 4298, 28732],
                'D2': 21964,
                'D3': [-0.2311951071023941, 0.7130690217018127],
                'D4': [-30498, 24380, -25244, -17470, -727, -996]},
         'B7': 3832490771,
         'B8': 16274056366389403846}]}

Пример 2

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

(b'UKBA>wuvvedeg7\x00z\x00\xd5\xd4\x8d\xaa6\xa2\x86\x040\xcb\x18&\x7f\xc9\x9b'
 b'3\x05\x93\x03g\xbb\xbd\xa2q<?.\x95\x02\x11/s/D\xd5\xbb\xa5\xd2\x0c'
 b'\\ \xbf\xf23R\x82zeN\xff\x9a\x11\x00\x00\x00\x81a\x02|\x92>\x81\x90'
 b'\x9b\xe6\xcb\x04\x86\x1f\x1eg1Al\xb6\xb8\xb7Cf\xdax\xd6\x90\x9f\x88\xb8\xdf'
 b'\x90>\xe7\xc3/\xbf\x8e\xa2\x01!\n#\xea\x0f\x0c_\xbey\xb9\x92\xbd>Z\xeb'
 b'\xd2\xe3\xf0\x93\x96PKT\x00\x00\x00KzK.\xea\x16\x1d\xf0\x1f\xd8\x7f\x97')

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

{'A1': 62,
 'A2': 'wuvvedeg',
 'A3': [{'B1': -0.6264045238494873,
         'B2': 13298,
         'B3': 82,
         'B4': {'C1': 1315273346, 'C2': 255},
         'B5': -102,
         'B6': {'D1': [54485, 43661, 41526, 1158, 52016, 9752, 51583, 13211],
                'D2': -27899,
                'D3': [-0.09150507301092148, 0.7361088991165161],
                'D4': [-27346, 4354, 29487, 17455, -17451, -11611]},
         'B7': 2080530817,
         'B8': 345623352242683538},
        {'B1': 0.3702600300312042,
         'B2': -5286,
         'B3': -46,
         'B4': {'C1': 2526277859, 'C2': 80},
         'B5': 75,
         'B6': {'D1': [8070, 26398, 16689, 46700, 47032, 26179, 30938, 37078],
                'D2': -30561,
                'D3': [0.2829568386077881, -0.6865829825401306],
                'D4': [-23922, 8449, 8970, 4074, 24332, 31166]},
         'B7': 776698443,
         'B8': 10916681653453395690}]}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'OTU\x05\x00\x00\x009\x00\x05\x00p\x00\x00\x00\xc3\x88M\xb8\x9f\xfbuY\xa4'
 b'\xde\xbf(\xa6>\t\x12\xcc\xbc\xe5\x10\x95=\x07\x83\xcd\xc2\x0f\xfb\x9d'
 b'\x12G\xe2\x13\xf86\xa0\x04\x00\x84\x00\x98\xcd.\xc6C\xb3\xe5h\x01e/\xa9D'
 b'\x17\xc2U\x90S\xcd\x1b\xf2\xd9\xc04\xc7\xfd\x9c\x89 g[B\xb6\xd8\xa7T\x82'
 b't\xa5o\xc4\x9bUgk\xf3t\x0b-\xac\xa9j\\E\x01\xd0>hC)\xbf\x08\x05\n\xbf'
 b'\x97\xfdc\xbfO^\x9c\xbe\xc3\xced>C\x16\xa7\x0b')

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

{'A1': {'B1': {'C1': [{'D1': 46, 'D2': 17350, 'D3': 4947537776505054643},
                      {'D1': 23, 'D2': 21954, 'D3': 3801277719372452752},
                      {'D1': 199, 'D2': 40189, 'D3': 12094617195421048969},
                      {'D1': 84, 'D2': 29826, 'D3': 17540226791107751845},
                      {'D1': 116, 'D2': 11531, 'D3': 4526119022922213804}],
               'C2': [-0.6611847877502441,
                      -0.5391392707824707,
                      -0.8905882239341736,
                      -0.30540701746940613,
                      0.22344498336315155],
               'C3': [-30525, -18355, -1121, 22901],
               'C4': -92,
               'C5': 222},
        'B2': 0.32452961802482605,
        'B3': [-0.024910943582654, 0.0727861300110817],
        'B4': -1026718969},
 'A2': -1265,
 'A3': 3796308637,
 'A4': 19,
 'A5': -8,
 'A6': 41014,
 'A7': [67, 22, 167, 11],
 'A8': -12904}

Пример 2

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

(b'OTU\x03\x00\x00\x009\x00\x04\x00Z\x00\x00\x00\xef=_/\xae\xffGZ\xd2'
 b'\x978\xee\xfe\xbeR=q\xbf\x1e\x13\\\xbf\xd0&\xd91<.i\x8f\x8fth\xcav\xce\x02'
 b'\x00j\x00p>\xa9\x0e\xd7Y\xbb\xd7#8\x9a\xd2\xe3\xd5\xaa\xc9\xb6\x8d:[\n'
 b"\xcb\xfc\xaaI'\xa8\x05\xf1w\xbf\x9ch\x85\x92\xf4\x97\xf5\xbe\xc9\xe9L?\xe3D"
 b'Y\xbf\xc6V\x86=\xd9\xc6')

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

{'A1': {'B1': {'C1': [{'D1': 169, 'D2': 55054, 'D3': 16416353157629066073},
                      {'D1': 213, 'D2': 51626, 'D3': 12320945925919509942},
                      {'D1': 73, 'D2': 43047, 'D3': 10557959923876491525}],
               'C2': [-0.47967493534088135,
                      0.8004422783851624,
                      -0.848707377910614,
                      0.06559519469738007],
               'C3': [15855, 12127, -82, 23111],
               'C4': -46,
               'C5': 151},
        'B2': -0.4979112148284912,
        'B3': [-0.9423419237136841, -0.8596667051315308],
        'B4': 836314832},
 'A2': 11836,
 'A3': 1955565417,
 'A4': 104,
 'A5': -54,
 'A6': 52854,
 'A7': [217, 198],
 'A8': 15984}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"RTZMB\xd8\x11L\xcf\x17!B\x82Q\x00\x00\x00\x02\x00\x8c\x00\xda'\xc8D\x08:o"
 b'J[Bm\x1at\r\x97\xd3\x7f\x14S\xdb\xfb\xbf\xfc\x00\xfdnkb\xaa\xa8\xb5'
 b'\xc6\xacD\x86y\x15\x00\x00\x00\xf76\x03\x00\x00\x00.\x00\x00\x00\xbe'
 b'\x89m\xbfamvane>X\xdc\xb8\x84\x99\xf1J\xc1~\xd5?1\x00)=\x06\x00\x00'
 b'\x00K\x00U*\xeco>p.+`b\xcd\xe8?\x00B9\xc5@\xf8\xca?\xba\xabH\xf3'
 b'\xd4\xcc\xe8?D\xe0\xd4\x9c\x8e\xd8\xd9?\x1bm\xd0q\xf2u]\xa4\xc5?H\xda'
 b'\x80\xdb\x05\xca\xd4y\x90t\x02\x00l\x00\x00\x00b\xd0<?yx\xf6\xea\xc9\xd7'
 b'\xc6\xfb\xef?\x98\x1d\xfe\xffd\xad\xc3\xa0*\x1a\x02\x00|\x00\x00\x00'
 b'U\n\\\xbf')

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

{'A1': 9386100959539368408,
 'A2': {'B1': -1193519042,
        'B2': 0.3358615142700716,
        'B3': {'C1': 8756762034327365802,
               'C2': {'D1': 5363569488409667546,
                      'D2': 16987,
                      'D3': 109,
                      'D4': 26,
                      'D5': 116,
                      'D6': -298553602780981491,
                      'D7': -50266945},
               'C3': 14071,
               'C4': 'nkb',
               'C5': -0.9278830289840698},
        'B4': 15657,
        'B5': 'amvane',
        'B6': 85,
        'B7': 0.23429933190345764},
 'A3': [{'E1': 27931,
         'E2': 0.16907852419980296,
         'E3': -612312504,
         'E4': 51717,
         'E5': 1955625428,
         'E6': [0.7750713232321242, 0.2107010806089562],
         'E7': 0.737554669380188},
        {'E1': 30841,
         'E2': 0.9994844641326768,
         'E3': -123496,
         'E4': 44388,
         'E5': 439001283,
         'E6': [0.77500388637906, 0.4038425952489926],
         'E7': -0.8595326542854309}]}

Пример 2

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

(b'RTZMBFp\x1d\xe2\xdf\x93\xb5#O\x00\x00\x00\x02\x00\x8a\x005\x1b_\xf66\xb0\xf5'
 b"Y\xa9\x8b\xcc\x81\x16\xeeH\xcf\xb1}D~]`\xc8\xb0\x0bbk\xe2'\xdc\xdf"
 b'\xa0\xc1\xbb\xe7\x15\x00\x00\x00\xd4\xe1\x02\x00\x00\x00.\x00\x00\x00_\xce'
 b'\xc9>hauly\x99\xcbPDh\xd7|\x1a\xd7\xfe\xe4?0\x00FO\x05\x00\x00\x00J'
 b'\x00Z\x15.\x17\xbf\x80\xc5\xf0\xa3\x1c8\xc7\xbf\xc0d\x91a\xae\xd2'
 b'\xd5\xbf\x00\xa8\x99\xe9\xd7TK\xbf\xd4\xd8\xb46\xa4W\xec\xbf^\x18\x14\x19jW'
 b'NS\xe2\xbf\x86\x18xe\x90R\x13\x92\xbc\xc2\x02\x00j\x00\x00\x00\x07\xe0A\xbf'
 b'2d\x88^\xb1\xd0\xd0@\xde\xbf\xe6\xa4\x86\xd3t\x86\xe7\x92\xdd\x82'
 b'\x02\x00z\x00\x00\x00\x7f\x95\x11\xbf')

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

{'A1': 2573125351892676678,
 'A2': {'B1': 1146145689,
        'B2': 0.6561084287011285,
        'B3': {'C1': 16698152940100921314,
               'C2': {'D1': 6482280988777847605,
                      'D2': -29783,
                      'D3': -52,
                      'D4': -127,
                      'D5': 22,
                      'D6': 6736897399237593326,
                      'D7': 196135008},
               'C3': -7724,
               'C4': 'bk',
               'C5': 0.39415261149406433},
        'B4': 20294,
        'B5': 'hauly',
        'B6': 90,
        'B7': -0.5905469059944153},
 'A3': [{'E1': 6238,
         'E2': -0.5726691920579321,
         'E3': 1702369414,
         'E4': 21136,
         'E5': 3267138067,
         'E6': [-0.18139989857585803, -0.3409839585124921],
         'E7': -0.7573246359825134},
        {'E1': 25650,
         'E2': -0.47270603542481426,
         'E3': -746150682,
         'E4': 34420,
         'E5': 2195559143,
         'E6': [-0.0008340887317903611, -0.8856984203801184],
         'E7': -0.568687379360199}]}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'PJXT?\x003\x00_\x0b\xe7H|U\xe6\x08,\x00wa\x11\x84d\xae\xac\x06\x02X\x8ak"e'
 b"\xd7\xff\xce\xd9\xd5\xb6\xa8\x91\xa9\x8f\xa3\x8a'\xc8\x1f\xd3\x01\xb3Rn"
 b'i?\xdbt{\x9b@\xab\xa0\x00\x13:\xd4\xf9\xf0n\xbe\x97\xa9\xd98"\x89\xd8'
 b'\x15\xa0\x06\xdfbX\x89\x05\x95j\x06b\xf0\nD\x94\xb9`\x01uf?\xdc\x9b\r&\xfd"'
 b't\x00?\xbf:D\xb2?X\xbb6?m\x97\x94\x07O\xcd\xd8\x00\x03\x00k\x90\xc8')

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

{'A1': 63,
 'A2': [{'B1': 'ni',
         'B2': 0.42898454820049814,
         'B3': {'C1': 6994517264245196290,
                'C2': 6380029617605443534,
                'C3': [3654661800, 2443808675, 2317862943, 3540104018]}},
        {'B1': 'uf',
         'B2': 0.4469635849714344,
         'B3': {'C1': 4239287960307931049,
                'C2': 15652298480357318662,
                'C3': [3747764361, 93678086, 1659898436, 2495176705]}}],
 'A3': 857733952891652140,
 'A4': {'D1': 122670552,
        'D2': [-0.72761070728302, 0.8466066122055054, 0.9280941486358643],
        'D3': 37064}}

Пример 2

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

(b'PJXTc\x003\x00_)\x08\xa9@J\x01U\xec\x00w\xc7qf\xbd\x93\r\xc5\xba\x8e'
 b'\xa0\x94\x10{\xefj*\x95\xed\x10\xaaf"?@7\xfaY\x93\xa6f\xe9{yf\xbf\xc3\xe2'
 b'\xa3\xda$b\xa8\x00\x13\x9c\xa0\xe7\xedk\xb5\xa3q6\x86E\x99\xfe'
 b'\x0b\xfb\xf5\xe9\x9b\xac>6\x08\x02c\x8ah\xb0Ze\xf8\xefKew\xbf\xcf\x1c'
 b'\x95\x9e\xfb\xfex\x00?\xbfJ>\xf1>\x9c$r;\x88e\xb9\xaf:Q\xa3\x00\x03\x00k\xad'
 b'\xca')

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

{'A1': 99,
 'A2': [{'B1': 'yf',
         'B2': -0.15535400535079202,
         'B3': {'C1': 14371380850317968826,
                'C2': 10277377148179147306,
                'C3': [2515341482, 1713520448, 939153811, 2791762299]}},
        {'B1': 'ew',
         'B2': -0.2430598284045009,
         'B3': {'C1': 11286275673090794353,
                'C2': 3928904252621847541,
                'C3': [3919293502, 906494563, 2322116698, 1710813003]}}],
 'A3': 2956799248953333228,
 'A4': {'D1': -1355132509,
        'D2': [-0.7900229096412659, 0.3049655556678772, 0.004162516910582781],
        'D3': 44490}}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'uGPH\x00\x00\x00B>\x83\xdb\xb5?\x7f\x1cA\xd1\xbef\x05:\xa1\xb1\xa9\xa5\x98$P'
 b'\xb0n\xb9kh\xb5|K\x98\xf7w\xd9\xbb\x9a\xabV/\\\xf0Z\xfa\xdf \xe9'
 b'\xa8\xfdB\xd9 \x05\x98\xc0/Z\xdd~V\x7f8\x00\x00\x00\x0c\x00\x05\x00\x00\x00'
 b'5\xbc\xecd`O\xa9\xb0\xbd\x94\x91\xf4\x1c\x06\x8e\xd1\xc4\x0f\x00\x00'
 b'\x00\x03\x00??5\x94\x03f[')

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

{'A1': {'B1': 56,
        'B2': {'C1': 0.9965248703956604,
               'C2': [{'D1': -47,
                       'D2': -66,
                       'D3': [26117, 15009, 45481, 42392, 9296, 45166, 47467],
                       'D4': 26805},
                      {'D1': 124,
                       'D2': 75,
                       'D3': [39159, 30681, 48026, 43862, 12124, 61530, 64223],
                       'D4': 8425}],
               'C3': 168},
        'B3': [-702, -9952, 1432, -16337, 23261],
        'B4': {'E1': -0.02885645627975464,
               'E2': 5740313528348308508,
               'E3': 1678,
               'E4': -47,
               'E5': 50191,
               'E6': [126, 86, 127],
               'E7': 0.7092897295951843,
               'E8': 26203}},
 'A2': 0.2575356066226959}

Пример 2

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

(b'uGPH\x00\x00\x00D?(\x88\xa1>+\xa5\xc4I\xef\xbc\xd0\xab\x90\x98\x08*(\xf8\xe5'
 b'\r\xaf\xe1\xab\xe9\x92M\xaeF~.\xae\x130\xf1\xd9\xae\xad7^\x10\xaf|h'
 b'\xa0\x0b=\xdd\xac\x0c\xe4P\x04$\n\x86D\xa2\x03\x00\xd0\x00\x00\x00'
 b'\x0c\x00\x05\x00\x00\x005?aX\x0c_\xf6g\x18\xbc\xc3iN\x0c\xee\xbe\n\x95'
 b'\x00\x00\x00\x05\x00??jv\x15:\xeb')

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

{'A1': {'B1': -48,
        'B2': {'C1': 0.16762453317642212,
               'C2': [{'D1': 73,
                       'D2': -17,
                       'D3': [48336, 43920, 38920, 10792, 63717, 3503, 57771],
                       'D4': -5742},
                      {'D1': 77,
                       'D2': -82,
                       'D3': [18046, 11950, 4912, 61913, 44717, 14174, 4271],
                       'D4': 31848}],
               'C3': 160},
        'B3': [2877, -8788, 3300, 20484, 9226],
        'B4': {'E1': 0.8802497386932373,
               'E2': 6914827633817774414,
               'E3': 3310,
               'E4': -66,
               'E5': 2709,
               'E6': [-122, 68, -94, 3, 0],
               'E7': 0.9158642888069153,
               'E8': 15083}},
 'A2': 0.6583347916603088}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XYTL\x1deejmgo\xcfj\x88\x89\x89\xee\xf5.\xd5?V\x00`\x00j\x00t\x00~\x00\x88'
 b'\x00\x92\x00\xac\xca\xb9a\xa15\xef?\xf9\xa5\xd5g\xf8O\xc0gn\xf5\xa7\x8aF'
 b'\xbe\x8d9\xd5|\x127\x19#\xa3\xe0<b\x9f\xc8\x0500\x08\xb6\xd9\xe7Lv'
 b'\xbd\xaa\xa6\\u\xd5\x7fm\xc84\xb8\xc1\xf6\xbec2\x8e\xfe=\xb5(\xa5_\xbe'
 b"\xbf-\x12\xddN'\x84\x95S\xbf\x05\x07UR\xc7\x01\xe5\xeb\x07?\xd2;\x9f\xcf"
 b'\xfd"\x00\x88\xcb\xbe\x16i\xc2\xf4\xa2a\xc4W\x0c?5\x0f(h\x86?\xf9\xfd'
 b'@\xbf\xfeQ')

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

{'A1': 'eejmgo',
 'A2': {'B1': 27343,
        'B2': 0.3309912518945102,
        'B3': [{'C1': 885550463, 'C2': -0.4819467067718506, 'C3': 12899},
               {'C1': 3040738958, 'C2': -0.21840345859527588, 'C3': 11711},
               {'C1': 659479826, 'C2': -0.8265001773834229, 'C3': 1797},
               {'C1': 29839957, 'C2': 0.5309432148933411, 'C3': 15314},
               {'C1': 587059103, 'C2': -0.39752197265625, 'C3': 26902},
               {'C1': 1638069442, 'C2': 0.5482141971588135, 'C3': 3893},
               {'C1': 1065773096, 'C2': -0.7538753151893616, 'C3': 20990}],
        'B4': 0.9752966793733626,
        'B5': 249,
        'B6': 165,
        'B7': [26581, 20472, 26560, -2706],
        'B8': -0.19388829171657562},
 'A3': {'D1': -115,
        'D2': 310170937,
        'D3': [11484808935255513399,
               16706584438992012744,
               15381301973252666956]}}

Пример 2

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

(b'XYTL\x1dmqfokc\x91\x84\x1cw\x04\xbb\xfe\xa2\xe1?V\x00`\x00j\x00t'
 b'\x00~\x00\x88\x00\x92\x00\xe8)\xb8\x03Y\xf2\xca?h\x8d\xd8\xa1\xb7'
 b'G\xd2\x1c\xe8r\xefR?\xbf\xfcm_\xa83\t\xbf\x8dLU\x8a\x17\x08\x9e=]V\xd3^'
 b'\x04,\x04\xe7\xb1\x04G\xa8\xfft\x05\xe6\x03v_\xdff\xbfN\xb6\xfc\xefx\xf7'
 b'\xb5"r\xbf~\xde\xc8\xa2\t\xf5g\x90j\xbejOA\n\xd1r\xba\x9f#?N\xb5R6'
 b'\xcd\xb4\xd0\xd9J?\x1bB=B\xa0\xd7\x9c\xba^\xbe;\xfe-\x12\x1aW\xeb\xb5'
 b'\xc8\xbe\xbe\xcf')

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

{'A1': 'mqfokc',
 'A2': {'B1': 33937,
        'B2': 0.5511468556103156,
        'B3': [{'C1': 1979966981, 'C2': -0.9018458724021912, 'C3': -18866},
               {'C1': 4151898108, 'C2': -0.9458420872688293, 'C3': -8578},
               {'C1': 4111049416, 'C2': -0.22906647622585297, 'C3': 20330},
               {'C1': 1926302273, 'C2': 0.6391559839248657, 'C3': -19122},
               {'C1': 3033347666, 'C2': 0.7923860549926758, 'C3': 16923},
               {'C1': 3617604157, 'C2': -0.2175087332725525, 'C3': -453},
               {'C1': 1461326381, 'C2': -0.39201292395591736, 'C3': -12354}],
        'B4': 0.2105208652649957,
        'B5': 104,
        'B6': 141,
        'B7': [-24104, 18359, 7378, 29416],
        'B8': -0.7473592162132263},
 'A3': {'D1': -4,
        'D2': 866672493,
        'D3': [583086775728979721, 3171764299355733406, 8430642050435770116]}}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'MBY\x00?\x00\x00\x00\x05\x00];\x85\x1bV<\x95+Q <\xccKf\x00\x06\x00\x00'
 b'\x00b\x00z\x87\xb1X\x19\x8e\x93\x9aHp\x83\x89\xcc\xb6\xc2\xb8\xa7'
 b'\x17\xfc\x06\x9d\xf3%\xe0\x16\xdc\x10\xb8G\xf7\xa0\xad\xea\x8b\xb9\xe8\x9f'
 b'\x99\xbb\xb9\x00\x00\x00 :,O\x95s:\xb2\x83a\xf8\x00\x00\x00\x02\x00\x00\x00'
 b"/ogkrn\xbd6\xfa^M\xf7\xad\xde\xd9G\x0bb\x87\xa3y\x95'T{\x16I>\xc0\x1d#3"
 b'q\xdd\xda\xe5\xf7\xed\x95\xbf\xc0\x1a\x82\x16\xf1;\xf0')

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

{'A1': {'B1': {'C1': 16900806435399121849,
               'C2': {'D1': [135, 177, 88],
                      'D2': 1841571588490691465,
                      'D3': -13130,
                      'D4': 49848},
               'C3': 4191812856477037187},
        'B2': 25080,
        'B3': [{'E1': 42775, 'E2': 4228292083, 'E3': 9696},
               {'E1': 5852, 'E2': 280512503, 'E3': -24403}]},
 'A2': 'ogkrn',
 'A3': 15237,
 'A4': 6998,
 'A5': [60, -107, 43, 81, 32],
 'A6': 0.024938296526670456,
 'A7': [-1120470434,
        1308077534,
        -649655454,
        -2019329643,
        659847958,
        1228849181],
 'A8': {'F1': 590574045,
        'F2': 3672504301,
        'F3': -107,
        'F4': -0.12580896492224225}}

Пример 2

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

(b'MBY\x00?\x00\x00\x00\x04\x00]\xf7\x81\x95\xce\x01U\xbf\xfd\x10\xbf>\x85\xce'
 b'\x00\x03\x00\x00\x00a\x00m\x16\x86\xa1\xc2Sh\x14-3\xe5\x06\x80\x99\xcd>E'
 b's\xaf58\x8dD%\xaf\xb6l\xeb:#u\xa6U\x1f\xf2J\xa3\xbe(\x99\x00\x00\x00 \x82'
 b'w\x14,Q\xdeC\xd4k\xe8\x00\x00\x00\x02\x00\x00\x00/qwhf\xd8\xed\xeb\xefKb\xd7'
 b'\x80\x9f\x02\xd9w\xb3 \xd0lWOx\xea\xb1?\xa8P\x07\x92\xc0\xb5 ')

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

{'A1': {'B1': {'C1': 6133887619890555033,
               'C2': {'D1': [22, 134, 161],
                      'D2': -4444093971417537274,
                      'D3': -32615,
                      'D4': 52542},
               'C3': 9401004927743837140},
        'B2': 27624,
        'B3': [{'E1': 17779, 'E2': 2939500685, 'E3': 17445},
               {'E1': 44982, 'E2': 1827355171, 'E3': 30118}]},
 'A2': 'qwhf',
 'A3': -2175,
 'A4': -27186,
 'A5': [1, 85, -65, -3, 16],
 'A6': -0.7442291975021362,
 'A7': [-655496209, 1264768896, -1627203209],
 'A8': {'F1': -1289695124,
        'F2': 1464826090,
        'F3': -79,
        'F4': 0.047485577263026935}}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xf0GKX\xbf3\xbc\x00\x02\x00\x00\x00z.#\xb5\x1e\xb7.\xbf\xc1\x99\xbd\x0bWp8"'
 b'\xd0\xa3\x89\x82\x9du\xb1\xa4t(\xa9Np\xe8\xf7l\xbe0\x93}@o\x04\x00'
 b'\x02\x00\x82\xbf\xde+s\x86\na\\\xd8\xf7t\xd0\x1c\xed\xfcy\x94\r[{\x17'
 b'\xa1W\xec$\xf4-\n-\t\xdd\x19\x9e\x8d\xef\x83\xd0/ (\x00\x03\x00\x8a\xc6'
 b"\x885Jl\xbf\x1e\xf4_\xedg'[?<\xf7\xf4\xc6\xbf\x02\xa4Qw\x00\x00\x00p\x00\x00"
 b'\x00uY{\xbe>4E%Sj\x0f4\x02Sj\xd2\x1fA\xc2$A\x04{\xadl\x9f\xc2\x084\n\xb1'
 b'\xf2\x7f')

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

{'A1': [191, 51, 188],
 'A2': [{'B1': 0.7381584644317627, 'B2': 198},
        {'B1': -0.5103197693824768, 'B2': 119}],
 'A3': {'C1': {'D1': 774092062, 'D2': 46894},
        'C2': -0.1375042252901737,
        'C3': [2508684803442570673, 11850141227149224183, 7835753811690942212],
        'C4': {'E1': [1501281854, 876946771],
               'E2': -0.471402054690335,
               'E3': 3640095952,
               'E4': 7405},
        'C5': 18192734954830108577,
        'C6': 6335479406949707017,
        'C7': -8935},
 'A4': -7021692894588231640,
 'A5': {'F1': [7642384277265109535, 4738389619613871468, 11511772617123164799],
        'F2': -58,
        'F3': -30667,
        'F4': 19052,
        'F5': 13771713403387586395}}

Пример 2

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

(b'\xf0GKX\x07Z\xac\x00\x02\x00\x00\x00z\x0c\xc4<?}\xc0\xbf\xe3\xf3P\x97'
 b'\xbaf\xd8\xef\xc4\x03\xa8Pb\xcc\xa8\xef\x0fcV*\xde\xa3\x90:\xa7\x95M\x8e'
 b'\xc4\xe8E\x00\x05\x00\x82\xbf\xe5YT\xe0\x81\n \xdf\x8d\x8c\x05\x98'
 b'\x8a]\xcb\x1f\x07\x83\xf5D\xc9\x90\xeb\xb0l!\xdb[X\xab\xe5\xc81\xa7\xd6\xc2'
 b'\xd0l\xd3\x00\x03\x00\x96j\xd6\xa9\xb25\x93\xffjR\xdc\x8bQW?(\xb3\x92'
 b'\xd8\xbf2YpA\x00\x00\x00p\x00\x00\x00u\x94f\x8e\xa6,\xab\xcb\xc2\xfe#'
 b'F\xc5\x07\xc4\xc8\xed\xa9\xf6_\xdc\\\xcc_\x1e\xb0\xfd\x06\x82\xe1\xd2'
 b'\x9fv2\xdb\xefm(\x7f\xac\xa5b\x0eM\xbd')

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

{'A1': [7, 90, 172],
 'A2': [{'B1': 0.6589900255203247, 'B2': 216},
        {'B1': -0.6966772079467773, 'B2': 65}],
 'A3': {'C1': {'D1': 214187071, 'D2': 32192},
        'C2': -0.6234515155258249,
        'C3': [17276938091938106536, 17226096321453007760, 4226510935650789445],
        'C4': {'E1': [2489749158, 749456322, 4263724741, 130337005, 2851495900],
               'E2': -0.6671547303051888,
               'E3': 3750595589,
               'E4': -26486},
        'C5': 6758529782938682569,
        'C6': -8004109934249944232,
        'C7': -21531},
 'A4': -4021248451431863085,
 'A5': {'F1': [6686824132161373826, 16272243733651255149, 2918240909874056637],
        'F2': 106,
        'F3': -10583,
        'F4': -19915,
        'F5': 10664359346756604247}}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LMMp\x00\x00\x00\x1c>\xa7j-Y\xf7\x98\xbd>\x9c\x0cN9\x1d\xcd\x14#\r\x8cx'
 b"\xf0\x1a1@\xf3\x181/jY'\x02\xb1\x94\x98\xa5o\xffQ\x05*\xae\x1dW}\xd9\xb1\xef"
 b'#\xf4\x17(\x13O\xe7\xc25\xa0\xfd\xec>\xfd\xa1fL\x8f\x92\x0e8\xc5[r'
 b'D\xd0\x9e\x19/\xfa\xe2\xc1H\xe0\xc8eS4\x99\x16-\xdb\xba\x86\xbf6E7A9}\xdd'
 b'4\x1ff\xde\xad\xb8$\xb2\xe6\x19 \xc9\xcd{\xa0\xe1\xb5\xaa:D\xf4\x0f\xf5J'
 b'0\xc5\x80\xd0\x00\x02\x00\x14')

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

{'A1': {'B1': 4028248384,
        'B2': [{'C1': 62232,
                'C2': 12591,
                'C3': [106, 89, 39, 2],
                'C4': -5650723796127100667,
                'C5': 716053847,
                'C6': 32217},
               {'C1': 45551,
                'C2': 9204,
                'C3': [23, 40, 19, 79],
                'C4': -1746774739895173379,
                'C5': 2707836047,
                'C6': -28146},
               {'C1': 14533,
                'C2': 23410,
                'C3': [68, 208, 158, 25],
                'C4': 3457324983739533413,
                'C5': 1395955990,
                'C6': 11739},
               {'C1': 47750,
                'C2': 48950,
                'C3': [69, 55, 65, 57],
                'C4': 9069462534068547000,
                'C5': 615704089,
                'C6': 8393}],
        'B3': {'D1': -51,
               'D2': [123, -96, -31, -75, -86, 58],
               'D3': 1156845557},
        'B4': 1244710272,
        'B5': 208,
        'B6': [958254356, 588090488]},
 'A2': 0.32698193192481995,
 'A3': 1509398717,
 'A4': 0.30478137731552124}

Пример 2

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

(b'LMMp\x00\x00\x00\x1c>\x8aj(wY\t\xe9\xbaG\xff\xb7\xf1\x19\xeb\xda\x86<!h'
 b'\xf5\x8b\xb1\x1a\x98\x18]0\x99\xc0\x80s\x14\x12^v\xcb]@h\\0\x94\xa4'
 b'$o\xa5\xcb$V_S\x16\x92\x82{\xfd\x080z\xe2\xd9\x12mO\x9fO\xc5C\xd2\xf7\x8f'
 b'\xe2\x16\xd3\xba\xbd\xe0z\x19\x0e\xfd\xba\x0bc/mA?{V9\xc11r\xf7JO\x91\xe0'
 b'\xecgg\x91x;a\xe2\x88\x8b$\xf1\xaeeS\xe2`\xf4[}!\xff\xc9f\xc0U\x94\xdf'
 b'\x00\x02\x00\x14')

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

{'A1': {'B1': 4119572762,
        'B2': [{'C1': 38936,
                'C2': 23856,
                'C3': [153, 192, 128, 115],
                'C4': 1446322294650388584,
                'C5': 1546687652,
                'C6': 9327},
               {'C1': 42443,
                'C2': 9302,
                'C3': [95, 83, 22, 146],
                'C4': -9044357215028583719,
                'C5': 309153695,
                'C6': 20421},
               {'C1': 17362,
                'C2': 63375,
                'C3': [226, 22, 211, 186],
                'C4': -4764674157713704437,
                'C5': 1664052545,
                'C6': 16251},
               {'C1': 22073,
                'C2': 49457,
                'C3': [114, 247, 74, 79],
                'C4': -7935082614563440581,
                'C5': 1642236043,
                'C6': 9457}],
        'B3': {'D1': -82, 'D2': [101, 83, -30, 96, -12, 91], 'D3': 2099380169},
        'B4': 1723880852,
        'B5': 223,
        'B6': [4045007834, 2252087656]},
 'A2': 0.270341157913208,
 'A3': 2002323945,
 'A4': -0.0007629352039657533}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FBV0\x0c\xa3Z\x9bl\x00\x00\x00\x07\x00)H\xc5+@\xb9]\xff?\xbdQHd\x01'
 b'\xb0\xbf:\xfd\xe5\x000\x00\x00\x00\x04\x00\x81\xe9\xe2/\xcf\xfe\x10\x1c'
 b'\x05\x13oywltuu\xccI\xb7\xa6\x0c\xb8y\xaa\x02&\x1a\xc4_\x8eN\xa2\x1eb\x00'
 b'/\x1a?ttUs\xf0\x04\xdc\xd4\xf5\xaf\xa9E3\x1b>\xc9\xa0m\xb4\xd1\xa2'
 b"\n\xee\x15\x16\xde@i>>\x9f\xc8\xcc\xab'\xe6)\xa7:6^\xe6!\xfe\xbe \xad*\xc6"
 b'\x81\x00\x00\x00E\x00\x00\x00T\x00\x00\x00c\x00\x00\x00r')

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

{'A1': 806134618,
 'A2': 39788,
 'A3': [-23, -30, 47, -49, -2, 16, 28],
 'A4': {'B1': 18629, 'B2': 725662045},
 'A5': 18392627560008909232,
 'A6': -0.7304366230964661,
 'A7': {'C1': 1299,
        'C2': 'oywltuu',
        'C3': -3726245292866504278,
        'C4': 36051652},
 'A8': [{'D1': [95, -114, 78, -94, 30, 98],
         'D2': 47,
         'D3': 26,
         'D4': 0.9549000859260559,
         'D5': 115,
         'D6': 240},
        {'D1': [4, -36, -44, -11, -81, -87],
         'D2': 17715,
         'D3': 27,
         'D4': 0.39380207657814026,
         'D5': 180,
         'D6': 209},
        {'D1': [-94, 10, -18, 21, 22, -34],
         'D2': 16489,
         'D3': 62,
         'D4': 0.3120788335800171,
         'D5': 171,
         'D6': 39},
        {'D1': [-26, 41, -89, 58, 54, 94],
         'D2': -6623,
         'D3': 254,
         'D4': -0.15691056847572327,
         'D5': 198,
         'D6': 129}]}

Пример 2

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

(b'FBV\x04~p\xf2o\xb7\x00\x00\x00\x07\x00)\xe4\xe3\x99\xb4X\xe3\xdf2\xe0'
 b'\xc8_\x1ee\xa7\xbe\x95\x04\x05\x000\x00\x00\x00\x03\x00r\x82VZ8NPhy\xf3tu'
 b'mswxh\x9f\xef\x85\xa8D\xdb\xc3\x1eiq<\x15Y\x8d\xf6Wi\xf1Y\xde\xac\xbd\x91'
 b'%Uk\x9aUk\x1d_a\xf4\xfe\x06\xbf?At\xce\ry\x0cN\xf1\xf2\xef\x84\x1b\x12+'
 b'\xbf*\xa7\xd2\xd5v\x00\x00\x00E\x00\x00\x00T\x00\x00\x00c')

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

{'A1': 75395314,
 'A2': 28599,
 'A3': [-126, 86, 90, 56, 78, 80, 104],
 'A4': {'B1': -6941, 'B2': 2578733283},
 'A5': 16083164370487371175,
 'A6': -0.29104629158973694,
 'A7': {'C1': 31219,
        'C2': 'tumswxh',
        'C3': -6922167144488910050,
        'C4': 1769028629},
 'A8': [{'D1': [89, -115, -10, 87, 105, -15],
         'D2': 23006,
         'D3': 172,
         'D4': -0.0708719864487648,
         'D5': 107,
         'D6': 154},
        {'D1': [85, 107, 29, 95, 97, -12],
         'D2': -506,
         'D3': 191,
         'D4': 0.7556885480880737,
         'D5': 13,
         'D6': 121},
        {'D1': [12, 78, -15, -14, -17, -124],
         'D2': 6930,
         'D3': 43,
         'D4': -0.6666232347488403,
         'D5': 213,
         'D6': 118}]}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'TSK\x8d\xdfn\xa2l\x00\x18\xee2\x92f\x1c\xda\xbf98\x02\x00\x00\x00\x9c'
 b'\x00\x00\x00V\xc9},2r\xe4\xbf=\xb7\x04\x00\x00\x00\x9e\x00\x00\x00\xe8pE'
 b'\x83\x9d\xf4\xe9\xbf\xc7\x04\x02\x00\x00\x00\xa2\x00\x00\x00~\xe1l};'
 b'9\x97u\xd0\nm\xad\xd0[\xbe`\xb9X?9\xe7\xba\xbb\x808\x02?]\xa3\xcd\xfd\xac\r'
 b'\xce\xab\x82\xe2z\x00\x17\x07\x8b\x8f\x14\x0eA\xe0\x08\x82\xa5\xbe\xf3o'
 b'\xeb\xbf12\x8c\x18K\x8ej~\xbczD\xda0\xac`\x1a\xdd\xdd\x16\xcc\x04\x00'
 b'\x00\x00J\x00\x10\xafJ?Z\x00\x00\x00\xca\x7f\xfe\x8a\x1d\xfa\x88\x18'
 b'\x98\x05\x07!')

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

{'A1': 2725175181,
 'A2': {'B1': -8127,
        'B2': -0.8574160312237504,
        'B3': 12849,
        'B4': {'C1': 8844082764367730828,
               'C2': 55876,
               'C3': [442543152, -870916643],
               'C4': [-0.21466322243213654,
                      0.8465785980224609,
                      -0.005703833419829607,
                      0.5086746215820312],
               'C5': 0.7917337417602539,
               'C6': {'D1': -6066896611377831075,
                      'D2': -126,
                      'D3': 1481555664995121890,
                      'D4': 14},
               'C7': 2331934666}},
 'A3': [{'E1': -0.4079834392284467, 'E2': 14393, 'E3': [29, -6]},
        {'E1': -0.6389399403545137, 'E2': 46909, 'E3': [-120, 24, -104, 5]},
        {'E1': -0.8111102641956025, 'E2': 1223, 'E3': [7, 33]}],
 'A4': [126, -31, 108, 125, 59],
 'A5': -797599943,
 'A6': 27914}

Пример 2

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

(b'TSKq\x03\x85\x9dh\x00\xfc\xb9sL|:\xdf?\np\x02\x00\x00\x00\x98'
 b'\x00\x00\x00\xf4E\xdd\xfc2\xac\xea?f\xa6\x03\x00\x00\x00\x9a\x00\x00'
 b'\x00\xaa\x04\xfe\x8ah\x08\xe1?\n0\x02\x00\x00\x00\x9d\x00\x00\x004\x87p\xb0v'
 b'\x14,"\xd6+\x04\xbf;&?\xc2\x84R?\xca\xf3\xc6\xbd\xb3\xdcii?\xfe\xf2\x9d6\x9b'
 b'\xc5\x82\xa8\x84\xa9"\xe0\xa1\x10F\x90\xa3\x1c\xa7\xde\x9d\xed\xbf\x16\xf0'
 b']\x1c:\xa2\xa2UE\xb3\x10\x92\x18\x95*\xa8\r\xe3\xcd\x93\x03\x00\x00\x00J\x00'
 b'\x7f\x19u\xbfV\x00\x00\x00\x9e|\xe2\x01\xbd\x0b5\xa9\x9c\x14\xd9')

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

{'A1': 2642740081,
 'A2': {'B1': 17936,
        'B2': -0.9255212081817366,
        'B3': -4074,
        'B4': {'C1': -5528918810532635555,
               'C2': 37392,
               'C3': [-1473604328, -1815223539],
               'C4': [0.6493491530418396,
                      0.8223382234573364,
                      -0.09714467823505402],
               'C5': -0.957420289516449,
               'C6': {'D1': -7065305317085946701,
                      'D2': 54,
                      'D3': -2296086472777611877,
                      'D4': 161},
               'C7': 31620254}},
 'A3': [{'E1': 0.4879446741678348, 'E2': 28682, 'E3': [-67, 11]},
        {'E1': 0.8335204066044626, 'E2': 42598, 'E3': [53, -87, -100]},
        {'E1': 0.5322764124577095, 'E2': 12298, 'E3': [20, -39]}],
 'A4': [52, -121, 112, -80, 118],
 'A5': -702403564,
 'A6': 1067}