ИНБО-01-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'RHL\x07f\x9f\xb5\xd4Y\x08\xe0\xbf\xe9\x05\xdb\xb0\xf6B{\xa89N\xaf[\x03]qq'
 b'u\xdbZo\xfcc-\xbe\xd3\x8e\xd7\xc6\x83\xe9g\xd5\xbera\r\xb5\xe9z\xe8\xbf@D+'
 b'\xbb$\x92\xbc?7D\xc4\x8a\xf3=\xd3\x88\xe0\x7f\xa5\x02\x00\x86\x00'
 b'\x00\x00H\xf8m\x1c\x03\x00\x00\x00\x88\x00\xdb\x05\x00\x8e\x00\x00\x00\xe5'
 b'\xe3d\xa3\x04\x00\x00\x00\x93\x00\xf9\x12\xd7\x99g<\xf0\x13\x96\xf9\xe0'
 b"6\xba\xe4\xc6\x93\xa5\x9f\xf7\xd1w\xf6\xfb\x9c\x9a!``\xbfa\xc0i?jWV\xc2b'"
 b'b\xc6\xd9\x18\xca\xc3.T!\x95\xc1')

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

{'A1': -0.5010193972093304,
 'A2': -1327823383,
 'A3': -1468316938,
 'A4': 20025,
 'A5': {'B1': 1560501167,
        'B2': 'qqu',
        'B3': 4235156187,
        'B4': 9495513872795053411,
        'B5': -0.4168083965778351},
 'A6': {'C1': -0.7650040184189904,
        'C2': 0.11160497254901802,
        'C3': 55,
        'C4': -2267330149348621244,
        'C5': 42367,
        'C6': [{'D1': [97, -64],
                'D2': 476969032,
                'D3': [16233, 22378, 49750],
                'D4': 219},
               {'D1': [98, 39, 98, -58, -39],
                'D2': 2741298149,
                'D3': [51736, 11971, 8532, 49557],
                'D4': 249}],
        'C7': [10814251272473532178,
               11931098523513577721,
               11141056614198540191],
        'C8': -0.8764668107032776}}

Пример 2

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

(b'RHL\x072k.>\xd1\x98\xee?\xed\x93\x8e\xf7\xb7,\xc3\x01\xaa\xf6\xe2\xe2'
 b'\t\x15srn\xfe\xf6\xfa\xf1}\x02\xe3\xbd\xb3\x0f$;\xfaE\xd3\xbeB)G'
 b'\x93\x15\xbc\xe8\xbf\xde[\x95\x9e5o\xeb\xbf\xd6\xfd\xe4\x14\x12\xfc\x8b'
 b'\x1d\xa6\x82\xfb\x06\x00\x86\x00\x00\x00G\xab\x04\x11\x03\x00'
 b'\x00\x00\x8c\x00\xca\x06\x00\x92\x00\x00\x001\x06\xcb\x8f\x07'
 b'\x00\x00\x00\x98\x00\x8a\x1fj@\xa2\xa5kJ<\x1fg\x13\xd9\xceO)b<\x06Mp\x82\\'
 b'\x8e\xfb_\x82\xbf\xbe\xc7^\x03cf\xcdq\xc30\x8d\xd8\xc8\xe3\xa4TkJ\xd2'
 b'\xb8\xccP\x97\x08@DW\x1bm\x89\x8d?\xf6')

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

{'A1': 0.9561544622878044,
 'A2': -141650963,
 'A3': 29568183,
 'A4': 63146,
 'A5': {'B1': 352969442,
        'B2': 'srn',
        'B3': 4059756286,
        'B4': 4261548412058665597,
        'B5': -0.4126432538032532},
 'A6': {'C1': -0.7729595066569248,
        'C2': -0.857325372441547,
        'C3': -42,
        'C4': -6476866774337526531,
        'C5': 64386,
        'C6': [{'D1': [-57, 94, 3, 99, 102, -51],
                'D2': 285518663,
                'D3': [50033, 36144, 51416],
                'D4': 202},
               {'D1': [-29, -92, 84, 107, 74, -46],
                'D2': 2412447281,
                'D3': [52408, 38736, 16392, 22340, 27931, 36233, 63039],
                'D4': 138}],
        'C7': [4344403149688171039, 7073272439585859359, 18126527265512425020],
        'C8': -0.37404152750968933}}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'AGPR\xaei\x00U\x82\x1c\x1b\xc3L\xa4\xe2\xbf\xfe\x02\x00\x87\x00\x03\x00\x00'
 b'\x00\x89\x00\x00\x00PE\x18^4\xd2\x8c8N\xf3\xec\xf1n\xf8\xa0\x8b\x10IB'
 b'#\xb3\xf0B4\xab\xa1\x87\xb11\xe9\xf2\xbcHS\xd0`\xdd\xeb[ \xee\t\xf7'
 b'\xfb\x06\x0c~\xb9<tR\xf7\x00\xdf\xa54\x13\xdb\xa17Ni\x06j!\x00+\x005\x00?'
 b'\x00I\x00S\x00\x02\x93\x1c\xb61l\xed?<uj\xf2A\t~}ssil\x06\x00]\x00\x00\x00-'
 b'\x0c\x01+[p\xd7\xadwNI\xfa')

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

{'A1': {'B1': 0.9194572979800741,
        'B2': 60,
        'B3': 8321946264676756085,
        'B4': 'sil',
        'B5': [{'C1': -11724, 'C2': -545232504868685684},
               {'C1': -29792, 'C2': 3765836890616514832},
               {'C1': -24149, 'C2': 6001254254951641479},
               {'C1': 24784, 'C2': -290752732592346147},
               {'C1': 3078, 'C2': -2377628669742106242},
               {'C1': 13477, 'C2': 7639909602542344979}],
        'B6': 721488941},
 'A2': 85,
 'A3': -0.5825561342870886,
 'A4': -2,
 'A5': {'D1': [91, 112], 'D2': [-21033, 20087, -1463], 'D3': 1578648912}}

Пример 2

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

(b"AGPR\xaeQ\x00o\xf0'>,jT\xcc\xbf2\x04\x00o\x00\x03\x00\x00\x00s\x00\x00"
 b'\x00|\xc4\xa9\xf2d{{\xae\x1a\xc83\xf4E\x02\xb1\x10\xc7\x8a\x02\xbd\xd6b\x04'
 b'\x9fg3W\x1d\xd1\x8f\xcc\x8f"|;\x07M`\xd7!DD\xdfF!\x00+\x005\x00?'
 b'\x00 \xf6\xd1\xd0\x17\x1c\xa4?\xdc\x8d\x0f\xbf\xe74J\x9e\xcelum\x04\x00I'
 b'\x00\x00\x00\n\x8cw\xde\x96T(\x02`\x97\x8dr\xbe\xed')

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

{'A1': {'B1': 0.03927683281015626,
        'B2': -36,
        'B3': 14888419009220251533,
        'B4': 'lum',
        'B5': [{'C1': 31588, 'C2': 163805464706592379},
               {'C1': 4273, 'C2': -6988352047338583353},
               {'C1': 13159, 'C2': 8944869918660173143},
               {'C1': 1851, 'C2': 5106875561877659725}],
        'B6': 3732376586},
 'A2': 111,
 'A3': -0.22132613334935014,
 'A4': 50,
 'A5': {'D1': [150, 84, 40, 2], 'D2': [-26784, 29325, -4674], 'D3': -223755140}}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GLCG\x00\x00\x00\x02\x00\x00\x00 \xf8\xef\x1a\x87\x00\x00\x00"\x00\x00\x00x'
 b'\xb4.\xfa\x13\xb2{\xa6\xafti\x19\xb7?\x14\xa5.\x98\xbb\xca>Z\xcb\xa5?'
 b'>\xab\xa2\x04\x13F\xf7\x9f\xd2\x9en\xc1UA=C\xe1Dj\x1b\xa1o\xb4\xbc'
 b'\xc0\x83z\xec\x00\xa1V\x04\xdd\x0e\xc0<\x7f\xe9l`Jj\rx&C\xe5U76\x92\xe0'
 b"\xcd\x93\x08'{\xafJJ\x9cg\x13\xe1\xa3$~\x9b\x94\x87\xa33?\xcd\xe2\x8b"
 b'\xac\xcd\x02P\x1cFY\x96\xf4?\xdb\xc7cY~z\xd8\xe6\x90')

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

{'A1': 'ti',
 'A2': -8,
 'A3': -17,
 'A4': 6791,
 'A5': {'B1': 431439636,
        'B2': -23250,
        'B3': -26437,
        'B4': -54,
        'B5': 0.21366746723651886,
        'B6': 0.7448064088821411,
        'B7': 4,
        'B8': [{'C1': 1389069800895835841,
                'C2': 21825,
                'C3': 4414619743707439471,
                'C4': [46268, 49283, 31468, 161, 22020, 56590, 49212, 32745]},
               {'C1': 7809323573213406787,
                'C2': -6827,
                'C3': 3978528815047706663,
                'C4': [31663,
                       19018,
                       40039,
                       5089,
                       41764,
                       32411,
                       38023,
                       41779]}]},
 'A6': {'D1': 0.23347612321414823,
        'D2': 474372502,
        'D3': -12,
        'D4': 0.43404468288092124,
        'D5': -6512},
 'A7': [-1271989741, -1300519249]}

Пример 2

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

(b'GLCG\x00\x00\x00\x05\x00\x00\x00 \xd5?r\xa8\x00\x00\x00%\x00\x00\x00{'
 b'\xe7\x8d\xdb\xb2\xe6\x9b\xfa\xabaezxw\xf0p\xdfW\xa2\xea\xc4\x98\x84\xbfH'
 b'\xffx\xbf[\xecM,\xbd2\xd9\x9f\x82\x13S%\xb3\x1a\xed\xe7\x00\xf24\xf4G\x1c-p:'
 b"\x89\xd2`?t\xb5\xe3=k\xd1\x9c\xdd\xfa'\xd55\xb9\xcaG,(\xd4\xe0X \x9d\xab\xc2"
 b'\x9b\xed^\x16q%\xf9\x97~\x1e\xfdB5\x15\xea\x0f\xc1s\xab?\xee\xc19\xc8'
 b'\x8c|(\x83\xfd\x01\xb8?\xbf\xec2\xab\x03HR\xeeg\xd1')

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

{'A1': 'aezxw',
 'A2': -43,
 'A3': 63,
 'A4': 29352,
 'A5': {'B1': -261038249,
        'B2': -23830,
        'B3': -15208,
        'B4': -124,
        'B5': -0.7851481437683105,
        'B6': -0.8590744137763977,
        'B7': 44,
        'B8': [{'C1': -4813545772600306907,
                'C2': -19686,
                'C3': -1304072526829959396,
                'C4': [11632, 14985, 53856, 16244, 46563, 15723, 53660, 56826]},
               {'C1': 2870259409597443112,
                'C2': -11040,
                'C3': 6350248835622366558,
                'C4': [5745, 9721, 38782, 7933, 16949, 5610, 4033, 29611]}]},
 'A6': {'D1': 0.9610871235817102,
        'D2': 2214396344,
        'D3': 63,
        'D4': -0.8811850608932141,
        'D5': 26577},
 'A7': [-410133582, -425985365]}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'MRWHL\xef\x86\xc3>#\xb2Y?\x1d\x00\x00\x00\xbf%\xd6\x85\x0e\xb2-\xbf\xf3\xf7T'
 b'y=\xabzy\x01\x86\x9b\x1a\xca\x9b\x8d\x0bM\xd6`\x96&~\x01\xc3\xe6N\xe6'
 b'\xc0\x1b\x8a=\x08\xa0b\x08e\xb0\x13\xeb\xb3\xd691D\x90\xee\xe3Sk\x89\xad'
 b"\x13\xbfd\xa8\xda\xe2\x97W\xf5\\\r9'zfAJ\xd2JFh \xd1\xc7\x83\x90\x00\xb5"
 b'\xa5\x1d@\x97\xd0\x91\x9a\x9aA\x9d\x02\xfd\xac\xa1\xfen@[\xed\x1a'
 b"\xf4\x84b\xe5\xda\xe3\xf6^\xba'\x00\xd5\xa7\xbd\xc0\xa0")

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

{'A1': 0.38188883662223816,
 'A2': {'B1': 0.8503744006156921,
        'B2': {'C1': [{'D1': 43837,
                       'D2': -2046723718,
                       'D3': -101,
                       'D4': 51738,
                       'D5': -29285,
                       'D6': 1624657163},
                      {'D1': 9878,
                       'D2': -423427714,
                       'D3': 78,
                       'D4': 49382,
                       'D5': -30181,
                       'D6': 1654655037},
                      {'D1': 25864,
                       'D2': -1276439632,
                       'D3': -42,
                       'D4': 12601,
                       'D5': -28604,
                       'D6': 1800659950}],
               'C2': {'E1': -0.5768666863441467,
                      'E2': 6698356330641139812,
                      'E3': -3293748269076236019,
                      'E4': [74, 70, 104],
                      'E5': [-12000, -31801, 144],
                      'E6': [181, 165, 29, 64, 151, 208, 145],
                      'E7': [2638322330,
                             2712468738,
                             1530949374,
                             2230590189,
                             3822773602,
                             666525430,
                             3181892864],
                      'E8': -24384}},
        'B3': -2049563201,
        'B4': -0.6784981489181519},
 'A3': 2035611635}

Пример 2

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

(b'MRWHL\xceOA>\x80\xd4\xba=\x1d\x00\x00\x00\xb7[\xca\x05%\xaa\x12'
 b"\xbe\xa8\xb7\xefb\xf5'\x9f\x00\xec\xae\x03&\xd4\x0f\xe4\xf9\xf2\xb8\x80"
 b"\x13\x1f'\xcf\xca\x81\xccY\xdd\x99\x1eE\xaf\xad\x9c\xae\x03.9\xeexq\xf5\xe7"
 b'\x92Ra\x89Db\x86\xdf\xd2\xbe\xfc\xb4\xb0\xbc\x8c\xb9\xf6\x89\x98;'
 b'\x8e\xa4\x0f\xa0Q\xe1\xf1 \xb3\x8e\xb2\xa5My\xda\x03Mg\xdf\xfdj\xe56O'
 b"\xcb\xdf\xb0u\xc4\\'\x18\xe5\xdf\x8c\x04\xc1WW\xe1D~\xe4u\xb8S\xea\xd1"
 b'sP\x9ej')

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

{'A1': 0.1887809932231903,
 'A2': {'B1': 0.09122562408447266,
        'B2': {'C1': [{'D1': 10229,
                       'D2': -1360265057,
                       'D3': 3,
                       'D4': 54310,
                       'D5': -7153,
                       'D6': 2159604473},
                      {'D1': 7955,
                       'D2': -2117415129,
                       'D3': -52,
                       'D4': 56665,
                       'D5': 7833,
                       'D6': 2628628293},
                      {'D1': 942,
                       'D2': 2028878126,
                       'D3': 113,
                       'D4': 59381,
                       'D5': 21138,
                       'D6': 1648658785}],
               'C2': {'E1': -0.4118615984916687,
                      'E2': 9941337241579205884,
                      'E3': -2210809953016464488,
                      'E4': [241, 32, 179],
                      'E5': [-19826, 19877, -9607],
                      'E6': [3, 77, 103, 223, 253, 106, 229],
                      'E7': [3754643254,
                             1556379056,
                             3756333095,
                             1472267404,
                             2118443351,
                             1404597732,
                             1349767658],
                      'E8': 27294}},
        'B3': 97147831,
        'B4': -0.14322717487812042},
 'A3': 1659877288}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'ZIK\x98\x95<e\xb9\xf3)\x1aj\xbf\x95\x03\x00\x00\x00?\x00\xee\xf1m\x00'
 b'1\xd9\xb7$x\xd3\xd4K\xc5>\x02\x00K\x00\x02\x00\x00\x00\x97\x00\x9e\xe4\x91l'
 b'\x11\x03\xbfa"\xdd\xbey\xfdQ>Z"\x80k\x14\xde\xb0>~\t}=\xb4g\xf8\xbe\xe4'
 b"D8\xe4)\x87_\xee\xc6cM\x179F\xcd\xff,?8\xb6'\xc3@F\xd4?\x98\x9a\xa5"
 b'0\xcc\xceK\xa9L\x896\xcc\x14\xfbb\xbf\x87\x0b\x00eI\xf8n\xbf\xdf\xcc\xcf'
 b'\xfem\xbf\x8c\xd6\xf1\x16\x8d\xec\xd1\xbf,\xc5\xb7R\xe7\x04\xbf\xf1\x15'
 b'G\xf3\x17\x81\xef\xaa\x17#\\\x138')

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

{'A1': 38296,
 'A2': {'B1': {'C1': {'D1': -205953732,
                      'D2': -0.9144616723060608,
                      'D3': -107,
                      'D4': [0.34544432163238525,
                             0.06177663058042526,
                             -0.48516619205474854]},
               'C2': 2645822110587285998,
               'C3': 54136},
        'B2': 0.38534414768218994,
        'B3': [{'E1': -1270147955902888732,
                'E2': 25542,
                'E3': 1178146637,
                'E4': 0.6757782101631165,
                'E5': 0.3167879014789352,
                'E6': -6247672681661621608,
                'E7': 3426126156},
               {'E1': 7277829675490147092,
                'E2': -1975,
                'E3': 3437215598,
                'E4': -0.9296693205833435,
                'E5': -0.28006293526355175,
                'E6': -1027096798445451988,
                'E7': 401819413}],
        'B4': [397078401, 940792867],
        'B5': -98,
        'B6': 228,
        'B7': 145,
        'B8': {'F1': [-0.5119845867156982,
                      -0.4319029152393341,
                      0.20506848394870758],
               'F2': 8794}},
 'A3': 27520}

Пример 2

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

(b'ZIK\x8c\x96\x18\x86\xe5D\x96$\x94\xbe-\x02\x00\x00\x00?\x00\xba\xe4:&'
 b'l\xea\xe2~\x0c=|6u?\x02\x00G\x00\x04\x00\x00\x00\x93\x00\x01\x1a\xea\xc7'
 b'\xb6\x05\xbf[|\xe0\xbe\xae\x1f\xa2<\xfa.w\xc5@a\x88\xbeQ\x07!\xbe\x84'
 b"\x01\xce\xbd\n\xfb'+V\xd8z\xb2\xdf\x85\xd2ia?\xa0\xab\x0b\xed\x99\x82\xb0"
 b'?R\xb4P\xe2\x1b~\xb6\x94\x92\xc0&<\\\xeeym\xa3\x9a\xce\xca\x0f\xf0\x97'
 b'\xe0\x80\xab\xc9\xdb\x05\xbf\xd8\xd8\xbb\xccew\xd8?\xdf\xd5\x80g\xbfI\x15ZK'
 b'b\xb1s\xae\x8a\x14\xf1\x8d\x0e\x7f\xaf\xfeg"\xc7s]~`')

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

