ИВБО-05-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XKZ\x00\x00\x00\x1c\xb9\x14\xfb\ts\x00\x00\x00\x02\x00N\x00\x00'
 b'\x00\x04\x00\x00\x00R\x00\x8ambgv\x7f\x85\xb7c[\x1a\xa6/"m\xdaS\xe8a\xbfw'
 b'\xa5@\x00\x07\x00\x00\x00$\xdaJ\x1a\x96;\x87\x94-\xb7< \x02]$\x00\x06'
 b'\x00\x00\x00:\x11\x8e\x002\x00F\xd6\xd1;\xb1\xd5z\xc9\xe7\xa9\xce'
 b'\x8f\r\xf1\x07\x8e\x93*\xfa4\x00\xab(\x04g\x0f\xdb\x16\x1b\x0e\x7f\xd8>\xa8,'
 b'\xc2\xd3\xaa\x91H\xec4\x89\xf8H\x7f\xf4\xc5\xd8\x0f\x94Gu\x8f\xe1'
 b'\xd6\x83Q\xff\xab)\xc7wZz\xbf\xce\x95\xd8(/\xdf\x08\x00\x00\x00\x06\x00Z')

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

{'A1': {'B1': 'mbgv', 'B2': 2139469667},
 'A2': -71,
 'A3': 351996275,
 'A4': [{'C1': [23322, 42543, 8813, 55891, 59489, 49015, 42304],
         'C2': -38,
         'C3': 74},
        {'C1': [6806, 15239, 37933, 46908, 8194, 23844], 'C2': 17, 'C3': 142}],
 'A5': [54993, 15281, 54650, 51687],
 'A6': {'D1': 5908629432061876858,
        'D2': -0.2389478870606967,
        'D3': [12235874527653367443,
               3096844871246808167,
               1142531235931740222,
               12118274911702698220,
               3785829952049694168,
               1122600777372784259]}}

Пример 2

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

(b'XKZ\x00\x00\x00\x1c?\x01\xbb\xd35\x00\x00\x00\x02\x00P\x00\x00'
 b'\x00\x03\x00\x00\x00T\x00rdmxm)\xe2\x18\xc6\r\x160\x00\x1f\xda\xca\x0b'
 b"H_m\x14/\x05\x00\x07\x00\x00\x00$\xe7\xc3\xe3\xf7s\xd0\xb3\x91\xea'\x82\xed"
 b'z4\xb1\xf8\x00\x07\x00\x00\x00:l\x1c\x002\x00H\x914\x1aH\xc1\xab\xdc\xa3'
 b'\x89\x89i\x1e[\xc5\xce\xdfp\x88\x02m\xeesE~\xa6\xb13H\x1b\x05Y\xb5CZ\xd4\xf7'
 b'\xf2\xfd\xbf\xdc\x8d\x83\xd9L\x1a\xdc\x00\x00\x00\x03\x00Z')

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

{'A1': {'B1': 'dmxm', 'B2': 702683334},
 'A2': 63,
 'A3': 29086517,
 'A4': [{'C1': [3350, 12288, 8154, 51723, 18527, 27924, 12037],
         'C2': -25,
         'C3': 195},
        {'C1': [58359, 29648, 45969, 59943, 33517, 31284, 45560],
         'C2': 108,
         'C3': 28}],
 'A5': [37172, 6728, 49579],
 'A6': {'D1': 6464146897559352061,
        'D2': -0.4461373922389791,
        'D3': [15898702332815104965,
               14906757021078253171,
               5007623115682355973]}}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'QWDRi\x00)\xbaC_8\xe7\x99*\x95w\xbf\xe6b[>\x8e\xdb\xc0\xf8X\xbf\x93'
 b'89\xf9\xf0\xbe\x83D3?*\xa4\xb5>,\xd7\x02\x00\x00\x00!\x00\x00\x00\x96'
 b'{\x8f \x84a\xae\xc6z\xd6\x9cf\xbf\x81\xc9Z\xbf)\x00~R\x02\x00\x00\x00'
 b'<\x00\xe67\xc8\xca>\xf7\xc8\xf3\xe8\x9a\xa5\x04\xe1A\xd9r\xf0\x04'
 b'\xbe\xbe\xdf\x89|]\x12\xd4*\xfe\x12\xd4\x95\x89\xae\x1b\xbf&\xcf\xe0'
 b'\xbez\xb4\x01z\xb8\xd6v.\xc8H\x91Y\xd4\x03\x03\x00\x0f\x00\x0eV\xf8\xc7&'
 b'\xff\xed\xbf^\xa7\xedD\xdb\xeb\x90\xd2D\x00\x00\x00c\x00\xc1\xf1\xf3'
 b'\xfe\xfa\xd0')

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

{'A1': {'B1': {'C1': -1781263618,
               'C2': -0.6081319451332092,
               'C3': -0.4390804171562195,
               'C4': 2046932090,
               'C5': 6454019765608830648,
               'C6': 980,
               'C7': [{'D1': -16521, 'D2': 0.21424445509910583},
                      {'D1': -9330, 'D2': -0.8475456237792969},
                      {'D1': 14483, 'D2': -0.47065141797065735}]},
        'B2': -0.9373964219727797,
        'B3': 15172886471597991774,
        'B4': {'E1': {'F1': -10452,
                      'F2': [0.7002641558647156, 0.3547680974006653],
                      'F3': 150,
                      'F4': 8846950251867705211},
               'E2': 21118,
               'E3': [-0.9008306264877319, -0.8546372056007385],
               'E4': 230,
               'E5': 0.3960587680339813,
               'E6': [-2232477430517085961, -2324211429253392063]},
        'B5': {'G1': 31881, 'G2': 718541405},
        'B6': 4277400001,
        'B7': -12038},
 'A2': 3069738850332162601,
 'A3': 149}

Пример 2

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

(b'QWDRg\x00\x9b\xb3A\xf7~8\x1d\x0e\x8a\xf8\xb6\xb5tE\xbf\x82c\x8eu\xd3=\x12'
 b's\xca\xbeh\xec\xb3\xbeqd\xf2\xbe\xde\xb2\x03\x00\x00\x00\x1b\x00\x00'
 b"\x00\xa5S\x0f\x04t\xed\x0b\t\xb3\xa0\x7f&\xbf\x95\xd7B>'\x00\xc4\xa9\x02\x00"
 b'\x00\x00:\x00\x92\xfc\x14#\xbf\x1a\x95\x9f4HV\xd7\x89\x0f"cjc\xc5\x8a'
 b'\xc7N\xa3|bT\xfcP\x17\xbeb\xbb\xa9\x0e\xbfe\xbb9\xbf\x89\xae<\x12~'
 b'\xf2\x14\x08\xc8ka@\x11x\x02\x00\x0f\x00d\x84\xd5\x01\xc0\x97\xe1\xbf\x93h1'
 b'\xe5\xea\xf27\xf6B\x00\x00\x00a\x00\x83\xf82\xbb\xach')

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

{'A1': {'B1': {'C1': 1656624976,
               'C2': -0.5572773814201355,
               'C3': -0.7255156636238098,
               'C4': 305966729,
               'C5': 4639107598041543294,
               'C6': 30737,
               'C7': [{'D1': -18696, 'D2': -0.7713120579719543},
                      {'D1': 25474, 'D2': 0.10325156152248383}]},
        'B2': -0.5497741733380619,
        'B3': 17741916347730847891,
        'B4': {'E1': {'F1': -19746,
                      'F2': [-0.39540916681289673,
                             -0.3514130115509033,
                             -0.4734225571155548],
                      'F3': 165,
                      'F4': -5545888351648477357},
               'E2': -22076,
               'E3': [-0.6503849029541016, 0.19027550518512726],
               'E4': 146,
               'E5': -0.6370389461517334,
               'E6': [-8514241702400125670, -4068222282598505969]},
        'B5': {'G1': 41806, 'G2': 4233388668},
        'B6': 3140679811,
        'B7': 26796},
 'A2': 1017031208820913051,
 'A3': 138}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TDNTRN\t\xe6\xe9\x06\x08\xe9\x00\x9bz\xe5\xd7C\xc5#\x00\x00\x00\x80'
 b'\x00\x00\x00\xde\xee\x9f\xc5\x974\x9f?zxxnr\x00\xa0\x0f\xbfY\t\x1a\xe5'
 b'\xb4q\xbb\xbe\xc0_KWa\x0fFi\x96\xe0G\xe5\x98\xe8\xf4L\x8ch\x94\xb5'
 b'\xf0\xc5\x1b\x93\xbf5\xe4aJ?i\xd0\x9d\xfe\xf66\xe6.\x02\xd07\x15\xc0\xf2'
 b'E\xf1(\x808d\x8c`B\x15-\xa5q\xd0H4L\x84\xc1\xb07\xf5l\x8a\xd3\xeeu\x97'
 b'\xb5n\x8e\xa5,\x00\x00\x00J\x00\x00\x00\x03\x00\x00\x00h\x00\x00\x00'
 b'\x9d]\xa2BI\x98\xbe\xe7\x15')

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

{'A1': -370800306,
 'A2': 6,
 'A3': 8,
 'A4': 14214442229515878633,
 'A5': {'B1': 'zxxnr', 'B2': -0.56103515625},
 'A6': {'C1': [{'D1': 3843688793,
                'D2': -0.36610186100006104,
                'D3': [24512, 22347, 3937, 26950, -8042, -6841, -5992],
                'D4': 14263099668896173300},
               {'D1': 901747483,
                'D2': 0.7905561923980713,
                'D3': [-12183, -355, 14070, 12006, -12286, 5431, -3392],
                'D4': 6957045718211686725}],
        'C2': [3767490274816496962, -8472127179453266868, -6517149884549304621],
        'C3': 16698951908754349469,
        'C4': 21},
 'A7': 4584440772146753246}

Пример 2

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

(b'TDNTR\xb7\xf9\x88\xf0\xdf\x16\xb8\xda\xda\x1e\x98o\xe0\xe8#\x00\x00\x00\x88'
 b'\x00\x00\x00(\xb4654\xb7Blphlhz+\x83]?\x1f\x8c\xa2\x15\x15cy?\xa9\x88\xabJ'
 b'j} \\~\xde\xac\x15\xbc.!R#\xac\x0b}%\x02\xd0\xb0"\xed\xcd\xb0\xe8>\xbe\xb6'
 b'\x18O\x03\xc0\xca\x95\x986;\x01\x10\xb9}M\x1d\xb68-$\xd5^g\x98\x04(\xc7[\x85'
 b'#i\x04\xfd\xf4\xe1\x85\xe7W\x00I|@\xe1\xb6\x81\xb8\x89\x8d?\xdd%\xe4\xa5'
 b',\x00\x00\x00J\x00\x00\x00\x04\x00\x00\x00h\x00\x00\x00\x8c\x10\xdd\xe9'
 b'}\xde\x1f\xee\xc9')

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

{'A1': -259458633,
 'A2': 223,
 'A3': 22,
 'A4': 16780534910725839544,
 'A5': {'B1': 'phlhz', 'B2': 0.8652827143669128},
 'A6': {'C1': [{'D1': 362974239,
                'D2': 0.9741681218147278,
                'D3': [-30551, 19115, 32106, 23584, -8578, 5548, 11964],
                'D4': 154667251300258337},
               {'D1': 3978473680,
                'D2': 0.4544738829135895,
                'D3': [-18754, 20248, -16381, -27190, 13976, 315, -18160],
                'D4': 15358450350837026173}],
        'C2': [-8837250869094750370,
               -1763755236712486621,
               -9099838329976192937,
               -6493023130577172040],
        'C3': 17158677737680736396,
        'C4': -55},
 'A7': 7800998939418080296}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"YRO\xe6\x00P\xee:\xab\xc5n?\x9a\x15A;t\x18@j\xba@\xf4'.7\x1c|X\xc9fx\xd3\\ ;"
 b'\x04\x03\xa1z?\xe9\x86\xf4{\x92\xdfj\xa4\xe5qT~\x97\x8e?m[\xf1\xae'
 b'\xb3\xde\xc8.j\xed\xc8e;\x1d\xa3$<\xb5!\xda\xc6\x81\r\x9f\xbf\xc2\xa5\x97'
 b'_\xf5(h\x00\x02\x00\n\xceZ\x88s\x02\xb5B5u\xea\x9cn\x04\xdb\xe4,\xa8i:\xa1'
 b'h2\x00\x00\x00\x03\x00D\x85\x10M:')

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

{'A1': {'B1': {'C1': -0.14567844567710897,
               'C2': [{'D1': 110,
                       'D2': 0.025471705678704604,
                       'D3': 1790591220,
                       'D4': 2823254611892685158,
                       'D5': 8706403798136128417},
                      {'D1': 122,
                       'D2': 0.7977240003155945,
                       'D3': -1528467116,
                       'D4': 9121915973331055022,
                       'D5': 12961016879306885221}],
               'C3': [-50, 90]},
        'B2': 9832205389003060714,
        'B3': [2624455899, 3828131945, 983656498],
        'B4': {'E1': [991798052, 1018503642, -964620897], 'E2': -2062529222}},
 'A2': 3996822469}

Пример 2

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

(b'YRO\xe6\x00m\x0eNh\xd9\xbc\xbf\xb3R\x97\n\x11\x92\x80>\x8c\xa841\nl\x17~'
 b'\xb6]6\xf2tLn\x98kL\xef\xa7?\xe7<\x0c\x06\xb3\x18\xc4S\xdd\xa7\x81'
 b'\xe7\x83\x03\xfd\x8a97\xb8\x95\xb1\xc4\x91/\x1f>\xa9\xd9?\xe5\x07'
 b'\x80Q\x8d\xb3N\x16w\x8ce\xba\x0f\xa0{\xd2h/\xe6\xbeZ\xa3\xfc\xbd\x81M'
 b'\xa7Q\xe1\x16M\x80~\x13\xe0\xab4F\xd6\xbf\xe3\x86H/x\xb2P\x00\x03\x00'
 b'\n\xe5\xb86\xa5\x12\xb5\x10\x0f\x87\xaa\x96@i\xba\xc0]p\xe6e\xc3\x1a\x92\x00'
 b'\x00\x00\x03\x00a\xe8\x9c\x8f\xa7')

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

{'A1': {'B1': {'C1': -0.6101418425728955,
               'C2': [{'D1': -68,
                       'D2': -0.0754789733487744,
                       'D3': 1049405492,
                       'D4': 3533755705791503670,
                       'D5': 17470672892364279023},
                      {'D1': -89,
                       'D2': 0.7260799532748696,
                       'D3': 1407035265,
                       'D4': 16682181832191063992,
                       'D5': 10786618710368927401},
                      {'D1': -39,
                       'D2': 0.6571656792490133,
                       'D3': 376933477,
                       'D4': 13407111069376720870,
                       'D5': 13716455921016720807}],
               'C3': [-27, -72]},
        'B2': 3937574018073200554,
        'B3': [2520803770, 3227349222, 1707285138],
        'B4': {'E1': [1373705805, -2139221024, -1422637354], 'E2': -392392793}},
 'A2': 240019673}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x8aPQL\x00\x02\x00$\xf5\xa3\xd1\xe4\xbd\xd9V\xd9%\x81?\x1d$S\xee\xaf'
 b':\xf7\x90)\xe3X\x00\x00\x00\x03\x00\xa6ec^\x8a!\xc66\x1d\xcc\xc9\x80\xa8'
 b"\xf9\xdd\xa6\x00\x03\x00\x00\x00&\x00\x00\x00)|p[\xa7\xf1\x0b\xf5#\xfe'\xbf"
 b'\xe7G\xce\xc0\xc5\x94V\xb5\x13+c\xf1\xa4%f\x87\x17i\n\xc1&\x00\x02\x00'
 b'\x00\x00Q\x00\x00\x00S\x85\xa5Yg\x1e8\x07i\xd7\xb5\xbf\x9c\xde_e\x07\xa6'
 b'\x00\xb0/T\xc5EH\xbd\x9f.\x8f\xe5s\xbe\x83h\x00\x03\x00\x00\x00{\x00\x00'
 b"\x00~\xb3_3d\xf2'\tk\x80\xdf\xbf\xee\xd6\xd82\x07\xa9\xa0\xee\xbb\x00\x00"
 b'\x009\x00\x00\x00c\x00\x00\x00\x8e')

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

{'A1': 'ec',
 'A2': -173813276,
 'A3': {'B1': -0.10612268000841141, 'B2': 9601},
 'A4': 0.6138355135917664,
 'A5': 17199030336901210968,
 'A6': [{'C1': {'D1': 50742, 'D2': 2147312676776828326, 'D3': [94, 138, 33]},
         'C2': 2087738279,
         'C3': [241, 11, 245, 35, 254, 39],
         'C4': -0.7275155797075381,
         'C5': 46355},
        {'C1': {'D1': 61860, 'D2': 2694989961644130598, 'D3': [43, 99]},
         'C2': -2052761241,
         'C3': [30, 56, 7, 105, 215, 181],
         'C4': -0.02819203428399497,
         'C5': 45103},
        {'C1': {'D1': 18621, 'D2': 11470263516611380072, 'D3': [84, 197, 69]},
         'C2': -1285606556,
         'C3': [242, 39, 9, 107, 128, 223],
         'C4': -0.9637261368891821,
         'C5': 61115}]}

Пример 2

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

(b'\x8aPQL\x00\x08\x00$>:\x92\x93\xbfk.-\xb5\x1c\xbf1[\xd1eB\xc0\xcc@\x1b'
 b'\x0b)\x00\x00\x00\x03\x00\xadowqxlxsi\xa9\x8b\xb3\xbc<\xab\xfa(\xeaX4\x99'
 b'\xcdw\x00\x04\x00\x00\x00,\x00\x00\x000L:\x8b\x7f\xd8\xd1\xab\x8b\xd4c?\xd4'
 b'\x15\x9c(\xef\xdbd\x0e\xbd\xe1\xe3\xd5\xaf\x08\xf37G\xa0\xbaw\xe5'
 b'\xb7\x00\x03\x00\x00\x00X\x00\x00\x00[\x9aw\xc7\x9d\x15\x8a\x8d\xd7\x97'
 b'\xdf?\xbc\xa5;\x824\xe3\xd0\xff\xca\xe6}\xf9<\xdas\xc4g\xdb\x0cX\xf4\x00'
 b'\x02\x00\x00\x00\x83\x00\x00\x00\x85=bqJ\xd1G\xb4\x94\xb5j?\xc9\xb0p+1w\x08l'
 b'\xa2\x00\x00\x00@\x00\x00\x00k\x00\x00\x00\x95')

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