{'A1': 38540,
 'A2': {'B1': {'C1': {'D1': 1155892760,
                      'D2': -0.28934162855148315,
                      'D3': 45,
                      'D4': [-0.26636695861816406, -0.15725447237491608]},
               'C2': 9143127943734289594,
               'C3': 15628},
        'B2': 0.9578626155853271,
        'B3': [{'E1': 3109730091275256196,
                'E2': -10154,
                'E3': 2246029946,
                'E4': 0.8805209398269653,
                'E5': 0.06449281728025236,
                'E6': -7730853052108721070,
                'E7': 1009172626},
               {'E1': -3832956206138659236,
                'E2': -4081,
                'E3': 2877350039,
                'E4': -0.5228849053382874,
                'E5': 0.38228745454342805,
                'E6': 6491175524348515807,
                'E7': 1941004875}],
        'B4': [-250312018, -1350627699, -954046466, 1618894195],
        'B5': 1,
        'B6': 26,
        'B7': 234,
        'B8': {'F1': [-0.5223202109336853,
                      -0.4384487569332123,
                      0.019790496677160263],
               'F2': 12026}},
 'A3': 50551}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'ZSIY\xfd\x1c?\x94\x00\x87\x95\xcceG\xcaq\xa7\x84\x1c\xd6^t\xca\x7f=\x93Z\x19'
 b'Jo\xf1\xf0r\xf0\xf0\x84Y\xa8Qf\xeb\xfe\xbeU\x02\xb9\xe3\x0b\x00\x00\x00\x1d'
 b'\x00\x00\x00\xdbyE\xa8\xfd\x8b\xfd\xfd5\xf6\x7f\xf5\x9d\xcc8]o\xa0\xcd4\xc8'
 b'\x10<\xd8\xcc\x9d\x92\x03\x007\x00\x00\x00\xf0wj\x02@\xc7\xb0?\x127+\xd5'
 b'-\xd8\xa3\x92z\x0bK\xe9/Ji\xf7\x93\xd60\xactH\xccK\xc5\xbf=\x00\x02\x00`\x00'
 b'\x04\x00\x00\x00b\x00*\xbb1\xae\x06\t\xe4\xbf\xd9\x9f\xd2\xbe\xae4\xa2l\xe0S'
 b':<\xf2P\xcd5\xeb0\xb2/+\xc3\xeeC\xe3\xbf\x02\x00/\x00\xee\x12Wr'
 b'\x00\x00\x00\xa9')

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

{'A1': 0.6132407784461975,
 'A2': {'B1': 5832790688611200162,
        'B2': 820721101,
        'B3': {'C1': -0.6020425617111782,
               'C2': [{'D1': 26060,
                       'D2': 6833680840651819591,
                       'D3': 0.062448933720588684,
                       'D4': 1243175571},
                      {'D1': 61807,
                       'D2': 5884051340672398064,
                       'D3': -0.4978896975517273,
                       'D4': 3820552789}]},
        'B4': 238,
        'B5': 22290,
        'B6': {'E1': -0.16637567079428228,
               'E2': {'F1': -515,
                      'F2': 6717343823023830581,
                      'F3': -24465,
                      'F4': -51,
                      'F5': 1007732788,
                      'F6': -1835152168,
                      'F7': [31195, -22459, -29699],
                      'F8': 0.06554031428319695},
               'E3': [18, 55],
               'E4': [3626882347, 192582307, 1244653899, 3600021353],
               'E5': -0.6261018182975466,
               'E6': -0.4113757908344269,
               'E7': 13486},
        'B7': 169},
 'A3': -27257}

Пример 2

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

(b'ZSI8L\x11?\x92\x00\xea\xb7\xff\x96qid\xff\x13$\xc1\xbaN\xad-\xbf\xdfdg'
 b'<+[\xe84gD\xa3\x88\xe3\xa4\x82\x8a\x0b?\xfb?\xac\xe4\x0b\x00\x00\x00\x1d'
 b'\x00\x00\x00E\xe4\x96\xaa~2D\x92\xc5M\xbbF\xc3\xc9\r\xc8gSQ\x0b\x8b'
 b'\xbf\x0b\xa6\x88\x02\x007\x00\x00\x00\x08\xce\x1c\xd7\xd5\xd4\xda?o\xbc'
 b'\xfd\xe3(>\xab\xd5V\xbd\x95Lq\xcb[\xcf\x14\x05\xb6=\xa6\x8e\xd2\xc7\xeb?'
 b';\x00\x02\x00^\x00\x04\x00\x00\x00`\x00\x90\xbd\xfa \xc47\xb5\xbf'
 b"\x15\xf59\xbe\xeb\xc7\xcc\x8bl\xdeC\x80@\x9c'qAi\x00\x81%\xd4n\t"
 b'\xe5\xbf\x02\x00/\x00\x03[;p\x00\x00\x00T')

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

{'A1': 0.5675692558288574,
 'A2': {'B1': -7187603976300491828,
        'B2': 1765896487,
        'B3': {'C1': -0.6574014800535508,
               'C2': [{'D1': 38655,
                       'D2': -4989667243842049679,
                       'D3': -0.678425669670105,
                       'D4': 1013408991},
                      {'D1': 23339,
                       'D2': -6565253596967389976,
                       'D3': 0.5450822114944458,
                       'D4': 3836493819}]},
        'B4': 3,
        'B5': 15195,
        'B6': {'E1': 0.8681423936958967,
               'E2': {'F1': 12926,
                      'F2': -3908202281349836220,
                      'F3': -14323,
                      'F4': 103,
                      'F5': 2332774739,
                      'F6': -2002383937,
                      'F7': [-7099, -21866],
                      'F8': 0.41924043662149346},
               'E3': [111, -68],
               'E4': [1042867197, 3176584619, 3413200021, 85249883],
               'E5': -0.08288217358744121,
               'E6': -0.1815989762544632,
               'E7': 51179},
        'B7': 84},
 'A3': -18454}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CXUG\x8a\xc1\xcb\xa4\xbf\x0f\x88\xf2\x00\x1f?\xbe\x81w\xd6?\x880\x00\x00'
 b'\x00\x853\xbe\xd5\xba\xce\xbe\x93,\x86\xbfu\xeb\x1b\xbfM\xe4>\x1c'
 b'5\x9a\xa6\xacPnU+rw\x14\xd4U\xcf\x80w\x11\xaf&q,\xedH\xe0\x00\xbf>M'
 b'H\xbfv\xb41\xbe\xed\x89\xab\xc3D\xddLD\xb5!O\x1a\xe7\xb2y\xd6?\x12Rlm\x8a'
 b'\xffX5\xd5.\xde\xfd\xdd\xae\xa0\x8d\x99\xda\xe6\x95\x87t@\xcbR\x14d-\x83'
 b'\x1c\x9c\xde\x181\x0b\x10\xed\xa3>\x8dh\xf3\xcc\x0cV$F\x93\xae\x9a\xdd0\xb1'
 b'\x00\x06\x00m\x01n\xbf<;\x18')

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

{'A1': -1967010908,
 'A2': -0.5606833696365356,
 'A3': {'B1': [{'C1': [-0.28744906187057495,
                       -0.9606186747550964,
                       -0.8042639493942261],
                'C2': 7221,
                'C3': 2594614352,
                'C4': 28245,
                'C5': 728921876,
                'C6': [-11179, -12416, 30481, -20698, 28972, -4792, -8192]},
               {'C1': [-0.7433667182922363,
                       -0.963687002658844,
                       -0.46394094824790955],
                'C2': 49988,
                'C3': 3712763061,
                'C4': 8527,
                'C5': 451392121,
                'C6': [-10689, 4690, 27757, -29953, 22581, -10962, -8451]}],
        'B2': 56750},
 'A4': 0.11916302662533051,
 'A5': {'D1': 0.2761913239955902,
        'D2': 52236,
        'D3': 6207163786526907696,
        'D4': 177,
        'D5': [-1601332774,
               -426408076,
               1087066644,
               1680704284,
               -1663166415,
               185658787],
        'D6': 1,
        'D7': 110,
        'D8': -0.7352766990661621},
 'A6': 51,
 'A7': 3201678030}

Пример 2

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

(b'CXUG\x98R^\xab\xbd\xb6\xb8\xdc\x00\x1f\xbf\xe0K\x9d\xc8\xd9\xb9\x9c\x00\x00'
 b'\x00uL\xa4\xb4^e\xbd\x80\xfc!>#\x81\xb4?ki\xa7$\x97\x0b+\x8e\x19\x14\xd2}'
 b'"\x0f<\xb1C\xabq\xe5\xe7\xe2\xf6\x1cSs\xf7\x17\xcd\xbdq\x86\xe6?;[Y>6\x82'
 b'\xc3G\x8e\xb49\x02\x8c\xad\xd9\r\xe8h\x98\n\xc7\xf9\xe34\xae\xce9;u\xdb'
 b"\xd7\x1a\x0b\x9e\x92\x11\x00J\xf5\x9a,'\xb6?\x1diHg\xa6@\x83\x1bZ}"
 b'\xe3\x19\xd2S\x00\x02\x00m\x08%\xbd\x14"\xc0')

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

{'A1': -1739432277,
 'A2': -0.08921977877616882,
 'A3': {'B1': [{'C1': [-0.06298089772462845,
                       0.15967446565628052,
                       0.91958087682724],
                'C2': 9367,
                'C3': 187403801,
                'C4': 5330,
                'C5': 2099384124,
                'C6': [-20157, -21647, -6681, -7434, 7251, 29687, 6093]},
               {'C1': [-0.058966539800167084,
                       0.7318626046180725,
                       0.17823319137096405],
                'C2': 18318,
                'C3': 3023635084,
                'C4': 44505,
                'C5': 233334936,
                'C6': [2759, -1565, 13486, -12743, 15221, -9257, 6667]}],
        'B2': 40594},
 'A4': -0.5092305109845259,
 'A5': {'D1': 0.6148877143859863,
        'D2': 26534,
        'D3': 4648589315849525714,
        'D4': 83,
        'D5': [285231861, -1708382282],
        'D6': 8,
        'D7': 37,
        'D8': -0.03616595268249512},
 'A6': 76,
 'A7': 2763284069}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'DXUBW\x96\xc1,\xc6\xdf0\xe4\xbfR\x00\x00\x00\\\x00\x00\x00f\x00\x00'
 b'\x00b7\x88l?\xc7|,m2\x17\xc5\xe6\x02\x00\x00\x00\x9c\x00\x00\x00\xd5\t'
 b'\xd9\xac\x87\x1e\xb4G\xdc\xaa\xc8\xaeH\x91\xbdJ\x00r\xc6N\x7f\xc9'
 b'\xdc\x0b\xcf\xdd\xfc3G97[\x08\x9e\x9d\xf2\t\x03\x9a\x88\xa8_\x0c\x11\xe5\xbf'
 b'\xb1W\xb8\xceM\x1e\x17\x8d\xee\xbfpQvF;\xb1t\xd2\xeb?\x89\xbf\x02\x00'
 b'\x00\x00p\x00\x00\x00E\x16\xf9\xc7\xf2\xe1\xde\xcb\x16T\xf7m\x84s'
 b'\x02\x00\x00\x00\x86\x00\x00\x00|\xed\xec\xb0w2X9\xd6\xa0\x0c\xa4'
 b'r\x00\x88\x00')

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

{'A1': -0.630966078815663,
 'A2': [{'B1': 777, 'B2': -0.6583310955359309},
        {'B1': 22449, 'B2': -0.9547229377626172},
        {'B1': 20848, 'B2': 0.8694404088548271}],
 'A3': 98,
 'A4': 0.9239534735679626,
 'A5': 16628722704482860231,
 'A6': {'C1': [{'D1': [137, 191],
                'D2': 14690427467382462021,
                'D3': 22,
                'D4': 84,
                'D5': 28151},
               {'D1': [132, 115],
                'D2': 4132108147763244412,
                'D3': -42,
                'D4': 160,
                'D5': -23540}],
        'C2': 5166788240570124757,
        'C3': -1362580772},
 'A7': [5676349725926592840, 3746112871392397695, 17482303087249406279]}

Пример 2

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

(b'DXUBW0nP\x15\x16\x90\xd7\xbfR\x00\x00\x00\\\x00\x00\x00f\x00\x00'
 b'\x00\xeb\xe1\x9fX\xbf\xb0\xcd\x96\x81\xb5\x83@#\x02\x00\x00\x00\x9c\x00'
 b'\x00\x00Jhd\xd2\xfa\xfc\x97v.\x84\xd9\xe9}\x81\x91w\xb3\x99\xe2\x07)\xa7'
 b'2}\\Y\xe1\t\xf0\\\xe2\xaf(\xc8ad\x89\xef\xc8\n\xca}\xf7\xf4\xdd?jS,u'
 b'X\x1f\x87I\xe4?\xf2\xf5\xfe\xac\x17\x0c\x93\xd5\xe4\xbf\xcf\x89\x02\x00'
 b'\x00\x00p\x00\x00\x00\xa4\xff\x95s\xe8-\xe1\xf4k\xa083\xb5\xab'
 b'\x02\x00\x00\x00\x86\x00\x00\x00\x1c*\xf3\xc1\x04u0m\xe6t\x07\xde'
 b'r\x00\x88\x00')

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

{'A1': -0.36816932755911846,
 'A2': [{'B1': -4215, 'B2': 0.46807658466438484},
        {'B1': 21354, 'B2': 0.6339755642144715},
        {'B1': -2574, 'B2': -0.6510710941487614}],
 'A3': 235,
 'A4': -0.846189558506012,
 'A5': 2540175005423422896,
 'A6': {'C1': [{'D1': [207, 137],
                'D2': 17645435291409186724,
                'D3': 107,
                'D4': 160,
                'D5': 13112},
               {'D1': [181, 171],
                'D2': 7867917212310514204,
                'D3': -26,
                'D4': 116,
                'D5': -8697}],
        'C2': 8545576972160624714,
        'C3': -371620818},
 'A7': [568185499086324093, 711948469873583913, 7233282553608822000]}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x86MWT\x00\x04\x00\x17#\x00\x02\x003\x00\x03\x00;\x00>\x00\x00\x00Zynii}'
 b'z\xee\xca\x96N\xd4ZF\x9f\x97q\xe0\xab\rQc!\x93\xd6k\xa2\xca\xf1\x00'
 b"\x00\x00\x1b\x00\x00\x00'xeuf.\x871\xaa\xb3c\xbd\xd4\xd7T\x8c\x96\x95"
 b'\xf3\x89\xbe\xa56\xc5\xbfL\xbb\xe1?\x13\xffL1e\xdf\xdb\x04\x91b\xaa\x00\x02'
 b'\x00\x00\x00R')

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

{'A1': 'ynii',
 'A2': 35,
 'A3': [{'B1': 32122, 'B2': 17206730591636702879, 'B3': 38769},
        {'B1': -8021, 'B2': 959657191471999906, 'B3': 51953}],
 'A4': 'xeu',
 'A5': {'C1': [7362971088184370109, -3109924054877473911], 'C2': 3198498501},
 'A6': {'D1': 3559497212273713834,
        'D2': [-0.799741804599762, 0.5781142711639404]}}

Пример 2

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

(b'\x86MWT\x00\x04\x00\x17\xbd\x00\x02\x003\x00\x02\x00;\x00=\x00\x00\x00av'
 b'ifl\xaf\xed\xd4\x93\xb3\x00\xda\x1e<6\xa8\x081T\x02y\xb8$czH\x0b\x96X\x00'
 b"\x00\x00\x1b\x00\x00\x00'qrK\x8c\x891\xf2\xe3\xad!\xb9r#6\x1f\xc9S"
 b'\xf2\xf5\xa1\xec\xd4<\xf3\xc3\xf9\xbfw2\xe9\xbf-Y}>J\x90X\x89\xb0q\x95\x0b&P'
 b'\xc0\x00\x04\x00\x00\x00Q')

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

{'A1': 'vifl',
 'A2': 189,
 'A3': [{'B1': -20499, 'B2': 15317783573857975350, 'B3': 43016},
        {'B1': 12628, 'B2': 178376126685136907, 'B3': 38488}],
 'A4': 'qr',
 'A5': {'C1': [5443876897205497121, -5083962313979374606], 'C2': 4121029844},
 'A6': {'D1': -8525189209661222720,
        'D2': [0.029756532981991768,
               -0.9656205773353577,
               -0.6771467328071594,
               0.19781625270843506]}}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LQC\xe7\xea\x14#\xcd\x03\x00\x1f\x00t\x84\x03\x00\xb6\x00\x00\x00'
 b'\x15\x03\x00\x00\x00\xbc\x00\xef\x0e\xe6@pir\x18\xbc0<\xd0\x1b\x87J;A'
 b'\xa7\x85_\xc4\xac\x942Q\xce\xf6x\x83LY\xc0\xd7N"\x00\x00\x00\x05\x003'
 b"\x00\xf3\x19\xc2\x03(\x1f6\xd0\xbfs\xbf\x85p'\xf2\n\xac9\x8b\xa9\\\xa4`"
 b'a\xff/\xcfV/\xb9\xdb\x8e"6\xc3\xa5.\xbd\x84\xbcT\x00\x00\x00\x04\x00e'
 b'\x00w\x00m\xa6?=\x16\x96\x1b\x81\xbd\x9d\x0f\xc7\xc3V{\xba_\xe4\x05>\x13'
 b'\x90bu9\xbd\xe17\x95PNn\t,\xb0\xa5\xa1\x99\x8b\xf2\x84\x00\x00\x00\x05'
 b'\x00\x95\x00\x81\xa5\xd5rQ\x07f\x81\xec\xe49\xbe\xa1\xee =\x00m\x00\x9f\x00'
 b'\xb2\x9f\xc4\xa6\x971\xfeb\x1a\xf7H\xe6')

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

{'A1': 3441628394,
 'A2': 'pir',
 'A3': -31628,
 'A4': [{'B1': {'C1': 24,
                'C2': 3493605564,
                'C3': 6883091504115123995,
                'C4': 848604356},
         'B2': [-12719, 30966, 19587, -16295, 20183],
         'B3': {'D1': 63052275,
                'D2': 7976,
                'D3': 54,
                'D4': -0.9521455764770508,
                'D5': -123},
         'B4': 112,
         'B5': -3545},
        {'B1': {'C1': 10,
                'C2': 2844473772,
                'C3': 6255271181337797724,
                'C4': 2396764463},
         'B2': [13858, -23101, -17106, -17276],
         'B3': {'D1': 2792161399,
                'D2': 15679,
                'D3': 22,
                'D4': -0.06304089725017548,
                'D5': -99},
         'B4': 15,
         'B5': -15417},
        {'B1': {'C1': 86,
                'C2': 3831478907,
                'C3': 13635058413025312261,
                'C4': 1351956449},
         'B2': [28238, 11273, -23120, -26207, -3445],
         'B3': {'D1': 1926604161,
                'D2': 1873,
                'D3': 102,
                'D4': 0.00043663757969625294,
                'D5': -66},
         'B4': 161,
         'B5': 8430}],
 'A5': 21,
 'A6': [-1497063502, 1660826007, -431425766],
 'A7': 1088818927}

Пример 2

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

(b'LQC\xe7\x18]\x012\x05\x00\x1f\x00J\xaf\x03\x00\xb0\x00\x00\x003\x03\x00\x00'
 b'\x00\xb6\x00\x15t\x8a\xf4nrotr\x82\xf8\xc9\x94zh\xbd]\xb1\xd9 \xa1t\xbeF\xf5'
 b'G\xdc\x19\x12:\x0eQ\x9b\xb7\x05\xe8$\x00\x00\x00\x05\x005\x00\x94\xb10#\xce'
 b'=\xdf\x8df\xa4\xbe\xf1}O)\x92\xeb\xc1\xf5\x06E\xce5\x99}wBa\x98\xd8aZ\xd0'
 b'\xfd\xe7\xbe\xa3cV\x00\x00\x00\x03\x00g\x00\x16\xe2^o\xa3&\x07'
 b'\x0f\xd7\xce\xbe4p\xa4\x97L>\xea"\x8c\xfc\x86A\xcd\x01\xae\x01\xa0\xe8\x97M'
 b'-\xed\xc2\xc1\x99\x84\x00\x00\x00\x02\x00\x95\x00@\x8c\x85\xb78\xe8\xfc'
 b'\xabg\xba\xbe-\xb0\xc17?\x00m\x00\x99\x00\x18\x0e\x87\xf2\xa7\x9f'
 b'\xc1\x94\xa3H\xfb\x91')

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

{'A1': 838950168,
 'A2': 'nrotr',
 'A3': -20662,
 'A4': [{'B1': {'C1': 130,
                'C2': 2056571384,
                'C3': 8404034499005758824,
                'C4': 1207256766},
         'B2': [6620, 14866, 20750, -18533, -6139],
         'B3': {'D1': 590393748,
                'D2': 15822,
                'D3': 223,
                'D4': -0.32109490036964417,
                'D5': -15},
         'B4': 125,
         'B5': 10575},
        {'B1': {'C1': 146,
                'C2': 116769259,
                'C3': 7008295351466970693,
                'C4': 1516361880},
         'B2': [-560, -16665, 25507],
         'B3': {'D1': 1868489238,
                'D2': 9891,
                'D3': 7,
                'D4': -0.40398451685905457,
                'D5': 52},
         'B4': 112,
         'B5': -26716},
        {'B1': {'C1': 76,
                'C2': 2351098430,
                'C3': 11529687843807004412,
                'C4': 760059880},
         'B2': [-15635, -26175],
         'B3': {'D1': 3078982720,
                'D2': 59448,
                'D3': 252,
                'D4': -0.36407217383384705,
                'D5': 45},
         'B4': 176,
         'B5': 14273}],
 'A5': 51,
 'A6': [-226030056, -1799250009, -1845802845],
 'A7': -192252907}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\rPIWK\x04\x00E\x00\xd7\x14,\x81\x9d\x8amB\r`` og\xf8\xd6~\xbb4\x85?\xb6^'
 b'\xceCd?\x1a\x8fQ\x02\x00I\x00]\xee\x7f\xd10)z\x03\xb5F;\xfd\x02\x00\x00\x00K'
 b'\x00\x00\x00\xb2\x9a\xc93S\x00jtodgq\xbd\x9e[\xbe\x17\xb7z>\x92u\x03\x0fz'
 b'\xa8\xac.,uf')

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

{'A1': 'jtod',
 'A2': [{'B1': 5335, 'B2': 6921261240582766892},
        {'B1': 8288, 'B2': 9598502859280246639},
        {'B1': -18881, 'B2': 5876944898309213790}],
 'A3': 'gq',
 'A4': 61021,
 'A5': 5094982376651542911,
 'A6': 59,
 'A7': {'C1': -3,
        'C2': [-0.2144727259874344, 0.24483905732631683],
        'C3': 868850354},
 'A8': {'D1': 146, 'D2': 2047804277, 'D3': 44200, 'D4': 1718955054}}

Пример 2

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

(b'\rPIWK\x02\x00E\x00\x11V\x92g\xa5\xf3|\xe9\x84\xd5\xf3\xd5\xe24J'
 b'\xee\xe7\xf6\x9e\x1eR\xb1\xf7 \xa1\xbe}\xf9r\xa4\x02\x00G\x002c"\x9aF'
 b'\xd8;g\xc3\xf1\x1f\xd6\x02\x00\x00\x00I\x00\x00\x00\xf9\xa3\x9f\x86Q\x00vpj'
 b'm&\xd1g?\x86_\xcd\xbe\xe5.f\xfb:p\xa3\xc7I^\xdc')

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

{'A1': 'vp',
 'A2': [{'B1': 22033, 'B2': 15385678949877376914},
        {'B1': -10765, 'B2': 2206472343453840610},
        {'B1': -20142, 'B2': 11849807888029655287}],
 'A3': 'jm',
 'A4': 25394,
 'A5': 17420881290328447522,
 'A6': 31,
 'A7': {'C1': -42,
        'C2': [0.905535101890564, -0.4011194109916687],
        'C3': 2258609145},
 'A8': {'D1': 229, 'D2': 989554222, 'D3': 41840, 'D4': -597800505}}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'UUTM9&\x02\x00\x00\x00(\x00\x12\xa7\xae=P\x00\x00\x00\x02\x00c\x00'
 b'\x00\x00\x04\x00\x00\x00k\x00\x00\x00\xa1\x81rwhw\xeb\xc4\x02\x00'
 b'\x00\x00$\x00\x00\x00!\x13\xe6\xbekLf\xc2\xdc\xe5\xec\xa5\x02\x00'
 b'\x00\x00&\x00\x00\x00k~p?\xd5J\x9f3\xc4\xda\xa0\\k1\x96A[\xe8\x812s\x8a'
 b'[\xbc\xe3(V:\xca\x83\x0e\x06>V\xe6r\xbf%\xb3$\xd8\x12\x14\x17S')

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

{'A1': 38,
 'A2': [{'B1': -15125,
         'B2': 'rw',
         'B3': -0.44936469197273254,
         'B4': 19563,
         'B5': -438517146},
        {'B1': -23060,
         'B2': 'hw',
         'B3': 0.939428985118866,
         'B4': 19157,
         'B5': -624675937}],
 'A3': 0.08527959883213043,
 'A4': {'C1': 829119648,
        'C2': [3898294678, 2322805377],
        'C3': 686013531,
        'C4': 86,
        'C5': -13766},
 'A5': [0.13091473281383514, -0.9488271474838257],
 'A6': {'D1': [-19675, -10204, 5138, 21271], 'D2': 33185}}

Пример 2

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

(b'UUTM9\xef\x02\x00\x00\x00(\x00a\x9b,\xbfP\x00\x00\x00\x02\x00c\x00'
 b'\x00\x00\x08\x00\x00\x00k\x00\x00\x00\xfc\xffxmtx\x1b\xe7\x02\x00'
 b"\x00\x00$\x00\x00\x00\xf5\x08\x1b?(\xd2\xcd'\xe7^]\x08\x02\x00\x00\x00&\x00"
 b'\x00\x00c\xc7%?\xbes\xca\xe3\x8c\x8b\xe7\x8b\xae\xacs\xabC\xce\x1dq\xbd\xc5'
 b'\xeeA\xd1\x11\xdc\x97\xb2v\x96|>Kx\x0c?\xf5\xd4\xe5\xb9V}\xc2;s\xd6\xdf\xe9J'
 b'\xfc\x85\r')

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

{'A1': -17,
 'A2': [{'B1': -6373,
         'B2': 'xm',
         'B3': 0.60560542345047,
         'B4': -11736,
         'B5': 1592207309},
        {'B1': 2141,
         'B2': 'tx',
         'B3': 0.6475736498832703,
         'B4': 29630,
         'B5': -1953700918}],
 'A3': -0.6742458939552307,
 'A4': {'C1': -1397847065,
        'C2': [3460541299, 3317526813],
        'C3': 298926574,
        'C4': 220,
        'C5': -19817},
 'A5': [0.24666771292686462, 0.5487105250358582],
 'A6': {'D1': [-11019, -17947, 32086, 15298, -10637, -5665, -950, 3461],
        'D2': 65532}}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x18WCCZ<\x00\x02\x00\x00\x00\x81\xbe\x0c\x14\xee\x00\x02\x00\x00'
 b'\x00\x83?\x00\xff\xf7\x00\x02\x00\x00\x00\x85?t }\x00\x02\x00\x00'
 b'\x00\x87>\x81\xd0\x92\x00\x02\x00\x00\x00\x89\xbd\x84\x93\xa8'
 b'\x00\x02\x00\x00\x00\x8b?C\x06u\xcc\x86~\x9e{\x19H\xd80{\x01\xb8\x1c\x0c'
 b'\xbf\xe0\x94j\x88\x00\x00\x00\x03\x00\x00\x00\x8dnq\xd1z\x9f\xaf\xfdQ\xcb_8'
 b'\x0evx\x08\x11\xf0\x9e\xba\x8cO\x0fF\x8a\xffn\xb7w\x94\xe9\xa6\x1b\xbb\ts'
 b'\x03v\x9d\x06i\xfa\x93/\xaf\xb7l\xcfS,\x16\x94\xff\xe9f')

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

{'A1': 60,
 'A2': {'B1': {'C1': [{'D1': [118, -99], 'D2': -0.13679859042167664},
                      {'D1': [6, 105], 'D2': 0.503905713558197},
                      {'D1': [-6, -109], 'D2': 0.9536207318305969},
                      {'D1': [47, -81], 'D2': 0.2535443902015686},
                      {'D1': [-73, 108], 'D2': -0.06473475694656372},
                      {'D1': [-49, 83], 'D2': 0.7618172764778137}],
               'C2': {'E1': -863600994,
                      'E2': 31513,
                      'E3': 1222127739,
                      'E4': 1,
                      'E5': -5180251453136803192,
                      'E6': [11286, 38143, 59750]},
               'C3': 110,
               'C4': 113},
        'B2': 53626,
        'B3': -6940049973008451570,
        'B4': [8536581966825175692, 5696849616451843959, -7716453848490347773]}}

Пример 2

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

(b'\x18WCCZ\xb2\x00\x02\x00\x00\x00\x81\xbe\xd5\x8e\xc2\x00\x02\x00\x00'
 b'\x00\x83?S-\xcb\x00\x02\x00\x00\x00\x85>\x80\x9f\x7f\x00\x02\x00\x00'
 b'\x00\x87>\xca\xae~\x00\x02\x00\x00\x00\x89\xbf\x1cj>\x00\x02\x00\x00'
 b'\x00\x8b?5\xfbs\xb2\x9ey\x04t\x98N\xfb7*\xedS(p\x13\xc4\x83\xf1'
 b'\x10\x00\x00\x00\x06\x00\x00\x00\x8d\xfb\x8az3\xbf\xbd\xf4`\x11{Q'
 b'H\xab\xc3\xc6J\x97&\x0f\xad\x10\x8e"\x9cz\xbczI\xf7\x01\xd6\x85\x7f\xb2`'
 b'\xa7\xcc\x97y\xd5}\xbd\xc5P\xf8\xc9\xf90\xe8\xeb8\x83\xa6"\xa1\x07L\x88\n{')

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

{'A1': 178,
 'A2': {'B1': {'C1': [{'D1': [-52, -105], 'D2': -0.4171047806739807},
                      {'D1': [121, -43], 'D2': 0.8249174952507019},
                      {'D1': [125, -67], 'D2': 0.251216858625412},
                      {'D1': [-59, 80], 'D2': 0.39586251974105835},
                      {'D1': [-8, -55], 'D2': -0.6109961271286011},
                      {'D1': [-7, 48], 'D2': 0.7108680605888367}],
               'C2': {'E1': -1298237180,
                      'E2': 29848,
                      'E3': 1325086506,
                      'E4': 237,
                      'E5': 5992162534420115728,
                      'E6': [59627, 14467, 42530, 41223, 19592, 2683]},
               'C3': -5,
               'C4': -118},
        'B2': 31283,
        'B3': -4630276148419669688,
        'B4': [-6069789849099563091, 1192929006769175113, -648001002503249753]}}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'QHR\t\x12\xad\xcf\x1f\x00\x00\x00\x02\x00\x00\x00Q\x00\x00\x00OZ\xa4\x16\x02'
 b'\x00\x00\x00a\x00\x00\x00\xac!\x8e>dq\xce\xb8\xab@!\xd7\xc4\xf8\xc8u\xe6'
 b'\xa4\x1e\x84\xbd\xef\xc8}\xe1L\xf5p\x95\xdcnHb\x84\xa28\x1e\x19\x88WY'
 b"?>\xc9\x7f\x97\x01\xfe\x14\x94'\x00\x00\x00\xfb\xc5\xdd\x89<\x00\x00"
 b'\x00\x91H\xf7\xdf\x8d/\xed\x9b')

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

{'A1': [9, 18, 173, 207],
 'A2': {'B1': 0.27760064601898193, 'B2': 3100537188},
 'A3': [{'C1': {'D1': -685686613,
                'D2': [-60, -8, -56, 117, -26],
                'D3': -0.06451156735420227,
                'D4': 10768376419592292591},
         'C2': -1981954565},
        {'C1': {'D1': 1648914140,
                'D2': [-124, -94, 56, 30, 25],
                'D3': 0.848991870880127,
                'D4': 10670432699937704254},
         'C2': -537442159}],
 'A4': 379869775,
 'A5': [12173, -25619]}

Пример 2

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

(b'QHR[T\x12@\x1f\x00\x00\x00\x04\x00\x00\x00{\x00\x00\x00\x8f\xd0Xr\x02'
 b'\x00\x00\x00\x9b\x00\x00\x00\x91\xc4\xf2>\xab\x00\x15\x18k\xdc\x91\x98X'
 b'\x0c\xde\xd3\x927\xa0\xce\xbdR^\x91\xb4\x968\xf6\xb0\xca5\xaf)\xf7\x88X\x93'
 b'V)\xda\xa6>Ca\xef\x99ZI?)\x91\xc6\xf7\xc5\x8b\xe7z\xd37Of_?P\x0f'
 b"\x04\xc1\xdd\xb2\xacvL|\xc2e1w\xcbmx\xf4\xdd`\xbfz\xaf\x11\x0ci\xc5\xa3%'"
 b'\x00\x00\x00+\xcaf\xe0<\x00\x00\x00\x10#\x8c\xa1Q\x00\x00\x00\xb6\xdd\rmf'
 b'\x00\x00\x00\xfa\x80\xb1\xecK\xa1\xeeN')

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

{'A1': [91, 84, 18, 64],
 'A2': {'B1': 0.4741559326648712, 'B2': 404029611},
 'A3': [{'C1': {'D1': -1735271317,
                'D2': [88, 12, -34, -45, -110],
                'D3': -0.10089152306318283,
                'D4': 12751441614871813714},
         'C2': -530134485},
        {'C1': {'D1': 699348426,
                'D2': [-9, -120, 88, -109, 86],
                'D3': 0.3258831799030304,
                'D4': 2972174932566303043},
         'C2': -1584651504},
        {'C1': {'D1': -973617519,
                'D2': [-117, -25, 122, -45, 55],
                'D3': 0.8726548552513123,
                'D4': 8551406457965514576},
         'C2': 1829625270},
        {'C1': {'D1': 1707244620,
                'D2': [49, 119, -53, 109, 120],
                'D3': -0.8783867359161377,
                'D4': 2712228455571894138},
         'C2': -323911430}],
 'A4': 1918423183,
 'A5': [-24245, 20206]}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xc1PZY\xb3E\xef\xed\xef\xa0e\x89K\xe8>\xd7!\xd3\x00\x00\x00\x02\x00K'
 b'\x00\x00\x00\x03\x00\x00\x00q<\x87l\x80\x95G\xc5\x94;\xf5c\xca\xe7S\x0b\xff'
 b'O\x13\n\xfe\xd0\x90X\xde\xc6;\xe1`\xca\x86\xa8\xfc\xa2\xc1\xa8!'
 b'\x9c\xf8\x16\xbe]z\xbevsf&l\xa0\xc9\xed\xady\x0f\xd3\xba\x00h*\x8c'
 b'\xf7\xabK\x0b^\xf6v\x039E\xc6\r\xaerC\xfb\x13\x9c~\x94\xaa\x00M\x00Y\x00e')

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

{'A1': 3007705069,
 'A2': 61344,
 'A3': {'B1': 1703496680, 'B2': 0.42017993330955505},
 'A4': {'C1': 'vs',
        'C2': [{'D1': 102, 'D2': 9836, 'D3': -6860691228006034502, 'D4': 0},
               {'D1': 104, 'D2': 10892, 'D3': -600303613113895421, 'D4': 57},
               {'D1': 69, 'D2': -14835, 'D3': -5876559818120200556, 'D4': 170}],
        'C3': 0.01653122901916504,
        'C4': [10756783475449488330,
               16668679836999551742,
               15028609670367142240],
        'C5': [202, 134, 168, 252, 162],
        'C6': -15960,
        'C7': 563935254},
 'A5': -0.21628853678703308}

Пример 2

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

(b'\xc1PZY\x1c\xbb\xf4VT\x89\xb2q\xdc\xaf\xbd\xefb\x96\x00\x00\x00\x04\x00K'
 b'\x00\x00\x00\x03\x00\x00\x00s?\x02\xba\xa3\x15\x7f\xde"\xaa\xee\xe3Uj}%\xe0'
 b'\x0f{Oy?\xfb\x01\xe3\xf1\x82Jc\x14\x13\xcc\xb8\xd7\xbd\xd3\x95'
 b'\xd0\xb2\xe8\xbet\xce\x91ajbj\xee\x01\x92MI1\xbcvf\x90<9\xbf\xa5\xbah!'
 b'{&K\xcd\xcdP\xbb7vv6\x08\x0b\\\x8e=\xfe\rx\x00O\x00[\x00g')

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