{'A1': 'owqxlxsi',
 'A2': 1044026003,
 'A3': {'B1': -0.9186733365058899, 'B2': -19172},
 'A4': -0.6928072571754456,
 'A5': 7296606329775000361,
 'A6': [{'C1': {'D1': 15531,
                'D2': 18025915173110926711,
                'D3': [169, 139, 179, 188]},
         'C2': 1278905215,
         'C3': [216, 209, 171, 139, 212, 99],
         'C4': 0.3138189697050875,
         'C5': 3773},
        {'C1': {'D1': 44808, 'D2': 17525555230584333751, 'D3': [225, 227, 213]},
         'C2': -1703426147,
         'C3': [21, 138, 141, 215, 151, 223],
         'C4': 0.111896247185441,
         'C5': 65482},
        {'C1': {'D1': 63804, 'D2': 15741141072925710580, 'D3': [230, 125]},
         'C2': 1029861706,
         'C3': [209, 71, 180, 148, 181, 106],
         'C4': 0.2006969653038413,
         'C5': 27810}]}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XPP\xe8\xf2cq v\x89g\x9d?\xdd,\xa9\xa6\xc8W\xa4\x00\x00\x00\x03\x00\x00\x00K'
 b'P\xe7c\x92X\xa1\x00\x83=yodwnxc\xf1H\xc2(I\xc3ypuhezf\xfa\xa9\xcc\xdd|phjheq'
 b'eq\x01\xff\x8b\x82\x1e\x00$\x001\x00>\xa1R\xfc\xf0*E\xd5\x8aq%\xa1'
 b'\xeb\xa9\xbc\xc4\xa8\xea\x9e\x16\x8a\xbf\xd2g\xfa\xf0|\xd9T\xc9\x06"'
 b'\x91?\xe4\x9e\x852\x8a\xcd\x16\x00\x02\x00Q\x00\x00\x00\x06\x00Y^%P\x00\x00'
 b'\x00e')

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

{'A1': -386768015,
 'A2': 544639335,
 'A3': -99,
 'A4': 0.45585099494325676,
 'A5': [{'B1': 61, 'B2': 'yodwnxc', 'B3': -15, 'B4': 1220683849},
        {'B1': -61, 'B2': 'ypuhezf', 'B3': -6, 'B4': 2848775548},
        {'B1': 112, 'B2': 'hjheqeq', 'B3': 1, 'B4': 4287332894}],
 'A6': 20711,
 'A7': 1670535329,
 'A8': {'C1': 94,
        'C2': 9552,
        'C3': {'D1': -0.2875964497101411,
               'D2': 3372622481,
               'D3': 0.6443506228592095,
               'D4': [2706570480, 709219722],
               'D5': [28965, -24085, -22084, -15192, -5474, 5770]}}}

Пример 2

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

(b'XPP\xc1R\x04\x0e\x93\xb8\xa16\x06?\xe6\xdeO&d\xe0:\x00\x00\x00\x03'
 b'\x00\x00\x00K\xc8?:{l~\x00\x89\xa1uftnkpdc\xb9\xcd\xdf\xf4ztbvzspi}\x96\xfc'
 b'\xa1\n\xbecbvtlsp\x89w}\xdbF\x00$\x001\x00>\xcb\xeb?D\xfb6\xdb\x05\x88\xfbW'
 b'G\xeca\xfd\r|u[\xcd\xe3\x0b\xcc\x90\x84#?\xec\xec\xd2\xda\x1dH\xf8\xfa'
 b'V\x0c\xda?\xef\x8f\xf1\xffN@`\x00\x03\x00Q\x00\x00\x00\x07\x00]\x83oi'
 b'\x00\x00\x00k')

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

{'A1': -1051589618,
 'A2': -1816616650,
 'A3': 6,
 'A4': 0.7146373510249824,
 'A5': [{'B1': -95, 'B2': 'uftnkpd', 'B3': 99, 'B4': 3117277172},
        {'B1': 122, 'B2': 'tbvzspi', 'B3': 125, 'B4': 2533138698},
        {'B1': -66, 'B2': 'cbvtlsp', 'B3': -119, 'B4': 2004736838}],
 'A6': 51263,
 'A7': 981167230,
 'A8': {'C1': 131,
        'C2': 28521,
        'C3': {'D1': 0.9039091358229419,
               'D2': 4199943386,
               'D3': 0.9863214479864943,
               'D4': [3421192004, 4214676229, 2298173255],
               'D5': [-5023, -755, 31861, 23501, -7413, -13168, -31709]}}}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'dNONE\xb92\xbfbi\xa6\xf6\x85z\x00\xc5\xed\x06\xeb\xcf\xc7 \x04\x94'
 b'\xddj\xa1\xfe\x9c\xf6\xe07[\\@i\xf4e\xb1\xcf\x1a\xeeC\xa7\x94\xfa5\xb5'
 b'QZ\x1d\x7f\xd6P(5\xd3\x1f\r\xe8\xb3\xd5\x90i\xfbP\xe1J\x0f\xcd\x8b\x15'
 b'\x7f\xb4p\xd6\xd9\x91{\t#@\xbd\x98\xb9\x93\xe1\xb6a4\x07\xe5\x06\x8d\x97X'
 b"\x16\xf4\n[\xd7\xee|\xdd\x100\xe9J\xfc\xc2\xaa'?\xd6\xe2\x0ft\x8d]\xe5"
 b'?4\xf5\x8c\x93\xff\xd4\x8b\xda\xbe\x91\x94\xc9\xdac>KP\xc8\x7f\xdb\xbd:\xf6'
 b'L*u\xbe\x17\x1b\xb4\n\x18\xbf\xcbkp\x83\x1e\xbf\x8b\x08f\xc9A?')

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

{'A1': -0.698139488697052,
 'A2': 'bi',
 'A3': 63142,
 'A4': 133,
 'A5': {'B1': -29451,
        'B2': [{'C1': -109, 'C2': -0.42684805393218994},
               {'C1': -27503, 'C2': 0.2225142866373062},
               {'C1': 20555, 'C2': -0.10717731714248657},
               {'C1': -2502, 'C2': -0.23941916227340698},
               {'C1': 6935, 'C2': -0.5939133167266846},
               {'C1': 27595, 'C2': -0.6191930770874023},
               {'C1': 2187, 'C2': 0.7569793462753296}]},
 'A6': [297457271221710277,
        16210316526210440596,
        12782891850249558839,
        3889584674307971791,
        2905057601095618997],
 'A7': {'D1': -8010298552974585035,
        'D2': -514786455,
        'D3': [8121255758572359498,
               -4809805878396855850,
               519147295150946712,
               789280404452214501,
               -1643795320520386725],
        'D4': 64586,
        'D5': 0.6549493074417114,
        'D6': 0.6676699892842304},
 'A8': 52}

Пример 2

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

(b'dNON\xb3\x8cy\xbejb\xedC\xb4z\x006U\xc5Ll\x88\x9f\xeb\x03\xe6ac\xfb'
 b'z\xe4\x88FS\xff\x89\x85\x02\xb2&5}\x9e7\xa3\xb3\xf0\xbb\xec\xf5\x04\xdc\xd1'
 b'|l \xca\x1d\xdf\r\x9d,l\xf8\xec\x8c\x11K\xf7\xb7V=\xab)\x1em\xab'
 b'\xea\xa8\xdb\x1a\x10\x85+Mdy\xe0\xc0a \x8f\xb3\xa6\xf7G\xec\x9fw\xdc"Mio\xab'
 b'\x1b>\xd9\xbe\xbb\xfd\xc9\xb8\xbe\xa8\xb0\n:m\xa6\xd7\xbf\xd1\x9d\xae'
 b'\xaeZ\xf8\xe9`?\x89\x93}\xc6\x8a\xbe\xd0\xde[{\xf2\xbe\x9e\xc0G\x9a\xd7='
 b"\xbe\xafQ\xc4B?\xaa'K\xd0\x8f>\x9c\x82Wu\xa2\xbe")

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

{'A1': -0.2437007874250412,
 'A2': 'jb',
 'A3': 17389,
 'A4': 180,
 'A5': {'B1': -20835,
        'B2': [{'C1': 23214, 'C2': 0.8785700798034668},
               {'C1': -27767, 'C2': -0.27104559540748596},
               {'C1': -8496, 'C2': -0.47359737753868103},
               {'C1': -16226, 'C2': 0.1052747294306755},
               {'C1': -20546, 'C2': 0.7608080506324768},
               {'C1': 10154, 'C2': 0.2808860242366791},
               {'C1': -32100, 'C2': -0.317301481962204}]},
 'A6': [16978439118935905590,
        9864144303970969091,
        2788293891864875846,
        13542521593097256245,
        2336379547479766508],
 'A7': {'D1': -546012401764459062,
        'D2': 1259441388,
        'D3': [7862767814880704503,
               3135930423073893035,
               -8133393446003448755,
               -2560402025968326989,
               -2792764295800599262],
        'D4': 48062,
        'D5': -0.36091604828834534,
        'D6': -0.3695328776182216},
 'A8': 209}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'TVUIC\x00\x00\x00u\xcb\xd2>\x03\x00\x00\x00P\x00\xcfl.\xbf4qAS\xa5\x90'
 b'\x00\xe8k?3!\xd0Qx\x97gA\x03\xbf\x92\x7fqW\xda\xaa\x11\xd3\xf3\xa9'
 b'-\xa6\xf7\x85T\xfc?d\x00\x00\x00I\xc05?{\xe9\x8eB\xe8\xf0\xa5\xfb\x1f'
 b'\xc0\xf1\xa0\xfbfutC\xe2\x16\xd4\xd9$\x91\xd5N\xc4)\x11\xa4\x8c\xf4\x8e`'
 b'\x00\x87\x0f\x8e\x96\xde\xddA$\xf1\x82\x01\x05\x00S\x00\x00\x00\x03\x00'
 b'\x00\x00X\x00')

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

{'A1': {'B1': 123, 'B2': 2304618088437550825, 'B3': 4221628864},
 'A2': {'C1': 0.4117085039615631,
        'C2': 'fut',
        'C3': [{'D1': -0.6813477873802185, 'D2': 1396797748, 'D3': 37029},
               {'D1': 0.9215087890625, 'D2': 1372594483, 'D3': 38776},
               {'D1': -0.5127167105674744, 'D2': 1467056018, 'D3': 43738}],
        'C4': -1443638511},
 'A3': 42541,
 'A4': 4233397751,
 'A5': 63,
 'A6': {'E1': 2383382272,
        'E2': 108914479036489366,
        'E3': [67, 226, 22, 212, 217],
        'E4': [1322619172, -1542379068, 1619981452]},
 'A7': 0.7099652886390686}

Пример 2

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

(b"TVUIC\x00\x00\x00\xcb\x04\xc3\xbe\x02\x00\x00\x00P\x00i'\xac\xbe\xa8\x82"
 b'\xe5\xe6f,\x1c\xa8x?\x11C\x83\x92j \xd8\xd6\xd9>\x1e\xf6\x94\xe2\x1bU'
 b'\x17\x0e\xed\xe2\x13c\x0c\x97\x8d\xd8Ud\x00\x00\x00"w\xc6>\xe5T&\xd3\x12'
 b'RH\x96\x01`\xac\tauo\x9d\t\xe3\xb6)\xbc\xcb\x07\xd2j\xa3i\x01!\xdf\nA\x88'
 b'u,\xc1\xc9t\xf9\xfbd\xbf\xf5\x14\xec\x06\x00R\x00\x00\x00\x03\x00'
 b'\x00\x00X\x00')

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

{'A1': {'B1': -27, 'B2': 114358357884872276, 'B3': 1628023904},
 'A2': {'C1': -0.3808959424495697,
        'C2': 'uo',
        'C3': [{'D1': -0.33623817563056946, 'D2': 3873800872, 'D3': 11366},
               {'D1': 0.9713151454925537, 'D2': 2458075921, 'D3': 8298},
               {'D1': 0.42546725273132324, 'D2': 3801413150, 'D3': 21787}],
        'C4': -487780841},
 'A3': 25363,
 'A4': 3633157900,
 'A5': 85,
 'A6': {'E1': 3384880245,
        'E2': 17011491894866999668,
        'E3': [157, 9, 227, 182, 41, 188],
        'E4': [1792149451, 553740707, -2009003297]},
 'A7': 0.38762766122817993}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'VQSY\xb8j\xfbwt\xaf\xa5-\x00\xbbNZ\x07\x00+\x9a\xe3\xc3\x0ch4\xe7R\xd1'
 b'\x8eP\x84k\x94\x89w@\xb1\xf7\xf4\xc0\xec\xab\xf0h+*\xf0\x04\xbf\xa8C\xac'
 b"\xe3\x96q\xbd\xef\xdc\xa6\xbc\x98\x0f\xbfB\xc5K\x8b\xf2'?\xda\x8f\xe3`\xc3-"
 b'?\xd05\xee\x1f\xf1U\xbf=\x01\x93\xbe\x8dA?\xec\xd9\xea\x04\x00\r\x00\xfb\xb4'
 b"\xac\x99\xbd\x03'\xebv\xc0$\xf2\x8a8\xc60iQ\x89\x88\xb5\xfb\xb0\xeaa\x19"
 b'\xe6\xe1&6\x91mpNO\xb2\x8e\x07\xd7?')

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

{'A1': 106,
 'A2': 251,
 'A3': 'wt',
 'A4': -23121,
 'A5': {'B1': [{'C1': -0.5192896127700806, 'C2': -88, 'C3': -21437},
               {'C1': -0.05898178741335869, 'C2': -17, 'C3': -22820},
               {'C1': -0.5609242916107178, 'C2': 66, 'C3': 19397},
               {'C1': 0.6560446619987488, 'C2': -38, 'C3': -7281},
               {'C1': 0.6787624359130859, 'C2': -48, 'C3': -4555},
               {'C1': -0.8357104659080505, 'C2': 61, 'C3': -27903},
               {'C1': 0.7560690641403198, 'C2': -20, 'C3': -5415}],
        'B2': {'D1': [16400468272146435771,
                      10291097776488451267,
                      12772339976007025744,
                      3128014562410951927],
               'D2': -5,
               'D3': -0.0750364363193512,
               'D4': 9987,
               'D5': -21,
               'D6': 118,
               'D7': 2331124928},
        'B3': {'E1': 56,
               'E2': 12486,
               'E3': [20841, 34953, 64437, 60080, 6497, 57830],
               'E4': 38,
               'E5': 54},
        'B4': 28049,
        'B5': 0.3598362675959157}}

Пример 2

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

(b'VQSY\xb8L\xb4lk\xa4\xee%\x00K\x1b\x02\xd2\x9fw\xb8\xc3\xcc\x8b\x87'
 b"\x10\xf2`\x02\xaf\xffh\x80\xbe\xd8}\xe8\xb1l}'?U\xadUf\xfd\xfd>t\x8c2x"
 b'\xdas\xbe\xf4\xe8\x01o\xc8\xfe\xbd\xad\x0c\xad%\x07(\xbf\x00\xafe'
 b'\x06\xac\x15\xbfM\x8b\x10\x1b4.\xbfA\xa7L\x03\x00\r\x00a\xa0\xd6\xd7\xbe\x9f'
 b'}\xc7\x8b\xa4\xf6\x06a\xd4\xca\xf0\r?nJ\x9c\xb0\xa9\r\xb4:\x9f\x81\x01\x87'
 b'7\xd9L\xd2v\x85r\xc3\xd1\xbf')

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

{'A1': 76,
 'A2': 180,
 'A3': 'lk',
 'A4': -4444,
 'A5': {'B1': [{'C1': 0.6542575359344482, 'C2': 85, 'C3': 21933},
               {'C1': 0.4960739016532898, 'C2': 116, 'C3': 12940},
               {'C1': -0.2381380796432495, 'C2': -12, 'C3': 488},
               {'C1': -0.12440573424100876, 'C2': -83, 'C3': -21236},
               {'C1': -0.6563590168952942, 'C2': 0, 'C3': 26031},
               {'C1': -0.5846561193466187, 'C2': 77, 'C3': 4235},
               {'C1': -0.6804825663566589, 'C2': 65, 'C3': 19623}],
        'B2': {'D1': [14103153761417567051,
                      12610748499366480844,
                      12819634709172611327],
               'D2': 97,
               'D3': -0.42155933380126953,
               'D4': 32159,
               'D5': -57,
               'D6': -117,
               'D7': 1627846308},
        'B3': {'E1': 212,
               'E2': 61642,
               'E3': [16141, 19054, 45212, 3497, 15028, 33183],
               'E4': 1,
               'E5': 135},
        'B4': 55607,
        'B5': -0.27755415948494}}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ZLU\xfc(6\xac\x11\xa6\xb2H  \xef\xc8.0\x1d3\xaf\xf4\x92\x89Hj\xcd\x00N'
 b'\xff\xa8\x83\x1a\x99\xbf}\xcfC\x00\x00\x004\x12l\xbf\xc9n-\xeb\xba=\xe8\xd5'
 b'\r+D4-\x99\xe7\xaa\xd0\xfdH\xdb+\xc7h+\x11\x82Q\xe2E\x8b\xd5)\x0c4\x03\xe1'
 b'\xdd;:\x81\xb9v8&w7\x00+')

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

{'A1': {'B1': [-984, 13996, 4518, -19896, 8224, -4152, 11824, 7475],
        'B2': 2952041097,
        'B3': 18538,
        'B4': -3674850435983533415},
 'A2': -0.9914438128471375,
 'A3': {'C1': [{'D1': [3371, 17460], 'D2': 11673},
               {'D1': [59306, 53501], 'D2': 18651},
               {'D1': [11207, 26667], 'D2': 4482}],
        'C2': [1373783435, -718730188, 65133883, 981580150, 942044983],
        'C3': {'E1': -0.1986749077809542, 'E2': 213}},
 'A4': 18,
 'A5': 108}

Пример 2

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

(b'ZLU\xb6\xaf&\xe5\xbany=\x19\xd8\xe1/0nj\x03o\xe25r\xad7l\xb8q'
 b'\x8b\x10\xcf\xaa\x10>04\x82\x00\x00\x004u\xa9?\xe0\xee\x96\xdc\x86\xbe*\x89'
 b'@\xdc\xbas\xdc\x04\x15\xb0%\xc6,\xa5\x93F\xf1\xec\x91\x07\xb4%b\x1bR\x9a'
 b'Bb\x8fO.\x12\xc0\x7fH\xaa\xcch2\xca\x00+')

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

{'A1': {'B1': [-18769, 9957, -17810, 31037, 6616, -7889, 12398, 27139],
        'B2': 1877095794,
        'B3': 44343,
        'B4': 7834136393907415568},
 'A2': 0.1720753014087677,
 'A3': {'C1': [{'D1': [16604, 47731], 'D2': 56324},
               {'D1': [5552, 9670], 'D2': 11429},
               {'D1': [37702, 61932], 'D2': 37127}],
        'C2': [-1272618469, 1385841250, -1890636270, -1065400150, -865586486],
        'C3': {'E1': 0.5291246707110464, 'E2': 137}},
 'A4': 117,
 'A5': 169}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YSJH\xa6\xaf@\x8e^pi\xb7\xeb\xbf_b\xa1\x00\x02\x00-\xe5\x1ftw=\xbaP'
 b'>\x00\x00\x00>\x00\x00\x00a\x00\x00\x00\x81\x00\x00\x00\xa5\xe1\r\x12'
 b'\x87\xddG\x8e,\xae\x1b\x9c\x95\xd4\x97\xc7\xba\x03\x00\x02\x00\x00\x00/'
 b'\x00\x00\x00\x07\x00\x00\x007?\xe5\xa1\xed\xb2\xb2\x9dL\x98\t\x05\xaa'
 b'\xc4\xb5\xd0\x8e\xe0q\x89yY\x00\x02\x00\x00\x00T\x00\x00\x00\x05\x00'
 b'\x00\x00\\\xbf\xc6\x9a\x8e\x16W\x8a\x98\xca\x01\x93\x19L;:\x9a\xbf'
 b'C\x00\x02\x00\x00\x00w\x00\x00\x00\x02\x00\x00\x00\x7f?\xed]\t\xc0'
 b"\x7f\xca\xc0'&\x91\x0b49Ger\x1c\xc9;\x8c[\x00\x02\x00\x00\x00\x97\x00"
 b'\x00\x00\x06\x00\x00\x00\x9f?\xeb\x13\x93\x8e\n\x81\xb8')

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