{'A1': 482079830,
 'A2': 21641,
 'A3': {'B1': -1301160785, 'B2': -0.11688725650310516},
 'A4': {'C1': 'ajbj',
        'C2': [{'D1': -18, 'D2': 402, 'D3': 5569037099730374716, 'D4': 57},
               {'D1': -65, 'D2': -23110, 'D3': 7503413858586709328, 'D4': 187},
               {'D1': 55, 'D2': 30326, 'D3': 3893374370013117965, 'D4': 120}],
        'C3': 0.5106603503227234,
        'C4': [1549201037316776789, 7673330984371834745, 4610280722064886371],
        'C5': [20, 19, 204, 184, 215],
        'C6': -16941,
        'C7': -1781484824},
 'A5': -0.23906923830509186}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xe2YUQV\x1b(\x8c\x92\xed\xe3X\x85\x81\x96\xc5c|\xf7!\xb5V\xa9Z\x86\x94\xd7('
 b'\x02\x00\x00\x00\x94\x00\x00\x00\xcdJ\xf5\x02\x84\xa1h\x03\x0e\x16;"'
 b'\xe8\xbe\xc8>\\\xb6hi\xff|6\xf9\x92h\xabv\x9b\xe2\xde\xf3\xb5"5N'
 b"\xa8\xee\x04\x00\x00\x00'\x00\x00\x00\x1d1\x0em\xb3\xe8\x8e\xf6\xb8\xf7"
 b'K%\x86H\x9e\xfc4\xe6\xa9c\xe3\x03\xa5\xb8\x07.\xd2\x89nV\xa9\xca\x88\x13'
 b'\xb4\x7f6m\x80\x1br\x83\xda\x19{\xe3!mJ\x05\x00\x00\x00^\x00\x00\x00\x9f'
 b'!n\x0bM\xcd\xa9\x9f\xd8\xd5@ \x00\x0f74z\x00$\x00\x00\x00@l\x15\x1e\x11/\x00'
 b'\x00\x00\xf6\x80\xf7\x84S\x11\xf2\x06\x99[\x00\x00\x001\xac\xe0\x08\xee'
 b'h\x00\x00\x00')

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

{'A1': 27,
 'A2': [40, -116, -110, -19, -29, 88],
 'A3': 2447561690457735557,
 'A4': 2942984186277484213,
 'A5': [{'B1': 8805723708982313173,
         'B2': 0,
         'B3': {'C1': 19149, 'C2': 245},
         'B4': 504720448,
         'B5': 17,
         'B6': {'D1': 3367954466,
                'D2': 23614,
                'D3': -74,
                'D4': 2097113448,
                'D5': [1754462518, -493128021, 582349790, -290959819],
                'D6': [33794, 26785, 3587, 15126],
                'D7': 29,
                'D8': -5118746796366164431}},
        {'B1': 500481559002317046,
         'B2': 153,
         'B3': {'C1': 19447, 'C2': 37},
         'B4': 148941873,
         'B5': 238,
         'B6': {'D1': 772257957,
                'D2': -30254,
                'D3': 110,
                'D4': -1999984298,
                'D5': [914338835, 1914404973, 2065291907, 1248666083],
                'D6': [18566, 64670, 58932, 25513, 995],
                'D7': -97,
                'D8': -2837362540994138591}}]}

Пример 2

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

(b'\xe2YUQV\x17\\\xdeF\x12\xae\x02\xda\x1eM"\xd5:\xe0{^\x9d\x7f$A\xb8@\xb4'
 b'\x02\x00\x00\x00\x98\x00\x00\x00X\xd0P\x92\xb5\xaa\xce\x0f\x15\x8a\xe7\x12'
 b'I\xa6\xac\xbb\xa7\xf6qv\x91K\xc6\xf8\xdb\x01\xe6T}w\x93\x01\xf4\xc2\xc3\x18'
 b"\xcfka\xe1\x05\x00\x00\x00'\x00\x00\x00 \x83\xdam\xff\xcb\xe0\x84"
 b'\xae\x84\xfc\x8fZN\xb4\xec\xd7\xd4NP\xd5\xf8\x85\x93wC\xc4/\xb5\xfc\xf8C'
 b'\xa8\xdf(>\xfc\xb3x\xfa\xed\xc4\x81\xfc\xc7\xa6}\xb4\x19\x06|\x06'
 b'\x00\x00\x00`\x00\x00\x00\x92\xc6\xc8z\x14u\x03\x94\xbc\x05\xb4 O'
 b'i\x8e\xe4\x85t$\x00\x00\x00\xbf\x92\xcd\xdc!1\x00\x00\x00X\xac\x83N\x8d|'
 b'\xf2\x89&]\x00\x00\x00E\x1e\xa6\x8f\x06l\x00\x00\x00')

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

{'A1': 23,
 'A2': [92, -34, 70, 18, -82, 2],
 'A3': 8926199148526247642,
 'A4': 12988583915261238622,
 'A5': [{'B1': 9647992884684698629,
         'B2': 116,
         'B3': {'C1': -12200, 'C2': 80},
         'B4': -590507329,
         'B5': 33,
         'B6': {'D1': 2814094502,
                'D2': 29174,
                'D3': 118,
                'D4': -121222255,
                'D5': [1424359899, 26441597, 415482612, -513709105],
                'D6': [46482, 52906, 5391, 59274, 18706],
                'D7': 32,
                'D8': -5871320847415911805}},
        {'B1': 9940144273909591128,
         'B2': 38,
         'B3': {'C1': -892, 'C2': 143},
         'B4': -1884938683,
         'B5': 6,
         'B6': {'D1': 801391479,
                'D2': -843,
                'D3': -8,
                'D4': 685746243,
                'D5': [2025061438, -2117800454, 2108082172, 2080774580],
                'D6': [20058, 60596, 54487, 20558, 63701, 37765],
                'D7': -110,
                'D8': -4858254296636274490}}]}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'PCH\xd59\xf0\xacQ\x93A\xd1\xee\x02\x00G\x00\x00\x00\xa5\x04\x00I\x00\x00'
 b'\x00\x11\x03\x00M\x00\x00\x00\xa8\x04\x00P\x00\x00\x00\x94\x03\x00T\x00'
 b'\x00\x00\xa6\x03\x00W\x00\x00\x00\xb2\x02\x00Z\x00\x00\x00\x10\x04\x00\\'
 b'\x00\x00\x00d\x00\x00\x00pjezycuaggboaxuovlrepyzbd\x8f4\x81\xeeu\x07\xd6Y'
 b'[\x8a\x1f/\xca\xea[\x1f\x11\xcf\xb1\xab\xc7\x04\x00\x00\x00`\x00\xc7'
 b'"\x0b?\xa9\x86+\xbfX\x93\xfb>\x89\x7f|?g_g?\xc2\xddv\xbf\x1b')

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

{'A1': 15078495006416189909,
 'A2': [{'B1': -18, 'B2': 'pj'},
        {'B1': -91, 'B2': 'ezyc'},
        {'B1': 17, 'B2': 'uag'},
        {'B1': -88, 'B2': 'gboa'},
        {'B1': -108, 'B2': 'xuo'},
        {'B1': -90, 'B2': 'vlr'},
        {'B1': -78, 'B2': 'ep'},
        {'B1': 16, 'B2': 'yzbd'}],
 'A3': {'C1': 1507198837,
        'C2': {'D1': 91,
               'D2': 3392085898,
               'D3': -4058955136240755734,
               'D4': [143, 52, 129, 238],
               'D5': [0.5434994101524353,
                      -0.670023500919342,
                      0.49135851860046387,
                      0.9863210320472717,
                      0.9037994742393494,
                      -0.9643212556838989]},
        'C3': 27}}

Пример 2

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

(b'PCH2\xb4\x8e\x8b\x00+p\xe6\xd8\x03\x00G\x00\x00\x00\x94\x03\x00J\x00\x00'
 b'\x00r\x02\x00M\x00\x00\x00\xba\x02\x00O\x00\x00\x00\xcf\x04\x00Q\x00'
 b'\x00\x00\xdf\x03\x00U\x00\x00\x00e\x03\x00X\x00\x00\x00\xd8\x03\x00['
 b'\x00\x00\x00c\x00\x00\x00odaowxmqkoqqmmlktrjbamv\xa1d\x02M"P)\x9b\xc3\xcb'
 b'\xdf"\xb4\xec\x83|\x12\x87\x9cr\x0b1\x05\x00\x00\x00^\x00]\x02'
 b'\x9c\xbd\x8b\x06\x02?\xdc\x02\x97>\x8e\xe1q?\xb9t\xa5\xbeV|\x1b\xbe\xa1')

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

{'A1': 16604819107456398386,
 'A2': [{'B1': -40, 'B2': 'oda'},
        {'B1': -108, 'B2': 'owx'},
        {'B1': 114, 'B2': 'mq'},
        {'B1': -70, 'B2': 'ko'},
        {'B1': -49, 'B2': 'qqmm'},
        {'B1': -33, 'B2': 'lkt'},
        {'B1': 101, 'B2': 'rjb'},
        {'B1': -40, 'B2': 'amv'}],
 'A3': {'C1': 3281725776,
        'C2': {'D1': 203,
               'D2': 3971228383,
               'D3': 3534044349208886403,
               'D4': [161, 100, 2, 77, 34],
               'D5': [-0.07617638260126114,
                      0.5079123377799988,
                      0.2949436902999878,
                      0.9448479413986206,
                      -0.3231561481952667,
                      -0.15184149146080017]},
        'C3': 161}}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KWBYt\x00\x00\x00o\x00\x00\x00y\x00\x00\x00\x83\x00\x00\x00\x8d\x00\x00\x00'
 b'\x97\x00\x00\x00\xa1\x00\x00\x00\xab\x00\x00\x00\xb5\x04\xe0=+y\xf0\xd0'
 b'\x00\x06\x00\xbf\xb3\x08\x84\x0f\xc4\xd4A\x80:11v\x9b?\xd0O\xc6\xc5\x06\xca'
 b'\xd8[v>\xca\xeabe\xeeg\xb5\xbf\xd8\\W\xa1\xc6?_fwfs\x9c\x00<(~'
 b'\x15\xbf\xd3\xd1Q\x91\xf4M\xc0\x00\x03\x00\x00\x00\xc5\xc8R\xe8\x9e\xf5'
 b'\xee{\xc8\xd8\x0c\xe5\xeb\x1b\x96)w\x13\xcf\x10}`\xcf\x11\xc0\x89'
 b'\xca\x85\xf92\x85\x0e\xc4\xf5\xf7 \xbd\xf0\xeaV\x04\xa8\xe7x\xa3\xfd'
 b'\xeb\x02\xe4uBM\xcb\xe9\xeb\xdc\x99\xe7x\xc68\xe4\x18\xbb\x82;U8\xaf7\x96*{)'
 b'\xd6\xd1\xb5o\xf8\xd8\x9dvqudek\xac\xb7E')

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

{'A1': {'B1': [{'C1': -14254, 'C2': [3902731758, 2076760076]},
               {'C1': -6677, 'C2': [462825847, 332337277]},
               {'C1': 24783, 'C2': [297830858, 2247701125]},
               {'C1': 3780, 'C2': [4126613693, 4041889284]},
               {'C1': -22297, 'C2': [2024013291, 48526658]},
               {'C1': 19915, 'C2': [3924548761, 3883451960]},
               {'C1': -7144, 'C2': [3145874261, 951007126]},
               {'C1': 10875, 'C2': [701944245, 1878579357]}],
        'B2': 1248,
        'B3': 0.04186433553695679},
 'A2': 208,
 'A3': 'vqudek',
 'A4': {'D1': -1291287537,
        'D2': 3302244736,
        'D3': 976302454,
        'D4': 155,
        'D5': 0.25486916771766976,
        'D6': [1534475978, 3932317166, 1739964376, 1549246918],
        'D7': 0.001916519738921485},
 'A5': 0.010283966548740864,
 'A6': -0.30965079549170227,
 'A7': [172, 183, 69]}

Пример 2

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

(b'KWBYt\x00\x00\x00o\x00\x00\x00y\x00\x00\x00\x83\x00\x00\x00\x8d\x00\x00\x00'
 b'\x97\x00\x00\x00\xa1\x00\x00\x00\xab\x00\x00\x00\xb5\x01a??\xeb\x95d'
 b'\x00\x02\x00\xbf\x8d\xde\xa5\x07g\x14\xb7\x85Uc:\xf7\xcc\xbf\xbf\xfc'
 b'\xfe\x15\xaf\xf4\x80\xf6\xab\xbbW\xa3l\xe9s)\xb2hu\xe5\x1e\x13\xa4?\xd1\x13'
 b'T\xddOK|?ALn\xbf\xe7\xc3\x95\xc4\x8a\xb0v\x00\x05\x00\x00\x00\xc1\xedg\x8c%V'
 b'D\xc0\xfc\x08\x04\\\xf3]\xae\xea]\xc7f`fCpt\x129\xeb\x8d\xe3\x91y\xaa5\xb9'
 b"(.\xe3\xb6u^\xfc\xf1z>\x17\xb5\xa99%\xd5u\xa7@\x08\xe0~\r\xd0\x9c\xb3'\x9c"
 b'\x89M\xa3\xa9\x1fd\x06V<\xa1\x8d\x03w:)W[\xab\x97ew\x04\xfd5\x1e\xb9')

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

{'A1': {'B1': [{'C1': -4761, 'C2': [2351257156, 3237742596]},
               {'C1': 23795, 'C2': [1571744349, 3345375334]},
               {'C1': 17264, 'C2': [1947351531, 2380501369]},
               {'C1': -21963, 'C2': [3106418403, 3061145340]},
               {'C1': -3718, 'C2': [1041741225, 958780789]},
               {'C1': -22720, 'C2': [148930061, 3499930407]},
               {'C1': -25463, 'C2': [1302571295, 1678136892]},
               {'C1': -24179, 'C2': [58145321, 1465625495]}],
        'B2': 353,
        'B3': 0.749688446521759},
 'A2': 100,
 'A3': 'ew',
 'A4': {'D1': -1914788601,
        'D2': 1729410949,
        'D3': 1432566519,
        'D4': 204,
        'D5': -0.12495410947299668,
        'D6': [4138449751, 2741823859, 699558005, 3843953572],
        'D7': 0.26680490124015654},
 'A5': 0.7550724744796753,
 'A6': -0.742625125761619,
 'A7': [4, 253, 53, 30, 185]}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'&VTD\xa3\x00\x80E\xf5\x93\xab_\x90\xe1\xa3\xf44\xf9\x8c\x8c%\\\x0f\xa5'
 b'~Lm\x88\xb6*\xb7\xba}\xa4\xebd\xdfv\x84;\xe7\xcb\x12\xaa\xfe\xac`\x1caj\xd5{'
 b'\x04\x95l\xc8\x14\xd0RQ\xb8|D\xf3\xf3A\x0em\xb6\xdf\x1e \x9a\x9f\xf0\xc7'
 b'w\x9a\xd5\x0e\xe8\xf7\x19\xf9\xb3Xs=\xc1d,\x90>\xd9\x19\x8cx\x8e\xd1\x96'
 b"B\x81zt\xc2J'\x86\xde\xa8\xef\rf\xb2\xb9\xfdD2\xf7\xb7\xd6\x9a\xb99"
 b'\xd0\x10\x7fO\xca\xe4\x94(#x`\xa0`\xef?\x1f\x00\x00\x00Q\x00\x00\x00\x02'
 b'\xac\xcb\xea\xc7\x93\x80^\xba\x88\xe7\x85\xf7\x85\xc3\xdc\x83'
 b'\x00\x00\x00\xb7\x04\xd3c\x02\x00\xa1\x00\xf9\xc7KZ\xb1')

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

{'A1': {'B1': {'C1': 0.9805452236333609,
               'C2': [{'D1': [32186, -5212, -8348, -31626, -6341],
                       'D2': [-22408501,
                              1629249708,
                              75224426,
                              348679317,
                              -1202629936,
                              -202161028,
                              -1234366911,
                              -1709170977],
                       'D3': 16721537325884502175},
                      {'D1': [6647, -19463, 29528, -16067, 11364],
                       'D2': [433667728,
                              -779192180,
                              2055291542,
                              659210868,
                              -274145658,
                              -1179490803,
                              -147700483,
                              -1181034825],
                       'D3': 10728922655086399545}],
               'C3': -21502,
               'C4': -8594453032554992949,
               'C5': 2247591399},
        'B2': 1674773687,
        'B3': {'E1': [195, 220], 'E2': 1514915833},
        'B4': 177},
 'A2': -2193147828003060352,
 'A3': 6639867762731971747,
 'A4': {'F1': 15, 'F2': -5248181718681354587}}

Пример 2

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

(b'&VTD\xa4\x00\x8dY\x99\x88\x93\xc9zR\x1e)Y\xe3\xd7#\t\x89>\xcd'
 b'\xd5\xe3\x92\xe0\x13w\xa1\xcd\xdc\xf4-O2\xf3\xe8\x84\xfe\x9e\xeb\x9c'
 b"\x04Y\xfe\x98\xd2\x85\x95\xd6\xbf\x1b'7\xd8\x1b\x94'\xcf\xc52v\t.\xb5\xac"
 b'\xe3X\x06\x80a\x1c\x8a\xe9\xbd\xb5n\xac\xdc\xda\x82\x8b\xcc\xee\xb8\x95'
 b'\xd7A\xfa\xec{\xb5E\x15\x85\x16\xf0n\x01\xa6c\xb3\x92\x8dG\xb4G1\xf79'
 b'\xb1\x0b\xe5\x87+Mc\xa3\xebn\x8d\xfc\x8e\xa3Rf\xd2\x02\r\x80yb\x12@'
 b"/\xb8\xbf\x1f\x00\x00\x00Q\x00\x00\x00\xd7eG>\x8e,\xa1\xf5C\xf5\xe4'R"
 b'N\x86\xf0Z\x83\x00\x00\x00\x90*\x10\\\x03\x00\xa1\x00\xd4[II;')

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

{'A1': {'B1': {'C1': -0.09447098206371685,
               'C2': [{'D1': [-9011, 11764, 12879, -5901, -380],
                       'D2': [77392798,
                              -761725351,
                              -1076456059,
                              -667474149,
                              -819489765,
                              158741189,
                              -475220690,
                              1635780184],
                       'D3': 15901206111192713756},
                      {'D1': [-32038, -13173, -18194, -10347, -1471],
                       'D2': [1169521644,
                              -266959595,
                              1671823726,
                              1200460467,
                              -147765324,
                              -452218567,
                              1666001799,
                              -1922110557],
                       'D3': 937543009361432316}],
               'C3': 26071,
               'C4': -773504638391534009,
               'C5': 1314007012},
        'B2': 1544563344,
        'B3': {'E1': [134, 240, 90], 'E2': 1229544404},
        'B4': 59},
 'A2': 5943284293757917581,
 'A3': 9874463068125735198,
 'A4': {'F1': 62, 'F2': -6811954056116578867}}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\x89MFNL\x00bxnlvigdz\x93_\x12}\xae\xe9\xb1\x9c\x96\x97W!\xf2>\x89\x0fn'
 b'\x00\x00\x00\x03\x00\x85.\xa5\x90K\x0c\xec\xba\xd9\xe7\xa5\xac\xd2\x10 '
 b'v\xf8A\xb7\xcd\x94\xa7+\x00\x88\xe7\x03}\x99\x15\xd6m_RP\x01\x17\xb4\xd0'
 b'\xc9\x8ea\xf7dd@\x88Ej\x00\x00\x00>\x00\x00\x00J?ij\x02\x00\x00\x00VP\x0f'
 b'\xf7\x91h\xa4\xd61?}\xe5\x9b\xe9\xd2#\xc570tzuuh?\xd2]\xc04r\x03\xbc\xe0Yk'
 b"4\x86\xf7'H\x15\x1b\x92\xf9 \xab\x0b\x93\xb0\x04\xda.\xd3\xb7\xe0"
 b'q\x9c\xd6\xca\xb4Q;g+')

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

{'A1': {'B1': {'C1': [{'D1': 3875765657, 'D2': 1573565375982862615},
                      {'D1': 3033581966, 'D2': 7059221322668721514}],
               'C2': 0.9117738008499146},
        'B2': 5769101851582846513,
        'B3': 0.9917847514152527,
        'B4': -5678,
        'B5': 9157,
        'B6': 14128,
        'B7': 'tzuuh',
        'B8': 0.28697209474199403},
 'A2': 'xnlvigdz',
 'A3': -1822485891,
 'A4': 174,
 'A5': -1607331421396459022,
 'A6': {'E1': 0.2676958441734314,
        'E2': [224, 89, 107],
        'E3': 3361251348915731161,
        'E4': -408572718,
        'E5': 4128,
        'E6': 8572674148383631147},
 'A7': {'F1': 3784984284936608658,
        'F2': 17951536180909573338,
        'F3': 46,
        'F4': 15255909041308093108,
        'F5': 1362847531}}

Пример 2

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

(b'\x89MFNL\x00bywsoyfbf\xf3\xf90J\x81\xdf\xc3\x9as\xfagD\x19>Oz\x80'
 b'\x00\x00\x00\x03\x00\x85h\xb9g\xf9ZmR\x96\xda\x1c\xb11\xa7L\xd7,\xa0\x98'
 b"B\x9e\x81c\x00\x88a\xaa \xca\xca\xccG\xbe!O\x88\xfb\x05\xe8'\x91um!qg\x9a"
 b'\x1a\xb9\x00\x00\x00>\x00\x00\x00J>\xc3\xfa\xac\x00\x00\x00V\xf4:(\xed\xdfh'
 b'\x95\xac\xbfV\xfa\xd5\xdf\x86\x11Ex"ttxah?\xc5\xb4\xcf\xb0\x02\x08'
 b"\xb0~\x8d\xda\xe7J2\x15FS. O\xa1'\x18\xbb\xf4\xafk\x84\xad\x955"
 b'\xfb\xff\x12\x1bv\r\xb3\x12\xa2')

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

{'A1': {'B1': {'C1': [{'D1': 1638539466, 'D2': -3833610300870915845},
                      {'D1': 99100561, 'D2': 8461456045852203705}],
               'C2': 0.3827718496322632},
        'B2': -848320577685383764,
        'B3': -0.8397648930549622,
        'B4': -8314,
        'B5': 4421,
        'B6': 30754,
        'B7': 'ttxah',
        'B8': 0.16958042234552329},
 'A2': 'ywsoyfbf',
 'A3': -201772982,
 'A4': 129,
 'A5': -2322843159880055783,
 'A6': {'E1': 0.20261573791503906,
        'E2': [126, 141, 218],
        'E3': 7546176971297608342,
        'E4': -635653839,
        'E5': -22708,
        'E6': -2941799880766619293},
 'A7': {'F1': 16666188437993500192,
        'F2': 5737910387432796011,
        'F3': -124,
        'F4': 12507962896523860854,
        'F5': 229839522}}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"0ZTN\x15x9\x1fF\x14j#:\x97\x1aY\x17\x955}pI'\x18\x07\xd7vR?\x18T\x0b"
 b'\x00y\x00}\x00\x81\x00\x85\x00\x89\x00\x8d\x00\x91\xc5K\xe6I\xa3V\xbdi\xd4\r'
 b'\x1b\xc3\xd3\xbf\xc5\xed\xaf\xb8jo`\xbf\xef\xd6p\xa0\xca\x15X?\xe1,\x90\xcc'
 b'W4\xc0?\xe6<O+\xf5\x01\xfc?\xce\xfai\xc9\xb8\x8c\xf8\x00\x03\x00\x95?'
 b'\x0f\x84W\x00\x04\x00\x00\x00\xa1\xaaUMsvS\\\xac\x15\xd2l@s2\xbc\xfd\x0b3>'
 b'\xe3\xb21\x1f\xc9UK\x9b\x87\xcdC\xdaw/w\xd4\xc89n\x14\xa8\xbb\xcbR'
 b'\xe6\x87\x8a@:Q\x13\x88\xbe\xe9\x89J\x9f')

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

{'A1': 1547049278484277795,
 'A2': 4221872145633195389,
 'A3': {'B1': 1883842328,
        'B2': {'C1': 565050373876241419,
               'C2': [{'D1': 5586, 'D2': 108, 'D3': 64},
                      {'D1': 29490, 'D2': -68, 'D3': 253},
                      {'D1': 2867, 'D2': 62, 'D3': 227},
                      {'D1': 45617, 'D2': 31, 'D3': 201},
                      {'D1': 21835, 'D2': -101, 'D3': 135},
                      {'D1': 52547, 'D2': -38, 'D3': 119},
                      {'D1': 12151, 'D2': -44, 'D3': 200}],
               'C3': -15029,
               'C4': -26,
               'C5': [18851, 22205, 27092, 3355, 50131]},
        'B3': [-0.1713161135165775,
               -0.9949267521302927,
               0.5366901389148993,
               0.6948619707619055,
               0.24201700544026727],
        'B4': [963515560, -1144302874, -2020982726],
        'B5': 0.5606130957603455,
        'B6': [20755, 35006, 59785, 19103]},
 'A4': -6172942555939644244}

Пример 2

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

(b'0ZTN\x13[\xa1\xf9U\x1f\x05\x13_\xea\xc8\xd7&$k\xd4\x98\xdf\xd6\xf5'
 b'\xad\x89i\xd5\x8fg\xc4\xee\x00y\x00}\x00\x81\x00\x85\x00\x89\x00\x8d'
 b'\x00\x91\x90`\xbe\xfe\x7f\xc2\xd6<\x0c\xd1|\xeah\xbf\xe4\xd4\xd0\xe4'
 b"J\x9c\xb2\xbf\xefI\xc0a0\xbe\x06\xbf\xe7'6cO\xe78?\xd4\x97\xa6\x91"
 b'\xa0O\x90\xbf\xdb\xabfm\x98Ot\x00\x02\x00\x95>\xd61\xdc\x00\x02\x00\x00\x00'
 b'\x9d\x04\xd4i\xd6\xafA%\x0b\x0f\xadX#\xf1[Q\xbf/\x03\xba\xdf\x1cc\xce'
 b"\x1d\xbfVk\xa6\xeazo2\xbb.`\xaf\x05\x16'IE\x891\xa9s\xd8\xcdp")

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

{'A1': 1394886601848325395,
 'A2': 6911557404536892372,
 'A3': {'B1': -1730160907,
        'B2': {'C1': 12504642206325785838,
               'C2': [{'D1': 4013, 'D2': 88, 'D3': 35},
                      {'D1': 61787, 'D2': 81, 'D3': 191},
                      {'D1': 12035, 'D2': -70, 'D3': 223},
                      {'D1': 7267, 'D2': -50, 'D3': 29},
                      {'D1': 48982, 'D2': 107, 'D3': 166},
                      {'D1': 60026, 'D2': 111, 'D3': 50},
                      {'D1': 47918, 'D2': 96, 'D3': 175}],
               'C3': -28576,
               'C4': -66,
               'C5': [65151, 49878, 15372, 53628, 60008]},
        'B3': [-0.6509785136048747,
               -0.9777528665781012,
               -0.723536676377285,
               0.32175602170286144,
               -0.43233643248208087],
        'B4': [85337929, 1166619049],
        'B5': 0.41834914684295654,
        'B6': [29656, 52592]},
 'A4': 348019441998570763}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'SGCF\xac\x00\x00\x00\x02\x00S\x00W\xf8\x19R\xcde\n>\xbb\x83\x95\x00'
 b'\x05\x00\x00\x00\x83>\xf8\xed\xd0\xfe\xda;\x00\xd5{N\x11yefnoxyq\xbf9h'
 b'\x91R\x06\xcc\xf6\x85\xdf\xf50\x95ngcvyrlb?5\x03\xcf\x9d\xd0\x072!\x91'
 b'\xb0:\x92\x00)\x00>\x99\xbe\xaf\x8a\x19\xf7F\xe1\xca`)?s0\xc1\xbf\x15'
 b'X\x13>\x8f\xac\xe0?J\x82\xc2\x14\x08\x86Va\xb365\xf2\x94\t\x81y\xf3'
 b'2\xac\x151\xae\xed\x1f;\xe5UT O\xf28\x00\xcbtX\xb0\x15\xb9y')

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

{'A1': [{'B1': 'yefnoxyq',
         'B2': -0.7242518067359924,
         'B3': {'C1': 1376177398, 'C2': 133, 'C3': [223, 245, 48, 149]}},
        {'B1': 'ngcvyrlb',
         'B2': 0.707089364528656,
         'B3': {'C1': -1647311054, 'C2': 33, 'C3': [145, 176, 58, 146]}}],
 'A2': {'D1': -7368258932655569183,
        'D2': 51808,
        'D3': 41,
        'D4': [0.9499626755714417,
               -0.5833751559257507,
               0.28061580657958984,
               0.7910577058792114],
        'D5': 1443551386136688181,
        'D6': -14,
        'D7': 2483650937,
        'D8': 4080184341},
 'A3': -2023,
 'A4': 5966536176012329877,
 'A5': [833547551, 1004885332, 542110264, 13333592, -1340753543],
 'A6': 0.4861893653869629,
 'A7': -82688768385266159}

Пример 2

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

(b'SGCF\xac\x00\x00\x00\x02\x00S\x00W\x06\xbewM\xef\xe2\xec\x95\xcaF\x00'
 b'\x03\x00\x00\x00\x83\xbe\xb2s\xf9_[\xc2|\x9e\x04-\xbcjttnvfsi\xbd\xfdB'
 b'\xba\xbb#\xa3^H=\x03o\xd8wvldorga\xbe\xcc\xbb\x1d\x91\xb2\xbc\xb9N\x83'
 b'\xeb"\xce\x00)\x00>9\xc4\x9d\xf3\xa8\xbf\x86\xbf\xfc \x17\xbe\x90'
 b'\x81P\xbf\x0c\xcb?>\xf1\xc4\x05>\xcea\xe1\xf2\xaa\xdc\xb1#B\xbe\xfd\xfd\xde'
 b'\xd2\xffK\xaa\x10d))\xda\x96v\x9b\xd5\x95\x0e\xf1\x87ck')

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

{'A1': [{'B1': 'jttnvfsi',
         'B2': -0.12366242706775665,
         'B3': {'C1': -1155292322, 'C2': 72, 'C3': [61, 3, 111, 216]}},
        {'B1': 'wvldorga',
         'B2': -0.399865061044693,
         'B3': {'C1': -1850557255, 'C2': 78, 'C3': [131, 235, 34, 206]}}],
 'A2': {'D1': 4162625625430918847,
        'D2': 64544,
        'D3': 23,
        'D4': [-0.28223657608032227,
               -0.5499762892723083,
               0.47219863533973694,
               0.4030905067920685],
        'D5': -960712917131280643,
        'D6': -3,
        'D7': 3738369867,
        'D8': 2853200937},
 'A3': 1726,
 'A4': 8596791021631031878,
 'A5': [702191222, -1680501490, -242785429],
 'A6': -0.3485410511493683,
 'A7': 6871299496966630844}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FWX\x05\x00\x00\x00\\\x00\x00\x00ATtZ\xc6\x0e\x8d\xe8\x05\x00\x00\x00a'
 b'\x00\x00\x00\xc8.\xd2\x03\xcab\x01g\x12l\xc4\xfa\xa4\xa5\xea\xbfxtu\x02\x00'
 b'\x00\x00f\x00\x17\xd8\x80\xb9n\x00\x07\x00z\x00\x03\xe3**\xe1\xb0s\xa4-O'
 b'\x17\xfaV"\x8bd3\xd7\xae\xbe\x96>\xba\xee\xf3 \x8fu\xc2\x90lehfeaehrwz\x19'
 b'G\x06\x088\xba\x87n\xf0\x87\xe4\xd1\xd3\xe6\xbf`ng\xaaE\xf2cO)\xca0\xb3\x9cn'
 b'V\x9b\xa5\x8e')

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

{'A1': [{'B1': 'lehfe', 'B2': 16757066033599370305},
        {'B1': 'aehrw', 'B2': 7422322280670310088}],
 'A2': -0.8327202699468919,
 'A3': 'xtu',
 'A4': [105322874, 2277128200],
 'A5': -1182738409,
 'A6': {'C1': -0.7133569205757462, 'C2': 28256, 'C3': -21913},
 'A7': {'D1': [62021, 20323, 51753, 45872, 28316, 39766, 36517],
        'D2': 707453699,
        'D3': -20255,
        'D4': 2474440023306249331,
        'D5': 3610469515,
        'D6': 0.29442352056503296,
        'D7': 10431028944537120442}}

Пример 2

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

(b'FWX\x02\x00\x00\x00\\\x00\x00\x00\x16>\x87A\xca\xf2D\x95\x04\x00\x00\x00^'
 b'\x00\x00\x00\xa7\x8e\x9e\xed\x18Bj\xa8\xaa\x94 \x12\x814\xef\xbfjip\x02\x00'
 b'\x00\x00b\x00\r*n\x81j\x00\x05\x00v\x00\xcet\x8e\x97E\xae`\xecd\xda'
 b"\xad\x8ea\xa7\xcb\xbb\x01t\x1dB\x11>\x95\x1d\xea'\x12\xd8\xbc\x06uyjj"
 b'el\x8a\xb8\xf2365B\x98\xf8Z\xc4`\xba\xae\xcc\xbfSR:\xf0\xe4\x97\x1eI\x04\xc4'
 b'h\xfa?r')

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

{'A1': [{'B1': 'uy', 'B2': 10755988760564284950},
        {'B1': 'jjel', 'B2': 12135584820736462503}],
 'A2': -0.9751592020080768,
 'A3': 'jip',
 'A4': [871544970, 2554475830],
 'A5': -2123486707,
 'A6': {'C1': -0.22408227658225832, 'C2': 21075, 'C3': -4038},
 'A7': {'D1': [38884, 18718, 50180, 64104, 29247],
        'D2': 2542695630,
        'D3': -20923,
        'D4': 12061078154419432544,
        'D5': 1946270667,
        'D6': 0.14185376465320587,
        'D7': 485500432339836309}}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xa0KEHU\xa9\xf8\xbcxAK\x7f\xa7*\x9dy\x98\x00\x02\x001T\x83u\xf4\xf2\xd9\x9a'
 b'\x00\x00M\xbfr\xbe\xa2\x1b#T\x00\x00v\xa0\x0e\x83\x7f\xc5T-S\x00\x00\x00'
 b'\x02\x00)\x92\xfb\xe5\x8d\xe0\xdfz\xd6\x00\x00\x00\x02\x00-T\xda_'
 b'\xc0\xcc\xe3\xda\xd5\xbf\xea\xdf9\xf7\xc9\xcdd?\xa6\x88\x871P?@;\xcd\xb4'
 b'\xf9\xa7nu\xbaw\xebE \x19 \xe0\xc3\r\x8c\xe6\xd2\x94\xd5^;\x070F<pJ\xd0'
 b'\x9e=\xb2[#S\xb2m\x00\x05\x00q\xbf\xc1\xff\xfc,S\x8b\xd8?\xe0D\x08'
 b'i\xa6\xbf\n\xf4#\xa6W\x84')

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

{'A1': 2851650680,
 'A2': 4704994591669844376,
 'A3': [{'B1': [40974, 33663], 'B2': 10591311346217745110},
        {'B1': [50516, 11603], 'B2': 6114304725784713941}],
 'A4': 6089840816041859584,
 'A5': {'C1': -0.8397493209471745,
        'C2': 0.04401037671061525,
        'C3': {'D1': 4309299402812323258,
               'D2': [119, 235, 69, 32],
               'D3': 1810694178553521874}},
 'A6': -0.004576333262055421,
 'A7': {'E1': [12358, 15472, 19152, 40509, 45659, 9043, 45677],
        'E2': [148, 213, 94, 59, 7],
        'E3': -0.1406245438039082,
        'E4': 0.5083047927382449,
        'E5': 244,
        'E6': 598103940}}

Пример 2

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

(b'\xa0KEHU\x81\xe2u\xb64 p[\xf5\xc5}\xbd\x00\x02\x003\xd6B\xc0\x92\x19-\x98'
 b'\x91\x00O?\xdb\xe9\x8ci\xb9^\x08\x00z\xa5\x1de\xb8\xa7qNo\xb0\xe3\x00'
 b'\x00\x00\x03\x00)\xbe\x99\x1e\xff\x7f+\x98\xa9\x00\x00\x00\x02\x00/\xa5'
 b'\xb0,\xa0\xb4d\xf4\xb8?\xee\xce\xdd=jz\xe8\xbf\xc0\xdbyA\x8b\x89\x08Im\xffN)'
 b'k\xbaT\x89d$gj\xe8\xd3\xbd\x01\xcb\xe5\x1e\x1a\xcb,\x07\xab\x1a\xecHh'
 b'_\xb9r\x1c\x1eB\x14\xdd\x03\xf3\xc6U\x00\x07\x00s\xbfp\xff\xc6'
 b'\x85\x16\x1e\x00\xbf\xde\xb8\xd0\xae\xe5\xe3\xb0b\x80\xfe\xdc~')

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

{'A1': 2179102134,
 'A2': 3756125629494689213,
 'A3': [{'B1': [42269, 26040, 42865], 'B2': 13734042621342095529},
        {'B1': [20079, 45283], 'B2': 11939091680892089528}],
 'A4': 15439114206299658385,
 'A5': {'C1': 0.9627519797830617,
        'C2': -0.1316978044552075,
        'C3': {'D1': 5291165848397658708,
               'D2': [137, 100, 36, 103],
               'D3': 7703639971349652766}},
 'A6': 0.4361296684705569,
 'A7': {'E1': [18536, 24505, 29212, 7746, 5341, 1011, 50773],
        'E2': [26, 203, 44, 7, 171, 26, 236],
        'E3': -0.004150176494824631,
        'E4': -0.4800302227009139,
        'E5': 98,
        'E6': 2164186238}}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xc6OPX!\x0b\xb3.e\x00\x00\x00\xa0d\xa8m\xeb}>\x04\x00\x00\x00}'
 b'\x00\xbd\xf3\x17\xeb=f\x13\xc9\xd8+\xb0\x02\xec\x10\xd9\xbf\x88$x'
 b'\xac\xae\xe4\xca?~\xb5\x13\xb3#\x9d\xea\xbf\xbd\x02H#\xcej!\x99ue\x11'
 b'\x01\x1f\xcc\xc9)9j\x9e\x1d9\x00\x00\x00>\x00\x00\x00C\x00\x00\x00H\x00\x00'
 b'\x00\xb7\x05:?X\x88\xc0\xbe\x04\x00\x00\x00M\x00\x02\x00\x00\x00]'
 b'\x00\xbc\x0bn\xaa;\xfa\xa4\xab\xb0\x90A\xc5jcrg')

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