{'A1': {'B1': 12628249891410917355,
        'B2': -0.8725987076759338,
        'B3': [225, 13],
        'B4': 3844043895},
 'A2': 0.09097336232662201,
 'A3': [{'C1': [310893895, 2385292827],
         'C2': {'D1': [156, 149, 212, 151, 199, 186, 3],
                'D2': 0.6760166635694218}},
        {'C1': [2550728106, 3300249742],
         'C2': {'D1': [224, 113, 137, 121, 89], 'D2': -0.17659164515415138}},
        {'C1': [3389100825, 1278950042],
         'C2': {'D1': [191, 67], 'D2': 0.9176071891546016}},
        {'C1': [656838923, 876169061],
         'C2': {'D1': [114, 28, 201, 59, 140, 91], 'D2': 0.8461396955718135}}]}

Пример 2

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

(b'YSJH\xa6x@c\xd4\xb0\xc1W\x82?>.\xf0\x00\x03\x00-\xa3\xaad\xda\xbe\xa4>'
 b'\xf1\x00\x00\x00>\x00\x00\x00^\x00\x00\x00\x7f\x00\x00\x00\xa3\xd0\xb8\x1b'
 b'\xcf\x85d\x93V\xafCr\xbb\x8b\xfa\xcb\xe6\x87\x00\x02\x00\x00\x000'
 b'\x00\x00\x00\x06\x00\x00\x008?\xed\x8b\x82\xd7\xcc\x8d\\zce\x88Q\xc1_\xac'
 b'\x01-\x00\x02\x00\x00\x00T\x00\x00\x00\x02\x00\x00\x00\\\xbf\xe1>\xeb'
 b'|\xaa\x16\x88\xf0\x03x\xd8)\xc5F\xc5\xb8\xbb\xa0\x00\x02\x00\x00\x00'
 b't\x00\x00\x00\x03\x00\x00\x00|\xbf\xcc\xeb{\xb3ln\xd8\x1d\xc9\xe3'
 b'\xc3\xca\x12r#[\xd7\xe7\xc6G\x9f\x00\x02\x00\x00\x00\x95\x00\x00\x00'
 b"\x06\x00\x00\x00\x9d?\xef\xeb\xe5\xc7\x80':")

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

{'A1': {'B1': 8665035448210511746,
        'B2': 0.7429037094116211,
        'B3': [208, 184, 27],
        'B4': 2745853146},
 'A2': -0.32079270482063293,
 'A3': [{'C1': [3481625747, 1454326642],
         'C2': {'D1': [187, 139, 250, 203, 230, 135],
                'D2': 0.9232801642250865}},
        {'C1': [2053334408, 1371627436],
         'C2': {'D1': [1, 45], 'D2': -0.5389306483127294}},
        {'C1': [4026759384, 700794565],
         'C2': {'D1': [184, 187, 160], 'D2': -0.22593637715259862}},
        {'C1': [499770307, 3390206499],
         'C2': {'D1': [91, 215, 231, 198, 71, 159], 'D2': 0.9975460907455507}}]}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'FVH\xde\xf8X\x12pa\x00\xb2<]\x02\x00k\x00\x04\x00o\x00a3X\t\xa5\xa4\x87'
 b'\x0e7l$\x03\x15\x00\x00\x00\x19\x00\x00\x00\x1d\x00\x00\x00H\t\xdeypm\xd0'
 b'?@\xa8\xd7\xb4\xd1O\xbf\xbfH4-M\xe4Z~\xbe\xdedV\xae\xab\xf8\xee?4\x84\xf2'
 b'\x1d\x06?\xdbd\x02\x00-\x00\x00\x00o\xaa\xac\xd8eb\x03\x00\x00\x00!\x00\x00'
 b'\x00=\x00\xc57\x02\xbap\x07\xc1\xdbD\xd0\x0e,D\xa1\xad,\xe5\xaa9\x8eB\x8eIP<'
 b'\xbf\x08\xd0\x81R5\xa5\xec\x0e\x9a\xfe')

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

{'A1': [248, 88, 18, 112],
 'A2': {'B1': [{'C1': 13153, 'C2': 88, 'C3': 9},
               {'C1': -23387, 'C2': 135, 'C3': 14},
               {'C1': 27703, 'C2': 36, 'C3': 3}],
        'B2': {'D1': -4720235422843849656,
               'D2': 0.9678553013829079,
               'D3': 7267471719197213748,
               'D4': [0.2566796484099041, -0.12231169381235052],
               'D5': 43631,
               'D6': 1650841772}},
 'A3': {'E1': 15538, 'E2': 93},
 'A4': [14277, 47618],
 'A5': [3174703781505992560,
        10248410328332083524,
        14990441625468636738,
        18345992441593942657]}

Пример 2

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

(b'FVH\xde\xffp\x84\x1fy\x00v\x17\xd0\x03\x00\x83\x00\x04\x00\x89'
 b'\x00\xfa\xd2\x9cS*\xdf\xa8\xde8k\x88^6b\x19\xb1\xca\xc1\xffj,~y'
 b'\x83\x15\x00\x00\x00\x19\x00\x00\x00\x1d\x00\x00\x00!\x00\x00\x00%\x00\x00'
 b'\x00)\x00\x00\x00Rl\xcb\x14\xd0R\xe6\xbf\xd0\xe2\xd4\xb0\x1ec\xd6?\xd3TL'
 b'J\t\x1a\x0f\xb2\xe0\xea\x10\xa9\xb5\xba\xa8?\xb0\x97\x0fK\xe1\x8d\xcb'
 b'\x8c\x02\x00E\x00\x00\x00z+\xb2\x87\x819\x06\x00\x00\x00-\x00\x00'
 b'\x00U\x00\xaeZ\xb4VY\xfe7"\xa4\n\xb0\x0cj\x862|Q\xea\xd3D\x07\xfd\xba\xce*'
 b'3=\x84\xa2\xf6\xa1\xaaZ\x97\xea,\xef\x92')

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

{'A1': [255, 112, 132, 31],
 'A2': {'B1': [{'C1': -11526, 'C2': 156, 'C3': 83},
               {'C1': -8406, 'C2': 168, 'C3': -34},
               {'C1': 27448, 'C2': 136, 'C3': 94},
               {'C1': 25142, 'C2': 25, 'C3': -79},
               {'C1': -15926, 'C2': 255, 'C3': 106},
               {'C1': 32300, 'C2': 121, 'C3': -125}],
        'B2': {'D1': -5616241583104174893,
               'D2': 0.04829948128504724,
               'D3': -8301385489360906320,
               'D4': [-0.6976089864869073, 0.3497997977133709],
               'D5': 11130,
               'D6': 964790194}},
 'A3': {'E1': 6006, 'E2': -48},
 'A4': [23214, 22196, 65113],
 'A5': [9685567898845979191,
        18232617293392739378,
        17771912477943713466,
        10587730635044596385]}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'HCC\x0c^~\xba}\xfbU\xe5?\xba\x00\x00\x00MN/?.\xc3\x02\x00\xc9\x00\x00\x00'
 b'uy\xbdP\x1az\xbd\xd7\xf2=\x9fu~\xbf\xaa\xef\xef\xd7\x1c\x00\x00\x00\x01\x0c'
 b'\xa1\xc7>\xb4K\x8c\xd8\x9b\x88T\xd5z\xc3\x90\xc71q\xbaoA\xe9\xb2}?'
 b"K\xb0\xf3\xed>\x00\x00\x00&su\xac~\xc5\xb9\xf5\xc4E3\xdb\xc8\xdd'\x02E8\x98@"
 b'\x18\xa0n\x104?\xdbc\xe4\xeb`\x00\x00\x00\x07f\x84l\xcfPQ\xcd;\x8e#oX\x91'
 b'\x14>\xdcae\x0f\xa3\x15\x7f\xb0(wS\xa3\xed\xe5i\x9e\x1b;\x83\x8e\xea;'
 b'3\xe4y\x1b\xe0\\\x92\xab\xf7\xd7\x96\xce\x10l\xb9\x88\xac\xc4\xd5f'
 b'\x8e\x7f\xa7\xb0E\x0e\x82\x00\x00\x00.\x00\x00\x00P\x00\x00\x00r\x00'
 b'\x00\x00\xcb\x8b\x00X\x0f')

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

{'A1': 12,
 'A2': 0.6667458968767723,
 'A3': {'B1': [{'C1': {'D1': 31093,
                       'D2': 2048544957,
                       'D3': 1039325117,
                       'D4': -0.9939822554588318,
                       'D5': 3622825898},
                'C2': -8337372103416148991,
                'C3': 1418238936},
               {'C1': {'D1': 31445,
                       'D2': 835162307,
                       'D3': 1097841265,
                       'D4': 0.9910112023353577,
                       'D5': 3992170571},
                'C2': -740343515875806426,
                'C3': 3677570500},
               {'C1': {'D1': 56776,
                       'D2': 944046631,
                       'D3': 2685943960,
                       'D4': 0.7033756971359253,
                       'D5': 3957613531},
                'C2': -3652048971011693049,
                'C3': 1864601147}],
        'B2': 203,
        'B3': {'E1': [682655509,
                      -308063369,
                      463366629,
                      -359759045,
                      2044998459,
                      -1839407077,
                      -1764231253,
                      -1184100146],
               'E2': 44168,
               'E3': 54724,
               'E4': -29082,
               'E5': [-22657, 17840],
               'E6': 14,
               'E7': {'F1': 88, 'F2': -6697022649895349103}}},
 'A4': 0.6847885251045227,
 'A5': -15570,
 'A6': [88, 15]}

Пример 2

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

(b'HCC\x1b\x0c\xcc\x8a\xa9\x88\xff\xe1?\xba\x00\x00\x00"\xcfx?Vt\x02\x00'
 b"\xc9\x00\x00\x00cI\xec\x1a\x06\x04J[\n\x9d\xc8\x04'>|e\xb4E\x1c\x00"
 b'\x00\x00\xcaN\x00$\x9b\xc2\x1eoJ}\x8c8\xbe\xa7z\xea\x12[\x95\xa1zdqS\x9b\xbe'
 b'C\x8e\x1e\xa7>\x00\x00\x00\xdeN\x7f\xfd\x98\xe1jO\x19M}5]F]\xdc'
 b"\x91\xe0\x03\x80'\xe63\x12\xcc\xbej\x0f\xf3\xad`\x00\x00\x00\xbcG"
 b'+\xd9\x9c\x10E\xeb\xbb\xb1\xcaa\x0fK}P|}\xda$!\xc8&\xc2\xe4\xe9\x98QH\x9f'
 b'P\xb3\xf8\x1fh4\xfd\x02m\xc2x\xe4$\xea\xd1\x1c\x1dbk\x9d\x9cH-E\x05?\x9e\r'
 b'\xc3\xfa\xa1\xbd\xfbu\x82\x00\x00\x00.\x00\x00\x00P\x00\x00\x00r\x00'
 b'\x00\x00\x8f\x8b\x00\xd9\x05')

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

{'A1': 27,
 'A2': 0.5624430953379274,
 'A3': {'B1': [{'C1': {'D1': 18787,
                       'D2': 67508972,
                       'D3': 2634701642,
                       'D4': 0.16310417652130127,
                       'D5': 1169450364},
                'C2': 8007051159091039946,
                'C3': 948731210},
               {'C1': {'D1': 42942,
                       'D2': 1527966330,
                       'D3': 1685758357,
                       'D4': -0.30337098240852356,
                       'D5': 2803797571},
                'C2': 5722634323731893982,
                'C3': 897404185},
               {'C1': {'D1': 18013,
                       'D2': 3767655517,
                       'D3': 3861348355,
                       'D4': -0.3985763490200043,
                       'D5': 2918387562},
                'C2': -1493769435559016516,
                'C3': 1640673723}],
        'B2': 143,
        'B3': {'E1': [-457038136,
                      1213307113,
                      -122466145,
                      -46897121,
                      2026007810,
                      -773184284,
                      1801592092,
                      759733405],
               'E2': 1349,
               'E3': 40511,
               'E4': -15603,
               'E5': [-24070, -1091],
               'E6': 117,
               'E7': {'F1': 15, 'F2': 2388273934904622411}}},
 'A4': 0.9719105958938599,
 'A5': 29782,
 'A6': [-39, 5]}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x97TAIH\xa0[5\xe5\xc2\xc0\x9b\x18&\x07\x94\xf7@\xf3wzzi_X[\x07\xcf'
 b'\xad\x84\xf9\xf5\xa7\xb3@{\xeexhkp)\x82>8\x9d\xdbQ\x9a\x9fpD\xc3dnllkh\x00'
 b'N\x00\x00\x00{?\x9asc\xa0\xf9b\xc0\xde\x1ai,\xcc\x10\xfc\x12\xfb\xaaJ'
 b'\xf1X\xc1)a\x18\xd3>le\xdf\x10\xd9lY\x00\x00\x00\x02\x00\x00\x00J\xbd'
 b'\xd1\xc9\xcd?<-,>\xb7\x91\xf1>\xf5\x16\x8b6\n\x99\x80mq\xe8\xbd\x8e'
 b'\xa1~\xe2\xcd\x92N\xd3\xe0\x98\xfeO\x17')

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

{'A1': [{'B1': 41051,
         'B2': 13797,
         'B3': -62,
         'B4': 3231389734,
         'B5': 7,
         'B6': 2499231987,
         'B7': 'wzzi'},
        {'B1': 24408,
         'B2': 23303,
         'B3': -49,
         'B4': 2911173109,
         'B5': 167,
         'B6': 3007347694,
         'B7': 'xhkp'},
        {'B1': 10626,
         'B2': 15928,
         'B3': -99,
         'B4': 3679558303,
         'B5': 112,
         'B6': 1153655918,
         'B7': 'llkh'}],
 'A2': {'C1': 1223874070841061720,
        'C2': -63,
        'C3': [41, 97, 24, -45],
        'C4': 0.23085735738277435,
        'C5': 282684505,
        'C6': [6761, 11468],
        'C7': [-0.10243568569421768,
               0.7350642681121826,
               0.3585353195667267,
               0.4786876142024994]},
 'A3': {'D1': 906664320,
        'D2': 109,
        'D3': 1911078286,
        'D4': 2709447373,
        'D5': -7904147334395703529},
 'A4': 0.025830799770434565,
 'A5': 222}

Пример 2

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

(b'\x97TAIH\x83\x86\xee\xf5h\xc6y\xda\xc96"\xbb\xe5zykrc]\xaf\x1e\x92L'
 b'\x1cf\x04\x05Qh\xab\x8dAbyezRa\xefs=\x8a\x88T\x90>j\xec \xe9ehnk\x00'
 b"N\x00\x00\x00{\xbf\xe7\xb3r\x13\xf1c\xb6B#\xc3\x04'\xa1\xa6a{\xd6\xa4"
 b'\x0b \xb1\xd9\xac\xc7"\xbe\xf0\xc3\xa5\xce\xf5i\n\x00\x00\x00\x02\x00'
 b'\x00\x00J>9\xb6<?kx\xa4\xbe\xd6t\xe9>\xa6t\xab\xff\x8f\xa8n6\xf7U\xd6Q'
 b'\x98\x0e\xda\xb4B\xd6D\xba\x18\x87\x9a\xb7')

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

{'A1': [{'B1': 33670,
         'B2': 61173,
         'B3': 104,
         'B4': 3329874633,
         'B5': 54,
         'B6': 582739322,
         'B7': 'ykrc'},
        {'B1': 23983,
         'B2': 7826,
         'B3': 76,
         'B4': 476447749,
         'B5': 81,
         'B6': 1756073281,
         'B7': 'byez'},
        {'B1': 21089,
         'B2': 61299,
         'B3': 61,
         'B4': 2324190352,
         'B5': 62,
         'B6': 1793859817,
         'B7': 'ehnk'}],
 'A2': {'C1': 11648104670750313248,
        'C2': -79,
        'C3': [-39, -84, -57, 34],
        'C4': -0.4702426493167877,
        'C5': 3472189706,
        'C6': [9155, 1063],
        'C7': [0.18135923147201538,
               0.9198095798492432,
               -0.41886070370674133,
               0.3251088559627533]},
 'A3': {'D1': -7362450,
        'D2': 54,
        'D3': -145369519,
        'D4': 2551110324,
        'D5': 4816112417585470135},
 'A4': -0.7406549825201327,
 'A5': 66}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'HCC\xc7\x00*\x00A&\x15 \xd0=\xae\x00t_\xd9\xac\xf2\x94\x92(\xb9\x91#\xe7\x99'
 b'\xc8\xb0\xd32\x00\x84>\xb5\xfcr\xe6$\x87\x85\xaf\xb0cmfku\xf8\xc3\x9a'
 b'\x92.\x85\x8b=\xde\x98G\xd8\x88\x95\\!\x01$qusjq\xa3\xba\x8b\xc7'
 b"\xc7\x91\xf9\xbc'\xd5z\xe6{i\x88Z\x05m\x8e\xb7\x0eL\x9b\xfdo\xfcv\xc4"
 b'\xf6\xdd\x9f\xfbKO\x956l\x1f\xeau\xc2\xc9\xdeS\x04\xcf\x1f\xbd'
 b'\x00\x00\x00\x07\x00\x00\x00X\xaaP\xa4\x94\xe4R(\x18?=\xed\r')

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

{'A1': [{'B1': 44976,
         'B2': 'cmfku',
         'B3': [-121398638, 780503869, -560445480, -2003477471]},
        {'B1': 292,
         'B2': 'qusjq',
         'B3': [-1548055609, -946734660, 668302054, 2070513754]}],
 'A2': [9749, 8400, 15790],
 'A3': {'C1': 80682941,
        'C2': [91066039,
               239901693,
               1878816452,
               4141719547,
               1263506742,
               1814030965,
               3268009555],
        'C3': -1437555564},
 'A4': 6906741661424036025,
 'A5': 10458457407367467826,
 'A6': {'D1': 58450, 'D2': 10264, 'D3': 0.7418983578681946},
 'A7': 0.3554416298866272,
 'A8': -433813627}

Пример 2

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

(b"HCC\xc7\x00*\x00A\xc7\xc3|\x11`\xbb\x00l_'\x17\xb7.,\x19\xa2W\xeb\x1e\x94"
 b'\xcf\x84g\x82\x00|\xbeXy\xaa\xfb\x14>M\xf8 bwnfm^"M\r\xad\x08\xef'
 b"P\x94\x83\x01\xf0z\x0e\xdecD\xcfopxtl\xa3'\xf2\xcf\xe5\xd2\xf7\xd0].\x84\x1a"
 b'.i,\xaejq\xcahxr\x81\x008y;!\xbf^\xab\xd6"\xd9\x89$\xf8\xcf\x93\xb3'
 b'\x00\x00\x00\x05\x00\x00\x00XO\x80\xc3\xf9^\x11<\x84\xbf_\xd5\x14')

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

{'A1': [{'B1': 63520,
         'B2': 'bwnfm',
         'B3': [1579306253, -1391923376, -1803353616, 2047794787]},
        {'B1': 17615,
         'B2': 'opxtl',
         'B3': [-1557663025, -439158832, 1563329562, 778644654]}],
 'A2': [-14397, 31761, 24763],
 'A3': {'C1': -120613965,
        'C2': [1785842280, 2020770048, 947469089, 3210652630, 584681764],
        'C3': 1333838841},
 'A4': 6856475033215965602,
 'A5': 6335190925312288642,
 'A6': {'D1': 24081, 'D2': 15492, 'D3': -0.874345064163208},
 'A7': -0.21140161156654358,
 'A8': -82559411}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'SEFQ\xe7\xdbg\xba$\x02+\x7f\x02\x00\x00\x00W\x00\x00\x00\xae\xf3a:'
 b'\xa4\xf3-\xfc[\x00\x03\x00\x00\x00\x93\x00\x00\x00H1\x13)WR\xd2?\\\xd0'
 b'x\x8b\xa9A\xfch>\xcb@-\xe4\x80\xdaF\xf9\x9fLw\x98\xa6\xac\xa3>`3\xab\xaaP'
 b'/\xee\x15\xd61\xa1\xcc7\xc0\n=7\x00G\x00L\xc0\x84X\xcf\x95\xea?@'
 b'\xac\xb4W\xcf\x9c\xef?\xf06\x10\xbf\xc47\\\x88\xc1\x1f"\xbe\xc5L\x17N$'
 b'<\x1d\xe1\xc8\xc1\xae\x03\x03j\xdf\xd4\xb9\xbf9\xe3\xf4\xff\x8a\xe9\x06'
 b'\x89\xbb\x87mO-\xa6\xb6Bh\x10a\xd2\x14}')

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

{'A1': {'B1': 9163420223584852967,
        'B2': [{'C1': -466796341,
                'C2': 10986334065959295616,
                'C3': 0.31967657804489136},
               {'C1': -1431620768,
                'C2': 14745121450548408144,
                'C3': 0.033874716609716415}],
        'B3': 18171447958189503406,
        'B4': {'D1': 0.830787346732913,
               'D2': 0.987891837406444,
               'D3': -0.5633382797241211,
               'D4': [-4746196141218187324, -2225556514224517947],
               'D5': {'E1': 49608,
                      'E2': 174,
                      'E3': 3748266755,
                      'E4': 0.00036568811628967524,
                      'E5': 62691,
                      'E6': [255, 138, 233, 6, 137, 187, 135]}},
        'B5': [-1506979987, 275268278, 2098516577],
        'B6': 0.2862756634829293,
        'B7': 92,
        'B8': 30928},
 'A2': 43403,
 'A3': 0.2275247722864151}

Пример 2

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

(b'SEFQ]\x8f\xd1Hs\x1a\xb4D\x02\x00\x00\x00W\x00\x00\x00|\xd0\xa2\xf4'
 b'\xaa\x84\xb6\x88[\x00\x04\x00\x00\x00\x93\x00\x00\x000%\xf0b\x82\xb8'
 b'\xb0\xbf\xe0dp\x96\xde\xcc0<\xbf\xba("[\xe9\xc33Tz\xaf\x08\x7f\x19\xed \xbfR'
 b'aJ\x14D\x18\xb0\xc6\x80\xfcb\x9d\xde\xccn?7\x00G\x00`N\x9b\xf4\xca'
 b'2\xc8\xbf\xc4m\xe9o\x05@\xe3\xbf\xd4\xab\xe5>\xc4\xe4y\xdd\x81\x7f\x143A'
 b'z\x9cK[\xf8o9bKT\xdf\xf7\xb6\x07\xe6\xaaG?`\xd0=\x8f\x8b\x12\x9f\x02\xa1\xed'
 b'\xf88\xe5\x05\xc5\xd0pZ\x8d\xa8\xa8@\xbeI\xb1')

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

{'A1': {'B1': 4950610972832272221,
        'B2': [{'C1': 1528965306,
                'C2': 9153759182564082665,
                'C3': -0.6286178231239319},
               {'C1': 340418898,
                'C2': 11340904441691772996,
                'C3': 0.9328135251998901}],
        'B3': 9851207104703156348,
        'B4': {'D1': -0.1890500730865936,
               'D2': -0.6015650926378204,
               'D3': 0.44857656955718994,
               'D4': [3680706991211799748, 4138799653571033665],
               'D5': {'E1': 19298,
                      'E2': 84,
                      'E3': 129431519,
                      'E4': 0.7799514532089233,
                      'E5': 53344,
                      'E6': [61, 143, 139, 18, 159, 2, 161]}},
        'B5': [-449251091, 1892730117, -1465348774, -1320567232],
        'B6': -0.06531538882713472,
        'B7': 224,
        'B8': 28772},
 'A2': 56982,
 'A3': -0.7351195812225342}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'EAFG\xcd\x1b\x00\x00\x00\x03\x00\x1dD\x00\x00\x00A\x00\x00\x00g8\xde\x00'
 b'\x00\x00o\x00\x80;\xbd\x87B\x8f\x82\xab\x19?\xfe\xc9_\xce\x0f\xe1Q?\xedP'
 b'\xb8\xe2\x9e_b\x1e\xb2\x87\xd4\xea\xb8E\xd5\xb9d!\xd2\x00">\xdc\x00\x00\x00'
 b'#\xff\xceJ\xbf:f\xfd\xcc\xf4\xe5\xbf\xe0Sle\x17G\x1a\xeb\xae)\xb7\x1c'
 b'\xfe\x80\xae/\xcaC\xf1\xa5\x14\x17s\x00\x00\x00I\xe9\xbdt\x7f\x0fHXN@'
 b"\x04\xbb\xa8\x86\xe5\x01ak\x00\x02\x00|?\xc6\n\xcc\xa4\xf7\xe3\xa0G=\xa1]'")

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

{'A1': 27,
 'A2': [15293, 34626, 36738],
 'A3': 68,
 'A4': [{'B1': 2244316,
         'B2': {'C1': [-21735, 16382, -13985, -12785, -7855],
                'C2': 0.9161037851472253,
                'C3': 30,
                'C4': -19833,
                'C5': 212,
                'C6': -5448,
                'C7': [17877, -18076, 8658]}},
        {'B1': 2769557363,
         'B2': {'C1': [-50, 19135, 14950, -564, -2843],
                'C2': -0.5101835226471139,
                'C3': -21,
                'C4': -20951,
                'C5': 183,
                'C6': 7422,
                'C7': [-32594, 12234, 17393]}}],
 'A5': 14558,
 'A6': {'D1': 233, 'D2': 3178528527, 'D3': 5213002605545629830},
 'A7': {'E1': [-6911, 24939],
        'E2': 0.17220457129567723,
        'E3': 71,
        'E4': 15777,
        'E5': 23847}}

Пример 2

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

(b'EAFG\xcd\xd7\x00\x00\x00\x06\x00\x1d1\x00\x00\x00G\x00\x00\x00m\n\n\x00'
 b'\x00\x00u\x00\x86\xb1H\r\xc3)\xca\xa5}\xcd\xeb\xf0\x85\x15\x92@'
 b'\xd8\xd4\\\xd21\xebw\xbf\xb1\x9anS`\xe2\xa0\x12z\xf4D}\x86\xb6\x1b\xd5'
 b'\xe3\x0eu7\xd8&\xfe\x00\x00\x00)C%\xd2\xe0\xc3\xf7\xaa\x86lD\xbf\xaa\x87'
 b'\xf1\xfe\xfc\xe1\xc0\xda$r.N\xea\xe8\x12,v\x85\t\xc5\x87\x84\xd3\x00\x00\x00'
 b'Ot\t\xad3\x8b\xfd\xe2\x15\xf6\x9fE\xb7hA/fN\x00\x02\x00\x82?\xe2'
 b'\x1e\xb1b\x06:\xc8J@\xbe\x87\xe5')

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

{'A1': -41,
 'A2': [45384, 3523, 10698, 42365, 52715, 61573],
 'A3': 49,
 'A4': [{'B1': 936912638,
         'B2': {'C1': [5522, 16600, -11172, -11727, -5257],
                'C2': -0.06876267943961034,
                'C3': 18,
                'C4': 31476,
                'C5': 68,
                'C6': 32134,
                'C7': [-18917, -10781, 3701]}},
        {'B1': 3313992915,
         'B2': {'C1': [17189, -11552, -15369, -21882, 27716],
                'C2': -0.051818430305903274,
                'C3': -38,
                'C4': 9330,
                'C5': 46,
                'C6': 20202,
                'C7': [-6126, 11382, -31479]}}],
 'A5': 2570,
 'A6': {'D1': 116, 'D2': 162345867, 'D3': -152535288398891160},
 'A7': {'E1': [16687, 26190],
        'E2': 0.566246692136553,
        'E3': 74,
        'E4': 16574,
        'E5': -30747}}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'aSUU.\xb6\xc0\x0cD\x00Q\x00\x00\x00\xa7\x87\x9e\xd9\xf7\xf3\xf4\x97\xa8o'
 b"K\xe2\x99qc'/\x80;F\xb7\x1aWilq\x8f\xd9\xe5\xc9R\x0eVS7\xac\xbc\x10"
 b'\xe1\xbf\x9f\xd4e\xfc\x12\x00\x18\x00\x1e\x00\xd1\xc2O\xbf$\x00\x00\x00dxtv'
 b're\xc58\xf4H\xa9\xfb\xd7\x12\xb9l\xb4\x03\x00N\x00')

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

{'A1': 213956142,
 'A2': {'B1': {'C1': 87,
               'C2': 105,
               'C3': 1032109253656015212,
               'C4': -0.5332930911632541,
               'C5': 4234531999,
               'C6': [{'D1': 2549412855, 'D2': 28584},
                      {'D1': 1905910347, 'D2': 10083},
                      {'D1': 1178304559, 'D2': 6839}],
               'C7': -0.8115664124488831},
        'B2': 'dxtvre'},
 'A3': {'E1': 72,
        'E2': -1111,
        'E3': 215,
        'E4': 3027024146,
        'E5': [197, 56, 244]},
 'A4': [167, 135, 158, 217]}

Пример 2

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

(b'aSUU\x04\xbak\x90D\x00T\x00\x00\x00\xfaz\x0b\x05\xc2\xe4\xb4R?\xd3)f\xa4\x07'
 b'xO\xf9\xd9S&\x10\\\xd3X\x84\x16FL)\xee\x88\x18\xc8L\x9c\x00q\xfd'
 b'\xdd?\xa1\x96\xc7\xbe\x12\x00\x18\x00\x1e\x00s\xa5@?$\x00\x00\x00gesklc\xef?'
 b'#TS\x0f]y\x0e\x93\xea\x87\xb3`\x06\x00N\x00')

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

{'A1': -1871988220,
 'A2': {'B1': {'C1': -45,
               'C2': 88,
               'C3': 1767924714883651204,
               'C4': 0.4685938363993043,
               'C5': 3200751265,
               'C6': [{'D1': 1387586754, 'D2': 54079},
                      {'D1': 128214569, 'D2': 20344},
                      {'D1': 643029497, 'D2': 23568}],
               'C7': 0.7525245547294617},
        'B2': 'gesklc'},
 'A3': {'E1': 93,
        'E2': 3705,
        'E3': 147,
        'E4': 1622378474,
        'E5': [239, 63, 35, 84, 83, 15]},
 'A4': [250, 122, 11, 5]}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xdbRIXNu\x00{\x00\x81\x00\x87\x00Q\x82\x8d\x00\x00\x00\xc3\x1be\xc2y'
 b"\xce\xe1;5\x9e@\xe3\r\xe0\x02\x00\x00\x00\x96\x00h%E4\\?'\xe3\xe8d \xb6z"
 b'\x04\x03.\xafX.he\xe8\xb2s\x00M\xfd\xa3\xeb?\x14\xfd\x8b=7e\xdf\xbf0\x96<'
 b'\x8d\xda\x1b\xdb\xbfj\x91se\xd6=\xee\xbf\xc2\xbfc\xc01?\xe9?\x98\xeb\xcf'
 b'K\xb9|\xc9\xbf\xb8\xd4@`\xd5\xe9\xc8\xbfrl\xd3x+B\x8a\xc1\xbbc}&\xf5`\xaf'
 b'zr\xd0\x1f0i\x03\xbbz\xcd8\xb2\xe3\xd1J\x10k>kq')

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

{'A1': [{'B1': 2027121778, 'B2': 16939},
        {'B1': 1673249162, 'B2': 9853},
        {'B1': 2058313973, 'B2': -12174},
        {'B1': 57225247, 'B2': 31419}],
 'A2': -32175,
 'A3': {'C1': {'D1': -51, 'D2': [56, -78, -29, -47, 74, 16, 107, 62]},
        'C2': -1033561149,
        'C3': 52857,
        'C4': -1640678431,
        'C5': 3759006528},
 'A4': 'kq',
 'A5': 9576,
 'A6': {'E1': 0.8601725697517395,
        'E2': -7385,
        'E3': 25832,
        'E4': 46624,
        'E5': 1146,
        'E6': 1487875587},
 'A7': -396007378,
 'A8': [0.8637682441654901,
        -0.49055272112305315,
        -0.4235750560058902,
        -0.9450485211823836,
        0.7889641530618905,
        -0.19911876870886824,
        -0.19463603210320968]}

Пример 2

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

(b'\xdbRIXNu\x00{\x00\x81\x00\x87\x00\xca\x18\x8d\x00\x00\x00\x96\xc9=J\x13'
 b'\xf6\x93,6\xfa\x87 L\xa5\x02\x00\x00\x00\x96\x00\xe9S\xc4\x95i?t\x00\x1f'
 b'2\xa9\xeeu\x91\xfd&p\xffl\xd8\xb4\x10\xec\xc8\xd8\ri]\xe7?\xfc\xa6K'
 b'\xe4\xd8d\xd1?d\xdd\x15\xb0\x88\xd2\xd7\xbfpo,?\x83\xb4\xdb\xbf\xe2F\xe2'
 b'\xf0\xda\x85\xe3?p\xdbQ\xd0R\xdf\xb3?p\xbf\x1f\xfe\xcb\xaa\xc9\xbf\xa7h\xe5'
 b'J{; \xd2lzA\x049\xcdN\xd6OWt\xe1\x15/\xb6\xd0\xf3\xf1<\xd2\xfaX\xc5]5fv')

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

{'A1': [{'B1': 1256548519, 'B2': 15227},
        {'B1': 2053952032, 'B2': 1089},
        {'B1': 3595488569, 'B2': 22351},
        {'B1': 789963124, 'B2': -12106}],
 'A2': 6346,
 'A3': {'C1': {'D1': -13, 'D2': [-15, 60, -46, -6, 88, -59, 93, 53]},
        'C2': 1245563286,
        'C3': 62995,
        'C4': -97112941,
        'C5': 2773229703},
 'A4': 'fv',
 'A5': 21481,
 'A6': {'E1': 0.9124414920806885,
        'E2': 116,
        'E3': 12831,
        'E4': 61097,
        'E5': -28299,
        'E6': 4285540093},
 'A7': 280287340,
 'A8': [0.7301526327558157,
        0.27178022665485435,
        -0.37222497173157465,
        -0.4328926197938392,
        0.6100897507442051,
        0.07762639604503163,
        -0.2005248061027447]}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GCBJ,\x00\x00\x00\x02\x005\x00\x02\x00\x00\x00`\x00\x00\x00\x1d\x12\xb6\x18'
 b'}\xaeT\xa4\x18\xee]\xb8\xd5\xbf{0R]@\x8aY\t\x19\xda\xc9u\x96\xb0'
 b'\x0e\xc4\xc8\x94\x10\x9azepigka?gznuxjp\xe9\x19\xcf\x97\xe4\x1b\x94'
 b'\x03\x00E\x00\x00\x00\xac\xbb\x07"YD\xfe\xb5\x04\x00R\x00\x00\x00H\x00V\x00')

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

{'A1': {'B1': -7725709593382849079, 'B2': 16},
 'A2': [{'C1': -102, 'C2': 'zepigka'}, {'C1': 63, 'C2': 'gznuxjp'}],
 'A3': [{'D1': 58519, 'D2': -27621, 'D3': [233, 25, 207]},
        {'D1': 17497, 'D2': -18946, 'D3': [172, 187, 7, 34]}],
 'A4': 414585373,
 'A5': 44669,
 'A6': -0.33937786342227594,
 'A7': [1565667451, 156863040],
 'A8': -9703}

Пример 2

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

(b'GCBJ,\x00\x00\x00\x03\x005\x00\x02\x00\x00\x00f\x00\x00\x006\x16\xb7\x1b'
 b'8\xb4\x00\xd8\xc7&+\x0b\xb3?6Y8\n\xcf\x9dM\xf0{P\xce\xb5\xd9\xf8'
 b'\x98\xe8\xb8\xebdTmchqgno}ynffcyf+yftwnpat\xdd\xfbf\x8b\x13\x02\x00M\x00\x00'
 b'\x00\xbf\xb00\x14l\xbct\x03\x00Y\x00\x00\x00O\x00\\\x00')

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

{'A1': {'B1': -1461162335374035506, 'B2': 100},
 'A2': [{'C1': 84, 'C2': 'mchqgno'},
        {'C1': 125, 'C2': 'ynffcyf'},
        {'C1': 43, 'C2': 'yftwnpa'}],
 'A3': [{'D1': 26363, 'D2': 5003, 'D3': [116, 221]},
        {'D1': 27668, 'D2': 29884, 'D3': [191, 176, 48]}],
 'A4': 464983606,
 'A5': 46136,
 'A6': 0.07438916870873413,
 'A7': [171465014, -263348785],
 'A8': 20603}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'|OQE\x00\x00\x00OO\xa9\xfc\xd7\xcf\xda&\x91\xb7\x9f\x82\n\xf4xv\xa5'
 b'=\x15\xb0\xb7J\xb6\xb8\xc0\xad\x15.\\z\xb5\x99Ih\xb4Y*s)r\xbe`\xbf7I'
 b'\xe3?z\x07\xef?f\xd1\x91\xbfM\x03s\xbfeu\x92\xbf*\xfd)?\x0e\xae\xd9\xd4\xac?'
 b'\xeb\x92N\xc4\x17%\x0ct\x96\xd0\xcb\x88\xd1\xb7c\xad\xd8\xf7\xcc\x8a'
 b"\x86\r\xf6x0\xd8,\x87\xd7!\xb8H\x06'f\xedz\xc1\xc33<\xa2*9}~\xc6~\xb2n\x1d6"
 b'\\\xb6J\x1b;\x92t\xcfj\x83\xc3@9\xa7e\xde\x0b\xf5\xacos\xa8r\xff'
 b'?\xd6\xdd\x0c\xac\\\xba(')

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

{'A1': {'B1': {'C1': 0.861609824170189,
               'C2': [{'D1': 29846,
                       'D2': 15045269414467579352,
                       'D3': [247, 204, 138, 134],
                       'D4': 234256432,
                       'D5': 216,
                       'D6': 747099937},
                      {'D1': 47176,
                       'D2': 443436258472084275,
                       'D3': [60, 162, 42, 57],
                       'D4': 2105460350,
                       'D5': 178,
                       'D6': 1847408220},
                      {'D1': 46666,
                       'D2': 1962323093043708867,
                       'D3': [64, 57, 167, 101],
                       'D4': -569641556,
                       'D5': 111,
                       'D6': 1940419327}],
               'C3': 0.35724179107902154},
        'B2': 20393,
        'B3': [4242001882,
               647083935,
               2181756024,
               1990540565,
               2964802230,
               3099634965,
               777812661],
        'B4': 2571724980,
        'B5': 22826,
        'B6': 115},
 'A2': 695385696,
 'A3': [-0.7159711718559265,
        0.9766835570335388,
        0.9016352295875549,
        -0.8008338809013367,
        -0.8963252305984497,
        -0.6679254174232483,
        0.5573554635047913],
 'A4': -11092}