{'A1': {'B1': 2849,
        'B2': 11955,
        'B3': {'C1': [{'D1': 591921853, 'D2': -50},
                      {'D1': 1972969834, 'D2': 101},
                      {'D1': 3424583953, 'D2': -55},
                      {'D1': 2657761577, 'D2': 29}],
               'C2': [0.7266497015953064, -0.3760402202606201],
               'C3': 188,
               'C4': 28171,
               'C5': 4724470260365409194,
               'C6': 197},
        'B4': 160,
        'B5': -22428,
        'B6': 0.247968390583992},
 'A2': 'jcrg',
 'A3': -3957707231405280323,
 'A4': [-0.39165783178822045, 0.21010383054116155, -0.8316820619199203]}

Пример 2

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

(b'\xc6OPX\xfbL\x00\xd2[\x00\x00\x00\xfc!\xcf\xd4\x15\x88\xbe\x04\x00\x00\x00s'
 b'\x00\xf7\x1c\xa1\xb8N\xd01\x81\xfex\xf7\xcc\xb3\x92\xe7?\x8c\x8c4'
 b'\xed\x89;\xea?\x9a\xc8\xe0\xcf\x12\xaa\xea?iC\x05\x82\x9d\x18o\x9cR\t9'
 b'\x00\x00\x00>\x00\x00\x00?]L\xbf\xfd\td?,\x9f>\xbf\xd9\xbe`\xbf\x02'
 b'\x00\x00\x00C\x00\x04\x00\x00\x00K\x00e`\x10\x01Lr-\xcb{LTEkolb')

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

{'A1': {'B1': 19707,
        'B2': 53760,
        'B3': {'C1': [{'D1': 2181383017, 'D2': -99},
                      {'D1': 1385983768, 'D2': 9}],
               'C2': [-0.7982978224754333,
                      0.8907774090766907,
                      -0.7446162700653076,
                      -0.8779121041297913],
               'C3': 101,
               'C4': 4192,
               'C5': 6074366109986999297,
               'C6': 69},
        'B4': 252,
        'B5': -12511,
        'B6': -0.26579153537750244},
 'A2': 'kolb',
 'A3': -9137293132434432777,
 'A4': [0.7366580012565291, 0.8197679169574186, 0.8332609233969095]}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'NSJ\xb0jfmq\x00\x00\x00V\x00\x8c\xe5k)\x99\xc5+\x08\xc1\xfa\x89q`\x04+'
 b']\xce\x076\xc2?\x8de<\x14\x9c\xbe~\xe7\x04\xf8\xfc\x0cm\xa0#>\x00\x00'
 b'\x00\x02\x00\x1e\xc3\xc8F\xbe`\xbc5e4\xd8\xb2\x17\xce\x89\xbf\xacG\x1c`+'
 b'\x0c\xab\x00\x00\x00\x02\x00:\xa9l\xbf\xe0\xf1\xe3KK+|?\xd0M<\xeaX X\xf6\xaa'
 b'\x00.\x00J>\xbd4\xae\x03E\xb4]\xe1,\x9b\xec\x06\xc8\xe6e\xe3\x0cc\xb7'
 b"CY\xe4\xcd\xac\x1d\x8eZ\x86\xe8\x865 o\xff\xb3\x19_\x9bP\xc1\x86\x97'"
 b'\x15\xa7\xb8o\xdd')

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

{'A1': 176,
 'A2': 'jfmq',
 'A3': {'B1': -0.529527327592731,
        'B2': 0.2547142303960803,
        'B3': 63146,
        'B4': [{'C1': 1839211326,
                'C2': [519816385218821140, 11294604446177754124],
                'C3': -15416},
               {'C1': 1613434027,
                'C2': [5097618189695923416, 12832952754237097756],
                'C3': -22164}],
        'B5': [1052587182,
               54899805,
               3777797100,
               113829477,
               3809239991,
               1129964749],
        'B6': -6044518605399751115},
 'A4': {'D1': 544210867, 'D2': 1828350744882222887, 'D3': 363313263, 'D4': 221},
 'A5': [-445961831, -987035455],
 'A6': {'E1': -1399, 'E2': 1902117931, 'E3': 24014}}

Пример 2

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

(b"NSJntifa\x00\x00\x00V\x00\x8cK{\xf1'\xa3\xe2\xf9\x1b?d\xb1j\xec\xa8"
 b'\xfb!\xe7\xf2\xa4#\xae\x8a7x\xee\xe6\xc2\xee\xe7&,\x89:\xf6\x8f:\x00\x00'
 b'\x00\x02\x00\x1el6p\xd2\x9f\x8aQ\xa7;\x88\xddE[i\x13\x0f2\x81\x7f\x0e'
 b'0\x1a\x00\x00\x00\x02\x00:k6\xbf\xb7\xc1\xc8\x87\xf7\xa50?\xe6\xb4>5;'
 b'\xb1\x86\xd5\x16\x00.\x00J\xc9f\x8c\xa2\xd8*?\xef\xb0b\xde\xa5\x17!e\xf7'
 b'\x88\x08&\x0c\x18\xfeZ\x90O\x8e\xab\x86\x05w\x0c\xe4\x98\x99i\x84'
 b'\xde\x1f\xa3\xfb\x9e\xa9;rbr\x05\xed\t')

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

{'A1': 110,
 'A2': 'tifa',
 'A3': {'B1': -0.09280064887538653,
        'B2': 0.7095023193083285,
        'B3': 54550,
        'B4': [{'C1': 989237050,
                'C2': [16713601640284436344, 17214660957006343305],
                'C3': 27702},
               {'C1': 2131636250,
                'C2': [8129735693781384072, 15944250562624565889],
                'C3': 27446}],
        'B5': [3378941090,
               3626647535,
               2959269541,
               388064759,
               2282235404,
               419322512],
        'B6': 5732707967794875620},
 'A4': {'D1': -1734776444,
        'D2': 16005691901792041842,
        'D3': 1651639789,
        'D4': 9},
 'A5': [1266413863, -1545406181],
 'A6': {'E1': 16228, 'E2': -1318392664, 'E3': -1247}}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'MSYU\x00\x00\x00\x02\x00\x00\x00Znmif\x00b.>\xbe&\x18\x00\x00\x00zT\xd7ibd'
 b'eo\xea\xb5\xc5\xcf\xaa\xa3V$\xf1]\x00\x05\x00\x00\x00\x1d\x82IT\r\xff\xc5'
 b'\x0e\xc7\x1fowaskh\xb6\xea\x98\x0c\x0e\xd3:\x8d\xf05\x00\x06\x00\x00\x00'
 b';\xc3\x8d\xec\xf3n\x8fh-.\x00"\x00A(\xb1B\x86?Ty`\x9f^\xc8/\x00\x00'
 b"\x00\x02\x00\x00\x00^?\xe3w\x0b\x90\x1f\xb7|j\xf3&\xd7\x14\xec\x15'}\xce"
 b'\xc5Q+\xc7\x89\xfb`\xb1\x83\x94\x95=\xd0\x93\xe3&r ')

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

{'A1': [{'B1': -357186097,
         'B2': -21853,
         'B3': 22052,
         'B4': 61789,
         'B5': 'ibdeo',
         'B6': -126,
         'B7': 5283863654986336031},
        {'B1': -1226139636,
         'B2': 3795,
         'B3': 14989,
         'B4': 61493,
         'B5': 'owaskh',
         'B6': -61,
         'B7': 10226816510029475118}],
 'A2': 'nmif',
 'A3': {'C1': 0.8299770355224609,
        'C2': 2673788975,
        'C3': [10417, 17030],
        'C4': 0.6082818808479113},
 'A4': 46,
 'A5': 0.3713843822479248,
 'A6': {'D1': 7706546092571890983,
        'D2': [2110702929, 734497275, 1622246292],
        'D3': 10753980818820330016},
 'A7': 84,
 'A8': 215}

Пример 2

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

(b'MSYU\x00\x00\x00\x02\x00\x00\x00Wiwjv\x00k)\xbfO\x08\x1b\x00\x00\x00\x83e'
 b'Gapu\xabs\xe7\xf0YO\xd6\n\x03\x86\x00\x03\x00\x00\x00\x1d\xf6\xe8N\x9f'
 b'\x8f\x19\x12\xd22ttlmq_p\xd3zsj\xf23\xe5>\x00\x05\x00\x00\x009D\xc4'
 b'\xac\xfeol\x11\r\x8a\x00 \x00>\xa2O\xf3\xce*+\xc8\x0e\xc4\xd0\xe1\x16\x9a'
 b'kk\x13\xbf\x03\x9a\x0f\x8dS\xb2\x8b\x00\x00\x00\x08\x00\x00\x00[?'
 b"\xe5\xa9\xa9.t\x95:b\x9cD\x002\xc9D\xe8\xec_\xcfM\xf4\x83\x9e\xb9\xc7|\xd7m'"
 b'S~}\xbd\x9a\xcc\xb4')

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

{'A1': [{'B1': -1418467344,
         'B2': 22863,
         'B3': 54794,
         'B4': 902,
         'B5': 'apu',
         'B6': -10,
         'B7': 16739492301932515890},
        {'B1': 1601229690,
         'B2': 29546,
         'B3': 62003,
         'B4': 58686,
         'B5': 'ttlmq',
         'B6': 68,
         'B7': 14171981881935990154}],
 'A2': 'iwjv',
 'A3': {'C1': -0.5140694975852966,
        'C2': 2371072651,
        'C3': [41551, 62414, 10795, 51214, 50384, 57622, 39531, 27411],
        'C4': 0.6769605548221655},
 'A4': 41,
 'A5': -0.8087174296379089,
 'A6': {'D1': 7105629079726540008,
        'D2': [3965701965, 4102266553, 3346847597],
        'D3': 2833747669063224500},
 'A7': 101,
 'A8': 71}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'AEGE=\x00]\x00\xb2\x88\x08 \xb1kgzf\x02\x00\x00\x00m\x00(\xf2N\xaf\xa1'
 b'vD\xe5\x97\xfbV\xb0\x8eO\x10\xfac\x8d\x02\x00u\x00:\x809\xbf\x10E~'
 b'\x7f\xbe\xa5\xe2\xbf7\xdb\xa2\xbe-\x00\x00\x00\x17\xde\xfa\x14\x1d\\"6j\x18J'
 b'\xcb\x10\xae8\xbf\xe0\xedZ\xae\x0c*\xe4?;_\x13\xbeM\x00\x00\x00L{Z'
 b'\x07O\xcf\xba$\xc2\x82\x9bY\xcaX0\xd5\x12\xc8\xd3\x1d\x98\xbceZ\xd1;\xa3'
 b'o(\xc0\xdf\x9d\xd5s\x8e\xa7')

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

{'A1': {'B1': [{'C1': {'D1': -0.724612832069397,
                       'D2': -0.5827324380972261,
                       'D3': -0.3180787265300751},
                'C2': 3900781507232062999,
                'C3': [106, 24, 74, 203]},
               {'C1': {'D1': -0.7214059829711914,
                       'D2': 0.6301329999327514,
                       'D3': -0.1439179629087448},
                'C2': 2646655669366324044,
                'C3': [194, 130, 155, 89]}],
        'B2': 537430194,
        'B3': -79},
 'A2': 'kgzf',
 'A3': {'E1': [-718251830, 500418578], 'E2': -1926284303804730840, 'E3': -105},
 'A4': 7204088487814911739,
 'A5': 141,
 'A6': [8044339129764658328, -6373029061368758232]}

Пример 2

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

(b'AEGE=\x00]\x00\xadh\xc0.\x9ayrly\x03\x00\x00\x00m\x00\x07D\x84\x83\xf0'
 b'd\x012Q\x173bi-\xba\x9c,.\x02\x00y\x00\x10qP?\x08\xab!-gJ\xcd?&\xf4<'
 b'\xbe-\x00\x00\x00\xfeG9\xf4\xb9\xaa\x9cz\xf2\x0f\x8c\xa6MN=?\xd0hr'
 b'v\x8d\x9e\xe0?\x06\xfeQ\xbfM\x00\x00\x00mqo\x05\xf5\x98\x16\xc1\x81^X'
 b'\x93V\xa9\xee\x8b\xc8p\x7f\x9f\xe8\x04\ts)P"&\x8bHp{\xe1,\xc6\'\xc1\xd6\xf4'
 b'\xbb')

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

{'A1': {'B1': [{'C1': {'D1': 0.8142251968383789,
                       'D2': 0.22883310035407356,
                       'D3': -0.18452510237693787},
                'C2': 8835124284637136894,
                'C3': [242, 15, 140, 166]},
               {'C1': {'D1': 0.7394760251045227,
                       'D2': 0.5193545640388724,
                       'D3': -0.8202823400497437},
                'C2': 13913476276933325165,
                'C3': [129, 94, 88, 147]}],
        'B2': 784361645,
        'B3': -102},
 'A2': 'yrly',
 'A3': {'E1': [-1947293354, -1619038008, 1929970920],
        'E2': 3603272161034519559,
        'E3': 81},
 'A4': 3214648938240029463,
 'A5': 46,
 'A6': [8894689026534166569, -4903057969215296287]}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YIYU\x00\x00\x00\x02\x00<\xe7\xe8!\xb3\xff\xf9\x00\x02\x00\x00\x00@>\x86'
 b'\x8a\xc9\rg\xad\xa9>e\xfe\x0eT\x91i\xe3@\x84\xd6;\x00B\xbf\xd5\xbb\x00'
 b"\xfe\xe7\x84\x00`\xb1'MC\xd2S\x9c_&k\xf5bs-t\xa6\x89")

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

{'A1': [{'B1': 95, 'B2': 38}, {'B1': 107, 'B2': -11}],
 'A2': {'C1': -6168,
        'C2': 565444601,
        'C3': 'bs',
        'C4': 0.2627775967121124,
        'C5': 224898473,
        'C6': 15973,
        'C7': [65038, 21649, 27107, 16516, 54843],
        'C8': {'D1': 11636, 'D2': -22903}},
 'A3': -0.3395388116169329,
 'A4': [1622222669, 1137857436]}

Пример 2

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

(b'YIYU\x00\x00\x00\x03\x00<$v\xbaQ\xc3U\x00\x02\x00\x00\x00B\xbfH\xdfg{@'
 b'\xa8\xfb6?\xec\xa0\x84(&J\xbeX\x14G\x00D?\xe9O&\x8b\x10\xd4\xc6[\x14\x97\x9a'
 b'\x92\x03\x1a\xec\xbe\xf3R\xa6\xfd\x8ene*\x9f\x17c')

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

{'A1': [{'B1': -66, 'B2': -13}, {'B1': 82, 'B2': -90}, {'B1': -3, 'B2': -114}],
 'A2': {'C1': 9334,
        'C2': 3125920597,
        'C3': 'ne',
        'C4': -0.7846588492393494,
        'C5': 2067835131,
        'C6': 13887,
        'C7': [60576, 33832, 9802, 48728, 5191],
        'C8': {'D1': 10911, 'D2': 5987}},
 'A3': 0.7909119335296502,
 'A4': [1528076186, -1845290260]}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'PVD\xcf\xfa\xfbW\xc0\x13I\xf7\xaf\xd6\xe7?O\x00\x00\x00U\x00\x00\x00['
 b'\x00\x00\x00a\x00\x00\x00g\x00\x00\x00m\x00\x00\x00s\x00\x00\x00\x07'
 b'\x0e\x8c\x8bj\xbf^\x1f\x16\xbf\x8dYM\xbf\xa8\xc9e\xf8>\xb1\xb8,c\xcd\x15'
 b'F\x9f\x03\x00y\x00\x00\x00\xe4\xe9\xe4\xef\x1f\xb3\xceK\xbf(\xd8I'
 b'\xa5\x9d>\xa8\xad\xdc\x81\x8b=4\x03\xa9\x04^>\xdfT\x87\x15\x1b\xbf\xe4GU'
 b'J*?\x9a\xacO\x08\x93\xbeO\xc5*')

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

{'A1': 1476131535,
 'A2': 0.7449569539827436,
 'A3': {'B1': [{'C1': [-17, 31], 'C2': -0.7961227297782898},
               {'C1': [40, -40], 'C2': 0.30790165066719055},
               {'C1': [-88, -83], 'C2': 0.06811878085136414},
               {'C1': [52, 3], 'C2': 0.21681465208530426},
               {'C1': [-33, 84], 'C2': -0.6057972311973572},
               {'C1': [-28, 71], 'C2': 0.6651967167854309},
               {'C1': [-102, -84], 'C2': -0.28717276453971863}],
        'B2': 3591,
        'B3': [-0.916191816329956, -0.5864161252975464, -0.8021476864814758]},
 'A4': 3222520417397098920,
 'A5': {'D1': 99, 'D2': 2672170445, 'D3': [79, 197, 42], 'D4': -28, 'D5': -23},
 'A6': -28}

Пример 2

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

(b'PVDq\x152\x8a`]|\xdamb\xd4\xbfO\x00\x00\x00U\x00\x00\x00[\x00\x00\x00a'
 b'\x00\x00\x00g\x00\x00\x00m\x00\x00\x00s\x00\x00\x00\rxo\xf4X\xbfb\x08\xc1'
 b'>&\xb1;?A\xe0Mk-\xaa~\x9fNQ\x1e\xe5c\x02\x00y\x00\x00\x00y\xdb!V'
 b'\x05s\xfe\xf8\xbdF-\x9b\xdc\x0c?\n(\x98\x08Z>\xc00\x13\xb0\xc7\xbeoqiq\xb6'
 b'>#3\xef)X\xbeg\xd8\xe81\x1d\xbf\xc8!')

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

{'A1': 2318538097,
 'A2': -0.31850763641837965,
 'A3': {'B1': [{'C1': [86, 5], 'C2': -0.12157907336950302},
               {'C1': [70, 45], 'C2': 0.5502411723136902},
               {'C1': [10, 40], 'C2': 0.21292340755462646},
               {'C1': [-64, 48], 'C2': -0.39001521468162537},
               {'C1': [111, 113], 'C2': 0.35633400082588196},
               {'C1': [35, 51], 'C2': -0.21109746396541595},
               {'C1': [103, -40], 'C2': -0.6140427589416504}],
        'B2': 30733,
        'B3': [-0.8474797606468201, 0.377017080783844, 0.733171820640564]},
 'A4': -6953933662562951103,
 'A5': {'D1': 78, 'D2': 1675959889, 'D3': [200, 33], 'D4': 121, 'D5': -37},
 'A6': 33}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'DLKW\xa0\xa8\xbd;\xd9\x8b\xa7\x0c\x1dY\xd4$\x00\x00\x00fie\xc6\x04$\xb3~\xa8'
 b'\xf6\xa7\xf6\xe1\xa1\x86g\xbc\xa6p\xcb\x11e\x04\x02\x00\x00\x00\x13\x00'
 b'\x00\x00\x15\x00\x19\x00\x1d\x00\x03\x00\x00\x00!\x00\x00\x00\xd1\x14M? f\rc'
 b'\xb6\x14ZZ\xf9')

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

{'A1': -0.08233707398176193,
 'A2': 15301293149155744059,
 'A3': {'B1': 28838,
        'B2': 73732555,
        'B3': 'fi',
        'B4': [{'C1': -14747, 'C2': 9220},
               {'C1': 32435, 'C2': -2392},
               {'C1': -2393, 'C2': -24095}],
        'B5': {'D1': [134, 103, 188],
               'D2': 209,
               'D3': 541019412,
               'D4': -1235022490},
        'B6': [23060, -1702]}}

Пример 2

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

(b'DLK\xf6K\x11>Q\x02\xd0\x16R\xfa\xd4\xef%\x00\x00\x00jp\x81|G\xb1\\r\xb0'
 b'\xf8T+\xe2O\xf7\x13SX\x8en\x81\xb0\xf5\xda\x02\x00\x00\x00\x13'
 b'\x00\x00\x00\x15\x00\x19\x00\x1d\x00\x04\x00\x00\x00!\x00\x00\x00\x0ck\x0f'
 b']\xbb9\xa7\xee93!{\xa4')

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

{'A1': 0.14189133048057556,
 'A2': 17281712900604428881,
 'A3': {'B1': 28302,
        'B2': -621432703,
        'B3': 'jp',
        'B4': [{'C1': 31873, 'C2': -20153},
               {'C1': 29276, 'C2': -1872},
               {'C1': 11092, 'C2': 20450}],
        'B5': {'D1': [247, 19, 83, 88],
               'D2': 12,
               'D3': -1151529109,
               'D4': 971941689},
        'B6': [8499, -23429]}}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'SVRH\xee\x00\x07\x00;4\xba\xe9\xa4\xa0\xbc\xbd\xdd\xa8\xbf\x9fi&\x8b\x00'
 b'\x00\x00\x04\x00B5@C\x9e\x00\x02\x00JRvidu\xeb\xf2\tI\x13\x00'
 b"\x00\x00\x02\x00\x00\x00R\xe3.\xaabywrwwlz\x8d/TT'\xd5\xb1\xb3\x03\x00"
 b'\xe9Q\xc8\x156\xad\xda\xb0A\xc9\x96)OoE\x18S\xb0:\xe7\x9a\x8d')

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

{'A1': {'B1': 'ywrwwlz',
        'B2': 13498,
        'B3': [{'C1': -375086916, 'C2': -16931},
               {'C1': -1463836823, 'C2': 9867}],
        'B4': [36143, 21588, 10197, 45491],
        'B5': 893404062},
 'A2': {'D1': [50391377, 3356833453], 'D2': 21110, 'D3': 7594324527891958035},
 'A3': [15758167430232887151, 4978821404425689741],
 'A4': -483480990}

Пример 2

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

(b'SVRH\xee\x00\x05\x00;6)\xac\x13\x93\xff\x9c\x01\xbf\xc1\xeb^\xa8\xe6\x00'
 b'\x00\x00\x05\x00@6\xc8\x880\x00\x02\x00J,\xee\xfe}kj\x0e\xd5\xc9\xf9\x00'
 b'\x00\x00\x03\x00\x00\x00Rd!Q\x10eceqn)%\xee\xe0\xe47\x84\xcc\xe2\xe3\xc1\xaf'
 b'\xf9\xce\x06\xd6[%\xab\xfbCZl5wC\xde\x0e#\xca\xb7\xd8\xd0\x88%L'
 b'\x06\xbd\x1e\xab\xddC')

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

{'A1': {'B1': 'eceqn',
        'B2': 13865,
        'B3': [{'C1': -1408003073, 'C2': -25599},
               {'C1': -1077810338, 'C2': -22298}],
        'B4': [10533, 61152, 58423, 33996, 58083],
        'B5': 919111728},
 'A2': {'D1': [3249535438, 114711333], 'D2': 11502, 'D3': -108812712727426567},
 'A3': [12392572855281612611, 16000765879668756616, 2687530486966508867],
 'A4': 1679905040}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xefHLQP\x02\x008\x00\x00\x00h\x14\xf0DI]\xec\xbf^\x00\xad\xc2s\x9f\x8bm>'
 b'\x04b\xc6>\xed*\x94>x1N\xbf\x0b\xda]\xbe\x8f\xe8f\xbf9\xe2{>\x86*\x0c\xbf'
 b'\x8bE\xb0g\xb7\xf2\xd3\xf5\xb7?yjzoK\x1c.x\xe1\x94\xa9\xd4\xe5?arzi'
 b'\xc0\xc9\x11);\xf8{\x8d6\xe2\xff\x02\x00\x00\x00T\x00\xd0\x1b\\\x00Vi\x8a'
 b'\xff')

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

{'A1': [{'B1': 17803, 'B2': 0.09359478641218177, 'B3': 'yjzo'},
        {'B1': 7243, 'B2': 0.6822097690417246, 'B3': 'arzi'}],
 'A2': -0.8863874765817288,
 'A3': {'C1': -1,
        'C2': [689031616, -1921255365],
        'C3': 208,
        'C4': 27,
        'C5': {'D1': 54, 'D2': -30},
        'C6': -7706282},
 'A4': -15699,
 'A5': 115,
 'A6': [0.2319779247045517,
        0.38746654987335205,
        0.2893899977207184,
        -0.8054423332214355,
        -0.21665208041667938,
        -0.9019860625267029,
        0.2459801584482193,
        -0.5475238561630249]}

Пример 2

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

(b'\xefHLQP\x02\x008\x00\x00\x00d3%\xd16\x1c\xe3?^\x004\xb9\xca\r\x92\xab\xbd'
 b'K\xce\x15\xbf\x19\xc2N\xbf\x13\xe9n\xbf{\xa7}\xbf\xb4\xc4\x1b>\xc4s9>'
 b'i\x1a\xdd>\x0b\xf9\xec\xa39\xf2\x8e\xc1\xe4\xbffrfn\xbf(\x08/\xbb\xa2<{\xd4?'
 b'rwbq1.H(\x9a(\xa0\xa0\xf1m\\\x02\x00\x00\x00T\x00\xf43\\\x00\xad6(i')

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

{'A1': [{'B1': -1781, 'B2': -0.6486277323684795, 'B3': 'frfn'},
        {'B1': 10431, 'B2': 0.3200217808887236, 'B3': 'rwbq'}],
 'A2': 0.5971941075200502,
 'A3': {'C1': 92,
        'C2': [675819057, -1600116582],
        'C3': 244,
        'C4': 51,
        'C5': {'D1': 241, 'D2': 109},
        'C6': 1764243117},
 'A4': -18124,
 'A5': 202,
 'A6': [-0.08377466350793839,
        -0.5851790308952332,
        -0.8076491951942444,
        -0.9332439303398132,
        -0.9908367991447449,
        0.1521175503730774,
        0.18110567331314087,
        0.4318421185016632]}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BFDH\xd4n7G\xba#\x8fA\x02\x00\x00\x00:\x00Ip\x96><_\x98\xcf\x03\x00'
 b'\xa0\x00\xb7\t\x1c\x88\xf0\x93??\xe8\xf1\xd8\xcf\x9d\xee>7\xdd\xcb'
 b'\xa4\xc8\xf3\xbb\xa0w\xf2\xf9t\xcb\xa6$\xfd[\x89uv\xd2\xbf= ;\x81f'
 b'\xa78\xa0\xbf\x87\xa0\xd8\xb02J\x9a\xc3?\xeb4\x9b\xbc%*\xb2\xd7?\xbe\x04'
 b'\x00\x00\x00&\x00\x92\xaa\xb2\x96]\xbfz\x9e\xa30~\xd8\x89\xa1\xf0'
 b'\xb5\xbf\xd6\xd0\x84"\xa3\x06\xea\xd8?,TJ\x13\x97F3\xe2\xbf\xb4\xa4I\xb5'
 b'\xdf\x18X\xd7\xbf\xbb\x06\x00\x00\x00.\x00\x8b$i\x13\xf1\x16\xad\x17'
 b'\xf9aY\x85\xe1}')

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

{'A1': 4724033817100644052,
 'A2': [{'B1': [{'C1': 166,
                 'C2': -0.288480171337101,
                 'C3': 61,
                 'C4': -0.03168223501471901},
                {'C1': 135,
                 'C2': 0.15314605212342247,
                 'C3': -21,
                 'C4': 0.3702493065379031}],
         'B2': 190,
         'B3': [61928, 53208, 61085, 14142],
         'B4': 11419650213832469138},
        {'B1': [{'C1': 163,
                 'C2': -0.08570298781750618,
                 'C3': -42,
                 'C4': 0.38928380900513293},
                {'C1': 44,
                 'C2': -0.5687592459383475,
                 'C3': -76,
                 'C4': -0.36475202414035324}],
         'B2': 187,
         'B3': [52189, 51364, 48115, 30624, 63986, 52084],
         'B4': 1706045058511873163}],
 'A3': 0.2938254177570343,
 'A4': {'D1': -812097732,
        'D2': [25081, -31399, 32225],
        'D3': 2283538871,
        'D4': 0.7483510971069336}}

Пример 2

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

(b'BFDH\xbc\xb5\xda\xa9R&g\xd4\x02\x00\x00\x002\x00\xd2\x15u>W]\r\x1f\x05\x00'
 b'\x98\x00zc\xab/\r\x03x\xbf\x9fS\x9c\x182\x19\x87\xed]D\x92\xb5\x13\x1c'
 b'\xca\xa6\xf8\xcd\xba\xea\xbfHh\xd0\xbc\xde\xa4w\xc8?\x93\xd6\xb9l'
 b'\xef\xb4\xae\xea?\xc8&\x8dE&\x1c\x1c\xed?\xa1\x02\x00\x00\x00&\x00\x04Y\x14'
 b'\x88\x8a\x0ft;\x1a|\xa5|\n\xb4A\xd3\xbfY\x82\x87_\x86\xd78\xe8\xbf\xa8'
 b'`\xb67\x14P\x0f\xdc\xbfa\x0eL\xef\xba0\xf6\xe6\xbf\x18\x04\x00\x00\x00*\x00'
 b'T\xd5\x94\xf8\x1f\xf7Nq\xdb\xc1\xfa\xb3\x00\x81\x8b\xee\x1f{')

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

{'A1': 15305243995120776636,
 'A2': [{'B1': [{'C1': 19,
                 'C2': -0.8353032928919819,
                 'C3': 72,
                 'C4': 0.19115124584061793},
                {'C1': 147,
                 'C2': 0.8338265110267524,
                 'C3': -56,
                 'C4': 0.9096813914769981}],
         'B2': 161,
         'B3': [21407, 6300],
         'B4': 4284066233199122692},
        {'B1': [{'C1': 26,
                 'C2': -0.3008852102671751,
                 'C3': 89,
                 'C4': -0.756938707778531},
                {'C1': 168,
                 'C2': -0.43843461965921016,
                 'C3': 97,
                 'C4': -0.717552533251707}],
         'B2': 24,
         'B3': [6450, 60807, 17501, 46482],
         'B4': 8164734891155838292}],
 'A3': 0.23934105038642883,
 'A4': {'D1': 520969559,
        'D2': [-15909, -19462, -32512, -4469, 31519],
        'D3': 799761274,
        'D4': -0.9687965512275696}}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'.CLZY;\x80\xcb\xb7\x00Q9\xfc\xe9\xdf\x02\xbfm\xd1\x0b3\xb6[\x00'
 b'\x00\x00\x02\x00\x15\xe0Z\xd2\x19\xcd\xc1\xddn\xf6\xf8\xbf\xd9\xc1\\\xfb'
 b"\xea\xea\xd0\x00\x17\xbe\xa03J\xbfM\x19\x98\xbe\xba\x90'\xbf?\x97\xa9?n\xf3"
 b'\x85\xbfnI)\xbf=\x13V?\x05\xce\xac\x00\x0b\x94\xf31pFB\x894e\x9d\xf0Y\xab'
 b'\xb8\xfe\x11\x17;\xa0l"\x10\t3q\xa1.\x97\x0e\xe5k\xdb\xa9k1B\x86t\x16\x08)'
 b"\xb26+F\x00\x00\x00'\xb3\xca\xd6\x80c")

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

{'A1': 998296503,
 'A2': {'B1': {'C1': 4178471698326056401, 'C2': 2867},
        'B2': [{'D1': 148, 'D2': -922833001567931291},
               {'D1': 157, 'D2': -1127681420654733509},
               {'D1': 160, 'D2': 7791807937008214318},
               {'D1': 151, 'D2': 1073382677382115650},
               {'D1': 134, 'D2': 8364882333063850822}],
        'B3': {'E1': -0.4024269542821175,
               'E2': {'F1': [-74, 91],
                      'F2': 3764048409,
                      'F3': [52673, 56686, 63224]},
               'E3': [-0.31289130449295044,
                      -0.8011717796325684,
                      -0.3643810451030731,
                      -0.7484079003334045,
                      0.9334033131599426,
                      -0.9308038353919983,
                      -0.7385762929916382,
                      0.5226848125457764]},
        'B4': 46026,
        'B5': 214,
        'B6': 32867}}

Пример 2

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

(b'.CLZYl(\x00\xd1\x00R\x87s\xe6\xb7\x07\xc7Zm<\xd8y\xa6\x02\x00\x00\x00\x03'
 b'\x00\x15\xd94\x15\xc38\n\x99\\s\xd0\xbf\xbe.\x90\xb7\xf2\xdc\xa0'
 b'\x00\x18\xbe\xa0eY?]M\x89>\xb8\xbd\xb2>\xd7\xf8/\xbf*{\x8f?$8\xa6\xbf\x07'
 b'\x00\xe9>\x8cj\x81\x00\x0bFp}\xca\xe0QT\x86\xe3\xc9\x19"\xecl6\x93\xaeFY:'
 b'\x80Lu;#)\r\xf7\x1d\x19\xba\xcb\xa1\x99"T\xcd\xb7\xed\xa7\xb1we>'
 b'\x8b\x00\x00\x00(\x83\xd4\xac\x01\xf6')

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

{'A1': 1814560977,
 'A2': {'B1': {'C1': -8686345582483645843, 'C2': 15576},
        'B2': [{'D1': 70, 'D2': 8105857969122739939},
               {'D1': 201, 'D2': 1811269949672631878},
               {'D1': 89, 'D2': 4215453317605828877},
               {'D1': 247, 'D2': 2096912485269971540},
               {'D1': 205, 'D2': -5193310414634140021}],
        'B3': {'E1': -0.11789803019461198,
               'E2': {'F1': [121, -90, 2],
                      'F2': 3644069315,
                      'F3': [14346, 39260, 29648]},
               'E3': [-0.31327322125434875,
                      0.8644643425941467,
                      0.36082226037979126,
                      0.4218153655529022,
                      -0.6659478545188904,
                      0.6414893865585327,
                      -0.5273576378822327,
                      0.2742500603199005]},
        'B4': 33748,
        'B5': 172,
        'B6': 502}}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x03MNX\xa2\xaa\x00\x00\x00\x03\x00\x00\x00_?F\xae6\xcc{I\xbe\x01\xce'
 b'\x14\x90\xd0m\xa6\xbf\xd9(\xef\xd4\xbfDH\x00\x00\x00\x04\x00\x86\xf7>\xfb G'
 b'W\x8f\x0e\xd2\xbf\xaf\xec-\x1d\x065\xc0\x00\x00\x00\x04\x00\x96p\xbd'
 b'\x99\xac\xaf\xaa\xa3\x00\xfb\xbf\xe5\x98\xb3\xd9/\xa5\x92\x00'
 b'\x00\x00\x03\x00\xa6\x8b\x87~\x1f8\xe8\xf4\x01?\x1e\x19\x05\x00\x02\x00'
 b'\x00\x00YRL\xa9>3\xb8\xd4\x00\x02\x00\x00\x00[\x1d\xcd\xc5\xbf'
 b'\x15\xee\x84\x00\x02\x00\x00\x00]!\xf6\x11\xc6\x05_\rb-\x0c\x85\xc9b\xcb\x8a'
 b'\x88g\x9a\xeb\x83\xd4D\xc5"s\x87\x19|\x1fN(\xd1EO\x90\xac\x13\x01\xe4'
 b'\x08\xdb+\xcc\xdf\xe6')

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

{'A1': 41642,
 'A2': [{'B1': {'C1': 62465, 'C2': 0.6175692677497864, 'C3': [139, 135]},
         'B2': 82},
        {'B1': {'C1': 19625, 'C2': 0.1755097508430481, 'C3': [126, 31]},
         'B2': 29},
        {'B1': {'C1': 52677, 'C2': -0.5856707096099854, 'C3': [56, 232]},
         'B2': 33}],
 'A3': 0.7760957479476929,
 'A4': -52,
 'A5': 123,
 'A6': [{'D1': 73,
         'D2': -0.12676268815994263,
         'D3': 2429578662,
         'D4': -0.3931235864266154,
         'D5': [4128359941, 1594712621, 210094434, 3414853735]},
        {'D1': 247,
         'D2': 0.4904806315898895,
         'D3': 1468993234,
         'D4': -0.06234875659275074,
         'D5': [2599125972, 1153770099, 2266594335, 1311297861]},
        {'D1': 112,
         'D2': -0.07503639906644821,
         'D3': 2862809339,
         'D4': -0.6748904458919915,
         'D5': [1334881299, 31721691, 734846950]}]}

Пример 2

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

(b'\x03MNX\x11u\x00\x00\x00\x02\x00\x00\x00]?Dk,\x93r0\xbfJ\xb8\xd5&1\xe0'
 b'\xc9?\xe23/\xaf%w\x10\x00\x00\x00\x06\x00wn\xbe\xa89\x1dZ\x11\x14\xc9'
 b'\xbf\xeb\x81\xef\xf7\x8e\x7f`\x00\x00\x00\x02\x00\x8f\x87>\xfc\xe1G\xff'
 b'\xba\xd7\xb4\xbf\xea\xe8,\xe0}\x9d\x02\x00\x00\x00\x03\x00\x97\xe9\xef\x83'
 b'"\x1dA\xbfd\xedy\x00\x02\x00\x00\x00Y\r;:\xbe\x9f\x93o\x00\x02\x00\x00'
 b"\x00[\xea\xec0W\xa7(\x05\x06\xb6&\xd6r\xa5'\xe94PN\x1d\xdax\x1a"
 b'\x80\x05"\xd6\xbf\x14\xccV\x18\x97y\x97\xd6\xe2\xf7\xed\xb4(\x05ed\xa7\xee')

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