Пример 2

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

(b'|OQE\x00\x00\x00O\xe8\xea\x0c\xe1\x19MCy\xe7\xe6E\xc5)l7k\xf7\xd7\xff2'
 b'fx\x18\x11\xb2\xff\xc7\xbe\xff\x17\x85c\xcaM\xf8\xe2\x14\xf6Pa\xad?\x18v'
 b'\x0e?9\x021>\xfa.J>wO\x8c>\xfc\x8e.>d\xe9i>:^\xdd\xca\x11\xbf\xc9\xdc+\x0f'
 b'\x9fG8\xbb\xf7\xacn\xb0\x0f;\xf7r\x137\xb1)\xaa\x7f\xef\xaa.\xa2:\xff'
 b'\xbdZ\xdfc\xea/\x7fm\xf9L\x1d\x19\xba{?,-\xcd\xf9\x8f\xcb\x11\x80\xc0'
 b'\n_\xf6bJu\xc7\xdd\xa2\xdd\xe8CIr \xe5\xde\xc1\x80\xaf\xed\xecS*?\xd4vI'
 b'\x87\xaeb\x8c')

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

{'A1': {'B1': {'C1': -0.20203150046159535,
               'C2': [{'D1': 48119,
                       'D2': 12425062001438847507,
                       'D3': [55, 177, 41, 170],
                       'D4': 2146413102,
                       'D5': 162,
                       'D6': 989838682},
                      {'D1': 57187,
                       'D2': 16874846439091215641,
                       'D3': [186, 123, 63, 44],
                       'D4': 768473487,
                       'D5': 203,
                       'D6': 293650442},
                      {'D1': 24566,
                       'D2': 7082602865270906344,
                       'D3': [67, 73, 114, 32],
                       'D4': -438386304,
                       'D5': 175,
                       'D6': -303279318}],
               'C3': 0.31971967935673073},
        'B2': -5910,
        'B3': [216078669,
               1132062694,
               1170549100,
               929822679,
               4281493112,
               403813119,
               3351183127],
        'B4': 2237909581,
        'B5': -1822,
        'B6': 20},
 'A2': 4132463021,
 'A3': [0.5955513715744019,
        0.722689688205719,
        0.4886344075202942,
        0.2415143847465515,
        0.49327224493026733,
        0.22354663908481598,
        0.1820024996995926],
 'A4': -13807}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GBDET\xaas\xa2\xbe\x00\x02\x00.\x9f\x00\x02\x00@\xb2\xca\x00\x02\x00\x00'
 b'\x00\x8a~K+#\x00\x00\x00\x07\x00\x00\x00\x92?\xee\xd6\xe8X\x06\xe3,hx?|q\x11'
 b'\xbd\x9b\xd9#>}\xd8\x1d>`\xbcC\xbf\xde\x89\x9c\xc9\xd3\xe8\xd4e\xec\x11\x9d'
 b'\xc3\x9b\xb5\xfa\x00\x00\x00\x02\x000\x8ej\xa7=\xbd\xa5~:\xe4\x89\xbf=\xc3f'
 b'\x90\xbf\xc5\xb9\xeeg\xf4\xca(TO\xe8YI\x8c\xf1\xb2\x00\x00\x00\x02\x0083'
 b'\xd1^r\xbb\x88\xfc\xb2\xa13?l\xf9\x1e\xb2\xa6y\x01\x90\xc0?\xfb\xad\x92\xa2'
 b'\xa0\xc1.N\xf1')

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

{'A1': 1420456866,
 'A2': {'B1': -66,
        'B2': {'C1': 'hx', 'C2': -97},
        'B3': [{'D1': -0.47714919767134956,
                'D2': 7344264461623735802,
                'D3': [0.9861002564430237, -0.0760977491736412],
                'D4': 2389354301,
                'D5': -0.080807164311409,
                'D6': -7031,
                'D7': -0.7412627935409546,
                'D8': -112},
               {'D1': -0.1697366721724205,
                'D2': 6075329892529795506,
                'D3': [0.24789471924304962, 0.2194681614637375],
                'D4': 869359218,
                'D5': -0.004180514253675938,
                'D6': -24269,
                'D7': 0.9256762266159058,
                'D8': -78}],
        'B4': -19766,
        'B5': [-1502019184, -1069548627],
        'B6': 2118855459,
        'B7': [146, 162, 160, 193, 46, 78, 241]},
 'A3': 0.9637338370585886}

Пример 2

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

(b"GBDE\x9f\xce\x83'b\x00\x02\x00.:\x00\x02\x00@qq\x00\x03\x00\x00\x00\x8a0\x8a"
 b'8\x96\x00\x00\x00\x02\x00\x00\x00\x96\xbf\xd9\x9a!$\x1c6\x04qg\xbfA\x98\xb5'
 b'\xbf\x12\x1f\x89?Kat\xbed\x9c\x9b?\xe5I\xf0\xdc\xf5\x90r\xfa$\x87ma\x82"\xba'
 b'\x00\x00\x00\x02\x000\xf3\xbbv\x89\xbe\xa0\x14]\xfa\xc7\xbe\xaf\xa9\x93'
 b'\xb5?\xe0\xe0\xb1\xb8\xa3\x05>\x97\xe0c)@\x08\xa1v\x00\x00\x00\x02\x008J'
 b'\x07\xc4U?z\xab\xceY\x9d<\xa3\x80\xcc\xba\xeb.k\xfd\xa2\xe03\xd3\x99\r'
 b'\x8c\xbd\xa4?')

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

{'A1': 2681111335,
 'A2': {'B1': 98,
        'B2': {'C1': 'qg', 'C2': 58},
        'B3': [{'D1': 0.6652759852991166,
                'D2': 18024680512500671162,
                'D3': [-0.7562363743782043, -0.5707936882972717],
                'D4': 4089149065,
                'D5': -0.31265535950660706,
                'D6': -1337,
                'D7': -0.34309062361717224,
                'D8': -75},
               {'D1': 0.5274284940898395,
                'D2': 10943856123329421686,
                'D3': [0.7944557666778564, -0.22325365245342255],
                'D4': 1242022997,
                'D5': 0.9791840314865112,
                'D6': 22941,
                'D7': 0.019958876073360443,
                'D8': -70}],
        'B4': 29041,
        'B5': [-349279235, -1562364973, -1727165251],
        'B6': 814364822,
        'B7': [164, 63]},
 'A3': -0.40003231550585405}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'WDC\x00\x00\x00\x8fr\x0c\x8cO7U:W418}\x9f\xf0\xd5\x199\x0f\xa3*\x1d'
 b'qq\xee\xe8\xec\xf1\x0et$\xe9W(i\xd0.\xc2?\xdf\xb3\xeaEgmTnrifp\x0e(l'
 b"\x04\x19\xccD\xab\x00\x02\x00\x00\x009\xaa'{ti\x0c\xde\x1a\x8e.\xd4(\xb4"
 b'\xb1K\xcd\xc8E\xd7\xba\x08{0\xa8\x00\x03\x00\x00\x00S\xe8\xdf\t\x1fC\xcf\xd1'
 b'\xfdg\x1a\xec\x83T\xb4R\x03\x9e\xf8\xc1\x07|\xb2\x082\x00\x03\x00'
 b'\x00\x00q\x18\x8b\xfe3\xdb\x99\xf4\xd4\x14(K\x96\x00)\x00A\x00_\x00}')

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

{'A1': {'B1': {'C1': -48, 'C2': 11970, 'C3': 0.4953561475537829, 'C4': 'nrifp'},
        'B2': [{'D1': [237530116, 432817323],
                'D2': 2854714228,
                'D3': 7569669279338910760},
               {'D1': [3031518157, 3360020410, 142291112],
                'D2': 3906930975,
                'D3': 4886355007007026307},
               {'D1': [1421103619, 2667102471, 2092042290],
                'D2': 411827763,
                'D3': -2622796116258174058}]},
 'A2': 29196,
 'A3': [-8336383546048957391,
        4070585494928963855,
        -6689501923425457940,
        -1076795559012521879]}

Пример 2

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

(b'WDC\x00\x00\x00\x8f\\&l\xb2\xbe\x08\xbbt4%\xe8=\xb1\x9d\xfd\xc2\xaa'
 b"\x9b&\x15\xa9Y(6\xb8 \xd9%l\xd0X\xf5]\x03\xe7\xf0>\xbf\xccy'_l\xe1\xb8aocy"
 b'l"9\x85(\xfd)\xf3\x06\x00\x02\x00\x00\x009"\x8c \xe7\xdf\xfd\xfe6\xa5R\xdaI.'
 b'\xda!\xa8p\xfe\\\xc3\x8eN\xa4\x1b\x00\x03\x00\x00\x00S1\xe7\xc3'
 b'\x88\x97\xe3\xc6.V\xf3x\xed%i\xff`\x13:\x19x\xf9m\x80\x14\x00\x03\x00'
 b'\x00\x00q\x10z<\x88v\xef\xcb\xf3\x1e}W\x9c\x00)\x00A\x00_\x00}')

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

{'A1': {'B1': {'C1': -25,
               'C2': -4034,
               'C3': -0.22244732055129446,
               'C4': 'aocyl'},
        'B2': [{'D1': [574194984, 4247384838],
                'D2': 579608807,
                'D3': -2306407923488466359},
               {'D1': [786047400, 1895718083, 2387518491],
                'D2': 837272456,
                'D3': -7501934651939522323},
               {'D1': [627703648, 322574712, 4184702996],
                'D2': 276446344,
                'D3': 8570292860958365596}]},
 'A2': 23590,
 'A3': [7832531646664684581,
        -1712016991205545317,
        2744285748344043552,
        -2799711951239422717]}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'-CIW\x00H\x00\x86f\x8fx\xe0\x1eU\xf6\x87s\x1b\x86\xaf\xc8\x95\xb1\x1d'
 b'*\x06\x9d\x87v\x98/7M\xf7\x07\xe5\xbf\xe9\x04\xa8\xf1\xe3U\x02\xfe\xa5?\x03'
 b'\xab\xdd\xfe\x00Ms\xf0\x94.\xee\x87\xffB\xe5\xe2\x17x"\x8e\xb3"k\xa9\xa1'
 b'\xbf\xdc\xdd\x95\x91\xb8\xccd\x00\x00\x002\x8a\xbe\xbf\xcb\x1e\xe4\xfc_'
 b'h`\x00\x05\x00\x00\x005\x00\x02\x00\x00\x00?\x00AY\x1a\x88\x13(\x8d\x8a\x18'
 b'\t\xd7%1\x9e\xbfg.\xf9\x8aN\xb1\xd97T\xe3}Y?\xe0\x90\xa1X_\x06\x14\x00\x00'
 b'\x00v\xd3l?\xd4\xd9\x19\xd2>\x84\x04\x00\x02\x00\x00\x00y\x00\x02'
 b'\x00\x00\x00}\x00\x7f\x99\x19\x89[\x0cG0~\xaf\xd3')

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

{'A1': [{'B1': -0.4510244296136021,
         'B2': {'C1': -2, 'C2': 77},
         'B3': -30018,
         'B4': -0.2118803245819576,
         'B5': {'D1': [29680, -27602, -4473, -190, -6686],
                'D2': [23, 120],
                'D3': {'E1': 8846, 'E2': -1289589847, 'E3': -95},
                'D4': 1494910995,
                'D5': 40},
         'B6': 141,
         'B7': [35352, 2519]},
        {'B1': 0.5176550603866326,
         'B2': {'C1': 37, 'C2': 12702},
         'B3': -11412,
         'B4': 0.32575078517589895,
         'B5': {'D1': [-16537, 12025],
                'D2': [-118, 78],
                'D3': {'E1': -20007, 'E2': 928310141, 'E3': 89},
                'D4': -1726379685,
                'D5': 12},
         'B6': 71,
         'B7': [12414, 45011]}],
 'A2': 7390258417515230855,
 'A3': 8294371228275552541,
 'A4': [705076615, 1989685047, 1308035045],
 'A5': -0.7818188404441175,
 'A6': -347,
 'A7': 0.5143411755561829}

Пример 2

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

(b'-CIW\x00H\x00\x8a\xf1k\xb6\xbakC\xa0ny&6\xd4\x96\xf9^\xbf\x91T\x98\xa4'
 b'Yg\x95QX6\xee\xc7?\xe9(\xae,T{ u\xc3>\xc5\xc6\x87\xe9\xca\x18\xe4\xb7\xad'
 b'\xed\x9f\x8fi\x1e5|K>|xH\x15"\x9b/\xbf\xdc\xd4\xb0\xee@^D\x00\x00\x002'
 b'\x1c1?\xe2s\xc3|sFN\x00\x05\x00\x00\x005\x00\x02\x00\x00\x00?\x00A'
 b"\x14;\\\x8bTT\xb0\x9dZ\r\xc2)x\xbfQ\xcc\xe5'\xd8*\x9a))u\xaa\xdd\xbf1"
 b'\xb7\x19?\xda\x01#S\xba\x1bt\x00\x00\x00v\x1fM\xbf\xe6\x8c\xb0\xd2\xd8O\xd2'
 b'\x00\x04\x00\x00\x00y\x00\x02\x00\x00\x00\x81\x00\x83\xd2\xa3'
 b'\x80\xeb\x0b\xec\xad\xccRP')

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

{'A1': [{'B1': -0.45048163668386487,
         'B2': {'C1': -23, 'C2': -13800},
         'B3': 7217,
         'B4': 0.5766313009900814,
         'B5': {'D1': [-6985, -21011, -24689, 26910, 13692],
                'D2': [75, 62],
                'D3': {'E1': 31864, 'E2': 1209344667, 'E3': 47},
                'D4': 339434635,
                'D5': 84},
         'B6': 84,
         'B7': [45213, 23053]},
        {'B1': 0.40631945778334644,
         'B2': {'C1': -62, 'C2': 10616},
         'B3': 8013,
         'B4': -0.7046741598192006,
         'B5': {'D1': [-16559, -13083, 10200, 10906],
                'D2': [41, 41],
                'D3': {'E1': 30122, 'E2': -574672457, 'E3': 25},
                'D4': -761036565,
                'D5': 11},
         'B6': 236,
         'B7': [44492, 21072]}],
 'A2': -1050545176281112466,
 'A3': 8729725214398176959,
 'A4': [-1856726876, 1499960657, 1479995079],
 'A5': 0.7862158647365938,
 'A6': 30147,
 'A7': 0.38628026843070984}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'DDCH\x18\xffB\x10\xb1\xd4rT\xe9?\xda\xb7\x016Id\x0fE\x07wA\xbe/!'
 b'\xcf\x8f\x1e\xbf\x02\nN\xe4\xb8\x8e#\x92\xe9*\xc4\xcfo-L\xeb\xab\x05\xde\x85'
 b'\x18\xfc\xde5\x02\x00\x00\x00|\x00\x00\x00\x8d\x90\x18\xed<\xf3\x99\xce'
 b"\xeb\x85j\xc7\xcc\x03\x93\xdd\x93&\xb6'@\xab]:\x01\xbb\xdc\x02"
 b'\x00\x00\x00\x84\x00\x00\x00\xb9\x14\xdc\xee\xa1\xe0\xc8\xe8\xf7P\xef"\x1d'
 b'|\xf3\xac-\xe6\x99\xe4z\x10\xb7\xe4\xb3g\x00`?\x9bp\xed\xbc\x9b\x1dv\xbf'
 b'\x93r\x1f\xbf')

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

{'A1': -1,
 'A2': {'B1': 0.7915586618551134,
        'B2': {'C1': 4976306378869159898,
               'C2': -0.18893061578273773,
               'C3': 8495,
               'C4': -0.619381844997406,
               'C5': 10530417278477797890,
               'C6': [{'D1': 16954976655393434345,
                       'D2': [171, 5, 222, 133, 24, 252, 222, 53],
                       'D3': [0.8750061392784119, -0.02898435853421688],
                       'D4': 37005,
                       'D5': 9650033787177594136,
                       'D6': 106},
                      {'D1': 13125340743881444551,
                       'D2': [39, 64, 171, 93, 58, 1, 187, 220],
                       'D3': [-0.9613892436027527, -0.622842013835907],
                       'D4': 5305,
                       'D5': 5834387791741578972,
                       'D6': -17}],
               'C7': [7458, -3204, 11692, -26138, 31460, -18672, -19484]}}}

Пример 2

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

(b'DDCH\x18?\xf0>\x85\xef*8\xdf\xbf\x14o`q\x90\xaa\x11\r\xf4\xd2:\xbe\xf5\xe7'
 b'Zs\xbe\xbe\xc3\x9316\xe0\x16\x00-~\xf3\n\x98:\x8d\xcd\x18\xf7^\xd5v5;j\x1f'
 b'\x02\x00\x00\x00|\x00\x00\x00qF\x14\xc8\x9f\xfc\x93\xad>\x87y\xcf\xea<\x0b$'
 b'\nr\xf6*\x19fx\x00\x8b\xa4v\x02\x00\x00\x00\x84\x00\x00\x00`\x07L\xf6\xe7'
 b'\xa8\x8b\xa8\xab\xb5\x87\xfdWb\x86z\xf6\xf2Hc\x1a\x10f\xaf\xf5)!W?'
 b'\x1a\x02\xe4\xbe\xac\x80\xfa>\x07\xd6\x93\xbe')

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

{'A1': 63,
 'A2': {'B1': -0.4878032054011632,
        'B2': {'C1': 941721334451302164,
               'C2': -0.18244534730911255,
               'C3': 59381,
               'C4': -0.37197381258010864,
               'C5': 3242616883944461251,
               'C6': [{'D1': 1787239909934429054,
                       'D2': [247, 94, 213, 118, 53, 59, 106, 31],
                       'D3': [0.8403497338294983, -0.4453285336494446],
                       'D4': 18033,
                       'D5': 9745417494786459668,
                       'D6': 121},
                      {'D1': 17758267430598929103,
                       'D2': [42, 25, 102, 120, 0, 139, 164, 118],
                       'D3': [0.4892629384994507, -0.2887422740459442],
                       'D4': 1888,
                       'D5': 13090742059670173260,
                       'D6': -121}],
               'C7': [22525, -31134, -2438, 18674, 6755, 26128, -2641]}}}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'DIWR\x06\x17L\xb2\x0e\xe2-\x7fg-\x00\x00\x00D\x00\x00\x00\x80\xa1(\x7fy\xe5!'
 b'\x1f\xa5\x0b\xa3 \x1b\x99\xbf%\x94\x00\x1f\x90\xb0\x16\x14?G\xbc@'
 b'<\xc6\x9f\x1a*\xbe%,fkr\x1b\x8c9\x96\xf0\x86\xd7\x04\x08Y5j\x83'
 b"\xb1\xf0\xdb\x8d\xbeYXkeo!\x9b\xc4R\x13\xe2\xd4\x94\xd6\x99k\x1d\x0b\xdc2K'w"
 b'L\x1c\xf6\xe7\xd3\xf5w\x01\x93|\rQ\xa0\x81]\t\x0c1&\t\xe1\xcfZ\xacbl\xdbO'
 b'\x04]\xe1\x14\x06\xfbJ1\x81\xadK)\xed\xbf\x03\x00\x00\x00b\x00\x07\x00[\x00'
 b'\x00\x00\xf2*2\xa5\x13K?\x95\t\x94\x0f\xd7z\x00\x00\x00')

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

{'A1': 7457729956881255447,
 'A2': [{'B1': 1010875463,
         'B2': -58,
         'B3': -0.16611717641353607,
         'B4': 11301,
         'B5': 'fkr',
         'B6': 348895864015129627,
         'B7': 8},
        {'B1': 2204775769,
         'B2': -79,
         'B3': -0.2770686149597168,
         'B4': 22617,
         'B5': 'keo',
         'B6': 10724445185296866081,
         'B7': -42}],
 'A3': 2243326399394390400,
 'A4': 2720061041745791909,
 'A5': {'C1': [-103, 107, 29, 11, -36, 50, 75],
        'C2': 2771528434,
        'C3': -2949976462024815853,
        'C4': {'D1': 1818405978,
               'D2': 20443,
               'D3': 350313732,
               'D4': 64262,
               'D5': -0.9112909687769755,
               'D6': [17713756803601037095,
                      9340554745532842359,
                      14979263895247259997]}},
 'A6': 36895,
 'A7': 0.5784711837768555}

Пример 2

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

(b'DIWR\x06D\xfcF\xe6\xe5*p\x05-\x00\x00\x00D\x00\x00\x00\xe0\r\xc5\x9bwh\xa6'
 b'RD\x12\x89\xe1xM\xd7\xac\x87\x00e\x837\x0ft>\x83\x04[\xca\x04\xaa5'
 b'+\xbf\xa0\xffbkn\xee\x04\xa2B>\xa0`8\x16\x83\x12\xcb\x86\x83)Qq?$\rm'
 b'wj\xc3\xe3\xa7K9%\x9a\xef\xed%\x94\x01\x1a\xf73T\xe3G\x8f\xfbc?\x9cg\x82\xd5'
 b'\xaf\xd8j\x8f\x8b?\xd9\xa8#\x1c\x14\xe3\xe4\xde\xe2\xf1\xe9\x0c\x82\xed'
 b'\xbf\x02\x00\x00\x00]\x00\x02\x00[\x00\x00\x00\xf6\x1a1\xa3\xe5\x9f*MWC\x8a'
 b'\xd5m\x00\x00\x00')

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

{'A1': 391860334480522308,
 'A2': [{'B1': 3394962563,
         'B2': 4,
         'B3': -0.6687875986099243,
         'B4': -96,
         'B5': 'bkn',
         'B6': 4062423053154518254,
         'B7': 22},
        {'B1': 2261455491,
         'B2': -125,
         'B3': 0.9426446557044983,
         'B4': 3364,
         'B5': 'mwj',
         'B6': 17265153049490875331,
         'B7': -19}],
 'A3': 5955562420167839200,
 'A4': -5992235597617884604,
 'A5': {'C1': [37, -108],
        'C2': 2737904374,
        'C3': -3059558954608975899,
        'C4': {'D1': 2341432024,
               'D2': -9921,
               'D3': 337388456,
               'D4': 58595,
               'D5': -0.922125298427172,
               'D6': [10324470621558741505, 12670176508191400955]}},
 'A6': 33637,
 'A7': 0.23833929002285004}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'AKAU\x08j\x99\xe4\xa7\xac4\xe4?\x02\x00\x9d\x00\xa1\xb6[\xbe\xe2\xdb<'
 b'?\xc02\xf8\x03E\xfb\xa3\x8e`_\x9eT\xcb8\xc5?\x06Nh\x92"\x82]\xbe\xe3\xbf9'
 b'i=\xbe\xe0\x18\x08y\xf1\x13\xe4?\xb8\xc9\x13\x83\xb6\x91\xeb\xbf\xc4#*6\n'
 b'\x7f^\x1d\xe9\xbf\x98\t,?\xcc\x88\xc0\xfbsT\xd2?\xe4\x89\xf4\x1aH\xbe\xd9'
 b'\xbf\x836\x00\xab\x05\xc1\xfd^\xae?\x84\xf3p\xbfP<\xe3\xac\xa5'
 b'\xce\xcb\xbf\x9f\x00\x1al(?\x03\xe93?\xf0iR=-\xa1\xfc>\x8a0\xfb=`\x9d\x0c'
 b'4\xed\xd4\x15\xe3r\xb1\x105yx\t\xe0#\x8dy\x1ag')

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

{'A1': 0.6314299849662295,
 'A2': {'B1': 'yx',
        'B2': -0.21456386148929596,
        'B3': 0.7377301454544067,
        'B4': 10278335048427516608,
        'B5': [{'C1': 0.16579572326440495,
                'C2': 19974,
                'C3': -0.616987947626126,
                'C4': -0.18497170507907867,
                'C5': 0.6274344791316047},
               {'C1': -0.8615372238257839,
                'C2': 9156,
                'C3': -0.7848350983856041,
                'C4': 0.6720213890075684,
                'C5': 0.28640460572399884},
               {'C1': -0.4022388709292086,
                'C2': 13955,
                'C3': 0.05931847554423619,
                'C4': -0.9412157535552979,
                'C5': -0.21724387113360644}],
        'B6': {'D1': -8183, 'D2': [-29405, 6777], 'D3': 103},
        'B7': [0.6578994989395142,
               0.7027742266654968,
               0.05137056112289429,
               0.4934171736240387,
               0.12265117466449738],
        'B8': -2083525137343406752},
 'A3': 45426,
 'A4': 13584}

Пример 2

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

(b'AKAU\x08<a9\xeeb\xc2\xd4?\x05\x00\x9d\x00\xe4\xf1\x14?XQ\x7f?d\xef\xe2'
 b"\xa6}\xbd\xd0\r\x00\xa8\xe7'<\xdbr\xbfw\xd5&\xbd\xa0\xf9Zv\xe6\xbf\xf5"
 b'YL\xbf\xf2\x1f\xe2\x0ewV\xe1?\x90\x03Rp\xc1R\xb8\xbfQ\xb4lY\xd4\xbe\xf0Q\xe5'
 b'\xbf\xe0\x81\xb7\xbe\x00*\x1a\x0b\xf0\xfb\xd6?P\xb3\xe5\xa5\xa1\xa6\xb6'
 b'\xbf\x93l\x90\xbd\xae\x1e\xb3\x19\xe4\xbf\xac\xcc$\xbf\xb8\xe8"t\xf2'
 b'R\xef\xbf\xa2\x00\x0f\xab\x1a?Y\x82\x06\xbf\xe3\xefv\xbfU\rF?\x0b>\x99'
 b'>\xb8\xd1\x82\x92\xe8t\xca\xddN6\xcd\xf5qlxro\x189Q#W\x82\xb7')

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

{'A1': 0.3243644071967713,
 'A2': {'B1': 'qlxro',
        'B2': 0.5818159580230713,
        'B3': 0.9973349571228027,
        'B4': 995503865017331556,
        'B5': [{'C1': -0.004603610023403704,
                'C2': 54647,
                'C3': -0.7019476771874096,
                'C4': -0.7982476353645325,
                'C5': 0.5418048182191326},
               {'C1': -0.09501275055118996,
                'C2': 46161,
                'C3': -0.6662524916780916,
                'C4': -0.3584127426147461,
                'C5': 0.359127055017467},
               {'C1': -0.08848009395815137,
                'C2': 27795,
                'C3': -0.6281371688145772,
                'C4': -0.6437480449676514,
                'C5': -0.9788753765381193}],
        'B6': {'D1': 14616, 'D2': [9041, -32169], 'D3': 183},
        'B7': [0.6041726469993591,
               -0.52542644739151,
               -0.9645978808403015,
               0.7736409306526184,
               0.29930147528648376],
        'B8': -2465029303792643656},
 'A3': 13902,
 'A4': -2611}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GXQH\x00\x00\x00\x04\x00\x00\x00\x1a\x00\x00\x00\x03\x00\x82\x00\x00'
 b'\x00\x8e\x9ca\xc6Rizea\x94a\xa5I\xbfs\xbf\xb0\x96\xb2\x9bn\x1fP'
 b'\x00\x02\x00\x1e\x133\xbe\xfa\x97\xa4h\x11\xae\x8d\xff,A\xcb\xa5o\x11\xc9_('
 b'\xe51\xde\xbf\xe5CL\xd0)?2\x00\x07\x00<\x98d\x11\xc8o\xe68\xcf\x04'
 b'\x0f~\xc3\x17\xf92s\\;\xd3K\xcb\xe5\x86?\xd4\xb0\xf2\xdf\xdexd\x00\x07'
 b'\x00_\xd6\xc4\x9c\xeb\nCc~c\xd2\x10[\x00\x00\x00 \x00\x00\x00C\x00\x00'
 b'\x00f\x05Lk\xdc\xbd\xd5"\xdb')

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

{'A1': 'izea',
 'A2': [{'B1': -1521893517,
         'B2': -0.06479946417505045,
         'B3': [-108, 97],
         'B4': {'C1': 19, 'C2': 51, 'C3': -66},
         'B5': -389662075864052225,
         'B6': 44},
        {'B1': 686109150,
         'B2': -0.6644653382918249,
         'B3': [65, -53, -91, 111, 17, -55, 95],
         'B4': {'C1': -104, 'C2': 100, 'C3': 17},
         'B5': -4003728412043374722,
         'B6': 195},
        {'B1': 1271653766,
         'B2': 0.32330009329041887,
         'B3': [23, -7, 50, 115, 92, 59, -45],
         'B4': {'C1': -42, 'C2': -60, 'C3': -100},
         'B5': -1510320630428085744,
         'B6': 91}],
 'A3': {'D1': [5, 76, 107], 'D2': 220, 'D3': -0.10407038778066635},
 'A4': -1671313838}

Пример 2

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

(b'GXQH\x00\x00\x00\x03\x00\x00\x00\x1a\x00\x00\x00\x03\x00\x7f\x00\x00'
 b'\x00\x8bBu\xca/nld,\xfb\x0c\xeb\xa0\xce?\xd02N\xbd\x9av,\x00\x02\x00\x1d\xb1'
 b'\x82Vu\x12\x84\xc6f\x92x\x1b\xa8\xeex\xad\xb3\x97\xaai\x8d\xd3?\xdbpX'
 b'\xd9\x89"\x08\x00\x05\x00;\xc7\xe2\xe8\xe6\xad\xa5\xc3\x0b\xb2\xfd8\xa9'
 b'!\xdf\xe0\x1c\xce\x05+\x9bp\x00\x17\xbf\xeb_!\xb1v\xa8\xe6\x00\x07\x00\\\xf7'
 b'B)58,udA\x9dtG\x00\x00\x00\x1f\x00\x00\x00@\x00\x00\x00c\x7f\x86|\xe6?'
 b'"\xf5\x11')

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

{'A1': 'nld',
 'A2': [{'B1': 216768718,
         'B2': 0.2530705310435646,
         'B3': [44, -5],
         'B4': {'C1': -79, 'C2': -126, 'C3': 86},
         'B5': 8435951039677626395,
         'B6': 168},
        {'B1': -1435922989,
         'B2': 0.42873212093084634,
         'B3': [-18, 120, -83, -77, -105],
         'B4': {'C1': -57, 'C2': -30, 'C3': -24},
         'B5': -1824620016881697480,
         'B6': 169},
        {'B1': -1687158761,
         'B2': -0.8553627458652755,
         'B3': [33, -33, -32, 28, -50, 5, 43],
         'B4': {'C1': -9, 'C2': 66, 'C3': 41},
         'B5': 3834863965410794868,
         'B6': 71}],
 'A3': {'D1': [127, 134, 124], 'D2': 230, 'D3': 0.6365519165992737},
 'A4': 1115015727}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'DBPJ\x9d\xc7\x01A\x1b\x8a\x9fB\x9c4\xb9\xe3x\xd0ur\x06 ]O\xe1\xf6\xc0\x9d'
 b'CEG^\xb4\xbf\x85q0\x07TDe\xf0\x03\x00\x00\x00O\x00\x00\x00\x1e\x06'
 b'\x00[\x00\x00\x00m\x00\xd8~\xcf>\n\xc5\xc6\xea\x80k\x01\x98\xab\xfb\x1f\x03b'
 b'Tg2C\x00\x00\x00G\x00\x00\x00K\x00\x00\x00nerrubO\xea[\x13\x9d\x07\xe7'
 b'\xf3\x89~\x81y)\xec\x03\x00a\x00\x00\x00\xc6\x11x\xae\xa6\xe86'
 b'\xcd\x93\x02\x01\x8fa)\xf0\xa0\x04\xa7\x1c\xa9&\xa6,!\xa4\xbd7'
 b'\xce\xe7\xde\xe5\xd1L\xea(\xab\x0b\xd8\xbeG\xe9\x8bf\xf5\xd6\x03\x03'
 b'\xb4m4\xd4\x82\xb6\x14\xdc\xf0Z\xcd\xc0\x84h_\xc8\xf6')

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

{'A1': {'B1': 4800707577459623837,
        'B2': 13468,
        'B3': 58297,
        'B4': -12168,
        'B5': 'ur',
        'B6': 8198,
        'B7': 4141961053},
 'A2': {'C1': -0.07956357422846505,
        'C2': 17322326669439037829,
        'C3': [{'D1': 27520, 'D2': 38913},
               {'D1': 64427, 'D2': 799},
               {'D1': 21602, 'D2': 12903}]},
 'A3': 30,
 'A4': 'nerrub',
 'A5': {'E1': -5079,
        'E2': [324790863, 4092004253, 2038529673],
        'E3': 2927104454,
        'E4': 59558,
        'E5': 54,
        'E6': [17305470309973005261,
               3217301491574834336,
               16563931352399717409,
               13751754291929566417,
               217253556519692615,
               15858500860900568500,
               14438373849752754928],
        'E7': 246},
 'A6': 0.40526461601257324,
 'A7': -15094,
 'A8': 60102}

Пример 2

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

(b'DBPJi\xe3\xe7\xf6;C]\xab\x1e\x90Nx\xd9\x98lc8\xd6\xb6\x9a\x7f{ 8\x0fh\x82j'
 b'\xe0?x~\x02\x0c\xfdH\xfb\xd9\x03\x00\x00\x00O\x00\x00\x00q\x05\x00[\x00\x00'
 b'\x00l\x00s\x80\xeb\xbe\xdepBv\xb4\x08id\x03\xb2dR\xa9,\xca\xa2C\x00\x00\x00G'
 b'\x00\x00\x00K\x00\x00\x00ljhto\x0e\x9bcA\xa9\xb8f\x94Sm\xeaFEz\x03\x00'
 b'`\x00\x00\x00w\xa0\xe3\xb7\xc2\xe9\xaaF\xe2\x01\x0f\xccz\x1d5\x18'
 b'\xd0\xf7\xf2\xe5J\xa3\xa9d\xbf\xee)C\xbfU\xb3\x0b\x03wR\xfc\x9b"\x1e7'
 b'\xcb\x7fL\xd3|r\x9c\xbb\xe0T\x1c\xd0e\xc1\x17\x8f\x0bE?\tI\x8dMy')

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

{'A1': {'B1': 12348099678144291689,
        'B2': -28642,
        'B3': 30798,
        'B4': -26407,
        'B5': 'lc',
        'B6': -10696,
        'B7': 2071960246},
 'A2': {'C1': 0.5130016357813965,
        'C2': 15707228377050152568,
        'C3': [{'D1': 2228, 'D2': 25705},
               {'D1': 45571, 'D2': 21092},
               {'D1': 11433, 'D2': 41674}]},
 'A3': 113,
 'A4': 'ljhto',
 'A5': {'E1': 31301,
        'E2': [1097046798, 2489759913, 1189768531],
        'E3': 3085148279,
        'E4': 59842,
        'E5': 170,
        'E6': [3827350275178488390,
               12223696165097951256,
               12922445000996732772,
               2171469478363595531,
               11273210064225159991,
               1711761277880426683,
               5588203016701676431],
        'E7': 121},
 'A6': -0.4599643647670746,
 'A7': 28894,
 'A8': 30274}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'SJMN\xb3\xf1\xe2\x93\x00\x00\x00\x05\x00\x00\x00D\x98\x1d>\xea\xbb\x86^\xcb'
 b'\x00\x04\x00\x00\x00I(\xf5\xda\xd5\x9cg\xa6\x08\xb9<\xd6\x96\xb0\x0e'
 b'\x00\x05\x00\x00\x00M\x16\x9b@\xa8\xa3Z\x00\x00\x00R\x03q\xc8\rn\xda\x01\x1b'
 b'lbrme{\xff\x9f\x9dc\xfczu4YL.\xd8\x11\xb9\x18tV+\xb0\x05\x9db\x9a}\x14\x1b'
 b'\xd9\xfd>\xaed/\x1c\xf0IEY[\x88 \xd8\x1a\xce\xe0d\x05"C\xed\xa7|\r\x99V!h?A')

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

{'A1': -1275993453,
 'A2': 'lbrme',
 'A3': [{'B1': {'C1': 38941,
                'C2': [16106, 48006, 24267],
                'C3': [123, 255, 159, 157],
                'C4': 10485},
         'B2': 3671432295},
        {'B1': {'C1': 42504,
                'C2': [47420, 54934, 45070],
                'C3': [99, 252, 122, 117, 52],
                'C4': 5787},
         'B2': 1084793690}],
 'A4': {'D1': 22860,
        'D2': 11992,
        'D3': 1277078857277222917,
        'D4': 2640484989,
        'D5': 1448991386831316015,
        'D6': 2085247189673281568,
        'D7': 55322,
        'D8': [3470812165, 574877095, 2081266006, 560480065]},
 'A5': 248199414501998875}

Пример 2

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

(b'SJMNXD\xff\x96\x00\x00\x00\x05\x00\x00\x00D\\\xdcp\x1f!|\xf9"'
 b'\x00\x05\x00\x00\x00I\xed\xafx[c\x1a07\x04\x1a,[\xf2\xe9\x00\x03\x00\x00'
 b'\x00N+\x1e\x04+\xdc\xa0\x00\x00\x00Q\x1f\x0e\x8f\x9e0V\xac\xccbguw'
 b'k\xf0\x97\x95EWRD)@:\xa3\xf4\xf5!\x80\x8aZ;_\x83jd\xe4\x81\xd4\x8b\xed'
 b'(\xb5(\xbb1\xfa$\xf1\x1a\x903[\xce\xa1\x85\x10h>7\xa2\xf8\xccKf\xb6d>\x9c'
 b'\x1e\x8f\xde')

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