{'A1': 4469,
 'A2': [{'B1': {'C1': 7489, 'C2': -0.8942485451698303, 'C3': [233, 239]},
         'B2': 13},
        {'B1': {'C1': 15162, 'C2': -0.3116717040538788, 'C3': [131, 34]},
         'B2': 234}],
 'A3': 0.7672603130340576,
 'A4': -109,
 'A5': 114,
 'A6': [{'D1': 48,
         'D2': -0.7918828129768372,
         'D3': 640803017,
         'D4': 0.568748323519431,
         'D5': [3962591143,
                671418038,
                651588261,
                669594704,
                1310579320,
                444597538]},
        {'D1': 110,
         'D2': -0.3285607397556305,
         'D3': 1511068873,
         'D4': -0.8596114955034686,
         'D5': [3602846924, 1444452217]},
        {'D1': 135,
         'D2': 0.4939062297344208,
         'D3': 4290434996,
         'D4': -0.8408417114814315,
         'D5': [2547442423, 3988006917, 1701095406]}]}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'7TOF=K\xd3\x98jkhdvxc\x02\x00\x00\x00\x8d\x00\x00\x00\x910Q\xad\xaa'
 b"'\xf1[\xc5C\xb7&\xc6%\x99\xf0\x9b\xefM\xa2\x93\xd3?\xbaw\xad\xcd\x1c\x93"
 b'O\x88\x06\xa6\xe1\xbfV4\x08>\x04\x00\x00\x00.\x00\x00\x00\xa7\x86'
 b'\x8e=\x91\xc6\x84a;\x0e\xfc<t\xaf\x8b\xcdh\xb0\x91-\x91\xc4\xc3D\x1e\x1e'
 b'\x82\x82_\xd8s\xf0?\xe7\xbf\xc5\xe0s\xcf\x18\xf8\xff\xf7\xa4V\xc9'
 b'\xbf\xf4\xcdf\xbd\x04\x00\x00\x00i\x00\x00\x00<t\x8f\xa2z\xf2\xa5'
 b'\xd7\x12Y\xd9\xe9\n\x17\x00\x00\x00d\x06;9LP\xb9\x94\xa0~\xd9\xbf2\x00'
 b'\x00\x00#\x95k\x02\xf2A1\xa9lR\x00\x00\x00\xed\xc3Om\x1e\x12\xc6\xbcZ'
 b'\xf6\xee\xbfm\x00\x00\x00\x8f\xba;\xb0\x00\x19\x1a\x0c')

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

{'A1': 19261,
 'A2': -26413,
 'A3': 'jkhdvxc',
 'A4': [{'B1': 10,
         'B2': {'C1': 6625120140844413073,
                'C2': [197, 67, 183, 38, 198, 37, 153],
                'C3': 0.30588586436209564},
         'B3': 960169572,
         'B4': -0.39835371517006446,
         'B5': {'D1': -0.5515167867966713,
                'D2': 0.13301214575767517,
                'D3': [186, 119, 173, 205],
                'D4': 1032750759,
                'D5': 4394402984608712337},
         'B6': -6255145899762412253},
        {'B1': 108,
         'B2': {'C1': 3283599567501373300,
                'C2': [145, 196, 195, 68, 30, 30, 130],
                'C3': -0.7265550863839823},
         'B3': 1833944045,
         'B4': -0.9675725638376809,
         'B5': {'D1': -0.1979566775261794,
                'D2': -0.056348755955696106,
                'D3': [197, 224, 115, 207],
                'D4': 2727310396,
                'D5': 16850597418245681786},
         'B6': 872036968597011087}]}

Пример 2

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

(b'7TOF``\xfa\x12shhyhdu\x02\x00\x00\x00\x8d\x00\x00\x00\x0c\xe9\x19\xec\x94'
 b'\xbd,\xcc(\x0e\xd3\xbce\xdcU\x14b\xa2Gu5\xec?x{\x0f#\xec\xfd\xcf8\x9b\xab'
 b'\xef?K\x8f@\xbe\x04\x00\x00\x00.\x00\x00\x00\xfck\xaf\xe2\xac\xce\xb6hv,'
 b'\t\xa2\xc4%\x9e\xae\xa2T\x8d`\x9aig\xad\xa5\x806\xd4w0\xd4/^\xdc'
 b'\xbf\x04\xdb\x98i\x9aR\xe0\xa5\xc1\x8f\xee\xbfu\xe0A>\x04\x00\x00'
 b'\x00i\x00\x00\x00\x01\xd4\x8f\x07p\xb9\xbe\xe3\x86\x80/r\x9a\x17\x00'
 b'\x00\x00\xce1\xb3Wp\xefq4\xba\x9c\xc7?2\x00\x00\x00\xb3\xdb\xbb\xc2&\xec'
 b'\x12K\xeeR\x00\x00\x00\xfc\x13\xa7\xe1\xbe&H%\x15>\xec?m\x00\x00\x00\x90'
 b'\xe2\x7fD\x02\xb2\xb1\xe3')

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

{'A1': 24672,
 'A2': 4858,
 'A3': 'shhyhdu',
 'A4': [{'B1': 154,
         'B2': {'C1': 14712342530026498316,
                'C2': [40, 14, 211, 188, 101, 220, 85],
                'C3': 0.881525649939308},
         'B3': 1471361486,
         'B4': 0.1844704395369905,
         'B5': {'D1': 0.98969803901849,
                'D2': -0.1880466192960739,
                'D3': [120, 123, 15, 35],
                'D4': 3803147260,
                'D5': 11675912396009295532},
         'B6': 5409645753645390771},
        {'B1': 238,
         'B2': {'C1': 6957310057048319428,
                'C2': [154, 105, 103, 173, 165, 128, 54],
                'C3': -0.44324870797742943},
         'B3': -509144068,
         'B4': 0.8825784423981629,
         'B5': {'D1': -0.955048393227645,
                'D2': 0.18933279812335968,
                'D3': [4, 219, 152, 105],
                'D4': 126866433,
                'D5': 8227936361064085872},
         'B6': -2039653433413213552}]}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'RDSO\x1f\x02\x00\x00\x00D\x00F\x00T\x00b\x00p\x00~\x00\x8c\x00\x9a'
 b'\x00\xba\xe2\xc4\x13\x8f\xd3lwjcx\x10\xafda>Lp\xe1}\x8d\xc6\xd3~\xad3\xbb'
 b'\xdd%e@\x03\x03\x00\xa8\x006,\x13\x93\xf1F?ka\xe3\x157\x07W9\x9eBu\xa7'
 b"\x0b$\xa7r\x056\x04\xc2\xf9pU\x8aC\xfe0\xe9Y\x1cuN\xdc\x82']\x08\x86\xe4L"
 b'\x88\xfcI\x1f\xee\xe7(X\x8c\xab+S\xab\x0e\xc2\\9\x1a\x82\xcd-\x99\xc32'
 b'l\x03\xcf\xfb\x9c\x98\x94t\xd7\xad\xf3`\x9b./\xdb\xa8\x05\xa5\x11'
 b'\xa4\xb7x\xbb\xaaY\xd4T\xda\x90v\xf8B\ta\xe9\xac\xc1b\x86t\xb3+q'
 b'\xc2\x86\xf9 ')

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

{'A1': 'ka',
 'A2': [{'B1': 5603,
         'B2': 962004791,
         'B3': -1485487458,
         'B4': 9227,
         'B5': 29351},
        {'B1': 13829,
         'B2': 1895416324,
         'B3': -29128107,
         'B4': 59696,
         'B5': 7257},
        {'B1': 20085,
         'B2': 1562870492,
         'B3': 1290044936,
         'B4': 64648,
         'B5': 8009},
        {'B1': -6162,
         'B2': -1416865752,
         'B3': 246108971,
         'B4': 23746,
         'B5': 6713},
        {'B1': -12926,
         'B2': 851679533,
         'B3': -70319252,
         'B4': 39068,
         'B5': 29844},
        {'B1': -21033,
         'B2': 781934835,
         'B3': 94952239,
         'B4': 4517,
         'B5': 47012},
        {'B1': -17544,
         'B2': 1423202730,
         'B3': -126447398,
         'B4': 2370,
         'B5': 59745}],
 'A3': {'C1': 331670202, 'C2': 54159},
 'A4': 'lwjcx',
 'A5': 16,
 'A6': 0.22011063992977142,
 'A7': {'D1': 9138866379869483084,
        'D2': 3720033197,
        'D3': 54551845,
        'D4': [-2040348244, 1898689396, 553223874],
        'D5': 54,
        'D6': 4908,
        'D7': 0.7771236300468445}}

Пример 2

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

(b'RDSO\x1f\x02\x00\x00\x00D\x00F\x00T\x00b\x00p\x00~\x00\x8c\x00\x9a\x00@\x010'
 b'\x0e\xde\xe2wsjxt\xc6\r\x8f\x1d?&\xd1\xde\xa2\x0e\xcd\x94\xbf\x83\x9e{'
 b'\x08$\x82\xe1\x87\x02\x00\xa8\x00\xab\x1b\x84Y\xbfv?tn\xef-\xb2\xe7\x87\x8e'
 b'wwSE\xe4u\x0e\x01\xf7\xbc\xfc\x06\xce\xfa\xc6} \xe6\xe2\x878\xf8\xab\xd3'
 b'\xe7}@X\xf9\xf0@Z\x7f\xb8b\xc5.HH\xb7\x08i\x19\x03\x17\x96\xdemm\xca\xc41'
 b'3\xb5a\x02\xa93c\xe5x\xa0\xf8\xe7n\xc9U\x95\xd8f\xdc\xc1N7U\xaa'
 b'\xb2\x7f\xad\x1f\xd6:3\xbcv\xc8\xeeR\x11s\xc1\x880\x19I\xf9B\x9c"i')

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

{'A1': 'tn',
 'A2': [{'B1': 11759,
         'B2': -1903695950,
         'B3': 1163097975,
         'B4': 30180,
         'B5': 270},
        {'B1': -17161,
         'B2': -87161092,
         'B3': -434078266,
         'B4': 34786,
         'B5': 63544},
        {'B1': -11349,
         'B2': 1480621543,
         'B3': 1514205433,
         'B4': 47231,
         'B5': 50530},
        {'B1': 18478,
         'B2': 1762178888,
         'B3': -1776876775,
         'B4': 28126,
         'B5': 51821},
        {'B1': 12740,
         'B2': 39957811,
         'B3': -446483543,
         'B4': 41080,
         'B5': 59384},
        {'B1': -13970,
         'B2': 1725470037,
         'B3': 927908316,
         'B4': 43605,
         'B5': 32690},
        {'B1': 8109,
         'B2': -1137493290,
         'B3': 1391380598,
         'B4': 29457,
         'B5': 35009}],
 'A3': {'C1': 238027072, 'C2': 58078},
 'A4': 'wsjxt',
 'A5': -58,
 'A6': 0.6154640316963196,
 'A7': {'D1': -4641859853166391002,
        'D2': 142319235,
        'D3': -2015264220,
        'D4': [-112649936, 1763875906],
        'D5': -85,
        'D6': 33819,
        'D7': 0.9638572335243225}}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ZMS!?\x10L{\x00\x00\x00L\x9c\x90.\xed\x00\x91\xa7\x7f?g\xafQ\xbf\\\xce\x19'
 b'\xf2Z\xd0)>\xb1\x1b\x84\xbfS\xa4D\x8d\xc9!5\x00\x02\x00\x00\x00\x14\x19\xef'
 b'\x00\x02\x00\x1c\xbf\x16\x8a\xe3\x00\x02\x00\x00\x00 $\x92\x00\x02\x00('
 b'\xbfP\x97\xf2H\xf0\xd0\xe1\xd3v\xc2M=\xe4\x03\xb8\xa6\xb6\xa9v\xc8a&\xbc'
 b'\xf2\xb8\x87\x00\x00\x00\x02\x00,xSk\xd6|O\xbe\xf1wNB\xf8\x96\x85j'
 b'[\x81\x9d\x07|6\x86\xba\x9a6w\x03Eq\xf5Y\x1a\x1f\x96\xab\x02u:\x05'
 b'\xb0\x034\xdd\xf1\x86O')

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

{'A1': 0.5636669993400574,
 'A2': {'B1': 1223741665,
        'B2': -747191731,
        'B3': {'C1': 0.11133521795272827,
               'C2': -90,
               'C3': -18775,
               'C4': 1992843558,
               'C5': -0.02962900511920452,
               'C6': [{'D1': [0.9050188660621643, -0.8625198006629944],
                       'D2': 6639,
                       'D3': [62042, 53289],
                       'D4': -0.588056743144989},
                      {'D1': [0.3459130525588989, -0.8267252445220947],
                       'D2': 9362,
                       'D3': [36297, 8501],
                       'D4': -0.8148185014724731}],
               'C7': 8670392276571111153,
               'C8': [8596882374141504091,
                      9339629432308415130,
                      3924609197076207898,
                      2276194688727385520]}},
 'A3': -1668272403,
 'A4': {'E1': 820, 'E2': -571374001},
 'A5': -22657}

Пример 2

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

(b'ZMS!\xbfD.\xce\x00\x00\x00P\xe5p\x19\x85\x00\x95i\xc6\xbf[\xfd1\xbe\xa8#\x8b'
 b'?&\x9as\xe8\xd4&\x98\xbem\xbb\xf0>\x9c\xc0\xf2\xb8\x84\xcb\xf5'
 b'\x00\x03\x00\x00\x00\x14\xd3\xb6\x00\x02\x00 <\xb0i\x94\x00\x02\x00\x00'
 b'\x00$\xc7\xc9\x00\x02\x00,\xbeH\x99\xd7{q\xc0\x03\xa1.;\xbf\xbe\xd3\xbd\xea'
 b'HU\x95G\xc2\xfaW\xbfh=\xf1\x00\x00\x00\x02\x000\xb16\xc5\xdf\x88\x81\xb2'
 b'v\xb0z\xa5A\xfc\xe3\xf5\xce~\xd3\x81\xca\xc3\xa8\xbb?\x88\xc6\xae14[\x9e'
 b'\x17u\x8e\xb7\x95\xe3s\xb8\x8b\x83GN\xf0\xe2@')

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

{'A1': -0.7663391828536987,
 'A2': {'B1': 2071052291,
        'B2': -1590805569,
        'B3': {'C1': -0.41355830430984497,
               'C2': 72,
               'C3': 21909,
               'C4': 1203960407,
               'C5': -0.9071951508522034,
               'C6': [{'D1': [-0.8593321442604065,
                              -0.32839617133140564,
                              0.6507942080497742],
                       'D2': 54198,
                       'D3': [59604, 9880],
                       'D4': 0.021534718573093414},
                      {'D1': [-0.2321622371673584, 0.3061595559120178],
                       'D2': 51145,
                       'D3': [47236, 52213],
                       'D4': -0.1958993524312973}],
               'C7': 12769611357314200182,
               'C8': [12716658200668272078,
                      9138790776730860351,
                      9855756360901959191,
                      8470909803524503691]}},
 'A3': -445638267,
 'A4': {'E1': -31929, 'E2': 1324409408},
 'A5': 27078}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ZRZ \x1e$\xcb\xad\x02\x00\x00\x001\x00\x00\x00\x02\x009\x00\x00\x00\xe5\x0c'
 b'=\xeb\xbc\xf8j\xe0?P\xb1:\xe5x\x00\x00\x00~\x00\x00\x00|\x9d\x89\xfc\xee'
 b'\x90+\x00\x00\x00.\x00\x00\x00is\xed\xc7\xe2q\xf87.\x0cvI\xbf\xabmz\xe24\xbf'
 b'\xb8\xe80\xbfUju\xbf\xc8\xf9\xca\xbd\x99lZ\xbf\xb9Z"?\x1f\xc4!>\xaaWW?'
 b"\x03\x00;\x00\xd1\xacm_\x9a'\xe6\x85\xd7\xbf\xef\tG\x00\x00\x00\xb9n\xa9<"
 b'v&\xea1\xf6\x961p\xe3\xbfg\xe3\x06\xbf\xda\xc2#\xd32\xfdyh\xd4_\x19"')

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

{'A1': 2915771422,
 'A2': [{'B1': 124, 'B2': 35229}, {'B1': -4, 'B2': 37102}],
 'A3': 'is',
 'A4': 229,
 'A5': 0.5130580606291075,
 'A6': -449138352,
 'A7': {'C1': {'D1': 109,
               'D2': [-0.7065807580947876,
                      -0.6910510063171387,
                      -0.9586537480354309,
                      -0.0991092324256897,
                      -0.8532195687294006,
                      0.6341968178749084,
                      0.1579747051000595,
                      0.8411813974380493],
               'D3': [1910687725, 204355576, -1413527178],
               'D4': -21295,
               'D5': 13823664804790427501,
               'D6': 2543},
        'C2': 28345},
 'A8': {'E1': 645282985,
        'E2': -0.6074455212088286,
        'E3': -0.5269073843955994,
        'E4': 7528326646859023066,
        'E5': 572088276}}

Пример 2

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

(b'ZRZ ^O\xc81\x02\x00\x00\x001\x00\x00\x00\x04\x009\x00\x00\x00\xef\x90'
 b'\xd5\xec\x85[\xbe\xbe\xbf\xa1\x12\xbc\x07z\x00\x00\x00\x80\x00\x00\x00R'
 b'w\xcc\x0bT\xf4+\x00\x00\x00.\x00\x00\x00rpopy\x96\xbfXu>G1M\xcc\x88'
 b'\xadg\xa9wN?\xe9\xb5F\xbf\x8f\xdb:\xbf?\xfe\x10\xbf*v\xdf\xbe\xe67G>w\x9b'
 b'F?\xd5\xfd3?\x03\x00=\x00\xc0>\x0b\xcc+\x99\xb0Nc\x0c=\xfbI\x00'
 b'\x00\x00\x1b\xf4\x87u}\x17(1\x8c\x9f\xa3[\xc5?>1\x18\xbeK\xe0-\x1c\xfd$\xc7B'
 b'\xc8\xedm%')

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

{'A1': 835211102,
 'A2': [{'B1': 82, 'B2': 52343}, {'B1': 11, 'B2': 62548}],
 'A3': 'rpop',
 'A4': 239,
 'A5': -0.12009212512642464,
 'A6': 129766049,
 'A7': {'C1': {'D1': 103,
               'D2': [0.8065133690834045,
                      -0.7762132287025452,
                      -0.7299126982688904,
                      -0.5663794875144958,
                      -0.4364483952522278,
                      0.19454917311668396,
                      0.7758097052574158,
                      0.7030919194221497],
               'D3': [1488950905, 826752629, -1383543731],
               'D4': 16064,
               'D5': 892643671540485131,
               'D6': 64317},
        'C2': -3045},
 'A8': {'E1': 394098055,
        'E2': 0.16685910501872425,
        'E3': -0.14862534403800964,
        'E4': 4811855396386758731,
        'E5': 627961288}}