{'A1': 1480916886,
 'A2': 'bguwk',
 'A3': [{'B1': {'C1': 23772,
                'C2': [28703, 8572, 63778],
                'C3': [240, 151, 149, 69, 87],
                'C4': -4689},
         'B2': 2019255066},
        {'B1': {'C1': 12343,
                'C2': [1050, 11355, 62185],
                'C3': [82, 68, 41],
                'C4': 11038},
         'B2': 69983392}],
 'A4': {'D1': 16442,
        'D2': -23564,
        'D3': -783203528478072957,
        'D4': 1784996993,
        'D5': -3131148356812227791,
        'D6': 18024796705034296270,
        'D7': 41349,
        'D8': [275267127, 2734214219, 1723229246, 2619248606]},
 'A5': 2237883974428306636}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'JTY\x07\x01C\x8f\xadW6\xca\xd9\x00\x02\x00\x00\x00"%V?\xbd\xae\xbf'
 b'\xdf\x8f\xf5\xa0,\xff0\xc6\x00f-,Dv-\x9b\xab\xd5\xa5\x11S\x95Y\xfcFK\x99='
 b'\xc51\x94\xde\xce\xae\xd7\x97\x94\xfb\x94R\xb4\x19\xfb^\x05\xf3UO'
 b',\x08\xce\x10\x88\xd5\x16o\xe8\xed\xfbQNd\x811\x1a\xe3\x82\x05'
 b'\xfa\x9a\xbf\xed4\x8d\xae\xe7\xe7(?\xea\xed@9k#\nB\xbe\x10\xb0-1?\xd8d\xee'
 b'h"\xbe\x00\x00\x02\x00^\xb5\xf0\x00\x02\x00\x00\x00b\xaa\xb3\x80A'
 b'\xc5\x8f\x0b\xf0\x1a$\xca\xc2\x9e\xb8')

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

{'A1': 91074392132864729,
 'A2': [{'B1': 3255051905044032469,
         'B2': -91,
         'B3': 290690393,
         'B4': {'C1': -4,
                'C2': 5065310696488670430,
                'C3': 14893078063800357970}},
        {'B1': 12977680182490125647,
         'B2': 44,
         'B3': 147722376,
         'B4': {'C1': -43,
                'C2': 1616766900070600292,
                'C3': 9309251469192854170}}],
 'A3': 9558,
 'A4': 0.11594771583619101,
 'A5': 754921670,
 'A6': {'D1': 0.8414612885909218,
        'D2': 17086,
        'D3': {'E1': {'F1': 279981361,
                      'F2': 0.3811603562307653,
                      'F3': [-16403, 13453]},
               'E2': -18960,
               'E3': [44775, 59176]},
        'D4': [43699, 32833, 50575, 3056, 6692, 51906, 40632]}}

Пример 2

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

(b'JTY\x07\xbf?+\xa6P\n\xbb\x9d\x00\x02\x00\x00\x00"^\xff?\xef?\x14\xcf4g\x00'
 b"\xf0|\xe9\xcb\x00f\xd4`\xd2=\x01`\x8e\x94'JFM\xd5T\x8fs\x08\xeeL\x8eG\x03"
 b'3\x06\x8a\x98\xb5\xfc=g\xf7\x11\x14j[\xc5\x92\xd8\xb1\xba\x1b\xb8'
 b'\xf4\x94}\xb8{\xe1\xbdA\xf8\xd7\x8fp\xf5\x07\x15!\x1ep\x86\x14\xb3\x9dc@'
 b'\x9c\xa2\xbf\xe5\xc8\x81\x7f%h\x889b\t\xb2\xf4\x91?\xe2\x9c%\x91\xaa\x19\x9a'
 b'\x00\x02\x00^\xbe\xb4\x00\x02\x00\x00\x00bi\xca\xbe\x97XZ\xe9}\xfc\x92\xce;'
 b'\xbd3')

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

{'A1': 13780781378084453277,
 'A2': [{'B1': 15303462693262888596,
         'B2': 39,
         'B3': 1246121429,
         'B4': {'C1': 84,
                'C2': 10336615389325051651,
                'C3': 3676778534287457639}},
        {'B1': 17803033249011045080,
         'B2': -79,
         'B3': 3122378996,
         'B4': {'C1': -108,
                'C2': 9059126859928828119,
                'C3': 10336030555583356528}}],
 'A3': 24319,
 'A4': 0.9764503523794872,
 'A5': 4034718155,
 'A6': {'D1': -0.6807258113215235,
        'D2': 14690,
        'D3': {'E1': {'F1': 162722961,
                      'F2': 0.5815608830460406,
                      'F3': [-31212, -19555]},
               'E2': -16716,
               'E3': [25408, 40098]},
        'D4': [27082, 48791, 22618, 59773, 64658, 52795, 48435]}}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"BDBY\xf6gsuje\xa0\x1dx\xfe\x1a\xca\x18z\xa7I\x97Cit\xd8D0'\r\xe4?w"
 b'1\xfb\x8b\x04\x03swnnoabqq\xd6\x8f"}\x8c\x98\x00\x04\x00\x00\x00:A\xcfv\x94')

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

{'A1': {'B1': 'gsuj', 'B2': 26016},
 'A2': 2123726615318395559,
 'A3': [{'C1': 1234649961, 'C2': 29912},
        {'C1': 1144006413, 'C2': -7105},
        {'C1': 1999764363, 'C2': 1027}],
 'A4': 'swnnoabq',
 'A5': 113,
 'A6': 54927,
 'A7': {'D1': 8829, 'D2': 35992},
 'A8': [65, -49, 118, -108]}

Пример 2

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

(b'BDBY\xf6afzs\x05\xbb#\xb5w/\x84\xdc\xf0\xdf)\xe9\xc1\x11O\xba{\xcb\xf4'
 b'\\r\x82;\x93G\x8f\xeb\xe1vawtswhq\xdb\x84\rR\x1a\x84A\x00\x06\x00\x00'
 b'\x00:\xd7ssv\x88u')

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

{'A1': {'B1': 'afzs', 'B2': 1467},
 'A2': 2573093808088346847,
 'A3': [{'C1': 703185169, 'C2': 20410},
        {'C1': 2076963932, 'C2': 29314},
        {'C1': 999507855, 'C2': -5151}],
 'A4': 'vawtswhq',
 'A5': -37,
 'A6': 33805,
 'A7': {'D1': 21018, 'D2': 33857},
 'A8': [-41, 115, 115, 118, -120, 117]}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\tISG\xb8 ?\x0b\xf0]\x00@\xd8\x869\x161\xd6\xbfc\xe4\xca[\x14E\xf5!\xcb'
 b'.\xa8[yYy\x89\x18\x00\x07\xd5,(\xb7\xd8c\xb8R\x82z\n\xdf\xceW)\x00\x05\x1c'
 b'\xbd\xd6\x1f\x00\x00\x000\x00\x00\x00O\xe6\x89\x0e\x8a\xeb\xfd\x0eF\x8e'
 b'\xb4pR\xa8\xec%T\x06\x19\xf9\xd8\x91\xc0\x86?\xff\xb1\x02\x00\x00'
 b'\x00:\x00\x00\x00\x03\x00\x00\x00B\x00\x03\x00\x00\x00Z\x00\xda\xc8r'
 b'\x7fG\xf3D\x97tA\xc4\xa6z\xe1y\xc7\nn\xf6\x00\x98\xe7\xb8D\xf4\xd4?'
 b'\xc6\xad\x99>')

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

{'A1': 184,
 'A2': -267698400,
 'A3': {'B1': [{'C1': -1988535943,
                'C2': {'D1': [69, -11], 'D2': -1473328351, 'D3': 91},
                'C3': 674026759},
               {'C1': 1473175306,
                'C2': {'D1': [-73, -40], 'D2': -2108508061, 'D3': 122},
                'C3': 3602717701}],
        'B2': [1080278463820719695, 2732744145938714182, 9709921157688919636],
        'B3': [63, -1, -79],
        'B4': -14118,
        'B5': 114,
        'B6': [18303, 17651, 29847, -15295, 31398, 31201, 2759, -2450],
        'B7': 0.3274089627942658,
        'B8': 0.300153911113739},
 'A4': {'E1': -0.34674602144093924, 'E2': 99, 'E3': 341560036}}

Пример 2

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

(b'\tISG\x83\xc7O\t`n\x00|\x1f\x9c\xa9\x1b\xa1\xe7?\xbd\x1b\x08\x98\xef'
 b'\xa4\xea\xe8@y\x7fEN\x02\xd8\x0f\x18\x00\xf0\x12\t\xdf\xda\xf8\xb03\xf3\xabM'
 b'3\xfavi)\x00\xb6{n\x91\x1f\x00\x00\x000\x00\x00\x00)~\xbc\x81\x1f\xca'
 b')\xc6\xa1\\6\xfd2\x02\xbb\xd3n\n\xaf\x8f\x0c\x8ey\x81\r\x83\xcc\\$K'
 b'\xa3.>\xa7w\xf2\xaf:\x8aYY\x83m\n\x02\x00\x00\x00:\x00\x00\x00\x05\x00'
 b'\x00\x00B\x00\x04\x00\x00\x00j\x00\xdbJK\x97\x87G\xc9\xd8\xdb\x02\xae$%\n'
 b'!\xe6\x0f\xc6)\xc6R\x00\x01v\xfa\xe2?4R\x80\xbd')

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

{'A1': 131,
 'A2': 1611222983,
 'A3': {'B1': [{'C1': 265814606,
                'C2': {'D1': [-92, -22], 'D2': 2138652904, 'D3': 69},
                'C3': 3741913840},
               {'C1': 1769404979,
                'C2': {'D1': [-38, -8], 'D2': -1410124880, 'D3': 77},
                'C3': 2439936950}],
        'B2': [14279166330224279081,
               15256790580667505825,
               9329644287676058222,
               3360612366496334605,
               6452033943523272510],
        'B3': [89, -125, 109, 10],
        'B4': 19163,
        'B5': 75,
        'B6': [-30825, -14009, -9256, -20990, 9508, 8458, 4070, 10694],
        'B7': 0.5930738467746657,
        'B8': -0.06265679001808167},
 'A4': {'E1': 0.7384165108387459, 'E2': -67, 'E3': -275249125}}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'BCNJ$\x00\x05\x00\x83\x00R~&_\x8c<fC#\x87D\xb8\xe9\xbfK\x08r?\xb6B\xc4\x06'
 b"\x97\x00\x00\x00(\x80\x19\x11\xf99'5\xe2w\x8c`wxoedbbg\x13\xce\xa5\x91"
 b'\xe1\xa2\xc4\x055k\xc7{\xe4_\xf2\xc0\xc3\xb6}\x8e\x06Ssg\xb9I$J\x0f"\xa1D'
 b'=\x02k\xec\x9c*\xb6\xe8\x1b#\xc6\xed\xd4oJ\xce\xcck\xfcr{\xe8\xe3O'
 b'\xb4q\x00\x07;z+n\xf8\xefm\xd0CC\x82Y\x16\x8e\xa08\x00\x00\x00G\x00\x00\x00V'
 b'\x00\x00\x00e\x00\x00\x00t\x00\x00\x00=E\xb3oc,\xder\xe2')

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

{'A1': {'B1': 286883880,
        'B2': {'C1': 891763193, 'C2': 30690, 'C3': 24716, 'C4': 'wxoedbbg'}},
 'A2': [{'D1': [19, 206, 165, 145, 225],
         'D2': [-15198, 13573, -14485, -7045, -3489]},
        {'D1': [192, 195, 182, 125, 142],
         'D2': [21254, 26483, 18873, 18980, 8719]},
        {'D1': [161, 68, 61, 2, 107],
         'D2': [-25364, -18902, 7144, -14813, -11027]},
        {'D1': [111, 74, 206, 204, 107],
         'D2': [29436, -6021, 20451, 29108, 1792]},
        {'D1': [59, 122, 43, 110, 248],
         'D2': [28143, 17360, -32189, 5721, -24434]}],
 'A3': 82,
 'A4': {'E1': 126, 'E2': 0.017135214060544968},
 'A5': -0.803743614140427,
 'A6': 0.9454390406608582,
 'A7': 113525430,
 'A8': {'F1': 61, 'F2': 1668264773, 'F3': [-8660, -7566]}}

Пример 2

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

(b'BCNJ$\x00\x04\x00t\x00rF))\xc7>\xc0\xa3\x08\x83ox\xc5\xbf\xa3\xb2~\xbf'
 b'\x9f\xea\x008\x84\x00\x00\x00(\x9fT\x80\x9ep\xb2a\xf4\x98\xae\xb1nsudiyvm'
 b'\x07\x14okX(qk-\x98u\xde\n\xf6\xb4D3\xd8\x92/\xe4m\xc1\xc6\x8b}2\xdc'
 b'\x98\xf1\x1d\x01\x97w\xa3d=\xdd\xa0W\x86\xeb\xd9\x0e\x19R\x11)\xdc\xe2\xeaX'
 b'\xff\xcb\x9c\x85,5d\xa78\x00\x00\x00G\x00\x00\x00V\x00\x00\x00e\x00\x00\x00'
 b'\xf7n!\x89|\xb9g\x84\xbb')

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

{'A1': {'B1': 2153029416,
        'B2': {'C1': 1639084190, 'C2': 39156, 'C3': 45486, 'C4': 'nsudiyvm'}},
 'A2': [{'D1': [7, 20, 111, 107, 88],
         'D2': [28968, 11627, 30104, 2782, -19210]},
        {'D1': [68, 51, 216, 146, 47],
         'D2': [28132, -14655, 32139, -9166, -3688]},
        {'D1': [29, 1, 151, 119, 163],
         'D2': [15716, -24355, -31145, -9749, 6414]},
        {'D1': [82, 17, 41, 220, 226],
         'D2': [22762, -13313, -31332, 13612, -22684]}],
 'A3': 114,
 'A4': {'E1': 70, 'E2': 0.38898590207099915},
 'A5': -0.1677379026234842,
 'A6': -0.9949132800102234,
 'A7': 939584159,
 'A8': {'F1': 247, 'F2': 2089361774, 'F3': [26553, -17532]}}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TQEG%\x1b\xc3?\xfe\x8ae\xfe\x18\x00\x00\x00\x00\x02\x00\xb2\x00\x00\x00\x02'
 b'\x00\x00\x00\xb6\x7f\x19x\x1d\xee\xbe\xe5O\xd8\xb96\xb3E\x90\xa9\x14CQT['
 b'\xac\xd49\xaeQ\x9a\x1a5\xe8\x00\x02\x00\x00\x002\xa5\x1b\x08s\xe8'
 b'\xfc\x06\x00\x02\x00\x00\x00?\xe5?\xb0\xba\xfdo\xa0\x19\x00\x00\x004'
 b'\x00\x00\x00A\x08\xe1\x00L\xbf\xbd\xa5\xdf\xf6m\xec\x90?\xd9\xb1z'
 b'\xb4{\x8d\x0c\x9do\xc7lG9\x1c=\x8e\x00\x02\x00\x00\x00r1;\xd2\xa8<V;\x00\x02'
 b'\x00\x00\x00\x7f\x10P\xbb6\x12V\xdbE\x00\x00\x00t\x00\x00\x00\x81hm\x00\x8c'
 b"?\xc1\xcb}'\x02\xda\xa0?\xda1\x90\xdc\xc02\xfc\xa1\x11\x00T\x00\x94\x1f\x17"
 b'\xda\x13')

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

{'A1': 27,
 'A2': -4377500442410739712,
 'A3': [{'B1': [{'C1': 81, 'C2': -1709558296, 'C3': [57, 174]},
                {'C1': 8, 'C2': 1944648710, 'C3': [165, 27]}],
         'B2': 2273,
         'B3': {'D1': 58687, 'D2': -80, 'D3': -70, 'D4': 4251951129},
         'B4': -0.11581229940741111,
         'B5': 0.4014574778104396,
         'B6': 40303},
        {'B1': [{'C1': 71, 'C2': 958152078, 'C3': [199, 108]},
                {'C1': -46, 'C2': -1472440773, 'C3': [49, 59]}],
         'B2': 26733,
         'B3': {'D1': 4176, 'D2': -69, 'D3': 54, 'D4': 307682117},
         'B4': 0.13902248768655046,
         'B5': 0.4092752605218235,
         'B6': 41233}],
 'A4': [7959, -9709],
 'A5': 9158483387189486927,
 'A6': -10055,
 'A7': 917718416,
 'A8': 12183436908530740436}

Пример 2

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

(b'TQEG%d\xa2(\xbd\xa8\xe4N\xbb\x18\x00\x00\x00\x02\x00\xb2\x00\x00\x00\x02'
 b'\x00\x00\x00\xb6c\x1c\xe6W\xbaC`\x9b\x9eM&50\xca\xf5(\x16\x96\xa2\xfd'
 b'\x18\xb4?\xb4\xc4\x82\xe4@s\x00\x02\x00\x00\x002\xfd\x1fw\xe1nI5\x00\x02'
 b'\x00\x00\x00?\xd5\xc0\xcb\xf6"\x9aHl\x00\x00\x004\x00\x00\x00A\xa6\x13\x00L'
 b'?\xeb\xbc\xe0`\xab\x1c\xf8\xbf\xde\xbcW\xe3\xdd\xb18\xbaM\x1d\xaaXY\x86\x9b'
 b'\xdd\x00\x02\x00\x00\x00r\x03o\xfeIY\x80\x99\x00\x02\x00\x00\x00\x7f'
 b'\x8c\xfd\x8b\xb3[m4j\x00\x00\x00t\x00\x00\x00\x81\xcc\xdc\x00\x8c'
 b'?\xef\xe1\xdb\x81\x93\x90b\xbf\xd9\xdf\x15BJ.pT\xef\x00T\x00\x94V\x99e\xc1')

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

{'A1': 100,
 'A2': -6761946307414279400,
 'A3': [{'B1': [{'C1': -60, 'C2': -2098970509, 'C3': [63, 180]},
                {'C1': 119, 'C2': -512865995, 'C3': [253, 31]}],
         'B2': 42515,
         'B3': {'D1': 54720, 'D2': -53, 'D3': -10, 'D4': 580536428},
         'B4': 0.8668062103323839,
         'B5': -0.480245564008118,
         'B6': 47693},
        {'B1': [{'C1': 88, 'C2': 1501993949, 'C3': [29, 170]},
                {'C1': -2, 'C2': 1230602393, 'C3': [3, 111]}],
         'B2': 52444,
         'B3': {'D1': 36093, 'D2': -117, 'D3': -77, 'D4': 1533883498},
         'B4': 0.9963204890050401,
         'B5': -0.4042409083710714,
         'B6': 21743}],
 'A4': [22169, 26049],
 'A5': 7141836373564285083,
 'A6': -25011,
 'A7': 641020106,
 'A8': 17665394374596171956}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x85YHIM\xf8F"\xcbV\x00\x00\x00s"\xaebaw\xa8\xb3\xb9\x03\x00r\x00\x00\x00'
 b'\xf3\xbfQ\x08\xadwb\xa5\x91U\x18\xd7&\\\xec\xf7\x02\x00\x00\x00(\x00\xfd\xe9'
 b'+U\x04Pi@_\xe8\x04\x00\x00\x004\x00\xd7\x9d\xf7\t\xbcW\x16\xe6\xde\xd0'
 b'\x17\xb6\x05\x00\x00\x00D\x00\xd9\x8frw7p\x94\x84K\x85\xef\x82\x1eRfP'
 b'|\xe2,\x00\x00\x00<\x00\x00\x00N\x00\x00\x00\x92\xd14\xe3\xaeN')

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

{'A1': 18168,
 'A2': 34,
 'A3': 203,
 'A4': {'B1': {'C1': 'rw',
               'C2': 55,
               'C3': 112,
               'C4': 5917310925656523924,
               'C5': 102,
               'C6': 31824},
        'B2': 226,
        'B3': [{'D1': [23590, -2068], 'D2': -5635},
               {'D1': [21803, 20484, 16489, -6049], 'D2': -25129},
               {'D1': [2551, 22460, -6634, -12066, -18921], 'D2': -28711}]},
 'A5': 115,
 'A6': [1633857058, -1179408265],
 'A7': {'E1': [53650, 58164, 20142],
        'E2': -16397,
        'E3': 2007828561,
        'E4': 1435608418,
        'E5': 55064}}

Пример 2

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

(b'\x85YHIM\x98;\xc9N^\x00\x00\x00\x1dT\x8d=5A\x8e\xc5\x06\x04\x00z\x00\x00\x00'
 b'\xb6\xd9\xc5?\x8f\xd0\x85\x9d\xbd\x12\xa1\xfdM\xab\x0b\x15\x7f\x8dl\xb8'
 b'\xe9+\x05\x00\x00\x00(\x00\xe6Y\xe4\x8c\x8c\xd7U`\xe4\x93\xf5u'
 b'\x05\x00\x00\x00:\x00\x00!\xb4\xdcN\x9a/\xf7\x90\x94\xaf\xd5\x05\x00'
 b'\x00\x00L\x00=!vw\x80L\x93;\xa40\xd0+1\x8e\xf2.`]2\x00\x00\x00D\x00'
 b'\x00\x00V\x00\x00\x00\x98Q\xa4Y\xf4\xba3!')

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

{'A1': 15256,
 'A2': -55,
 'A3': 78,
 'A4': {'B1': {'C1': 'vw',
               'C2': -128,
               'C3': 76,
               'C4': -8200725273295701101,
               'C5': 242,
               'C6': 24622},
        'B2': 93,
        'B3': [{'D1': [-21683, 5387, -29313, -18324, 11241], 'D2': 23014},
               {'D1': [-29468, -10356, 24661, -27676, 30197], 'D2': 8448},
               {'D1': [-9036, -26034, -2257, -27504, -10833], 'D2': 8509}]},
 'A5': 29,
 'A6': [893226324, 113610305],
 'A7': {'E1': [20888, 22948, 47860, 8499],
        'E2': -9802,
        'E3': 3499048901,
        'E4': 314416517,
        'E5': 64929}}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'YFSQ\xbf\xea\xba`\x193\x9f\x80\x078\xe8\x99\x00\x03\x00&\xbf\xb4\xb0\x11'
 b'\xab#\x10pO\xe3x\xac/\x7f6\xce\x00\\?\xdfT\x9dA1\xcf\xa0\x8c\xbf'
 b'\xea\x92U\xed\xcb\xb6\x88\xef\xbfx=\x9d\xd9\xbaA\x00j\xbf\xe7&\xa1,tE'
 b'&\xbf\xe8*\x1cO\xce\x19\x8c?\xe4\xb5_H#[\xda\xb1_\xfe?#\xee+\xbeb\xe1\xa5'
 b'Y\x83Vh\x90X1\x9bh) z\x00\x03\x00A\r\xf7\xd6\x07r\x90V\xc0\x83\x97\x8cc'
 b'\x16\xfcYC\x83v\xcb\xde\xbd\xe2*\xa5Q\xfcy\x9e\x80\x07\x97xlN\x00Y!z')

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

{'A1': -0.8352509014339233,
 'A2': 121170073,
 'A3': [{'B1': 0.4895394455590978, 'B2': 140},
        {'B1': -0.8303632397125549, 'B2': 239},
        {'B1': -0.005918137172230553, 'B2': 106}],
 'A4': -0.08081159999989196,
 'A5': 5756577429636200142,
 'A6': {'C1': {'D1': 0.6403529047966003,
               'D2': -0.2215638905763626,
               'D3': 6450094098422968731,
               'D4': 1747525754,
               'D5': [-0.7234655254598337,
                      -0.7551404532139698,
                      0.6471401604602491],
               'D6': 1006508369215772352},
        'C2': {'E1': [33687, 35939, 5884, 22851, 33654],
               'E2': [-13346,
                      -16926,
                      10917,
                      20988,
                      31134,
                      -32761,
                      -26760,
                      27726]},
        'C3': {'F1': -20129, 'F2': 254},
        'C4': 8570}}

Пример 2

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

(b'YFSQ?\xe6\xf4&\xcf\x02\x1f\x90\xd5\x81\xb8\xb9\x00\x03\x00&\xbf\xea\xf1\x16'
 b'\xe6\x86.\xa6\xb73\x90+\xb7k\x8eN\x00d?\xe2\xa9\xe8\x89\xca\xd6\xe2\x98\xbf'
 b'\xd1\xd9OK\xf2\xf6\xcc#\xbf\xde\x0c\xbbG!\x81\xe4,?\xe8E\xff\xcd\xad\x9b'
 b'h?\xe1\x10\xb9\xa0\xb4\x91\x16?\xe0\xed\x03z\x91\x85\x80?\xd5-\xa1\x81^j'
 b'\xd4\xc3,6\xbd2Jt\xbd\xbax\xb8I1\\\xfb \xc6%\xbbW\xbcRJ\x00\x04\x00A'
 b'\xf8\xb3\x01\xf9\x9b&T\x9a\xb97+\xfcb\xa2\x7fu\xfa\xc0\x13@\xe9\xf2V*NS,v'
 b'\xb9\xb1\xa4\xd0\xaa\x1a\x00a\xa3\x95')

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

{'A1': 0.7173036616450066,
 'A2': -712918855,
 'A3': [{'B1': 0.5832407656914393, 'B2': 152},
        {'B1': -0.2788885347070902, 'B2': 35},
        {'B1': -0.46952707239509395, 'B2': 44}],
 'A4': -0.8419298651146689,
 'A5': -5245690623521223090,
 'A6': {'C1': {'D1': -0.043528035283088684,
               'D2': -0.09105056524276733,
               'D3': 5274098872283964859,
               'D4': 1471959626,
               'D5': [0.758544828143255,
                      0.5332916392112874,
                      0.528932322875491,
                      0.3309100879065856],
               'D6': -526074559910751078},
        'C2': {'E1': [47415, 11260, 25250, 32629, 64192],
               'E2': [4928,
                      -5646,
                      22058,
                      20051,
                      11382,
                      -17999,
                      -23344,
                      -21990]},
        'C3': {'F1': -15572, 'F2': 54},
        'C4': 41877}}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'EVSJ\x9e\x91W\x85\xceQ?\x8al\x9a>c\xe1\xde\xbe\x91\xd9\xcd>PS\x06\xbf\xa3'
 b'\xd7\t\xbc\x88\xa9\x93#\x14\xbe\xb3\xa6\xcf\xbe\x02\x00\x00\x00K\x00\x00'
 b'\x00\xe1\xf3\x14?\x03\x00\x00\x00q\x00\x8fB\x0e\xa3\x86./X\xfe\x0fP2\xda'
 b'\xff\xe1\xc0\xa9\x05\x9b\xb5\\\xac\x8b\x08\x8a\xc1L\x82q]\xc9\x04\x00'
 b'E\x00\xd4\xcef\xf5\xa9\xd5\xc3\xdf\xd6\x94\xfd\xb0\x7f\xe9\xea\x02\x00I'
 b'\x00\xae\xb6\x00\x8b\xee3')

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

{'A1': {'B1': 158,
        'B2': 22417,
        'B3': [0.8195574879646301,
               0.3016093373298645,
               -0.43531331419944763,
               0.40205052495002747,
               -0.5247087478637695,
               -0.008413228206336498]},
 'A2': {'C1': 43400, 'C2': -0.14466695487499237},
 'A3': -0.4055686891078949,
 'A4': [{'D1': {'E1': 3046835625, 'E2': 92, 'E3': 8179184267386457004},
         'D2': 93,
         'D3': -55,
         'D4': [80, 50, -38, -1]},
        {'D1': {'E1': 4117155540, 'E2': -87, 'E3': 9201132854419899349},
         'D2': -23,
         'D3': -22,
         'D4': [-31, -64]}],
 'A5': {'F1': 0.581846296787262,
        'F2': [46766, 35584, 13294],
        'F3': 17039,
        'F4': 1152455514320708366}}

Пример 2

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

(b'EVSJ\xd6z\x14mEC\xbf\xe9\x04n?\xcc\xb5\xa0>\x01W5\xbfu<V\xbf\xc0'
 b'x\x8c\xbd\xd0\xc6<\xfd\x06?6\xfb\x11\xbf\x02\x00\x00\x00K\x00\x00'
 b'\x00\x82\x9f\t\xbf\x04\x00\x00\x00q\x00\x1e\x0e\x04{L\xa5b|\x11\\n\x03\xfa'
 b'\x18\x15\xad1}\x14\x02\xb8=\xef\x91\xf6\x04q"\x1e\x0cN\x03\x00E\x00{\x8c'
 b'\xfd\xdf\xd8\x86\xad\xb7F\xc5?\x1av<\x8e\x03\x00H\x00\xe9\xc4\x95\x06\xf3\n6'
 b'\xd7')

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

{'A1': {'B1': 214,
        'B2': 5242,
        'B3': [-0.762778103351593,
               0.9297624230384827,
               0.31388700008392334,
               -0.7083588242530823,
               -0.8368600010871887,
               -0.06858968734741211]},
 'A2': {'C1': 50896, 'C2': 0.527301549911499},
 'A3': -0.5702394247055054,
 'A4': [{'D1': {'E1': 34897201, 'E2': -72, 'E3': 2171422236476567357},
         'D2': 12,
         'D3': 78,
         'D4': [110, 3, -6]},
        {'D1': {'E1': 3757935739, 'E2': -40, 'E3': 8510184562397523334},
         'D2': 60,
         'D3': -114,
         'D4': [24, 21, -83]}],
 'A5': {'F1': -0.5375901460647583,
        'F2': [50409, 1685, 2803, 55094],
        'F3': 3614,
        'F4': 6634220489215343364}}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'RAWS\xc3/X1\x04\x00\x00\x00\x1e\x00n\xee-6\xc7\x11V$\xe9\x8a\x88\x00\x93\x9f'
 b'\xfb0corh\xd3#\x8d=k\xa0\x94\x7fG\x18\xde\xf4l\x06\xda\xd8\x9d\xee'
 b'\xbf\xf0\xf7z=\x8b\x8b\xfe\xba\xd4n\xd4\xc0\xfc2\xe7)F\x92?n\x86\xb9\xbe'
 b'\xee\xd43\xc5%\xd5\xe0\x00I{@\xc0\xa2\xc1\xbf\xbe\xef\x04\xefh1\xeb\x9c\x91'
 b'\xc4<}\xe4;\xf8\xc1pySO~\'\t\x8e\xbc\x00?\xfd\xcc;\xbe\x7fG"?\x97\x07'
 b'X\xc6\x02\xf5\x0cN\x85\x9b\x00PY\x1f\x19\x17\xef\xbf"\x00\x00\x00'
 b'5\x00\x00\x00H\x00\x00\x00\xf80\x85:\x03\x00\x00\x00[\x00\x00\x00\t\xd7\xd3p'
 b'\xf4\x17\xb6\x08s1a\x00\x00\x00')

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

{'A1': 827862979,
 'A2': 'corh',
 'A3': 908979822,
 'A4': 609620423,
 'A5': -29975,
 'A6': {'B1': -0.9715695965082887,
        'B2': [{'C1': 0.06891598552465439,
                'C2': [107, 160, 148, 127],
                'C3': 71,
                'C4': -8680,
                'C5': -0.9567684419920668},
               {'C1': 0.061271607875823975,
                'C2': [139, 139, 254, 186],
                'C3': -44,
                'C4': -11154,
                'C5': 0.01784577821376554},
               {'C1': -0.36235374212265015,
                'C2': [238, 212, 51, 197],
                'C3': 37,
                'C4': -7979,
                'C5': -0.13777926586642053}],
        'B3': 981807352,
        'B4': [-4162, -4348, 12648],
        'B5': 627715536697153289,
        'B6': 12659,
        'B7': {'D1': 4315712042877164779,
               'D2': 2845799234483044856,
               'D3': 9,
               'D4': [0.5028771162033081,
                      -0.18339915573596954,
                      0.633903443813324],
               'D5': 3327657879,
               'D6': 1309472002,
               'D7': 39813}},
 'A7': 821796755}

Пример 2

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

(b'RAWS\xfe\xb5\xdf\x91\x08\x00\x00\x00\x1e\x00\x87i/\xd5\xa1\x02^\x91jD'
 b'\x8a\x00\xd2`r\xbbhrzhkrip7\xa2\xe7\xbd\x03\x1bJ\x95\xd5\x9e\xfd\x8e\xe4\r'
 b'\x8e\x8d\xb2\xef\xbf\x1ed\x10>\x80:\xe8\x95\xd5\x00\x9d\xd26\xd8\x85'
 b'}\xd6\xeb\xbf\xb9v\x08\xbfm\x08\x84&\xecs\xb3\x80\xc38\xd5\xb6g\xc0\xbf\xf8'
 b'Hm\xac\xd9\x1ai\x14\xf5Ia\xaa\x8f{\xe0\x84bC\x7f\xb22\xf3\x01\x15\xbf'
 b'\xc8\xeb\x15\xbfH\x02u\xbf\xc4\xe0Y\xa9%\x9f\xa8c5eX\x9e\x9c\xbb\x14U'
 b'\xdc?&\x00\x00\x009\x00\x00\x00L\x00\x00\x00\x11\x9f\xd4X\x02\x00'
 b'\x00\x00_\x00\x00\x00\x9c\x9a\xd7\x8f\x06\x0e\x9a\xcd\xf1,c\x00\x00\x00')

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

{'A1': -1847609858,
 'A2': 'hrzhkrip',
 'A3': -718313081,
 'A4': 2438857377,
 'A5': 17514,
 'A6': {'B1': 0.4426929313799284,
        'B2': [{'C1': -0.11310236901044846,
                'C2': [3, 27, 74, 149],
                'C3': -43,
                'C4': -610,
                'C5': -0.9905460142610012},
               {'C1': 0.14100691676139832,
                'C2': [128, 58, 232, 149],
                'C3': -43,
                'C4': -25344,
                'C5': -0.8699329008247452},
               {'C1': -0.5330615639686584,
                'C2': [109, 8, 132, 38],
                'C3': -20,
                'C4': -19597,
                'C5': -0.12816510592667996}],
        'B3': 1490329361,
        'B4': [18680, -21395],
        'B5': 14815169345534532252,
        'B6': 11505,
        'B7': {'D1': -6169568697562621223,
               'D2': 12862073151208586127,
               'D3': 50,
               'D4': [-0.5820609927177429,
                      -0.5856289863586426,
                      -0.9570660591125488],
               'D5': 2841239748,
               'D6': 1671995173,
               'D7': 25909}},
 'A7': 3144835282}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'DRWR\x06\x00#\x00\xe0wz\xbf\x02\x00\x00\x00_\x00\xbf\xc7\x076\x1d\x9f'
 b'\x0fv\x00\x12\x80\xa40._\x9cTpajhuf\x8ch)\x00\x00\x00i$q\xc79\x83\xc4\xdb_'
 b'\xf9\x06H\x87\x1aC4n\xd1?\xc1\xd4\xf8OD\x00\x00\x00u\x15\xf03\xfa\xe0'
 b'\x10\x814\xfd\x98\xa2U\xb8\x84\x01\x1c\xee?\x17X+\x00F\x00@pI\xd6,jd\x0fd'
 b'\xbf\xd1\x02~\x8c\xc1o\x9c[\x94_\xc8\x07\x00\x00\x00c\x00\x00\x00'
 b'\xdc\x1e\xee.\x8a\xec\xda?\xf0{z\xd0(_\xd8\xbf\x04^\xc3\x81Q\xf0\xd3?'
 b'\x18\r\xfe\xc3\xf0M\xd4\xbf \xd7\x18|\xb0~\xa8?\x03\x00\x00\x00j\x00\x970'
 b'Er\x1d\x94\x07u\xe7}\xd9\x1b\x15')

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

{'A1': 'pajhuf',
 'A2': -0.9783916473388672,
 'A3': [{'B1': {'C1': 140, 'C2': 104},
         'B2': 105,
         'B3': 969371940,
         'B4': -15229,
         'B5': 117006299,
         'B6': 0.2723513274487357,
         'B7': -11071},
        {'B1': {'C1': 248, 'C2': 79},
         'B2': 117,
         'B3': -97259499,
         'B4': 4320,
         'B5': -1728236415,
         'B6': 0.9409186927975279,
         'B7': 22551}],
 'A4': {'D1': 191, 'D2': 1991, 'D3': 262085942},
 'A5': {'E1': -14241,
        'E2': [64, 112, 73, 214, 44, 106, 100],
        'E3': [0.42068724234603194,
               -0.38080807074760425,
               0.31154287025626126,
               -0.3172571100223691,
               0.047841563366473716],
        'E4': [3518981135, 3247209986, 2489031791],
        'E5': 151,
        'E6': 494028080,
        'E7': 1940,
        'E8': {'F1': -6283, 'F2': 354146685}},
 'A6': 6096852647542030354}

Пример 2

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

(b'DRWR\x06\x00#\x00\xb1\xe95?\x02\x00\x00\x00_\x00NE\x17\xfa5\x17lq\x00$'
 b'8 W\xbe\xa7wwctigqa]Z)\x00\x00\x00\x1fw\t\xd7z\xdb\xae\xac2\xde\x81\xbcK'
 b'2\xf0H\x13\xda?M\xe2\xca\xbeD\x00\x00\x001\xc9f\rU6\x13\xad\xfeb\x1828\x86'
 b'"pw\xe2\xbf\xea\x1f+\x00F\x00\x9d\x1e\xb4\xa8j\xb1N\xccK\xbb\x9d)\x1d'
 b'E\x9a\xd7\x06\x00\x00\x00c\x00\x00\x00\xcc\xbc\xb7\x9a\x17t\xe7\xbf\xbe'
 b'+\x00\xac\xd8\x9f\xeb\xbf\x00\x04\xa8\r\x9b\x00\x9d\xbf\xa4\xe8QW\xfc'
 b'\x94\xd2?`\xee\xaf\x1a\xe2\x02\xe6\xbf\x02\x00\x00\x00i\x00\xb7\xd4\x88'
 b'0\x9a\xbeC\xb7\x1f\x1b\xc5\x91\x85')

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

{'A1': 'ctigqa',
 'A2': 0.7105970978736877,
 'A3': [{'B1': {'C1': 93, 'C2': 90},
         'B2': 31,
         'B3': 2060913015,
         'B4': -20773,
         'B5': -2116144468,
         'B6': 0.4074270578068384,
         'B7': -7603},
        {'B1': {'C1': 202, 'C2': 190},
         'B2': 49,
         'B3': 1426941641,
         'B4': 4918,
         'B5': 409140909,
         'B6': -0.5770798372557293,
         'B7': 8170}],
 'A4': {'D1': 78, 'D2': 5957, 'D3': 1813460474},
 'A5': {'E1': -10342,
        'E2': [157, 30, 180, 168, 106, 177],
        'E3': [-0.7329214116888578,
               -0.8632624968898808,
               -0.02832262297488697,
               0.2903433659299799,
               -0.6878519555315954],
        'E4': [3142306894, 1159539101],
        'E5': 183,
        'E6': 2586872020,
        'E7': 17342,
        'E8': {'F1': 8119, 'F2': -2054044389}},
 'A6': 8608533648689346596}