ИНБО-02-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZHJ\x00\x05\x00\x00\x00(yp\xf7J\x00\x00\x00\x02\x00\x00\x005\x8e\x00\x04'
 b'\x00\x00\x009\x00\x00\x00\x04\x00IY \x83\xe7\x86\x8apntfa\xa9iJ\xde\x8c\x10Z'
 b'\x14\x00-\x001Q\x1e\x07O\xea\x13\n9\x89a3*X\x10\xa7\xdb?[\x98\x1e?y\xae'
 b'\xa5>\x93(\xc5>\xedG\x14')

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

{'A1': {'B1': 'pntfa',
        'B2': 2037446474,
        'B3': [{'C1': -87, 'C2': [105, 74, -34]},
               {'C1': -116, 'C2': [16, 90, 20]}]},
 'A2': {'D1': -114, 'D2': [1360922447, -367850951, -1990118614, 1477486555]},
 'A3': [0.8577898740768433,
        0.9753211140632629,
        0.2874204218387604,
        0.4634329080581665],
 'A4': 89,
 'A5': 545515398,
 'A6': 138}

Пример 2

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

(b'ZHJ\x00\x02\x00\x00\x00(\xaf\xc9\xf3\x1d\x00\x00\x00\x02\x00\x00\x00'
 b'2\x85\x00\x02\x00\x00\x006\x00\x00\x00\x02\x00>6\xb8\xf3/\x0f\xbedu\xc2\xdc'
 b'_\x97\xbc\x84\xfc\xe0\x00*\x00.\xe3\xd6\x15"@\x80$\xf7\xbed\x96\x1e\xbf;'
 b'\xdf\xa5')

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

{'A1': {'B1': 'du',
        'B2': 2949247773,
        'B3': [{'C1': -62, 'C2': [-36, 95, -105]},
               {'C1': -68, 'C2': [-124, -4, -32]}]},
 'A2': {'D1': -123, 'D2': [-472509150, 1082139895]},
 'A3': [-0.22322890162467957, -0.7338812947273254],
 'A4': 54,
 'A5': 3102945039,
 'A6': 190}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"CJZK\x00\x00\x00\x02\x00\x00\x00Q>\xa9'\x83\xfa\x00q\xbf\xd7@\xae<0\x03$\xba"
 b'\xec\xb0_\x0e\x00\x00\x00\x03\x00}1\x83\x8ft9b\x9e\xbdE\xc65\x00\x02\x00'
 b'\x00\x00\x83\xbe\x12\x08#\xbfL\xc8\xd9\xbfg\x12[?\x05mS>\xfb\xc4\xc1\xe5'
 b'\xc1\xe5\x0e\xb7\xf4\x00K\x00N\xbf\xd9t}\x8f\x15\xd9P\xbf\xe9\xa7'
 b'\xba\xe0\xc7\xca^?\xdb\xb8\xa6d\x8a@\x9c\x00\x02\x00U\xd3\xe7-\x9dU\xc2\xf2'
 b':\x00\x00\x00e\x9b"\x00\x11w_F\xdbC\xea')

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

{'A1': [{'B1': 229, 'B2': -15899}, {'B1': 14, 'B2': -18444}],
 'A2': 0.33037957549095154,
 'A3': 250,
 'A4': {'C1': {'D1': 15269223215394910778,
               'D2': {'E1': 0.43314513986934755,
                      'E2': [-0.3977350137060016, -0.8017248525851064]}},
        'C2': -0.36332279088678576,
        'C3': 3136073823,
        'C4': 14,
        'C5': [39714, 17, 30559],
        'C6': 830705524,
        'C7': 962764477},
 'A5': 69,
 'A6': 50741,
 'A7': [18139, 17386],
 'A8': [-0.14260916411876678,
        -0.7999396920204163,
        -0.9026238322257996,
        0.5211994051933289,
        0.4917354881763458]}

Пример 2

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

(b'CJZK\x00\x00\x00\x02\x00\x00\x00Q\xbeQ\xb7\xff\x1b\x00y\xbf\xd3\n\x86\xcb'
 b'e"\x04\xfa\x8eG\x81\xf7\x00\x00\x00\x04\x00\x85\r\xcc]\x1c\xd0\x87\x8d\xb5l7'
 b'\xd3\x00\x02\x00\x00\x00\x8d\xbe\x0b{D?G\x10\x87>\xde]E?q1\x8b\xbf'
 b'\x17\xf8\xb3LC\x0f\xa9\x90\xa0\x00K\x00N\xbf\xc93@\x07cn\x80\xbf\xcd\x90'
 b'\xce\xfc\xe1\xca\x18\xbf\xe6\xe3\xa9&\xea\xa2\xe6?\xe8\x85\x16\x8c\x9c\x05'
 b'\x96\x00\x03\x00U\x9f8\x00\xabV\xe4\x93U\x00\x00\x00m\xd5\xec\x0c;\x9a?{'
 b'\x90\xc4\xce*\xad')

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

{'A1': [{'B1': 76, 'B2': 17167}, {'B1': 169, 'B2': -28512}],
 'A2': -0.2048034518957138,
 'A3': 27,
 'A4': {'C1': {'D1': 11472920786623566677,
               'D2': {'E1': 0.7662461038855095,
                      'E2': [-0.19687652931940036,
                             -0.23098170612100044,
                             -0.7152906189049559]}},
        'C2': -0.2975174890785015,
        'C3': 4203628417,
        'C4': -9,
        'C5': [54764, 3131, 39487, 31632],
        'C6': 231496988,
        'C7': 3498544565},
 'A5': 108,
 'A6': 14291,
 'A7': [-15154, 10925],
 'A8': [-0.13621240854263306,
        0.7775959372520447,
        0.434305340051651,
        0.9421622157096863,
        -0.5936385989189148]}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"xEXZ+O\xb4\xbc\x84\xb3\xdd,\x00\x83P\xaei\xdelo\x87\x86\x1d\xbf\xce\xfc'\x06"
 b'\xacF\xb8)m\xae[8\xefG\xc9\x95\t?\xad\x0b^\xbf\xc8\x9d\xe0\x91\xc5U'
 b'@\xea\x9aE\xf4\x94\xc7?\xec|\xd8\xaf\x92\xdd\\\x1f\x96\t\x85<\x0e\xa4o\x92'
 b'\xef\xbf\xdf`\xaax\x99\x8e\xf4\x81\xe8\x1c\xfc\xdd\x84\x00\x89\xa4$\xbf'
 b'\xef\xe9\x1d\xc6\r\x1c\xe6\x86\xc8\xc1\xf2\xaf\xf3\x87Q#%?\xdf\xdc'
 b'\x12\x8f\xc0\xa0\x18t\x0c\xa1\x82n\x95\xcbw\x85\x7f\x00\x06\x00\x00\x00'
 b'\x17?g,j\xbe\x0b|\x8d')

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

{'A1': 726643900,
 'A2': {'B1': -2068587220,
        'B2': {'C1': [{'D1': -0.24207008195712887,
                       'D2': [10605, -20901],
                       'D3': 14575,
                       'D4': 1204393225},
                      {'D1': 0.056727372084704575,
                       'D2': [-28219, 21824],
                       'D3': 60058,
                       'D4': 1173656775},
                      {'D1': 0.8902400426076542,
                       'D2': [8086, 2437],
                       'D3': 15374,
                       'D4': -1536191761},
                      {'D1': -0.49027501847579846,
                       'D2': [-32280, 7420],
                       'D3': 56708,
                       'D4': 9020452},
                      {'D1': -0.9972065799892362,
                       'D2': [-31032, -15886],
                       'D3': 45043,
                       'D4': -2024725723},
                      {'D1': 0.497807159789319,
                       'D2': [29708, -24190],
                       'D3': 28309,
                       'D4': -881359489}],
               'C2': [0.9030214548110962, -0.13621731102466583]},
        'B3': [80, -82, 105, -34, 108, 111, -121],
        'B4': -31203}}

Пример 2

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

(b'xEXZ\x9e\xe9\xf8\xc3)`/\xbd\x00q\xbe\x0f\xda\xd2\xb6A\xc6\x880\xbf\xebwb6'
 b'\x9f\xb7\xbc\xc8W\x13\xae{O6H\xdc\x18\xbf\xd4\xd7]{\xf4\x1cdJ\xc77'
 b'\x80\x80S\xf7\x18S\xd1\xbf\xe2\xb1\xc6E\xec\x1b\x16\x01)\xf1\nc\xf7\xa4Q#'
 b'z?\xef\x99\xef2\xd3\x06\xa65.\xb2^J\xce\x91:\xbe\xc4\xbf\xe2\xab\x15\xfa'
 b'\xc3\x93\n\xc9\xe2&#H\xe5\xda\xf2\r8\x00\x05\x00\x00\x00\x17\xbeg\n\x1b>'
 b'\xc3\xf8\x85')

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

{'A1': 2666133699,
 'A2': {'B1': 694169533,
        'B2': {'C1': [{'D1': -0.8583231989739413,
                       'D2': [-14249, 5038],
                       'D3': 31567,
                       'D4': 910744600},
                      {'D1': -0.3256448469623534,
                       'D2': [19143, 14208],
                       'D3': 32851,
                       'D4': -149400623},
                      {'D1': -0.5842009893102353,
                       'D2': [297, -3830],
                       'D3': 25591,
                       'D4': -1538186374},
                      {'D1': 0.987540816560984,
                       'D2': [13614, -19874],
                       'D3': 19150,
                       'D4': -1858421052},
                      {'D1': -0.5833845041021004,
                       'D2': [-13854, 9763],
                       'D3': 18661,
                       'D4': -621671112}],
               'C2': [-0.22562448680400848, 0.38275542855262756]},
        'B3': [-66, 15, -38, -46, -74, 65, -58],
        'B4': -30672}}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'VZY\xb6<\x00\x00\x00\xd7\xfek\x00\x06<i\x10L\xcf&\x13\xa3\x8e\x9c\xda'
 b'\x9d\xb0\x11\xf2\x13\x00\x13\xce;\x19\xd1\x8c_Ta\xea"\xe7tyvt\xad\xd2>_\x030'
 b'\x11o$\x91\x16\xbb\xe6\xb2\x04\x00\x00\x00*\x00H\x0eB\x08?*\xb4l\\\x1a'
 b'\x86\xec\xd7\x02\x00.\x00\x02\x90\xb4\xd659\xd93\xd0\x99U\xe6\xed'
 b'\xd1*\x8d\x99E\x9f\xceo\xef\xc0\x02\x03\t\x1b"\x02\x00\x00\x00i\x00{P\xa6'
 b'd\x10SW\xd5\x03\xf8\x80\x06\xf0\xb2I\xf9og\xc8?')

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

{'A1': {'B1': 'tyvt',
        'B2': {'C1': 72, 'C2': 0.5322579145431519, 'C3': -2887785813273430998},
        'B3': [{'D1': 173, 'D2': 16082, 'D3': 288359263},
               {'D1': 111, 'D2': -28380, 'D3': -1293501674}],
        'B4': 3736080269278744578,
        'B5': -26160,
        'B6': 3522029141,
        'B7': 17253235880942472490},
 'A2': 215,
 'A3': 254,
 'A4': {'E1': 572197123,
        'E2': {'F1': [-64, 2],
               'F2': [1688621179, 3579269904],
               'F3': -2045,
               'F4': 1664},
        'E3': 0.19065665886173333},
 'A5': [275332102, 321310540, 3667693219, 4061245597, 3457351699],
 'A6': 6459,
 'A7': {'G1': 1415548113, 'G2': -417142175}}

Пример 2

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

(b'VZY\xb6]\x00\x00\x00\x7f!\x8c\x00:/C\xf6\xb8\x8a\xe9\xb3\xb8\xd8l\xe3'
 b'+\xa8\xd7\x0f\x177W\xba\xb6\x04.\x92#\xf9 \xe5j+gq\xfe\xa5\xae\xcaP\xf8\x08n'
 b'\x17/\x04\xb5$c\x89o\xd3\x87\xc9\x1ei/\xaf\xd9\xee\xdf#H#\n\xd0\xe6'
 b'\xfe\xa6\x81T\x820\xb5\xdc\xe7\x9f\x8f\x12\xdb%7B\x83\x02\x00\x00'
 b'\x00*\x00\xe7#}:\xbf\x9e\xe9\xef\xc6\xc2\xe1[\xfa\x07\x00,\x00R\xe1\x05L'
 b'\xf3#%\xcf\x92\xf4\xf7\xcd]W\xe2\xc4\xad\xe6\xb1\x17\x87\xbbu\x9c'
 b"\xa4\xb6\xe0i\x02\x00\x00\x00\x8a\x00\xa5\x96'\xf5gN\x91'\xc2\x92"
 b'\xe4\xb3H\xb9\xe5\x8b\x8a8\xca\xbf')

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

{'A1': {'B1': 'gq',
        'B2': {'C1': 231, 'C2': -0.7284719347953796, 'C3': -406483114669381218},
        'B3': [{'D1': 254, 'D2': -20827, 'D3': 150491338},
               {'D1': 110, 'D2': 12055, 'D3': 1663350020},
               {'D1': 137, 'D2': -11409, 'D3': 1763625351},
               {'D1': 47, 'D2': -9809, 'D3': 1210310638},
               {'D1': 35, 'D2': -12278, 'D3': -2119762202},
               {'D1': 84, 'D2': 12418, 'D3': -1612194635},
               {'D1': 143, 'D2': -9454, 'D3': -2092812507}],
        'B4': -3520368005860695726,
        'B5': -2926,
        'B6': 1465765367,
        'B7': 13512795259795260642},
 'A2': 127,
 'A3': 33,
 'A4': {'E1': 1776334500,
        'E2': {'F1': [117, -100],
               'F2': [4113012389, 663834215],
               'F3': -27966,
               'F4': 46052},
        'E3': -0.20485050040174202},
 'A5': [4131598138, 3018427064, 3815561400, 265791531, 3126277911],
 'A6': 1206,
 'A7': {'G1': -115109330, 'G2': 728425760}}

Вариант №5

Задача №12

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

Структура A:

Поле Описание
1 double
2 uint64
3 int16
4 int8
5 int16
6 int64
7 float
8 Структура B

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'SCTEa?\xe5\\\xdf\xe9\x8bl\xac\x19\xee\r\x9bd\xec,!\x98O\x8d\xe8Z\x0c\x15'
 b'\xde\x02\x16\xb4{R?_&\xf3\x00\x00\x00\x08\x00\x00\x00]\x19\xa3\xe1_3S'
 b"\xc4\x1d\xa6J2#\xdf\xda\x97\x12q\xce\xbfE,\x9b\x0e7'\x00\x00\x00i\x00"
 b'\x00\x00\x83n*\xccW\x00\x05\x00\x00\x00\x96\xae\xd2\xdd\xa2jhsnnktg\xcfZ\x83'
 b'\xdf\xc3\xbc\x1fl\x00\x04\x00\x00\x00e\x93\x0f\x88*\xe6\x94\xac\xb5]'
 b'\xc8\x82\xdd\x05\x9ae\x1944\x87e\x00\x07\x00\x00\x00|k\x94[+\xdd\x1a\x0c'
 b'\xb1\xdc\xde\x8c\xec\xeaG\x1a\x94?&\xbe4Q\xebs\x80z\x87\x10\xbfq')

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

{'A1': 0.6675872384470458,
 'A2': 1868445856469625889,
 'A3': -26545,
 'A4': -115,
 'A5': -6054,
 'A6': 870846203518286674,
 'A7': 0.8716880679130554,
 'A8': {'B1': {'C1': 'jhsnnktg',
               'C2': 1847568071151305757,
               'C3': -6464299185476036846,
               'C4': 29134,
               'C5': -0.7702118754386902},
        'B2': 14,
        'B3': 14119,
        'B4': [{'D1': -1011081364,
                'D2': [-49, 90, -125, -33],
                'D3': -109,
                'D4': 1119191677226759517},
               {'D1': 875857765,
                'D2': [-56, -126, -35, 5, -102, 101, 25],
                'D3': 107,
                'D4': -7756557704590741028}],
        'B5': 1848298583,
        'B6': [-561189654, 1192924223, 649999441, -344752006, -2028945551],
        'B7': -1361912414}}

Пример 2

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

(b'SCTEa\xbf\xd0\xda\xb0\xda\x08\x91\x0c\xa1\x9cE\x17rn\xc9V\xdd\xe5\xbb'
 b'I\xc4\xfd\xf3\x97\xea}\x16S\xe5>\xd1=-\x00\x00\x00\x08\x00\x00\x00]c\xfa'
 b'"\x10Nr\xbeG\xa8\xb6\x9f2Z@\x0f\x8bt\xf7\xbf\x0f\xab@k\x9e\x89\x00'
 b'\x00\x00k\x00\x00\x00\x86i\xca\xf5\x95\x00\x04\x00\x00\x00\x99N\x91\xb5soht'
 b'letul_\xb2\xb1s\xa57\xf8\x1d3\xa9\x00\x06\x00\x00\x00e\xc2\xc3y\xb4n\xab\xcd'
 b'N\xda\x04\x9a\xb4L\x04\xb2\xa4b\x9bZ\x14\xce\x00\x08\x00\x00\x00~N3Ag'
 b'\xe3\x05\xf1\xb9\x1e\t\xd5\xc7\x9d:;\xac.\xc5[\x05y\x0b\n\xf6\xdd')

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

{'A1': -0.2633478287919082,
 'A2': 11645258703479687510,
 'A3': -8731,
 'A4': -69,
 'A5': 18884,
 'A6': -147607329396337691,
 'A7': 0.4086698591709137,
 'A8': {'B1': {'C1': 'ohtletul',
               'C2': 7204108007363493447,
               'C3': -6289664790964990069,
               'C4': 29943,
               'C5': -0.5612068176269531},
        'B2': 107,
        'B3': -24951,
        'B4': [{'D1': -132303959,
                'D2': [95, -78, -79, 115, -91, 55],
                'D3': -62,
                'D4': -4361256376709853478},
               {'D1': -1688595250,
                'D2': [4, -102, -76, 76, 4, -78, -92, 98],
                'D3': 78,
                'D4': 3693347394175482142}],
        'B5': 1774908821,
        'B6': [165005213, 976989230, -983890567, 185267933],
        'B7': 1318172019}}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"LTU\xdf\xb2^6\xe0\x85\xa4?\xe2\x9dHX-'j\xdc\noJ\x00=\x00\x05\x00\x00"
 b'\x00l\x8e^\xec\xa71l\xec\x12\xd8\xb9\xfc\x0f\x8c\xaePT{\xed\x8f\\q\xa4'
 b'\xba\x17vC\xca\xb4\x90\xb3\x86\nm\xc7h2\xaf\x98{\xc2\xb4\xbe3\xb3\x08\xed'
 b'\x1f\x8b3\x00\x02\x00%\xbfgW\xdc\x00\x00\x00\x02\x00-?\xdc\xd5D\xa4|H'
 b'\x18\xbe\xaa\x1a\xf62\xc9\xb9qtreb')

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

{'A1': 45662,
 'A2': 920683940,
 'A3': 0.5816995355792021,
 'A4': 3691671370,
 'A5': {'B1': 10,
        'B2': 109,
        'B3': -4077953732825070924,
        'B4': -4741249131771622605,
        'B5': {'C1': [{'D1': 18, 'D2': -40, 'D3': -17924},
                      {'D1': 15, 'D2': -116, 'D3': -20912}],
               'C2': -0.9036843776702881,
               'C3': [6087720521308415162, 1690613248016036742],
               'C4': 0.45051685393366503},
        'B6': -0.3322369456291199,
        'B7': 50,
        'B8': -13895},
 'A6': 'qtreb',
 'A7': [142, 94, 236, 167, 49, 108, 236]}

Пример 2

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

(b"LTU\xdf6\xa5z\x99\x88\xae\xbf\xef(\xd7\x94\x19\xea\x94\x0c\x16'3\x00A"
 b'\x00\x03\x00\x00\x00pO>\xd6\xb0\x8b\xbf\x18\xca7`\xf8\x9a\x0e\x86'
 b'\x0b\x84\xdf\x8f)\xa3\xaf\xc3.\x90\xf7\xc7\x06\xdf\x92\xc9\x0e)f\x1e'
 b'\xdb\xc9\xd8\xef\x0eN\x88L@\xe6\x9c\xda\n\xb0!\x08UN&\x00\x03\x00%>'
 b'\xd8c/\x00\x00\x00\x02\x001?\x96\xd1\x8dzb\xcd@\xbfn\xc8t(/\x1cunf')

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

{'A1': 13989,
 'A2': 2056882350,
 'A3': -0.9737356083490618,
 'A4': 202778419,
 'A5': {'B1': -55,
        'B2': -40,
        'B3': -1220952101668985188,
        'B4': -2735180167753937370,
        'B5': {'C1': [{'D1': -54, 'D2': 55, 'D3': 24824},
                      {'D1': -102, 'D2': 14, 'D3': -31221},
                      {'D1': -124, 'D2': -33, 'D3': -28887}],
               'C2': 0.42263171076774597,
               'C3': [-6651883519834863866, -2336584193990582565],
               'C4': 0.022283754916043508},
        'B6': -0.932746171951294,
        'B7': 40,
        'B8': 12060},
 'A6': 'unf',
 'A7': [79, 62, 214, 176, 139, 191, 24]}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'!IXR\x00\x8e\x88lc\xfe\xb8\x7f\x88"\x8b\xfb+\xd1J\\\xb1z{\xce'
 b'\x12\xb7\xb9\xd9\x00\x03\x00\xad\x84m!\xe5J\x03\xdeV,\xb2y1\xf1\xbbiO'
 b'\x079\xf6\xfa\xd0\x19E<\xfe\x1d\xe7\xe2-\xc5:\xb5\xc5\xa7\x8eypA\x0e\xba'
 b'\x86\xf8\x18\x00\xc7\x8e\xc4\xb8;\x8b\xec(f\xbc\xda\xc8)\x12\xdb\x18'
 b'd\x9f\x03Z\xde\xaf\x0c\xbe\x01.\x90\x80r\xbc\xba\x18\xb0\r\xba\xack\x17\x05F'
 b'\x90<\xbb\xfb9?n"\x00\x00\x00\x02\x00l\xe7\xe7\x1cfRA\xe5$c\'[\xce\x00,'
 b'\x00<\x00L\x00\\fqkglrs\xb6\xb7\xc47\x00\x00\x00t\xe0;\xda\xb8Q\x94\x18'
 b'\xcd\xe1\x0e\xa2')

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

{'A1': {'B1': [{'C1': 17418631771930097402, 'C2': 14995092562570504162},
               {'C1': 3298106854498340473, 'C2': 8088762600025233408},
               {'C1': 14379646955792624680, 'C2': 7403032440707668760},
               {'C1': 7250517613907741886, 'C2': 85164324321802776}],
        'B2': 'fqkglrs',
        'B3': 3065496631,
        'B4': {'D1': -8053355345973645790,
               'D2': [2953689772, 1796670790],
               'D3': 231,
               'D4': -417569198,
               'D5': [65, -27, 36, 99, 39, 91],
               'D6': -50},
        'B5': -532948296,
        'B6': 1368660173},
 'A2': {'E1': -2006162434,
        'E2': -5152249766729798703,
        'E3': 5358352796285276855,
        'E4': -17959,
        'E5': [225, 14, 162]},
 'A3': 33901,
 'A4': 2442439753393908914,
 'A5': 31025}

Пример 2

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

(b'!IXR\x00\x8e?\xde\xd6\xdd \x1d\xac\x8e\xbc\x0e\x17\x1dz\xc0haT8;\n$\xe7'
 b'\x00\x02\x00\xad\x81\x9fE\xf7\xd4\x8bl\xd5\xf9\xd4\xdd\xef7\xf0\xb8\r'
 b'\x90\x04\xe5\xebJ\x1b\x8f\xcfP\xb1%\xc2\xe1\x8e\xd8\x18+\xbb\\\x0f'
 b"\x19\x85\x05\xba\x9e\x8a}9$-'\xc1\x12\xcc\xbe\x0e\xc8\x8b\x03C\xba\x92q\x8b"
 b'\xad^\xd3\xcf6A\x9f\xf0y\t$]\xcdX\xe1\x01_\xae$fz\xdb\x9b\x1a\xf56\x0fa'
 b'j|c\xe4\x00\x00\x00\x02\x00l\xf2\xc7\xf5\x89<!\xb8i\xf0\x86\x01i\x00,'
 b'\x00<\x00L\x00\\sdkwmdg\x1a\xab\xdf\xdf\x00\x00\x00tEH\xb1\x90\xd2\xdex'
 b'w@\xe3')

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

{'A1': {'B1': [{'C1': 4030924034886919659, 'C2': 5340019903752644034},
               {'C1': 16253165703551212559, 'C2': 1838882321932647737},
               {'C1': 2606783469514964494, 'C2': 14450647418776220043},
               {'C1': 12492655303294296048, 'C2': 8721542138675388673}],
        'B2': 'sdkwmdg',
        'B3': 447471583,
        'B4': {'D1': -777416974602050588,
               'D2': [1605248102, 2061212442],
               'D3': 242,
               'D4': -940209860,
               'D5': [33, -72, 105, -16, -122, 1],
               'D6': 105},
        'B5': 1162391952,
        'B6': -757172105},
 'A2': {'E1': 1071568605,
        'E2': 2314195512578676509,
        'E3': 8845184435389741834,
        'E4': 9447,
        'E5': [64, 227]},
 'A3': 33183,
 'A4': 5041732003156064724,
 'A5': -8721}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'MWPQ\xa5\x00\x9f@\xd3\xcd\x14\x10\xa6"\x02\x00\x96\x00\x00\x00\xd8*\xd5\x03'
 b'Xe\x14\xc4\xa0\xc0?\x1f\xe2\xe30\x89\x02\x00\x1e\x00\x00\x00\xdc\x14'
 b'\x0b\xf1o6c\xff\xabeJ\x1f\n\xacRruL\xac\xa7\x98/#\x8e\xf7}&\x82\x1c\x19'
 b'8\xb9\xfd\x81\xf95a\xa0\xf8\x87\\D\x0f\x1cE\xf3?\xbf\x00|\xe2\x03\x9b\x1b'
 b'\x02\x00Z\x00\x00\x00XT\xd6R\x96$\xe3\x10\xbc\x1fmn\x9dxp\xaf{\xbd\x16ci\xd9'
 b'\xceC/uI\x96.\x12]\xf7\xcau|5\xac\xafC\xc3\xf4\xa40\xc5\xb5"\xb1> \x00'
 b'\x00\x00\\\x00\x00\x00')

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

{'A1': 40704,
 'A2': 64,
 'A3': {'B1': {'C1': 269798867,
               'C2': 8870,
               'C3': [{'D1': 2301682658,
                       'D2': [63, 31],
                       'D3': [18402612356779283676,
                              8237835827888678315,
                              10242082310265261173,
                              13346445105945804279],
                       'D4': [33277, 13817, 41057, 34808, 17500, 7183],
                       'D5': -0.749805748462677},
                      {'D1': 463143906,
                       'D2': [0, 124],
                       'D3': [1216856552373638232,
                              12641736771586826172,
                              4886081692400795003,
                              17824422891501483311],
                       'D4': [30154, 13692, 44972, 49987, 42228, 50480],
                       'D5': 0.3459679186344147}]},
        'B2': 10968,
        'B3': -4566434430275025963}}

Пример 2

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

(b'MWPQ\xa5G\xa9\x8d,?\xa8\xaf\x1d\xb4\x02\x00\x9d\x00\x00\x00!\xe1\x8aD'
 b'\xca\xebX\xe5\xcf\xc2G\xf9\xba\xe6m\x90a\x17a\xcd\x06\x00\x1e\x00'
 b'\x00\x00j\xb4\xf4Iv\xb0\x95\xa9\x0e(\x8d\xc1\x80#\x07@C\xae\xebE\x08\xb5'
 b'W%\xbfw"\xed\xcfk\xed\x0f,\xb6|\xb6wM"(?\xa5\x9c/A\x10\xd5>a`\x1a\xe4\x9f/'
 b'$&\x91\x05\x00^\x00\x00\x00\x17\x86\xa0\x81 \x16k8\x8f\xf6\x16dV1\xe0'
 b'\xea\xff\xa4\xf9\n\xa5\xf8M>\x8b\x1a`\x81(\xaexhy74\x0e\xcf\xd4N'
 b'\xf8\x85\xd3\xbb\xe5\xac\xee\x1a\xbf$\x00\x00\x00c\x00\x00\x00')

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

{'A1': 43335,
 'A2': 141,
 'A3': {'B1': {'C1': -1347928276,
               'C2': 46109,
               'C3': [{'D1': 3445692257,
                       'D2': [71, -7, -70, -26, 109, -112],
                       'D3': [12219867186033112170,
                              4613695379174402062,
                              2690818349514600003,
                              1147692020830205887],
                       'D4': [46636, 46716, 19831, 10274, 42303, 12188],
                       'D5': 0.4161396324634552},
                      {'D1': 2435195951,
                       'D2': [97, 96, 26, -28, -97],
                       'D3': [4065367417501550103,
                              16924581646774498959,
                              4489517791295677695,
                              7527958266142268043],
                       'D4': [14201, 3636, 54479, 63566, 54149, 58811],
                       'D5': -0.6052043437957764}]},
        'B2': 57633,
        'B3': -4409053340096641910}}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'HSZF+\x00\x19\x7f\x1fR\x00m\x00y\xfe\x88!\xd3\xce\xe5D\xf8\x9a1Sk\tg'
 b'}\\\xac\xdb2\x06C\x97\xd6\x98\x97\xee?rp\xc1q\xbdZp\xdaP!\xb4\xd3\xca?xnsOj'
 b"Y\xab\xab\xe6\x04\xb9=\xecv\xe3G*\xb2Z\x02\x00\x00\x00)\x00\x00\x00'oBxe\xa3"
 b'\xbc\xf9\x90\x7f\xed)\xb6\xd6<\xe7EX\xc2\xa1\x03w9\xdc~\xe3\x16\xcc>\xcc'
 b'\x92\x06(|^\xfa\x86\x18\x88\x8f&\xae\xaa\x07\xd3E\xf8\xd7\xa9\xb1'
 b'a\xd2\xf8\x9b')

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

{'A1': {'B1': 1522364865,
        'B2': 0.20958568217038787,
        'B3': 'xns',
        'B4': 13332034421912070735,
        'B5': 6535332497515277373,
        'B6': 'rp'},
 'A2': 32537,
 'A3': 31,
 'A4': [{'C1': 39,
         'C2': 111,
         'C3': [-1553631166,
                2140207548,
                -692704787,
                1480976188,
                1996726722,
                -478225351],
         'C4': 22},
        {'C1': 204,
         'C2': 62,
         'C3': [671519436,
                -2030412164,
                646940696,
                -754472274,
                -1445463995,
                -120430159],
         'C4': 155}],
 'A5': 562626169,
 'A6': {'D1': 5994742970105319123, 'D2': 107, 'D3': 9, 'D4': 2891742567},
 'A7': 13019,
 'A8': 0.9560054961421833}

Пример 2

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

(b'HSZF,\x00\xb4.IS\x00n\x00\xd5+N\xc1\xd0|\xd9\x1e\xd1\x1b\xf3\xe8\xa1\xfdB'
 b'\n\x13}\xf1\x8fP\xee\r\x9a\t}\xc0\xbfjzf>@\xe8\xb9\xe8yI\xdc<\x14\xd3\xbf'
 b'trj\xa7\x98\x8d\xb3\xa7\xd71\xfe/Z\xb6\xf8\x8a\xe4E\xda\x03\x00\x00\x00)'
 b'\x00\x00\x00\x8d4}z\xbeua3\xb4\xe1\xeb\xb1\xc34\xa4Shwu\x91*#u\xf7&'
 b'\x13\x92\xce\x1c\x8dJ\x9fPo+q\xba\xd2\x02\xa4qYi\x88\xb7\xa5\x14\xfb\x8a'
 b'c\xd7\xb9\xb0\xea')

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

{'A1': {'B1': 3119005758,
        'B2': -0.29811021339801735,
        'B3': 'trj',
        'B4': 18316658274764429479,
        'B5': 15728228559190645295,
        'B6': 'jzf'},
 'A2': 11956,
 'A3': 73,
 'A4': [{'C1': 141,
         'C2': 52,
         'C3': [1975417469,
                -508284063,
                885240299,
                2003325860,
                589992309,
                321320821],
         'C4': 146},
        {'C1': 206,
         'C2': 28,
         'C3': [1352616589,
                -1166988433,
                1906574034,
                -1215796903,
                -1963256667,
                -1329997981],
         'C4': 234}],
 'A5': 3243125717,
 'A6': {'D1': 16785790821119655120, 'D2': -95, 'D3': 253, 'D4': 2098399810},
 'A7': 36849,
 'A8': -0.12881584188640938}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'cUWM\x00\x00\x00+\x00k>%@T\x00\x00\x00\x02\x00\x00\x00z{h.X\xb5)\x13Uwqnfwd'
 b'h\xdfX\xc65\xdd\xe8\x00\x07\x00\x1es\n"\xf5A\x0e\x00\x03\x00\x00\x00%a'
 b"m\xc6m\x83\xaa\xa9$n\xd8\xef\t\xa6'[\x97D\xdd\xc2\x07d\xd8\x11X\xab"
 b'\x1d\x19}]K\x97If\xe34\x86\xf7/2P\xa1\xfd-\xc7)\x95\x1e5\x01a\x8a\x89\x03'
 b'5\xa4P\x00\x02\x00\x00\x00c\x05\xae\xcer\xd34L\x9d\rm\x91\rh[\xdd,\xec')

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

{'A1': {'B1': 'wqnfwdh',
        'B2': 115,
        'B3': 170063169,
        'B4': 14,
        'B5': [{'C1': 223, 'C2': 88},
               {'C1': 198, 'C2': 53},
               {'C1': 221, 'C2': -24}],
        'B6': [7020485567803205924,
               7987396763862915991,
               4962335701444596056,
               12330039381037127497,
               7413827165859295824]},
 'A2': {'D1': 99512987847861328, 'D2': [2717724103, 697638453], 'D3': 5},
 'A3': 0.16137820482254028,
 'A4': [12596131459242958093, 7895106363626171628],
 'A5': 8892408422774412117}

Пример 2

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

(b'cUWM\x00\x00\x00(\x00h<\xd5\xc1\x8f\x00\x00\x00\x03\x00\x00\x00w\xe7\x87'
 b"\xb1\xf3fS\x17\x9efmbhbh'6\xc7\x9c\x00\x06\x00\x1e\xa5w\xc3A70\x00\x02"
 b'\x00\x00\x00$\x07\xec@`\x96\x88\xa1DC\x9a\xe0\x8a;\xef\x9a\xfe\xcce{4'
 b'\x1934\xb9\x10\xe0l\x9d\xdew\xbb\x9a\xd3\x8ezS#"T\x82E\x92D^Z\x94\xc5\x86'
 b'\x90\x01\x07\xcfd\xf3\x19^\x00\x02\x00\x00\x00`\x9c\xa4Ms\x0e{'
 b'\xe4\x17\xd0\xea#\\\x92\xd7\xbc\x8c\x11\x02\x88=5\xa9\x00\xa3\xe5')

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

{'A1': {'B1': 'fmbhbh',
        'B2': -91,
        'B3': 2009284919,
        'B4': 48,
        'B5': [{'C1': 39, 'C2': 54}, {'C1': 199, 'C2': -100}],
        'B6': [570902036355785028,
               4871452831270279934,
               14728313620076377273,
               1216091324688087962,
               15244256286186034306]},
 'A2': {'D1': 10376583603771611486, 'D2': [1167213662, 1519699334], 'D3': 156},
 'A3': 0.026093272492289543,
 'A4': [11839245501472184272, 16871430414814448657, 182463085586457573],
 'A5': -1763245070140368994}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xbbRCN\x1a"\xa6\xed\xab\x8ajO\x02\x00\'\x00\x00\x00\x13:\xb4I\xc7\xa9'
 b' \xb8h5\x00\x00\x00S\xaaX?T\x00\x00\x00ls>\xab\x07\x18\r\xc4P\xe7\\j\xf5'
 b'l)\x00/\x00\x8eg\xda\xb6M 9\xd4\xce\x9e\x97&\xc5\xec\x9c\n\xc6\x89T'
 b'vu\x06\x16Jn?\xca?I9\xbe\x04\x00L\x00\x00\x006\xe1{\x02\x00P\x00\x00\x00\n'
 b'\x07')

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

{'A1': 5722538747558765082,
 'A2': 'ls',
 'A3': 13267791175633615379,
 'A4': 104,
 'A5': {'B1': [{'C1': 403155774, 'C2': 13, 'C3': 196},
               {'C1': 1784473424, 'C2': -11, 'C3': 108}],
        'B2': 15292289527865567118,
        'B3': [40654, 9879, 60613, 2716, 35270],
        'B4': 84},
 'A6': 0.8463489413261414,
 'A7': {'D1': -0.18094347417354584,
        'D2': [118, 117, 6, 22],
        'D3': 54,
        'D4': 31713,
        'D5': [28234, -13761],
        'D6': 1802}}

Пример 2

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

(b"\xbbRCNm{\xf8\x00z\xb3\xb8\xae\x02\x00'\x00\x00\x00C\xbdL\xd3\xd4n\xc4?\xfc5"
 b'\x00\x00\x00\x9d\xee\x05?W\x00\x00\x00bo)\xa3D\\1\x8e\x05\xe5\xcd/7'
 b'\xc8)\x00/\x00\xc6\xf8\xe1\x8b\x94G\x15\x06r\xa7\x83\xd4\xfd\x1c\xfa'
 b'v\x89\x14\x12\xb5\xdc\xd0\xa0\xaa\xacb\x13.\xae"\xbd\xc2^>\x07\x00L\x00\x00'
 b'\x00\xa2\nm\x02\x00S\x00\x00\x00\xd6\xbe')

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

{'A1': -5856733978811663507,
 'A2': 'bo',
 'A3': 4594919380181892419,
 'A4': -4,
 'A5': {'B1': [{'C1': 1548002089, 'C2': 49, 'C3': 142},
               {'C1': 802022661, 'C2': 55, 'C3': 200}],
        'B2': 438335242066065606,
        'B3': [42866, 54403, 7421, 30458, 5257],
        'B4': 18},
 'A6': 0.5231721997261047,
 'A7': {'D1': 0.2175397425889969,
        'D2': [-75, -36, -48, -96, -86, -84, 98],
        'D3': 162,
        'D4': 27914,
        'D5': [11795, 8878],
        'D6': -16682}}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GGB\xda\xf0\x9a\x00\x00\x00,\x00\xa0\x00\x00\x00\x05\x00\x00\x00\xaf'
 b'Q*\x00\x02\x00\x00\x00\xb4\x16E[\xdd7{@\x84\x06*\x9a\xe3\xee\xcc\xf7\x9c'
 b'\x82\xe8R\n)\xce\x11\x01\xb7\x86\xda|\x1a\x00\x00\x00\x04\x00\x1c:'
 b'\x97\xb5\xcf\t#\x7f\x00\x00\x00\x02\x00D?\xd3\xae\xd9n\x94\xb9\x00\xe2GY`'
 b'@\xc9\x00\x00\x00\x06\x00T?\xb6\xab\x9ax\x03,\x10$5\x0e}\x81\x00\x00\x00'
 b'\x05\x00h?\xb4\x07\xf8\xd8\xf0\xa8\xc0\xb2\xf4\xcc:\x00\x00\x00\x04\x00'
 b'{\xbf\xef\xfa\n\x9f\xcf?\xea\xddr\xc5W\x14\x00\x00\x00\x05\x00\x8d?\xeb!\xf7'
 b'6\xd0{\x1e\x06-\x00F\x00Z\x00m\x00\x7f\x00\x92%g\x8f\xae\xe1\xf0\x0b('
 b'\xc0\x90')

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

{'A1': 61594,
 'A2': {'B1': -32024,
        'B2': 21002,
        'B3': 3012363899829148284,
        'B4': 26,
        'B5': [373644253, 930824324, 103455459, -288557156],
        'B6': 983021007,
        'B7': 9},
 'A3': {'C1': 1581,
        'C2': [{'D1': [35, 127], 'D2': 0.3075469570056981},
               {'D1': [-30, 71, 89, 96, 64, -55], 'D2': 0.08855595998754517},
               {'D1': [36, 53, 14, 125, -127], 'D2': 0.07824664398563907},
               {'D1': [-78, -12, -52, 58], 'D2': -0.9992726441651005},
               {'D1': [-35, 114, -59, 87, 20], 'D2': 0.8478962011903126}],
        'C3': 37,
        'C4': 26511},
 'A4': [-82, -31, -16, 11, 40],
 'A5': 81,
 'A6': 42,
 'A7': [192, 144]}

Пример 2

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

(b'GGB\xdaP\xcc\x00\x00\x00,\x00\x9a\x00\x00\x00\x04\x00\x00\x00\xa9'
 b'\xcfM\x00\x03\x00\x00\x00\xadlT$\x8fx.[\xba\x0c\xc3\xb4JG\x9f5\x85'
 b'\xbf\xcf\x9f\xd8\xa7\xba\x80S\xd7s\x08\x16\xbb\x00\x00\x00\x04\x00\x1c\x06'
 b'\x1b\xa5u[C\x0b\x00\x00\x00\x02\x00D?\xe0\xb6\x05Z7L\x8a!\xa1\x00\x00'
 b'\x00\x02\x00T\xbf\x90\xe4\xdf\xcc~\xfc\x80\x1bK:\x00\x00\x00\x03\x00d?\xea '
 b'$+\xfaa\x90M\xdeO:\xfa\xdc\x00\x00\x00\x06\x00u?\xe4.,\x10\x15\xd5\xdeiv\x1d'
 b'\x00\x00\x00\x03\x00\x89\xbf\xc8\xf9r\x19\xc9\x08\x00a#\x00F\x00V\x00g\x00{'
 b'\x00\x8c\x97\xe4\x11\xc0\x17=\xfbe7\x1e')

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

{'A1': 20684,
 'A2': {'B1': -16433,
        'B2': 40920,
        'B3': -6360630426122123242,
        'B4': -69,
        'B5': [1817453711, 2016304058, 214152266, 1201616261],
        'B6': 102475125,
        'B7': 91},
 'A3': {'C1': 24867,
        'C2': [{'D1': [67, 11], 'D2': 0.5222193491012075},
               {'D1': [33, -95], 'D2': -0.016498085838744903},
               {'D1': [27, 75, 58], 'D2': 0.816423498053199},
               {'D1': [77, -34, 79, 58, -6, -36], 'D2': 0.6306362451711569},
               {'D1': [105, 118, 29], 'D2': -0.19511247881933969}],
        'C3': -105,
        'C4': 58385},
 'A4': [-64, 23, 61, -5],
 'A5': 207,
 'A6': 77,
 'A7': [101, 55, 30]}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xffMNXBtsbsgfts?\xd1\xbac\x05`\xbb\x94\x002\xbf\xe7\x13/\xe2#\xabdZ'
 b'\x00\x00\x00\x04\x00C\xbf\xd7\x1a\xe4\xb0H\xde\xf0gkea\xfd\x00'
 b'\x00\x00\x04\x00\x00\x00.\xb9\xd2\xd7 P,t_\xbf\xdb\xfe\xf5\xd2\xf4\x9aX\x00'
 b'\x00\x00\x02\x00\x00\x00;?\xe5Y\xa7p\xd0S\xac\x00\x00\x00\x02\x00\x00\x00=?'
 b'\xe2\xbfJ\x1c`s$\x00\x00\x00\x02\x00\x00\x00?\xbf\xca\x16\xc0\x06'
 b'\xdc\xfc\xe0\x00\x00\x00\x02\x00\x00\x00A')

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

{'A1': 'tsbsgfts',
 'A2': 0.27700114751035554,
 'A3': {'B1': -3, 'B2': 'gkea'},
 'A4': {'C1': -0.721092168501269, 'C2': 90},
 'A5': [{'D1': -0.43743653870698074, 'D2': [-71, -46]},
        {'D1': 0.6671940997499539, 'D2': [-41, 32]},
        {'D1': 0.5858507684930356, 'D2': [80, 44]},
        {'D1': -0.20381927809828593, 'D2': [116, 95]}],
 'A6': -0.3610164376764109}

Пример 2

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

(b'\xffMNXBzjyjqbro?\xd8X\xc2\xc9\xa8)\x18\x002\xbf\xa3O\xad\xd2c9\x80['
 b'\x00\x00\x00\x05\x00E\xbf\x91\xaemy\x8ck@luws\x99\x00\x00\x00\x04\x00'
 b'\x00\x00.G\xe0}\x1cl\x9a+\xb4P\x8f?\xca6\xde\x7fT\xf5p\x00\x00\x00'
 b'\x02\x00\x00\x00;?\xd1\xe8\xed\x0b\x00\x9e\xc4\x00\x00\x00\x02\x00\x00\x00'
 b'=?\xd6/\xca\xa1j]\x00\x00\x00\x00\x02\x00\x00\x00??\xe4\x9c`\xc5\xb4\x83'
 b'\xba\x00\x00\x00\x02\x00\x00\x00A\xbf\xea\x03A\x19\x03%\\\x00\x00\x00'
 b'\x02\x00\x00\x00C')

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

{'A1': 'zjyjqbro',
 'A2': 0.3804175347619476,
 'A3': {'B1': -103, 'B2': 'luws'},
 'A4': {'C1': -0.03771727746208153, 'C2': 91},
 'A5': [{'D1': 0.2047994729745528, 'D2': [71, -32]},
        {'D1': 0.2798416717000516, 'D2': [125, 28]},
        {'D1': 0.3466669632266104, 'D2': [108, -102]},
        {'D1': 0.6440891133716982, 'D2': [43, -76]},
        {'D1': -0.8128972519418016, 'D2': [80, -113]}],
 'A6': -0.01726695112584342}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZKU\x00\x00\x00<\xc6tS8\x1eO\x8c\xf6\x00\x02\x00b\x00\x03\x00\x00\x00'
 b'r7\xa8\x18\xca\xdb=\xaaR\x8c 5 \xb7f\xe6n\xb0\xb7\xae\x8d\xe1\xa8\xab'
 b'\x00\x00\x00\x1b\x00\x00\x00"\x00\x00\x00)\xa4\x00\x03\x000\xb1\xb8\x19'
 b'=*\x88\xaf\xcd\xa9a\xc1\xf6\x18}\xc1\x93\xbc\xbf\xed\x1b\x98\x01\xf3'
 b'\xba\xc0?\x1cDP>\x8f\x1a\xa5.$\x85\xaf\x05\x01<\xe9\x92;\xd3\xd6=8'
 b'\xd2B\xf9\\\x0f')

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

{'A1': {'B1': {'C1': 164,
               'C2': [{'D1': 415947581, 'D2': -21934, 'D3': 140},
                      {'D1': 540352695, 'D2': 26342, 'D3': 110},
                      {'D1': 2964827789, 'D2': -7768, 'D3': 171}],
               'C3': -20040,
               'C4': 25,
               'C5': [15658, -30545, -12887, 25025, -2536, 32193, -27716],
               'C6': -0.9096183813215575,
               'C7': 0.610417366027832,
               'C8': 0.27950015664100647},
        'B2': 14300146217299971318,
        'B3': [3324929411656006889, -7909495403442548158],
        'B4': [-7, 92, 15]},
 'A2': 14248}

Пример 2

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

(b'ZKU\x00\x00\x001i\xc9\xe6\x85\x83\xc62\xf2\x00\x02\x00W\x00\x03\x00\x00\x00'
 b'gu\xf7\xa5\x9bL\xca5=y`\x19\xfan\xa7\x92*\x00\x00\x00\x1b\x00\x00\x00'
 b'"\x16\x00\x02\x00)-\x10\x1c2"\xbf\x9c\x85\xa1\xc0\x89\x002\x08%.\x00?'
 b'\xef\xd4\x9c3Iy\xae>\xa1=U?\x16\x85\xd9\xc3\x9f0(\x9d=\x99\xdc\xb3'
 b'`\xd4\xc2\xe1\xf4\xb9R\xb5\xb6\xf8')

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

{'A1': {'B1': {'C1': 22,
               'C2': [{'D1': 2778418378, 'D2': 13629, 'D3': 121},
                      {'D1': 1612315246, 'D2': -22638, 'D3': 42}],
               'C3': 11536,
               'C4': 28,
               'C5': [12834, -16484, -31327, -16247, 50, 2085, 11776],
               'C6': 0.9947033883761855,
               'C7': 0.3149210512638092,
               'C8': 0.5879798531532288},
        'B2': 7622877305417118450,
        'B3': [-4350705764021724708, -5521179209676572334],
        'B4': [-75, -74, -8]},
 'A2': 30199}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'XGBBWnnwrkrv>\x00\x00\x00\x03\x00\x84\x00\x92\x00\x02\x1c\xefd\x1e\\'
 b'\x7f\xd8\xd9\xfc\xe0\xbf\x8e\x89\xcf \xd2\xc9\x887\xcaNjw\x01]'
 b"\xeb\xf7\xf4\x8e\xa0x\xe8\xb7\x0b\x8c'\x8e(\xd9\xb7\xc4/\r,\xf91\xba\xeb5"
 b'\xeb?\x00\x08\x03\x00\x00\x00"\x00\x00\x00\xe5\x92\x03\x00\x00\x00(\x00'
 b'\x00\x00\xc7v\x05\x00\x00\x00.\x00\x00\x00\xcc\x9e\x03\x00\x00\x008\x00'
 b'\x00\x00C5I?v\x91\xe2\xef=&\xbcj\xa4D@\xb6gub\x8b3\xe9l\xf9YK\x83\xac~\xee'
 b'\xac\xef"\x08\xba\xb5\x90Bwi\xec\xbf\xc8\x16X\x1f\x02\x00\x00\x00'
 b'\x90\x00\x00\x00')

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

{'A1': 'nnwrkrv',
 'A2': {'B1': {'C1': 50359, 'C2': 3375, 'C3': 0.8503321301102793},
        'B2': [{'D1': 2048, 'D2': [-30322, 8399, -13870]},
               {'D1': 37605, 'D2': [14216, 20170, 30570]},
               {'D1': 30407, 'D2': [23809, -2069, -28940, 30880, -18456]},
               {'D1': 40652, 'D2': [-29685, -29145, -9944]}],
        'B3': {'E1': 0.7859689593315125,
               'E2': 118,
               'E3': 0.11713135987520218,
               'E4': 38,
               'E5': 1151625916},
        'B4': 1969731136},
 'A3': [-382497950, 1264187756, -293688189],
 'A4': {'F1': 34,
        'F2': 8,
        'F3': -0.8878742504218089,
        'F4': 525866696,
        'F5': [-84, -17]},
 'A5': 1693391874,
 'A6': -0.5308655956713471}

Пример 2

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

(b'XGBBWsphbsvp:\x00\x00\x00\x03\x00\x80\x00\x8e\x00\x98}>\xbd\xfaIq!\xff\x9f'
 b'\xea?\x83W:\r\x04 \xe0p\x1d\x00\x9e\xc5\xd8\x1f\xf7\x868\x89\x03\xb7#\x95'
 b'\xab\x08\xf9\x9f\x9c\x17|\xe6\x8b\xd4U\x1d\xd5?\xcf\x86\x03\x00\x00\x00'
 b'"\x00\x00\x00u\xda\x02\x00\x00\x00(\x00\x00\x00\xd8\xe2\x02\x00\x00\x00'
 b',\x00\x00\x00\xf6\xd4\x05\x00\x00\x000\x00\x00\x00R\xdew\xbe:\x7f\xd5C?J'
 b'T\xf6\xc2\x89\xb2\xea\x8b\x978Q\x002,\x96"\x05\xfc\x12\x18M\x04\xb5Q\x0c'
 b'\x14G\x9eKY\xdd\xd4?P\x10Zk\x02\x00\x00\x00\x8c\x00\x00\x00')

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

{'A1': 'sphbsvp',
 'A2': {'B1': {'C1': 40953, 'C2': 6044, 'C3': 0.3299154830598139},
        'B2': [{'D1': 34511, 'D2': [22403, 3386, 8196]},
               {'D1': 55925, 'D2': [28896, 29]},
               {'D1': 58072, 'D2': [-14946, 8152]},
               {'D1': 54518, 'D2': [-30985, -30408, -18685, -27357, 2219]}],
        'B3': {'E1': -0.24205902218818665,
               'E2': 58,
               'E3': 0.764976441860199,
               'E4': 74,
               'E5': 2311255636},
        'B4': 2542529202},
 'A3': [838881592, 86152748, 1293423356],
 'A4': {'F1': 81,
        'F2': 12,
        'F3': 0.32601005920979387,
        'F4': 1801064528,
        'F5': [4, -75]},
 'A5': 3174989208,
 'A6': 0.8320308354544175}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'(PLR\xbd\x89\xb1\xfe\xa5\xa3}+\x00B\x00N\xb0;\xb3$]\x8f"o\x00\x00\x00b'
 b'\xbf\xe4\xf8\xe5{\x97\xa5\x96\x14!\xda\xfb\x91\xdc\x9d7-\x11\x0f{'
 b'$\xc8\x00\x00\x00\x05\x00\x00\x00\x87\xe0\xa3Y\xfbqYZh\x7f\xad'
 b"\xbb\xef\x19\x85\x12\xfd\xe8\xcb%o\x8f'\xb6^\xa4\xee\x9b\xe7\x93\x02"
 b'\xd0}4\x86\x9b\xf9\xaa\x83\xdf\xa0>\xb7\xd6\xca\x8e\x977\x8a\x90T#\xec-\x00'
 b'\x00\x00\x04\x00\x00\x00Z2\x9f7p\x0c9\x05\xbc\xbf\xd2k\xfet\xe0\x97\x80\xee'
 b'\x9c|\xbfe\xc7I\xf6To?\xf6\x91\xb7R\x9c\xe4\xba\xd67\xc2\xd2u\x15\x04'
 b'\xef\xe1\xfaa\x92\xb9\x80\xa8-\xed\xd3\xc9\xd5\x9d\x08')

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

{'A1': -0.06723402440547943,
 'A2': 2778955051,
 'A3': {'B1': [{'C1': 32685, 'C2': -17425, 'C3': 1838896904592369007},
               {'C1': -28889, 'C2': -18850, 'C3': 11884607885583503485}],
        'B2': {'D1': [45115, 45860, 23951, 8815],
               'D2': {'E1': 0.3590605854988098,
                      'E2': 142,
                      'E3': -7550413897771783123,
                      'E4': [13446, -25607, -21885, -8288],
                      'E5': 3647695177574319548,
                      'E6': -0.28784142888832065},
               'D3': -0.6553828634179577}},
 'A4': 5153,
 'A5': -2667377977570415343,
 'A6': 259728584,
 'A7': [-1252989434827683338,
        6084151949840044700,
        -1965022752413682411,
        355751361080637824,
        -6328140407505576696],
 'A8': 16186880422173039208}

Пример 2

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

(b'(PLR\xbf3\xabdt$U\xd1\x00B\x00N;\xc3=\xad\xc7:\x0f\n\x00\x00\x00`'
 b'\xbf\xde\xed\xbav\xc3\x93\x9c\x13|\xd8\xe4\xfbZ\xadF,qu\xa7\xb2m\x00\x00'
 b'\x00\x04\x00\x00\x00\x85"\xfb\xb6-\x05\xdc\xc6\\\xd6\x99\xa5\xc5{V\xbe\xad"S'
 b'\xff~\xe4Q\x8eB\x01\xce\xe7\x04=\xe9U\xe4\xbc\x16\x1b\xa5\x9bS\xbe\xe4*Z'
 b'M\xaf\x05\x11L\xe3 _V\x00\x00\x00\x03\x00\x00\x00ZNV8l]\xc4QU\xbf\xee\x0e'
 b'm\x942p\xbe\xaeo>t\xdf\xf6\xbckJdw\\\xc1v\xd4\x98\x97\xb8\xea'
 b'\xaa\xb7\x05\xc9\x9b\x1e\xb0\x02\x9b\xb7\xfdG\xc7')

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

{'A1': -0.701833963394165,
 'A2': 1948538321,
 'A3': {'B1': [{'C1': -10599, 'C2': -23099, 'C3': 8887500565476802430},
               {'C1': -7087, 'C2': -29118, 'C3': 130295444644910564}],
        'B2': {'D1': [15299, 15789, 51002, 3850],
               'D2': {'E1': -0.4456356167793274,
                      'E2': 77,
                      'E3': -5835238720262873258,
                      'E4': [-17386, 7077, -25773],
                      'E5': 5644761221036265813,
                      'E6': -0.9392612356637284},
               'D3': -0.4832597884945302}},
 'A4': 4988,
 'A5': -2817851099954402191,
 'A6': 1973924461,
 'A7': [-5877410317000590229,
        5360540696744219800,
        -7513997959331722853,
        2211270284868929479],
 'A8': 2520808720932062812}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'OOCFz\x8ex\x988\xd4\x14\xf5#RF<\x95\xa1\xbb\x10\xd7w\xfbx\xdd\x08\xaeG'
 b"\x01S_\n\x18\x9cf\x8e(2tp\xf0\xcdD\xf2n\xf5\xc7\xa9\xc9\xddha\xa7'mQ"
 b'\xfd\x9f\x11<\x07\x88\x81\x00\x00\x00\x87\x00\x00\x00\x8d\x00'
 b'\x00\x00\x93\x00\x00\x00\x99\x00\x00\x00\x03\x00\x9f\x00\xae=\x15 e\xec'
 b'\xf5q&\xa2?\xa2N}\xa8G\x17\x01\x92P\x0cKt\xfb\x06\x9e \xa7l\x06\xb4\xd6\x01o'
 b'?\xd9%\x00\xbf\x1a\x0e\xeb\xa3$rw\xcaA\xbfb]\xe9/\x1b>w\xee0\x008>\xe5'
 b'\xfc\x94fY?@\xad\x16\x97\xcc>f\xe9m')

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

{'A1': 36474,
 'A2': 5918843805103593592,
 'A3': 8635389208562056262,
 'A4': 30971,
 'A5': [{'B1': 747407328129452253, 'B2': 39960},
        {'B1': -3607259657163731354, 'B2': 62020},
        {'B1': 7019103877463537006, 'B2': 10151}],
 'A6': -8644874913318088339,
 'A7': {'C1': [{'D1': 29220, 'D2': -0.7569956183433533},
               {'D1': 23906, 'D2': 0.15154995024204254},
               {'D1': 61047, 'D2': 0.1796882152557373},
               {'D1': 64741, 'D2': 0.8492214679718018},
               {'D1': 44352, 'D2': 0.3995901942253113}],
        'C2': [102, 233, 109],
        'C3': 15790,
        'C4': 21,
        'C5': {'E1': 0.035449563283871166,
               'E2': -7926028272658461022,
               'E3': [3152, 29771, 1787, 8350, 27815, -19450],
               'E4': 0.9336217641830444},
        'C6': -0.5005775094032288,
        'C7': 26,
        'C8': 14},
 'A8': 41963}

Пример 2

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

(b'OOCFeK7\x97\xa8\xe1\x82\x17\xcc\xee\xdc\xd8\xa5U2{ic\x1f\xf9\xefF\xde\xae'
 b'\xd9\x00v\xe0\xd6\x11\xdc\xce\xed\xcc\xa0\xdf/\x0b\x0bI~\xe7%\xe2'
 b'\x1e\x97c\xf9i_y\xcc\xd2\xfeq.\xef\xef\x81\x00\x00\x00\x87\x00'
 b'\x00\x00\x8d\x00\x00\x00\x93\x00\x00\x00\x99\x00\x00\x00\x04\x00'
 b"\x9f\x000\x8eD\xaa\xa3\xd93\xc8\xa4\xe7\xbfmeX'&\xe5>\xe3\x01\xc2\xd4"
 b"\xcb'\xc5Q\x86:\x08\xf0WP\n^?\xdc3K\xbfm\x1d\xb1?\x18@\xae_y?\xd9"
 b'\x0e"\xb2\x07\xbe\x94\xfb>\x97m\xbfitO\x11\xb2\xbe\x90t\xaa\xf0@=\x0f'
 b'\xdf@\xe9')

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

{'A1': 19301,
 'A2': -1239589946534619337,
 'A3': 7163392138424998108,
 'A4': -1761,
 'A5': [{'B1': -2272628027020130577, 'B2': 4566},
        {'B1': 806108740048506588, 'B2': 18699},
        {'B1': -476370976672192642, 'B2': 24425}],
 'A6': -1157655512069518215,
 'A7': {'C1': [{'D1': 16408, 'D2': 0.9741162061691284},
               {'D1': 3801, 'D2': -0.13251546025276184},
               {'D1': 64404, 'D2': -0.9280890226364136},
               {'D1': 29801, 'D2': -0.3477883040904999},
               {'D1': 29840, 'D2': 0.04710451513528824}],
        'C2': [15, 223, 64, 233],
        'C3': 36400,
        'C4': 68,
        'C5': {'E1': -0.7388649952600777,
               'E2': -2071966826512226963,
               'E3': [-15871, -13356, -15065, -31151, 2106, 22512],
               'E4': 0.867344856262207},
        'C6': -0.7937600612640381,
        'C7': 109,
        'C8': 29},
 'A8': 16305}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xf8VDA\x1f\x00>\xfc5lsvtzns\x97\xd0\xddA\x00\x00\x00)\xa7\x9a\xc0\xda'
 b'\xcbnuI5\xcd\xe5\x0e\xba\xa2f\xdf\xb2\x98\x8c\xb8z\xd1@\xbb\x9e\xea\xe6\x18'
 b'\xe7\xaf`\xbf~\xe5\xc7\xdb\x1b?s:\xa3o\xe1N?\x1e\x11\xfc\xbe\xf8\xa0_'
 b'?\xd6t\x04\x18^\xcf#\x8c\x81\x1au\xbek\xda\xdb\xbe\x84\x83\xeb\xbar}v'
 b'& \x1b\x18z\x93L\xaa\xea\x88?\x99\xa7V\xc3~\xa5\xe1<\xaa\xac\x87p)\xd1G?-'
 b'\x00\x00\x00)%0\xdb:\xbfF\xb6')

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

{'A1': {'B1': 3855430985, 'B2': 47630, 'B3': 8842972455805871778},
 'A2': 62,
 'A3': 13820,
 'A4': 'lsvtzns',
 'A5': -12137,
 'A6': 221,
 'A7': {'C1': [{'D1': [0.8081273436546326,
                       -0.4923180937767029,
                       0.8735499382019043],
                'D2': 402945238,
                'D3': 2351157086},
               {'D1': [-0.23935891687870026,
                       -0.429400771856308,
                       -0.0017968271858990192],
                'D2': 645299570,
                'D3': 2048400160}],
        'C2': [-6369990340653724525, -6004920213303278762],
        'C3': 28807,
        'C4': 0.7805352807044983,
        'C5': {'E1': 16652313517562216657,
               'E2': 24751,
               'E3': [32447, -14363, 7131, 29503, -23750]},
        'C6': 13134395622779004201},
 'A8': 8461924890270410537}

Пример 2

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

(b'\xf8VDA\x1f\x00\x12\x16\xf9uuifdch\xb9\xb3\xdfA\x00\x00\x00\xedX\xcd\x94N'
 b'\xa8\xd5\x9d\x19\x17\xd3S\xc8l\x9bH]JL\xf5\xac\xc6\xec\xbdh:)\xcfe\x84K\x16K'
 b'\x7f\xf3\xa4\x95Q\xd2,`\x14VJV?\xabp\x15\xbf\x8c\xca\x9a>L\xf6D'
 b'\x91\xf4\xa8\xfdhS\xcb\xeb\xbd\x9e\x0c\xf8\xbea\xdc:?\xd4\x82\xdd'
 b'\x98r\xdd\xe3U\x1e\xb4\x1c\xcd\x86\xba\xb1\x06\x97\x05\x98\x9b\x13\xe2\xd3'
 b'\xfd-\xa6e%J\xbf-\x00\x00\x00\x8d\xd4\xb3\xcc\x1b\x93\xbc\x93')

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

{'A1': {'B1': 1406342937, 'B2': 27848, 'B3': -4130657050191640421},
 'A2': 18,
 'A3': -1770,
 'A4': 'uuifdch',
 'A5': -19527,
 'A6': 223,
 'A7': {'C1': [{'D1': [0.8370717763900757,
                       -0.5837504267692566,
                       0.3023265600204468],
                'D2': -1857751476,
                'D3': 1761454324},
               {'D1': [-0.11513390392065048,
                       -0.48447126150131226,
                       0.7299252152442932],
                'D2': -1730313516,
                'D3': 1440996722}],
        'C2': [482371723234948126, -156532988185148009],
        'C3': -22995,
        'C4': -0.7896330952644348,
        'C5': {'E1': 9540259161634815468,
               'E2': 5707,
               'E3': [32587, -23309, 20885, 11474, 5216]},
        'C6': 10645545366804747405},
 'A8': -7073562584258094867}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'SZDF\xb5I\xa4\x00W\x93\xabF$.\xec\xb9\x0f\xe4\xaa\xd9z\xe5\x81hB\xe9\xbd{'
 b"}\xd0\x91\x9fP;\x08\xfa\x00\xef'\xd1\xe9\x82\xa5'\xf4\xc9g\xf8\xd2P\xaa,"
 b'P!\x1f\xcc\xb4\xb9\x98\xa1$\x94\x9e\x00\x00\x00s~\xad$\x95\xf9\x90\x18@\x00'
 b'\x00\x00\x02\x00\x00\x00\x9f\xf0\x17\xfb\x9d\xff3\xe7\x04\r\xe7R\xd6\xbf'
 b'\xe4\x8f\xd3\xb13\xed\xa0\xb0/\xc9\xeej\xf1\xd0\xcf\xcfm\xed\xcfLv\xc3/\xbd'
 b"\xf5\xf8'w\xd7\xbc\xfb\x8e\\\xff\xab\xf8\x04\xa8\xde\x00\x00\x00\x03\x00"
 b'g>\x90\r\x8f?\xdc\xa3\xd7\xb4\xfa\xafX\xe1\x9c\xc0p\xb54\x14\x83\xe4\xed')

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

{'A1': 18101,
 'A2': 18852,
 'A3': {'B1': 18389295708083016406, 'B2': -0.6425569973938998},
 'A4': {'C1': -27733,
        'C2': 70,
        'C3': [{'D1': 9262, 'D2': -323416092, 'D3': [-21799, 31461, -32408]},
               {'D1': 17129, 'D2': -1115980336, 'D3': [-28257, 20539, 2298]},
               {'D1': 239, 'D2': 668068226, 'D3': [-23257, -2871, 26616]},
               {'D1': -11696,
                'D2': -1439936479,
                'D3': [8140, -19271, -26463]}]},
 'A5': 36,
 'A6': 38046,
 'A7': {'E1': 5509805803952273447,
        'E2': 8635578599117488043,
        'E3': 4161054942,
        'E4': [-1339045394, 1794232527, -814879281],
        'E5': 0.2813534438610077,
        'E6': 0.44750015901330675,
        'E7': 3785146480,
        'E8': -19148},
 'A8': {'F1': 9127992246305560640, 'F2': [5251, 58605], 'F3': 4028103581}}

Пример 2

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

(b'SZD\xa7\x87^s\x00W\xe9\x81\xc1\xbe"\x82\xe2\xe4?\xf3\xa4\xaes\xa8\xf5'
 b'`\xc7\xbe\x01T\xa1\xdd\xd6\xc9\xba\xd0\xd5<\xa2\x7f\x8e]\x8dT:\xc2h\xafo'
 b'\tXV\xd6\xd9@\x95\xe5\xcc\xfe\xe48\x1b\x86\x82\x00\x00\x00s{\xaf\xb6\x8a\xd0'
 b'\xe3\x97j\x00\x00\x00\x03\x00\x00\x00\x9f\xa5\xd5\xd8L`\xf5\xf4\x81C\xebg+?'
 b'\xd9\x87\xf8HK\x89\x9cT\xaf\xd6F\x86\x90\r\xe9\x9a\x8e\xb0_\xc5\xbdnr\xb8'
 b'\xdc;\x922\xd5C\x93\xef\x95\x82\x87Z\x81\xbbw\x00\x00\x00\x03\x00g\xbe\xfc;'
 b'C?\xd0:\xc3\xfc\xfai0\xd2\x02\x8dt\xbe\xb7w\x93y\x03\xe9r')

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

{'A1': -22649,
 'A2': 24179,
 'A3': {'B1': 6986759232962651947, 'B2': 0.3989239412313965},
 'A4': {'C1': -5759,
        'C2': -63,
        'C3': [{'D1': -16862, 'D2': -2099059649, 'D3': [-3164, -20877, -22283]},
               {'D1': 24775, 'D2': -1107209055, 'D3': [-8746, -13894, -12075]},
               {'D1': 15522, 'D2': 2140036493, 'D3': [21562, -15768, -20625]},
               {'D1': 2392, 'D2': 1456920896, 'D3': [-27163, -13058, -7112]}]},
 'A5': 27,
 'A6': 34434,
 'A7': {'E1': 14248666235076885394,
        'E2': 3662908174594572935,
        'E3': 1518451575,
        'E4': [1420809798, -2037379607, -1701924769],
        'E5': -0.4926396310329437,
        'E6': 0.2535867662897031,
        'E7': 3523382644,
        'E8': -16713},
 'A8': {'F1': 8912542894915819370,
        'F2': [30611, 30979, 59762],
        'F3': 2782255180}}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'VEW\x00\x00\x00\x02\x00\x00\x00^\xbc\x92%\xd2\xe5v\xd4\xedE\xdd\xcd\x00\x00'
 b'\x00\x04\x00\x00\x00f\x00\x05\x00\xb6\xff\x88-\x02f\x8f\xea\xab\x10"'
 b'\x90\x1bm\x07\xb5\xe1\x0f\xc4|=\x8c\xda\xfdN\x7f\xcc\xd3\xfa\xca\xf1'
 b'\xa4\x15\x19\xc6\xcd\xfe\xb0\xf7tC\xcd\xd2\xa0XgY\xdbQ\xcd\xed\xc0x\x86\\'
 b'$$\xe5B\tK\x00\x00\x00N\x00\x00\x00V\xbf\x7fE\xf4=\t\x02\x18\xbe\x90'
 b'a<\xf8\xc8\xc7&\xaf\xbe\xbe\xcf?FU\xca\xbe\xf8\x9e\xa4>\n\x9dE\x85\xba'
 b'\xee2\x97\xf7\x80\xd9\xbf\x1f\xec\xc7\xbfa\xdc\xd6\xbf\x1b2\xc0\t\xa8'
 b'Ss\xb7\x00l*\xbex8\x8f>\xe1\x94\xa5\xbe\x94m\xf8\x982eb?\x17\nGBE\x98\xd5o')

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

{'A1': [{'B1': 1733942097, 'B2': -840056712},
        {'B1': 2254185508, 'B2': -448657077}],
 'A2': 3163694546,
 'A3': {'C1': {'D1': -445197075, 'D2': 69},
        'C2': -8755,
        'C3': [{'E1': [-0.9971611499786377,
                       0.033449262380599976,
                       -0.2819918394088745],
                'E2': -1848,
                'E3': 50982,
                'E4': -1346453809},
               {'E1': [0.7747465372085571,
                       -0.4855853319168091,
                       0.1353655606508255],
                'E2': -31302,
                'E3': 60978,
                'E4': -1745387303},
               {'E1': [-0.6247066855430603,
                       -0.8822759389877319,
                       -0.6062431335449219],
                'E2': 2472,
                'E3': 21363,
                'E4': -1224709078},
               {'E1': [-0.24240325391292572,
                       0.44058719277381897,
                       -0.2899014949798584],
                'E2': -26574,
                'E3': 25954,
                'E4': 1058474567}]},
 'A4': [66, 69, 152, 213, 111],
 'A5': [-33727508871386453,
        1162650101282747873,
        1136169609802218830,
        9208968412165940245],
 'A6': 1857398390111302723,
 'A7': -841834408}

Пример 2

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

(b'VEW\x00\x00\x00\x02\x00\x00\x00^l\xb6\xdep\xb2(GB\xae~k\x00\x00'
 b'\x00\x04\x00\x00\x00f\x00\x03\x00\xb6\x8cS\xaax\x10;\xc0\xe1\x19\xb5'
 b'\x8ft@\xf9\xc8\xe4\xe7\x8b\xc4\xef\xc5\xa6\x0b\xd4\xeb\x04X\xb2\xe7S'
 b'\xa9_\xb2Q\xb6\xf5\xaf\x1b\xdc\xec\x03\xc4\xedy\xd0\xdc\x07\x10\x90\x03'
 b'\xc7\x1aHWr(\xbd\xfb\x88\xff\x00\x00\x00N\x00\x00\x00V>\xf3\\\xd2>\x87'
 b'\xe7\xa9\xbe\xbciUB\xa7\xb8\xb7\xc0\xea\xc3\x07\xbey\x1e\x1a\xbf8'
 b'\xb5\x0f\xbf/\x81a<\x81\x8d{\x84\xfa\xc0\xa4\xbe\xa8z,>f\xf4\x81\xbf\x04'
 b'\x0c\xbb<\x8d\x8f\x11\xc1\x10\x9a\xe2\xbe\x07\x17\xab>\xc2\x03\xd8\xbfn'
 b'&\xf9\xbd\x8c\x87\xcc\xb6\x86\x99\t\xe3\xbfh')

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

{'A1': [{'B1': 3504080656, 'B2': -1878800614},
        {'B1': 1213690408, 'B2': -1107588865}],
 'A2': 1823923824,
 'A3': {'C1': {'D1': -1305983166, 'D2': -82},
        'C2': 32363,
        'C3': [{'E1': [0.4753175377845764,
                       0.26543930172920227,
                       -0.3679911196231842],
                'E2': 17063,
                'E3': 47287,
                'E4': -1058356473},
               {'E1': [-0.2432788908481598,
                       -0.7215127348899841,
                       -0.6855679154396057],
                'E2': 15489,
                'E3': 36219,
                'E4': -2063941468},
               {'E1': [-0.32905709743499756,
                       0.2255420833826065,
                       -0.515819251537323],
                'E2': 15501,
                'E3': 36625,
                'E4': -1055876382},
               {'E1': [-0.13192622363567352,
                       0.3789355754852295,
                       -0.9302821755409241],
                'E2': -17012,
                'E3': 34764,
                'E4': -1232692983}]},
 'A4': [227, 191, 104],
 'A5': [-8335131052687507231,
        1852544551201917156,
        -1762098295093195820,
        -1511986049481201313],
 'A6': -5597491695523734292,
 'A7': 63237497}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xb2UKV?\xe6\x03\xbc\xb6\n\xaa\xda\xbfzr_\xde\x1f>\xc7F\x89h\x05'
 b'\xf7f\xd5\xcc{\x86q\xf0\x9c\x8c\x00\x02\x00\x00\x00\x8eE\xb6\xfc\xb9'
 b'\x941X\x17>\x8dG2?\x03p\x96>\xbc\xb1\r\xbeI\xa2b\xbe\xa4$\xb7\xb6v15'
 b'^\xd9Q\xf8\xbd\x14k\x17\xa71\xa7\xfc\x00\x02\x00\x00\x00\x96\x8c\xfe'
 b'\xde?\x18\xcd?\x14>^\x93\x1b\xbe\x06\x82[\xbe\xben\xd2?|\xd0\xa7\xbe\x14bciH'
 b'c\x9b\x18R\x02\xdb\xa3\xe2\x19Y\r\xfbK\xebl\x95\xd8\xea\x82\xbd\xc9d\xbf\xa6'
 b'\xa5\xf2\xd3E\\\xb7\xfcL\xe3*\xd4\x93\x97D')

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

{'A1': 0.6879561954022748,
 'A2': -0.9783076643943787,
 'A3': {'B1': 16005580626300856325,
        'B2': 17827171249215140336,
        'B3': 40076,
        'B4': [{'C1': [-1079597582, -750429001],
                'C2': 1169620153,
                'C3': {'D1': 37937,
                       'D2': 22551,
                       'D3': [0.27593380212783813,
                              0.5134366750717163,
                              0.3685382902622223,
                              -0.19690850377082825,
                              -0.32059261202812195],
                       'D4': [-5298993806260481544, -4822111551673489412]}},
               {'C1': [-62069974, -728524988],
                'C2': 2365513279,
                'C3': {'D1': 6349,
                       'D2': 16148,
                       'D3': [0.2173580378293991,
                              -0.1313566416501999,
                              -0.3719392418861389,
                              0.9875587821006775,
                              -0.14490656554698944],
                       'D4': [7586423090084709083, -6637715030513333269]}}]},
 'A4': 7824398429353527652}

Пример 2

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

(b"\xb2UKV\xbf\xe9\xe3\xfc\xb5\x057f\xbe\xbe\xe5N\xac\xa5:]'\x84\x1e\xb3"
 b'.|\x15\xcc\xde\xc9,\xa7\xd1\xcc\x00\x02\x00\x00\x00\x8e\xb1\xa8\xb6H'
 b'\xd2\xa1,G>[Q\x08\xbe\x02TS\xbf\t\xa7\xa2\xbe\xa8\x1d\xbf?\x10%Y\x8cJ\xbe_'
 b'\xb9\x9aP\xee\x8a\x18\x0b\xb0\xef8\xe8O\x00\x02\x00\x00\x00\x96\xdd\xa4'
 b'\xce\x1ak\xc4L\x97\xbfn\x11j\xbf>\x18\xbb?O\xd9\xaf=\xec\xd0\x08?Er@!I'
 b'\xd8\t\xf8\x10\xe0\x11\r\xec(\xfb\xca8W\xc3\xa0\xf3\x87g\x98W\xd1\x94*\x8d'
 b'7\x90\x81\x98\xdf5\xf7\xfb\x95\x06\x15\xaf\x13\x86')

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

{'A1': -0.8090804610780935,
 'A2': -0.3728432059288025,
 'A3': {'B1': 12440413717450202803,
        'B2': 3349576192512044199,
        'B3': 53708,
        'B4': [{'C1': [713897872, -2120687819],
                'C2': 2980623944,
                'C3': {'D1': 53921,
                       'D2': 11335,
                       'D3': [0.21417629718780518,
                              -0.1272747963666916,
                              -0.5377141237258911,
                              -0.3283519446849823,
                              0.5630698800086975],
                       'D4': [-8337642441777983250, -8496027842478806961]}},
               {'C1': [-134507258, 363795334],
                'C2': 3718565402,
                'C3': {'D1': 27588,
                       'D2': 19607,
                       'D3': [-0.9299532175064087,
                              -0.742564857006073,
                              0.8119153380393982,
                              0.11563116312026978,
                              0.7712745666503906],
                       'D4': [2398685813879660561, 1003221878891370435]}}]},
 'A4': -6848981729293119084}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x8bMGXBc>\xe3z&\x06\x89\xe9\xcd\x00\x84\xe5\xec\x9a\x8b\xbeE\x02;'
 b'\xba\xa1@\xef1)A\x9b\xec\x89\xf4\xa8\x89\\\xa9\x8eW\x8csJD\xbc&\t]\xe4\xe3>'
 b'\xeb\xab\xa9\x84%8\xbd\xe3da\xc8\xb7(+\x1d?\xef\xfb+\x06\xfcwf\xbf\xedzM\xb4'
 b"\xafkt\r\xc6\x90R\xacT\xb4`\x1eJ'3\xea\xf9r\xab\x8e\x9b\xd0?\xc4"
 b'\xceW\xe3\xd0\x9e\x88\xbfd\x9fa\xa0\xb2\x12\x00\xa2\xaa\xb9\xba\n1'
 b'\xfac\x95\x06{\xa5\xca\xa2\xc6\xec\xf8[\x1d\xb3K\xde\xbc\x9f\xab\x9c'
 b'\xdb\xa2\xbf\x00\x00\x00\x02\x00>\x02-\xa3\xc1E"\xb0*=\x03\xab\xcf\xdb \xbf'
 b'E\xdcg')

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

{'A1': 1665065850,
 'A2': 637962729,
 'A3': -51,
 'A4': {'B1': 198,
        'B2': 17075498170295508668,
        'B3': -1616143141,
        'B4': 41663,
        'B5': [{'C1': 200,
                'C2': 3072863005,
                'C3': [0.9994101654481085, -0.9211796311386551],
                'C4': 231116882,
                'C5': -6028995676224215245,
                'C6': [-22, -7]},
               {'C1': 114,
                'C2': 2878249936,
                'C3': [0.16254709838652937, -0.0025174052039480532],
                'C4': 2729097658,
                'C5': 734643519847037861,
                'C6': [-54, -94]}],
        'B6': [557, -23615, 17698, -20438, 15619, -21553, -9440],
        'B7': -0.7728943228721619},
 'A5': {'D1': -6676, 'D2': -102, 'D3': 139, 'D4': -0.1923913210630417},
 'A6': [-1163837201,
        824787355,
        -326503256,
        -1990415986,
        1468822346,
        1153181193,
        1575281470,
        -341071484],
 'A7': 9528,
 'A8': -0.11103130131959915}

Пример 2

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

(b'\x8bMGXBd\x88\x97\xa1U\x04\x9e\xbb\xe6\x00\x84\xd3\xe8X*\xbfQ\xd3\xb6'
 b',L\xda\xce\xf1\xd9\xc5\xde5\xf2<\x04lTcd\x18]\xb8\x92\x8e\xe5+\xd2\xcb3`?'
 b'\x811\r\xd0\xe6U?\x1d\x83\xd7\xaa\xd7\xc5S-\xbf\xd7\xa9i\xf4\xeb\xa2\x10\xbf'
 b'\xa5\xb4)7l?\x00#\x8b\xeb\x0cb\xd6\x9d\x86n\x9f\xf34\x06\xe2y\x12~'
 b'\x9b\'\xbf\xe4\xce\x90\xfa\x053`\xbf\xe9Rs\x15s\xfa\xb8\x94C*Zj\n\x1e$n"'
 b'0\xf3\xbc\xad\xc3\xf7\x00\xa9\xc3t\x8b\xa4:"n\x05z\xfaJ\x00\x00\x00\x02\x00'
 b'>\xeb\xcf^\xda\xf6\xad\xbf\xb5D\x1b\xb2\xcc\xbdD?\x06\x9c\xe6')

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

{'A1': 1686673313,
 'A2': 1426366139,
 'A3': -26,
 'A4': {'B1': 195,
        'B2': 17798412384307225658,
        'B3': 577635706,
        'B4': 64074,
        'B5': [{'C1': 170,
                'C2': 3620033325,
                'C3': [-0.36971520345699194, -0.04239014436291022],
                'C4': 596372236,
                'C5': 7122053061440172852,
                'C6': [6, -30]},
               {'C1': 121,
                'C2': 310287143,
                'C3': [-0.6502156146249085, -0.7913146418576025],
                'C4': 2487429722,
                'C5': 7640952859602858227,
                'C6': [-68, -83]}],
        'B6': [-5169, 24282, -2387, -16459, 17435, -19764, -17084],
        'B7': 0.5258315801620483},
 'A5': {'D1': -11288, 'D2': 88, 'D3': 42, 'D4': -0.8196367025375366},
 'A6': [743234254,
        -237386274,
        905067524,
        1817469796,
        408795282,
        -1897583662,
        -885825473,
        -2127491632],
 'A7': -6571,
 'A8': 0.6152929663658142}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'UQCB\x00\xed\xba\xc0\xcc\x0b\xbe\xe6\x92\x0f\xdex\x1b\x9b\xe0\xa8'
 b'\xcbI\xba\x89\xba\xee?\x02\x00d\x00\x00\x00\xcf]k\x1c\xa2\xc5,\x14`\xb4\x9e'
 b"\x90T\x92\xb1\x02[\x85'\xbf+B1\x004\x00k\xf4\xda\xca\x7f\x15\xcewxwxqm"
 b'pb\x02\x00\x00\x007\x000\x18\x88\xf2\xc5P\xcf?6\x1b\x07\x00;\x00\x00\x00'
 b'\x85\xb2E\xf2\xf3\xed3O')

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

{'A1': {'B1': 'wxwxqmpb',
        'B2': [{'C1': 34139, 'C2': 39}, {'C1': 11199, 'C2': 66}],
        'B3': 0.24465250341762745,
        'B4': 6966,
        'B5': [107, -12, -38, -54, 127, 21, -50],
        'B6': 4064653957},
 'A2': -17683,
 'A3': -0.13652324676513672,
 'A4': {'D1': -2262184181887954202,
        'D2': 0.9602707518046047,
        'D3': [-4621, 20275]},
 'A5': [476798415, 338478498, 2426319968],
 'A6': 45191764}

Пример 2

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

(b"UQCH\x00\x97\xca\x83`;?`\x94\xb2\xc4\x88'\x91R~\xe8\x9d#\xa4\x8a\xe2\xbf\x02"
 b'\x00j\x00\x00\x00\xfc\xc3\x89\x11\xef\x10\xed\x06hzD\x068:@\xa9\xa9\xbb\xdd'
 b'\xfcu\xde;\xb1\xaah\x01N1\x004\x007\x00:\x00\xe9\xd3Aipyfcjct'
 b'\x04\x00\x00\x00=\x00\xe0\xe8G\xed\xe8\xc1\xe4?\xe8m\x03\x00E\x00'
 b'\x00\x00\x13m\x88\xe1\xdc\x93\xa6\x96')

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

{'A1': {'B1': 'ipyfcjct',
        'B2': [{'C1': 48041, 'C2': -35},
               {'C1': 30204, 'C2': -34},
               {'C1': 45371, 'C2': -86},
               {'C1': 360, 'C2': 78}],
        'B3': 0.6486706385033152,
        'B4': 28136,
        'B5': [-23, -45, 65],
        'B6': 3783814419},
 'A2': -13673,
 'A3': 0.7319414019584656,
 'A4': {'D1': 5949580051102209120,
        'D2': -0.5794239707604587,
        'D3': [-27684, -26970]},
 'A5': [294241276, 116199663, 105151080],
 'A6': -1455408584}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XQB\x87\x00E\x00\x04\x00\x00\x00{f\xac(\xb8\x0f\x863Crkxzb\xd5\xc2\xbf'
 b'*Xh\xc3\xe9\xba\xa61`\xaa\x0fd\x02\x87)\x89|\xa3\x81\xf7\xdc\xbf\xdd\xbb'
 b'fAN\xbf\xec?\xd1U\xac\x0f\xd1\xc3p3E\x00Q\xf6\t\x96$U\x80\xfb'
 b'\xe7\xc9\xc0\xad\xc6d\x1bH\n\\,b\xbe!\xad@*MT\xd2\xa0\xb0VW\x97Q\xc7b'
 b'\x7f\xe4@\x9d\xc3\x8c~^\xb5e\xa7<\x82WE\xbe\xcb9s\x12^\xc4$')

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

{'A1': {'B1': 246,
        'B2': 9,
        'B3': [{'C1': 38436, 'C2': 1434516455},
               {'C1': 51648, 'C2': -1379507173},
               {'C1': 18442, 'C2': 1546412734},
               {'C1': 8621, 'C2': 1076514132},
               {'C1': 53920, 'C2': -1336518761},
               {'C1': 20935, 'C2': 1652548672},
               {'C1': 40387, 'C2': -1937875275},
               {'C1': 26023, 'C2': 1015174981}],
        'B4': -0.39692267775535583},
 'A2': [18, 94, -60, 36],
 'A3': 7398333058862428995,
 'A4': 'rkxzb',
 'A5': -10814,
 'A6': -0.6654114723205566,
 'A7': -4329724343784265201,
 'A8': {'D1': 100,
        'D2': [647, 10633, 31907],
        'D3': 33271,
        'D4': 220,
        'D5': -0.46456295373627543,
        'D6': 0.270854011009809,
        'D7': 860160081}}

Пример 2

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

(b"XQB\x87\x00E\x00\x02\x00\x00\x00{\xda\xe4\x9b\x87\xceJ\xc1hrgraeg'<"
 b'\xfe\xdbK\x17Zv\xf4\xaf\x03\xdeBi)\xda\x0f\rX\xa6\xbfIP?\xe2\xca\x14\xfbIr'
 b'b\xbf\xec\xa6\x00\xca\x97\x91V\x19<\xf3B\xe2\x9f7\x14Y\xac%\xdbS%4'
 b'\xe1\x8b\xf7\x7f%aW\xc2\x96\x8aZ@\x98p\x18\x0b\xf66\xd5\x84)\x0c\x80\x8fANyp'
 b'AFX\x08s,W\x93kk\x01=\xd9\x85\xe5\x0ct')

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

{'A1': {'B1': 226,
        'B2': -97,
        'B3': [{'C1': 14100, 'C2': 1504454107},
               {'C1': 21285, 'C2': 887196663},
               {'C1': 32549, 'C2': 1633141398},
               {'C1': 35418, 'C2': 1083731992},
               {'C1': 3062, 'C2': 919962665},
               {'C1': 3200, 'C2': -1891545479},
               {'C1': 28737, 'C2': 1180174451},
               {'C1': 11351, 'C2': -1821676799}],
        'B4': 0.10621241480112076},
 'A2': [12, 116],
 'A3': 15772902802542215528,
 'A4': 'rgrae',
 'A5': 26407,
 'A6': 0.031110426411032677,
 'A7': 1682788204056665666,
 'A8': {'D1': 105,
        'D2': [10714, 3853, 22694],
        'D3': 48969,
        'D4': 80,
        'D5': 0.5871682079264924,
        'D6': -0.8952640492321204,
        'D7': 423424834}}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xfdZOWMzgfwa\x02\x00K\x00\x00\x00^T.\x9a\xfd]\xee?\x05\xc9\xf4G'
 b'\xba\xf9\x87\xea\xb9P\xee9>\x1bXA?\xbc\x8aX1\\\x0c2\xeb\xcb<\tN4\xf8\xf2w2tM'
 b'\x00\x00\x00`\x00\x00\x00s\x00\x00\x00\xbb\xd5\x1a\x08ngBaF\xde#\x12\xec'
 b'\xbfy\xe9\x94`\xe8\xb7d\xd6xJ\xbez\xc4\x14\xf8\xab\x9b\xe4?\xe4\x9c\x0b\xa4'
 b'+\x174(\x04j>\x84\x8cZ\xc8\xe6\x7f\xd7\xbf\xa2\r\x1ar\x88\xaa\xba\xf9\x99'
 b'\xc0\xbe')

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

{'A1': 'zgfwa',
 'A2': {'B1': 'ng',
        'B2': {'C1': 0.9489734660479703,
               'C2': 16899750705197533445,
               'C3': 185,
               'C4': 0.18157315254211426},
        'B3': 0.7552506327629089,
        'B4': -30020},
 'A3': 207368536,
 'A4': 0.024892423301935196,
 'A5': 8372886542665141769,
 'A6': [{'D1': -0.8772143689448415,
         'D2': 121,
         'D3': -396323607,
         'D4': [183, 100],
         'D5': -0.19772657752037048},
        {'D1': 0.6440028996786531,
         'D2': -28,
         'D3': 732171164,
         'D4': [23, 52],
         'D5': 0.22853147983551025},
        {'D1': -0.3671814877108732,
         'D2': -94,
         'D3': -2005788147,
         'D4': [170, 186],
         'D5': -0.3761747181415558}],
 'A7': 135976379}

Пример 2

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

(b'\xfdZOWMqbgqr\x02\x00K\x00\x00\x00\x00\x00&\x00o\x16\xbf\xbf\xe5\xdb\xeb\xf8'
 b'X\x8f#\xb2\x14qB`\xbf]Z \xbfy7\xb8I\xc5.\x8bY\x99\xbc\xf7\xfc\xce\xbfF'
 b'W\x8e\xd2M\x00\x00\x00`\x00\x00\x00s\x00\x00\x00\xc5\xe7\xeb\x90n'
 b'v\xb8\xfb\xaf;\x01\xae\xda\xbf\t \xd5\xd0\xd5v\xb8;\xd9\x1e?\xf0{\x9bN'
 b'1\x9e\xef?\x1c\xc6\x12L\xfa\xd1\x86\xda?A\xbf\x10m\x1aC@D\xba?\xd2`\xa9&6'
 b'\x8d\xfb\xf8r\xf7\xbe')

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

{'A1': 'qbgqr',
 'A2': {'B1': 'nv',
        'B2': {'C1': -0.12143605950950587,
               'C2': 12836260975232146405,
               'C3': 20,
               'C4': -0.8760138154029846},
        'B3': -0.6263788342475891,
        'B4': 14201},
 'A3': 784681400,
 'A4': -0.01871945522725582,
 'A5': 15172160156035120375,
 'A6': [{'D1': -0.41687041119433443,
         'D2': 9,
         'D3': -707734240,
         'D4': [118, 184],
         'D5': 0.6205021739006042},
        {'D1': 0.9880606208133695,
         'D2': 28,
         'D3': -95677754,
         'D4': [209, 134],
         'D5': -0.7548805475234985},
        {'D1': 0.10260392797720308,
         'D2': -46,
         'D3': 908503392,
         'D4': [141, 251],
         'D5': -0.48329901695251465}],
 'A7': -1863587899}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\x9bCCML^\x83\xbeW\xa26\xec?F\x00\xb7f\xb6>t\x00|\x00\x84\x00\x8c\x00\x94'
 b'\x00\x9c\x00\xa4\x00\xac\x00\xfa\x15\x89\x9d\xf79\xdfyF\x98\xa0\xb4\x83'
 b"'\xc0x\xcctvnuv\x1e\x05\x004\x00\x00\x00i\xf20?\xc219\x00}U\xe0\x13"
 b"\x17\x19\x0c\xbc/23?A\x1c0\xbf?'Y>\x90\x05;?@\x00\x00\x00\xf8\xde\x07\x05"
 b'\x1f\x80V\x894\xe8&\x05\xb0\xcf\xde?\xfa\xeag\x07\xbd\xd3k\xb7!c\xce\x0f'
 b'\x07\xd6\x11G\xdf\xc7\x9dIP\x98H\xcfS\xa5Hm\x82)\xd9\x1c\x16\x89\xbc\n'
 b'\xba4\xa0;\x05A@y\xfc+\xb2,\xe1,\xa5\x15\xc3\xf8\xd3\xbd\xdd\xb5\xa8\xa6'
 b'\xea,\x91\xa7')

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

{'A1': 0.8816692079309225,
 'A2': {'B1': {'C1': 30, 'C2': 'tvnuv'},
        'B2': 333469053,
        'B3': 6423,
        'B4': {'D1': -17396,
               'D2': [0.6999844908714294,
                      -0.6879311203956604,
                      0.2120637744665146,
                      0.7305536270141602],
               'D3': {'E1': 0.6911988854408264, 'E2': 12738},
               'D4': 84401912},
        'B5': 2304147487,
        'B6': 0.48142624381182775},
 'A3': 0.35625240206718445,
 'A4': [{'F1': 60154, 'F2': [103, 7, 189, 211], 'F3': -18581},
        {'F1': 25377, 'F2': [206, 15, 7, 214], 'F3': 18193},
        {'F1': 51167, 'F2': [157, 73, 80, 152], 'F3': -12472},
        {'F1': 42323, 'F2': [72, 109, 130, 41], 'F3': 7385},
        {'F1': 35094, 'F2': [188, 10, 186, 52], 'F3': 15264},
        {'F1': 16645, 'F2': [64, 121, 252, 43], 'F3': 11442},
        {'F1': 11489, 'F2': [165, 21, 195, 248], 'F3': -16941},
        {'F1': 46557, 'F2': [168, 166, 234, 44], 'F3': -22639}],
 'A5': 250,
 'A6': 5078335494897371413,
 'A7': 14733737456888488088}

Пример 2

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

(b'\x9bCCML\x18\r\x91+\x898\xe0?E\x00\xbd\x91\xa6<s\x00{\x00\x83'
 b'\x00\x8b\x00\x93\x00\x9b\x00\xa3\x00\xab\x00\xa2\xf2-\xe6\xd4i\xa7\x10)'
 b'V\x90Q\x8e\x0e\x0e\x93\xc2eksfv\x04\x004\x00\x00\x00\xe1\xe6\x06\xbf\xc9'
 b'v8\x00\x08\x93+\r\xaeW\x16\xf0\x81\xd1m\xbf\xa0f\xa2>\x1dd\x17\xbe\x9f'
 b'"\xe5=?\x00\x00\x00\xc9BD\xc2\x94\x02\xad. \xfe\x04\xb3\x98Y\xba?\xba'
 b'N\xa9\xa8;FRX\xf0\x81\xf8<lu\xfa/l\x1f\xab\xa4\x95\xeco\xd6\x9d\xb6\xe8*='
 b'\xe0!2\xe7d\xb3\xca\xcd\xfd\xf7W\x82\xe5\xdd\x04q\xc6\x9a_\xff\xd5w2\x00'
 b'g\xfd\x96\xae\x93\x91U\x92\x12\x92a')

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

{'A1': 0.5069013453398012,
 'A2': {'B1': {'C1': 118, 'C2': 'eksf'},
        'B2': 220959496,
        'B3': 22446,
        'B4': {'D1': -4074,
               'D2': [-0.9289780259132385,
                      0.31718921661376953,
                      -0.14784283936023712,
                      0.11188244074583054],
               'D3': {'E1': -0.5269604325294495, 'E2': 30409},
               'D4': -1035713847},
        'B5': 783090324,
        'B6': 0.10292963381379439},
 'A3': 0.020333165302872658,
 'A4': [{'F1': 20154, 'F2': [169, 168, 59, 70], 'F3': 22610},
        {'F1': 33264, 'F2': [248, 60, 108, 117], 'F3': 12282},
        {'F1': 8044, 'F2': [171, 164, 149, 236], 'F3': -10641},
        {'F1': 46749, 'F2': [232, 42, 61, 224], 'F3': 12833},
        {'F1': 25831, 'F2': [179, 202, 205, 253], 'F3': 22519},
        {'F1': 58754, 'F2': [221, 4, 113, 198], 'F3': 24474},
        {'F1': 54783, 'F2': [119, 50, 0, 103], 'F3': -26883},
        {'F1': 37806, 'F2': [145, 85, 146, 18], 'F3': 24978}],
 'A5': 162,
 'A6': 2959049028167675378,
 'A7': 14020565520614527062}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'9NFWas\x06\xf8d\x9d\xcb\xd2*\\Cy\x00\x00\x00\x88\x00\x00\x00\xb6'
 b'\xeb\x85L\xc5\x9d\xc3\xee\xce7\x10y\xf9U\xabh\x90\xce\xcf\xe0}=\t!\x02'
 b'\x93\xb5tl\xb0]\xe6z\xa959y\x02C\xa1Cz"\x9e\xa2\x89,\xd1\x865\xd0\x0cO'
 b'\xac\xdd\xdd\xf2\xab\x80\x0eg\xfeF\xbfd\x02\x00\x97\x00"c\x8fd\xe41\xee\xbf'
 b'\x96\x92\xc4>d#O?\xb3\x82\xbc\xbe\x03\x92)\xbfZP\xd5\xc8\xb5\xc0\xc9\xa7'
 b'\xcf\xa1\xf1nBu}w\xedB)?\xe6\x18r\x04\x9fi\xe4\xc3\xef\xd4\xbf\xafh\x0ePR'
 b'4e#\xa8\xa32\xdcq\x8a\xdaW\xaa`49')

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

{'A1': 'as',
 'A2': 6,
 'A3': {'B1': 4853801583246140664,
        'B2': [{'C1': 192,
                'C2': -1580226615,
                'C3': 28401,
                'C4': 4551242486113989954},
               {'C1': 230,
                'C2': -1627098600,
                'C3': 58473,
                'C4': 5768663276755152835}],
        'B3': {'D1': 17204768472203389878,
               'D2': 206,
               'D3': [-8040988748923989961,
                      153414022016847822,
                      8855868729585874323,
                      4873249949694375337,
                      -8732149232844266886,
                      -946356614547582923],
               'D4': 1729003691},
        'B4': 1690257150,
        'B5': [15866924379723347026, 4122025843685493361],
        'B6': -0.9435903514923647,
        'B7': [0.38393086194992065,
               0.809133768081665,
               -0.3681846559047699,
               -0.6623842120170593]},
 'A4': 90,
 'A5': -1245129392}

Пример 2

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

(b'9NFWza\x82\x82\xcf\xb5\x89\xfd\xcbA\xedy\x00\x00\x00\x88\x00\x00\x00\xf9'
 b'(P\x88\x03\x88^m$e\xb8\xb4\xa5>\x81k\xdd\xce\xfb\xf0\xbaJ\xec\xb3\x92'
 b'2K\xd7\xd0\xaa{\x85^\x8f\xf2Q\xe3\xb9w8\xe6\xeb\xbe\x9bgr\xcf\xa7l'
 b'\xca\xbf\xf1Mq\xff\x9e"\xba\xa1\x1d\x0b\x90\x13W\xe4\x02\x00\x97\x00t2\xfaF'
 b'\xa2\xd1\xda?\xcd\xac\xe3>\xaaI\xe5\xbe]\x9e\x0b?\xe0LF>\xdf\xaa\x85F'
 b'H\x85\xc8\xae\x92\x03B\x84\x82\xb9\xf4\x81IIgE2\xa4x}\xd0\xe9\x8b{\x16\x15BE'
 b'\xc6\x94\xa5\x8d}\xec\xe6\x04\xe6\xa7:?p\xa8\x06\xe1q*d')

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

{'A1': 'za',
 'A2': -126,
 'A3': {'B1': -1350574123436879998,
        'B2': [{'C1': 133,
                'C2': 59944648,
                'C3': 33858,
                'C4': 5001046491279964546},
               {'C1': 50,
                'C2': -797083484,
                'C3': 35817,
                'C4': -6515364760134543749}],
        'B3': {'D1': 7880885946698180857,
               'D2': 36,
               'D3': [-2491755862751397787,
                      -7875691517632775218,
                      6810985985046170418,
                      -1857603206023875953,
                      7829454567478378219,
                      2494712105713909706],
               'D4': 186491322},
        'B4': -464055408,
        'B5': [4226599684039015821, 7217706564107923519],
        'B6': 0.41904503756885636,
        'B7': [0.4446777403354645,
               -0.44782763719558716,
               0.5453851819038391,
               0.19365262985229492]},
 'A4': 223,
 'A5': 1212581290}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FBZ\xef\xaa\xfb>:|4\xbfY\x00\x00\x00\xd2\xff\xfc0X,\x911\xbd\xb9\x03\x00\x8a'
 b'\x00@\x15G\xbf\xd3\x15\x97\xbf\x0fy\xaf\xaf?\xcd8\xef\xbe\xda\xf0\xd4v\x97p'
 b'b-\xc5\xc7\x9e\xad\x11+\x18\xc1\xad\x8d\xady\x16\xe0I\x16\x12 \xe0\xb2\x82e'
 b'\x01\xcd\xd1\xbd-R=\xee\t\xbb\xec\xd9\x8aUgsz\x02\x00\x00\x009\x00\xd8'
 b'\xde\xbdg\xf26\xf2\xbb\x0c\x17\x02\x00\x00\x00I\x00XD\xbfb\xa6\xe4\r\xc0\xf8'
 b'8D\xd8\xd6}\x00#\xa0\xc9\xbfg\xabM\xbf\xf2]\xf5[\x1cj`\x96\xad\xe4\xdd\x1f')

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

{'A1': 0.49153849482536316,
 'A2': -1087079366,
 'A3': {'B1': 26453,
        'B2': 'sz',
        'B3': [{'C1': [12505842785123504557, 16149928150688601721],
                'C2': 57048,
                'C3': 921855933,
                'C4': 386710514},
               {'C1': [3296021180727001778, 10005288335249915218],
                'C2': 17496,
                'C3': -458857793,
                'C4': 955826189}],
        'B4': 68,
        'B5': -0.2001994850540345,
        'B6': -0.8033966422080994},
 'A4': 3571684736772145106,
 'A5': 47549,
 'A6': [1542807026, 2522901020, 534635693],
 'A7': {'D1': -0.022544201421415666,
        'D2': [2947512591, 4013477183, 3572554430, 1651545974]},
 'A8': -1631075027}

Пример 2

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

(b'FBZ\xd0\x1b:\xbeW\xef\x8f\xc8i\x00\x00\x00f\x95%\x15\xcdYI\x11\x89'
 b'\xc5\x03\x00\x9a\x00\xda&\x94\x96\x9e\xd6\xe6\xbfr\x91\xdb\xaf\r\xec\xa2'
 b'\xfb\xdd\xb6!\xc2\xa14}\xf2\xe4TI;l.\x13\x8a\x18\xbfL\xd7wk#\xb1]T?'
 b'\x95\x8e\xdb\x88Z^\x12uq\x03/\xc5\x06}\xb3b\x1cd(\xc2U\x02\xc9\xea'
 b'\xa6Z\x9e\xdf\x03t\xd8\xca\r\\\xe9jx\x03\x00\x00\x009\x00f\x1boL\xdb'
 b'\xb0kL\xc3\xb1\x03\x00\x00\x00Q\x00U\r/\xd0@\xc2\x9d>\xe0N\xd6\x98>\x06uD+'
 b'\xc2\xbf\xc0\xd8j\xbf\xdaN\xd3\xa4m\x8e~\x97RRB/')

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

{'A1': -0.1817467212677002,
 'A2': -930091177,
 'A3': {'B1': 59740,
        'B2': 'jx',
        'B3': [{'C1': [15513984928501149292,
                       10754407196564614007,
                       8175460895016147854],
                'C2': 7014,
                'C3': -1327805329,
                'C4': -1312600981},
               {'C1': [2045394530345496323,
                       12027646766712236132,
                       993844660581408346],
                'C2': 3413,
                'C3': -1035939793,
                'C4': 1323318941}],
        'B4': -42,
        'B5': -0.14194541658479376,
        'B6': -0.9173698425292969},
 'A4': 1245625509302605158,
 'A5': 50569,
 'A6': [2765311706, 2541653613, 792875602],
 'A7': {'D1': -0.7136986676207144,
        'D2': [2950402418, 4221758477, 3256989405, 4068291745]},
 'A8': 994661604}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'VXDU:Q\x00`\xd0qdwrx3\x1f\xa7\xea\x0c\xf1O5\xc2<\xd1\xa8\x0f`\x91j\x02\x00'
 b'\x0e\x00\x00\x00vM\xc9\xa9\xb0\xc7\xf4\xf0\x8f\xfb4\r>\xcf\x17{d<\xa8B'
 b'M;6\xdf?\x80\xed\xd8\x8d\x92\x99\x8e?\xa8\xed\x01H\x9e\xbe\xc5'
 b'\xc9\x94\x15\xe4?\x05\x00\x00\x00\t\x00\x00\x00\x9e\xb0\xa1\xeb\xb9\xaaA'
 b'\xae\xc0\xe1\xe42\x82X\x9e&\xb1\xa7-\x1c\x97!\xe0\xeb:pH)\x9b\x9e\xdd'
 b'\xc0\xe0\x13\x9aqV\x87\xdapV^B\x1a\x1e\x00\x00\x00')

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

{'A1': {'B1': 'qdwrx',
        'B2': [{'C1': -5890239122124984162, 'C2': 57792},
               {'C1': -6363262336966184220, 'C2': 7213},
               {'C1': 2974750952245961111, 'C2': 40603},
               {'C1': -8694637124019765027, 'C2': 28890}],
        'B3': 440557142,
        'B4': {'D1': [3841554044949045043, 7679024460016467138],
               'D2': -1084022048712733322,
               'D3': 8869785856545979279,
               'D4': 100,
               'D5': [0.4876850370880026, 0.014941353753889386],
               'D6': 1208085928,
               'D7': 0.6276344242923704}},
 'A2': 53344}

Пример 2

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

(b'VXDU:P\x00\x92\x04pfma\xd9\xf5\xdf\x8e\xd1\x939W)\xa2\xc67\xe4\xdc\xfd'
 b'u\x02\x00\r\x00\x00\x00B(\xf6\xcc\xea\xb2\\\xa8)\x1a\xea\x8d\xc2'
 b'\xfe\xfd\xac!4\xa7\xf7\x19\x9d\x94\xe6?\xd0\xe8\xfb\x8f(/\xbd?,=K\xec'
 b'\xa2\xdb\xfd\x92\xb5\xf6\xe6?\x04\x00\x00\x00\t\x00\x00\x00\x84R\xcb\xef'
 b'\x06\xb3L\x01\x1d\xe4\xa9\xab\xbc\xe8\xd1\x9d\x9f=\xb22j\x9a\x9e\xf4'
 b"\xe5\xcb\x1d\n'?j\x8a\x01\xb9\xbe,\xfa\xbc\xf9U{B\n\x9a\x1d\x00\x00\x00")

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

{'A1': {'B1': 'pfma',
        'B2': [{'C1': 93646534642193028, 'C2': 58397},
               {'C1': 4440441282489002921, 'C2': 12978},
               {'C1': 728962903215872618, 'C2': 16167},
               {'C1': -4829498452742141334, 'C2': 22009}],
        'B3': 2584363643,
        'B4': {'D1': [6285217283226727897, 8502194544291783209],
               'D2': -6314975855949502398,
               'D3': -5981344618520110551,
               'D4': 33,
               'D5': [0.7056413180518804, 0.11400083079562084],
               'D6': -330613460,
               'D7': 0.7176158781938862}},
 'A2': 1170}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GAI}\x02\x00g\x00\x00\x00W)\xe36\x03\x00\x00\x00o\x00\x91s\xaa9O\x16\x99\xcc'
 b'\xff\x8ap\xe9\xcb\xa5\xce\xcf\xe8?]\xaa\xcbr\x91\xd2\x1a\x9bvQ\xd4|Y\x13'
 b']\xdd\xdf?\x86Qx\xb5aUhcxkd9\x00\x00\x00\xc8\x8cM=(\xae\xe8\xd3\x06>OI\x14'
 b'\x91mxnlzP\x00\x00\x00\xb0\xd9\xca>q\r\xe3r\xe0>\x00\x00\x00U\x00\x00\x00s'
 b'hf')

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

{'A1': [{'B1': 'hcxkd',
         'B2': {'C1': 81, 'C2': 1432466808},
         'B3': 0.05018308758735657,
         'B4': 44584,
         'B5': 232,
         'B6': 1747},
        {'B1': 'mxnlz',
         'B2': {'C1': 62, 'C2': -1860941489},
         'B3': 0.3961920738220215,
         'B4': 3441,
         'B5': 227,
         'B6': -8078}],
 'A2': 920856919,
 'A3': 'shf',
 'A4': -111,
 'A5': 18432275696018106995,
 'A6': {'D1': 138,
        'D2': 0.7753670919621936,
        'D3': [-21923, 29387, -11631],
        'D4': -25830,
        'D5': 20854,
        'D6': 0.4978859604797894,
        'D7': -122}}

Пример 2

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

(b'GAI}\x02\x00g\x00\x00\x00\xaf\xac\x83\x81\x02\x00\x00\x00o\x00'
 b'\x16\xbb\x0c\xd8\xfdV%\x8b\xda\x90\xdc*$\xccl\xdd\xd8?\xa7\xec>t\xacf'
 b'\x03\xbc\xe6dL\x8a8\x96\xcb\x9b\xe3\xbf@2y\xa8\x91\xe9vmipw9\x00\x00\x00t'
 b'\x0cD\xbdmD\xf2\x1d\xae\xbb@\x8eWqyaxnuP\x00\x00\x00\x05\xd4\xdf=}\xa4'
 b'\xad\xf7y>\x00\x00\x00U\x00\x00\x00is')

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

{'A1': [{'B1': 'vmipw',
         'B2': {'C1': 50, 'C2': -376330119},
         'B3': -0.0478634387254715,
         'B4': 17517,
         'B5': 242,
         'B6': -20963},
        {'B1': 'yaxnu',
         'B2': {'C1': 187, 'C2': 1901563456},
         'B3': 0.10929111391305923,
         'B4': 42109,
         'B5': 173,
         'B6': 31223}],
 'A2': 2172890287,
 'A3': 'is',
 'A4': 22,
 'A5': 15747721577587281083,
 'A6': {'D1': 144,
        'D2': 0.3885147088591745,
        'D3': [-4953, 29758, 26284],
        'D4': -17405,
        'D5': 25830,
        'D6': -0.6127679761887719,
        'D7': 64}}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xceXSMX\xd3\xd3\x1f?V\x1e>K\xd8\xa5\xec\xbfL\x00xjq\x00\x02\x00\xa1\x00\xb8'
 b'\x82\x1e\x90\xf2\x1b%\rZ\xbc\xfc\x93\x98\x16\x9e\x86q\xee(-\x9d\xfeg%\xb9'
 b'\x8dgA\xac/\xc8\x83\xad\x00\xcc\xe1>\xa1\x86\xb7/w\xb1\xb1\xa6{\xd9JV'
 b'0\x00\x00\x007\x00\x00\x00>\x00\x00\x00E\x00\x00\x00\xddB\\\xeeJB(\xe9'
 b'\xab\xc1\x97\xe3P=\xeev\xbe\x8b0\xb0\n%\x04\x00m\x00\x00\x00C\xaafX'
 b'\xc9I\xbe\\*d\x14\x9e\x13\x0b\xc5\x04\xf7\xac\\\xbe\xffA\x8f\xb6%\xba*\xf7'
 b'=VB\x0b\x9a\x95\xf4\x1a\xda((\xb2\xe8\xdd8')

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

{'A1': 0.6243259310722351,
 'A2': {'B1': -0.8952447385390296,
        'B2': {'C1': [{'D1': -2, 'D2': 103, 'D3': 37, 'D4': 1097305529},
                      {'D1': -84, 'D2': 47, 'D3': 200, 'D4': -872370813},
                      {'D1': -31, 'D2': 62, 'D3': 161, 'D4': 1999615878},
                      {'D1': -79, 'D2': -79, 'D3': 166, 'D4': 1447745915}],
               'C2': -1645992774209879331,
               'C3': -85,
               'C4': 1357092801,
               'C5': -0.24114318192005157},
        'B3': 'xj',
        'B4': {'E1': 37,
               'E2': [-117, 48, -80, 10],
               'E3': 67,
               'E4': 26282,
               'E5': -0.19705712795257568,
               'E6': 10844,
               'E7': [-647175795070069660,
                      2717516938790984876,
                      -7346705428950603078,
                      -1679235555132771179]},
        'B5': [-35, 56],
        'B6': -1877048648},
 'A3': 10663605112660106226,
 'A4': -2036459880,
 'A5': 113,
 'A6': 10478,
 'A7': -25299}

Пример 2

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

(b"\xceXSMX'\xccu?\x84\xb4\xe1\xbc\x85h\xe7\xbfL\x00cxo\x00\x02\x00\x9f\x00K"
 b'\x19\xb7y\xdc\xb9\x89\xa8\xd7\x8d\x1a\xa6D\xb1u\x9b\x0c\xe2\x9f\xb5\x9b'
 b'\x12\xd7\xa1\xdc\xdb\xab\x03<\x9d\x80\xe63\xa9L%J\xb9\xe1\xa0 '
 b'\xf4\xaa\xd6\xf9\x8b?\x94\xe20\x00\x00\x007\x00\x00\x00>\x00\x00\x00'
 b'E\x00\x00\x00A{\xe7\xfc\x99\xdb\xe1\x8e\xd1\xf9/(\xdd\xe7\x90D?\xac`M'
 b'\x02\x00m\x00\x00\x00\xb9\x82\xd77\x0bI?\xd5\xbfW\xff\xa9\x13\xf1\xfe@pz'
 b'.\xc1\xea\x0c\ru$\n.\x93#t\x98\xa3Q\xfe^X\xe7\xb8\x18\xcbt+\xc3')

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

{'A1': 0.9601463675498962,
 'A2': {'B1': -0.7315090836615501,
        'B2': {'C1': [{'D1': 18, 'D2': -41, 'D3': 161, 'D4': 61594588},
                      {'D1': 60, 'D2': -99, 'D3': 128, 'D4': 1286157286},
                      {'D1': 37, 'D2': 74, 'D3': 185, 'D4': -199188255},
                      {'D1': -86, 'D2': -42, 'D3': 249, 'D4': -493600885}],
               'C2': -8150992396144379071,
               'C3': -47,
               'C4': 3710398457,
               'C5': 0.7678360342979431},
        'B3': 'cx',
        'B4': {'E1': 77,
               'E2': [-84, 96],
               'E3': 185,
               'E4': 55170,
               'E5': 0.7853273749351501,
               'E6': -16427,
               'E7': [8088745242127892311,
                      2627020306769849978,
                      5882713162856476170,
                      8415847511106281214]},
        'B5': [43, -61],
        'B6': 2042042699},
 'A3': 11969034917075597788,
 'A4': -1686785724,
 'A5': 12,
 'A6': 40930,
 'A7': -25675}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ASV\xd3tsyo\xdao\xd4\xc5\xaf\x87#\x9e\xc1kH\xab>_Z\xbb\x00\x00\x00\x02'
 b'\x00\x00\x008\xab\x18\x10\xfec\xb0\x96>\xa0\xb2g\x93\x00\x00\x00@'
 b'\x00\x00\x00a\x89\xad[Jmfg&\x91?\x957\x00\x00\x00\x03\x00:?\xc2\xf23(\xad'
 b'\x0b\xb0\xfc\xaa\xd0\x19\\\x86\x06\x885\xfb\xe1TA\xe39C?"\x1c\x00\x00\x00'
 b'\x02\x00]?^\x00\xffq\x86\x98\x00\xfbO\x8eyq\xa4\x1d\xdc\x0b\xce\x82?UA\x8f')

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

{'A1': {'B1': 'tsyo',
        'B2': 3664762053,
        'B3': {'C1': 2944869278, 'C2': 3245033643}},
 'A2': 1046436539,
 'A3': 'mf',
 'A4': 2870481150,
 'A5': 1672517182,
 'A6': 2696046483,
 'A7': [{'D1': [26406, 37183, 38199],
         'D2': 0.1480163525212368,
         'D3': -4,
         'D4': 43728,
         'D5': 1827482911418743777,
         'D6': 1413604153},
        {'D1': [17215, 8732],
         'D2': 0.0018312925877608244,
         'D3': -5,
         'D4': 20366,
         'D5': 8750955999110352514,
         'D6': 1062551951}],
 'A8': -1985127606}

Пример 2

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

(b'ASV\xd3cabu\x80,\x1d\xec\xda\xd8r\xf4\x95\xdf]\xbd\xfc\x1bD\x8c'
 b'\x00\x00\x00\x02\x00\x00\x008-!\x9d|4\x8f\xa9\xce\xf4\xed3\x8f\x00\x00\x00>'
 b'\x00\x00\x00c\x00\\G|bk\xaf\xd4\x0f\xc2\x00\x00\x00\x02\x00:\xbf\xd3&V(Ak\\'
 b"I\x05\xb9\x0e\xaf\xb1M\xbf\xf0]\x00\\\xc9\xbf'4\xfb\xa5\x84\x91\x0e\x80M\x00"
 b"\x00\x00\x04\x00[\xbf\xeb\xdb@\xbe[\xe0Bi8\x8eQ\xca\x87\xb0'\x99\x08\x8b"
 b'\xc3m#\x94')

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

{'A1': {'B1': 'cabu',
        'B2': 2150374892,
        'B3': {'C1': 3671618292, 'C2': 2514443709}},
 'A2': -65321844,
 'A3': 'bk',
 'A4': 757177724,
 'A5': 881830350,
 'A6': 4109185935,
 'A7': [{'D1': [45012, 4034],
         'D2': -0.2992148774262,
         'D3': 73,
         'D4': 1465,
         'D5': 1058259384946154752,
         'D6': 1556725543},
        {'D1': [13563, 42372, 37134, 32845],
         'D2': -0.8705142705866893,
         'D3': 105,
         'D4': 14478,
         'D5': 5893672253016049803,
         'D6': 3278709652}],
 'A8': 6047612}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'PZCr\x16m;\xbeoL\x05\x03E\x0b\x03\x00\x00\x00)\x00\x00\x00\xb4\xf6\xcc\xa6;B'
 b'\x9b\x95\xe42\x00]\x00\x80\x00\x00\x00\xeb\x8bhnw\xecW\xf5E=gr\xee'
 b'\xf4\xa3\xe2\xdb\xe9\xa5\x9f\x06\x00,\x00\x00\x00i\xee\xb7\xc0\x8c\x13`'
 b'<qO\xd9?\r\xa8*;M\x1eyo\xc7\x84\x80\n\xd7js{\xba\xb9P\xfb\x97d\\'
 b'U\x7f\x08\x00U\x00\x00\x00{\xc1\xe6&\x085\xe2\x19\xb3\x88\xcf?\xb5\xeb\xd5_'
 b'w!\x7f#k\x8b\xb7\x9b\xfb\xd3\xeb\x11')

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

{'A1': 114,
 'A2': 22,
 'A3': 109,
 'A4': {'B1': 812058629102353979,
        'B2': 'hnw',
        'B3': -76,
        'B4': 16471241920948391158,
        'B5': [{'C1': -6491415621418029454,
                'C2': -97,
                'C3': [-20, 87, -11, 69, 61, 103],
                'C4': -1061687703,
                'C5': 0.3954737748720667,
                'C6': 8032484727445956621},
               {'C1': 6150901795000465850,
                'C2': 127,
                'C3': [-57, -124, -128, 10, -41, 106, 115, 123],
                'C4': 652657019,
                'C5': 0.2463592411408302,
                'C6': 2557799909962410933}]},
 'A5': {'D1': 107, 'D2': 4221286283, 'D3': 211, 'D4': [-21, 17]},
 'A6': 35819}

Пример 2

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

(b'PZC\xff;\xbdj\x137\x96L%\xc4\xe6\x03\x00\x00\x00)\x00\x00\x00\xe9\x8d'
 b'h{\xae\xb2\xf5\x06L3\x00[\x00~\x00\x00\x00\xcemcxwQr\x8f\xc1\x944RS'
 b'\xfa\x00K]O\xaa\x99R\x07\x00,\x00\x00\x00a\x93b\x0f|P<\x06\xe1h\xe8\xbf.\xa9'
 b'\xae\x16\xb6C\xd1\x02\x1c\x7f\xd7\xb6\xbeb\xa6\xdc\xbex\x18%\xdf\x8f'
 b'\x05\x00V\x00\x00\x00W\xf8\xc5\xb7@\xcb\x9e]\xf8\x90\xad?R\xae]\xd0\x1b#'
 b'\x87.L \xe5\xa9\x0c\x8d\x159')

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

{'A1': -1,
 'A2': 59,
 'A3': 189,
 'A4': {'B1': -1818287338682903702,
        'B2': 'cxw',
        'B3': -23,
        'B4': 5478336144523094157,
        'B5': [{'C1': -7373994177756857773,
                'C2': 82,
                'C3': [81, 114, -113, -63, -108, 52, 82],
                'C4': 258118497,
                'C5': -0.7628026124753116,
                'C6': 203017907552037166},
               {'C1': -2367459122236053918,
                'C2': -113,
                'C3': [28, 127, -41, -74, -66],
                'C4': -1211762601,
                'C5': 0.057746659687288204,
                'C6': 3352687049967513170}]},
 'A5': {'D1': 76, 'D2': 212460832, 'D3': 141, 'D4': [21, 57]},
 'A6': 28110}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BIVd\xf0\xce`\x00\x00\x00\xb6\xb6J3,(\x8b\x85\xd4$\xd0d\x02\x00\x00\x00j\x00'
 b'\x00\x00\xdf:)\xa7\xc9\xf7\xe4&\x05\x00z\x00\xfd\x11?\xc4\xfd\xae\xa2g>$'
 b'\x81\x02\x00\x00\x00\x84\x00\x00\x00\x81`\xfe\x84X6\xbd\xd7\x03\x00\x94'
 b'\x00\xd8\x93\x9a>\xb5\xd7_\xec\xe8\x9dGP\xf1z\x10\xbe\xe9\xc0~jwdc'
 b'\xe5b\xbe\xfc\x04\x00\x00\x00\\\x00>U`(9\xae\xe1?`2\x91\x94#\xf7\xcc?-\x8c'
 b'Z\x19-\xb2\xe4\xae\x90\xed\x00\xd3\xd5\x1a\xf6\xd2\x9a?\x00z1\x17'
 b'\x01\xaf\xec\xbf\xd5q_\xb6\xf5{')

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

{'A1': -16,
 'A2': {'B1': -50,
        'B2': {'C1': -54631707, 'C2': 'jwdc'},
        'B3': -74,
        'B4': [{'D1': 19126,
                'D2': 14998346329080998963,
                'D3': 100,
                'D4': [0.5525174892997382, 0.2262920833039912],
                'D5': [-33, 58, 41, -89, -55],
                'D6': 247,
                'D7': 9956,
                'D8': [35885, 6490, 45613, 44772, 60816]},
               {'D1': 4605,
                'D2': 2611638782339695679,
                'D3': -127,
                'D4': [0.02619537867345212, -0.896362824725486],
                'D5': [-127, 96, -2, -124, 88],
                'D6': 54,
                'D7': -10307,
                'D8': [29141, 46687, 31733]}],
        'B5': 0.3019092082977295},
 'A3': 3965704117,
 'A4': 232,
 'A5': 4048570269,
 'A6': 4218,
 'A7': 2126571966}

Пример 2

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

(b'BIVdTI`\x00\x00\x00\xb3\xf4e_LXV&\xb4\xcf\x045\x02\x00\x00\x00j\x00'
 b'\x00\x00)\x86\xcc\xbcm{k\x9a\x04\x00z\x00C\xcc\xd9\xad$3\x85\x01\x99\x0f'
 b'\xe6\x02\x00\x00\x00\x82\x00\x00\x00\x04\xa6R\xb6q\xec\xf4\x87\x05\x00\x92'
 b'\x00\xd2%\x15\xbfqr\xff\x90^;x\xf7\xaa0\xed\xe1\xd2\xae\x80hvxcB\xcc\x1a\xd7'
 b'\x04\x00\x00\x00\\\x00 \x16\x06\xfc+M\xc7\xbfX9\x1a\xccm\xf8\xc0?\xb1\x19'
 b"\xd2\xd2\xa7\xe6\xcd\xcd \xfdC'\x9c\xcb\xc2?\\\xa6\xb19\x13\x8e\xe7?\xa2\xe2"
 b'\x88\x08:BU6\xd7\x89')

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

{'A1': 84,
 'A2': {'B1': 73,
        'B2': {'C1': -686109630, 'C2': 'hvxc'},
        'B3': -77,
        'B4': [{'D1': 26100,
                'D2': 346693773081201759,
                'D3': 53,
                'D4': [-0.18204259687279123, 0.13258144823016482],
                'D5': [41, -122, -52, -68, 109],
                'D6': 123,
                'D7': -26005,
                'D8': [6577, 53970, 59047, 52685]},
               {'D1': 52291,
                'D2': 1123931253605969369,
                'D3': -26,
                'D4': [0.14683868329300598, 0.7360931517443521],
                'D5': [4, -90, 82, -74, 113],
                'D6': 236,
                'D7': -30732,
                'D8': [58018, 2184, 16954, 13909, 35287]}],
        'B5': -0.5826083421707153},
 'A3': 2432660081,
 'A4': 94,
 'A5': 2868344891,
 'A6': -4816,
 'A7': -2136026399}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"\xa4TQG'Y\xf1\x8d\x98\xd4\xd8t\x1e\x1a\x9c\xf9\x80\xaaF\xe3?\xc5\xbb\xff"
 b'\xb7Y\xfc\x80\xd8"\xf3\xa0aK`\xe5?\x1f\x82\\!\x8a\xc1\x97\xb5\xf9\x82\x1a'
 b'3T\xc8h?F\xf5\xfb\xf1\xfb\x05\x00\x00\x00a\x00,[\x1c\xa3\xca\x05\x00\x00'
 b'\x00f\x00\x03\x00k\x00\x01L\x18X]j\xce\xc4c\x00\x88\x03\x00\x00\x00q\x00'
 b'\x14F\xe7\xa3\x80\x1a\x91\x12Mg\xf2T\xe8k3\xefO\xca\x8a\xeb1\x82\x8a\x0b'
 b'\x18^\xc8\x86\xe8')

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

{'A1': 39,
 'A2': 2194617326040379737,
 'A3': 0.6023762244266238,
 'A4': 15600746571480677317,
 'A5': 0.6680046946345082,
 'A6': -5361604032351927777,
 'A7': 857375481,
 'A8': {'B1': 0.9093067646026611,
        'B2': {'C1': [{'D1': 70,
                       'D2': 4226939893,
                       'D3': [70, 231, 163, 128, 26]},
                      {'D1': 44,
                       'D2': 3399687259,
                       'D3': [145, 18, 77, 103, 242]}],
               'C2': [-6060, 13163, 20463],
               'C3': 1477987329},
        'B3': 27229,
        'B4': [-50, -60, 99, 0, -120],
        'B5': [837520074, 403409538, 3901147230],
        'B6': 20}}

Пример 2

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

(b'\xa4TQG\x14\x89[Z\xc2\x8e\x9c\t]hk\xf5\xf7L\x80\xca?a\xc0\xb8e\x97ch'
 b'\xa0\xa0{\xbb3i\x8f\xe9\xbf\x14"\xc2\xce\xc1\x90\x1c\x81\xa3\xa8\x8aJ~>\x82'
 b'>l(c[\xb8\x03\x00\x00\x00a\x00\xb3\xfc\xfe\xa7\x8d\x07\x00\x00\x00d\x00\x04'
 b'\x00k\x003\x16b\xb6\xb1V\xcf\x07\xe9\x0e/\x03\x00\x00\x00s\x00v\xe0Mp'
 b'\xc9\xc3q\xf0\x8c\xb1\rYjIkm;\xb7\x83#xI5\x80@\n\x92\x93\xa2\x02\xb4')

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

{'A1': 20,
 'A2': 6704061657277684617,
 'A3': 0.2070404253707594,
 'A4': 11558597945544196193,
 'A5': -0.7987562189481316,
 'A6': -9143273981397032428,
 'A7': 1250601123,
 'A8': {'B1': 0.25438302755355835,
        'B2': {'C1': [{'D1': 108, 'D2': 3092996904, 'D3': [224, 77, 112]},
                      {'D1': 179,
                       'D2': 2376597244,
                       'D3': [201, 195, 113, 240, 140, 177, 13]}],
               'C2': [27225, 27465, 15213, -31817],
               'C3': -1235085773},
        'B3': 22193,
        'B4': [-49, 7, -23, 14, 47],
        'B5': [894007331, 2450145408, 3020071571],
        'B6': 118}}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'JANJ\xa3\xc2\xe9\xae\x1a$\xd9\x99\x00\x00\x00\x02\x00\xa6j\xb6g\x8a\x9b\x17'
 b'yG\x84\x0eR\xac\xae\xc0\xfbJn\x13\xb0I\xc8R/cA\x14\x89\xe1\t\xd9'
 b'M\xb8\xbe\x9ak\x8e?\xdcC\xb3\x94\t{\xb4\xe8\xbf\xeb\xe5m\xf7\xd3\x9f&\x1f'
 b',>\xac\x8b\x1e\xbf,\x8d}\x0f\xeac\x90\xcf\x12Z\x02\xb6\xe9\xae\x9aY\xcfJ'
 b'\x93F\xee5\xb6F\xc37\x9a\x00\x03\x00\x00\x00\\?|\x10=O\xf7=]\xfaz\x99{\x1c'
 b']\x8b\xef\xbfc\x00\xc1\x8ahp\xe0\x04\x15m\xfe\xed\x00\x02\x00\x00'
 b'\x00\x83\xbe?I\x1c\xc3\x8266\x9d:G\x11\x92\xc2\xd9\x15\xbe\xa1u\x85\x00\x00'
 b'\x00h\x00\x00\x00\x8b')

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

{'A1': 11800250907636324761,
 'A2': {'B1': [{'C1': -102,
                'C2': [-1705390262, -1824068043, -1236876489],
                'C3': 0.9846227765083313,
                'C4': 1341603165,
                'C5': -397836863032947729,
                'C6': -0.8867302536964417},
               {'C1': -19,
                'C2': [-1972866848, 68513278],
                'C3': -0.18680232763290405,
                'C4': 3280090678,
                'C5': -7117298120303388395,
                'C6': -0.3153497278690338}],
        'B2': 7689447258786855239,
        'B3': -2079436116,
        'B4': 12592340855220842569,
        'B5': [51282, 12131, 16660, 35297, 2521, 19896]},
 'A3': {'D1': -0.3016018271446228,
        'D2': 0.44163217026464996,
        'D3': 232,
        'D4': -0.8717565384258463,
        'D5': 7980,
        'D6': 0.3369988799095154},
 'A4': -0.6740339398384094,
 'A5': [15, -22, 99, -112, -49, 18, 90],
 'A6': 694,
 'A7': 59822}

Пример 2

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

(b'JANJ\x1f~|\x8c&/O)\x00\x00\x00\x02\x00\xa2\xfe\xeb\x1b\xa6>2\xdb\xc8\xe1?'
 b'Fq&"\xf02\xfc\xd0\xb7q\\\xdd8*\xc8\xed\x8f6\x08\x86%I\xbf\x12\xad6?\xec'
 b'\xa3\xab\x90\x81\xb0\x9e0?\xe8!<K\xb3\x1a ?\x95\xbf\x1d\xc1\x04\xbd\xc5>'
 b':\xc3"\xbfS\x99Q\xd2\x83R\x1c\x80\xa3\xed\x9eLl(\x7f"\xd7\x00\x02\x00'
 b'\x00\x00\\\xbfe)\x11\xf2^\xca\xb3\xcc\x18\xf4\xe7\xbe\x05\x80p\xbd'
 b'\xec\x03P\x11`\x80\x9f\xe2\x9b9\x19\x02\x00\x02\x00\x00\x00\x7f\xbe\x85'
 b'Z"\x0b\xb9\xa8w\x9e\xa4\xd3?\xb1\xd9\xdc\n>\xe7\xa7p\x00\x00\x00d\x00\x00'
 b'\x00\x87')

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

{'A1': 2269388203619209001,
 'A2': {'B1': [{'C1': -41,
                'C2': [-1544708532, 1814593314],
                'C3': -0.8951578736305237,
                'C4': 4066298547,
                'C5': -3739970214368542608,
                'C6': -0.11524069309234619},
               {'C1': 2,
                'C2': [291537055, -493143783],
                'C3': -0.2604532837867737,
                'C4': 196716663,
                'C5': -7015250049016144886,
                'C6': 0.45244932174682617}],
        'B2': -77938167726810168,
        'B3': -515946895,
        'B4': 2748022824429991793,
        'B5': [23773, 14378, 51437, 36662, 2182, 9545]},
 'A3': {'D1': -0.5729554891586304,
        'D2': 0.8949792692560725,
        'D3': 48,
        'D4': 0.7540570715435173,
        'D5': 16277,
        'D6': -0.6162264347076416},
 'A4': -0.096310093998909,
 'A5': [-61, 34, -65, 83, -103, 81, -46],
 'A6': 33618,
 'A7': 7296}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'3QJZM\x00O\xc5\xb2o<\xfdC\r\xdb\xa4\xe6<\x112\x84>n\xfa\x1b\xbe\xf4[\xd6T{K'
 b'3&\xbe\xe2\xe6\x7f\xaf\x18[\x86D\x03C\x11\xdd|r<\x8e%\x99\x93\x9eN'
 b'\x83\xfb:\xa4&8\x160c\xc2\xd7\x84bvY\xa0\xdfr\xe6\xab\x85\xd9\xd4u\xb59J\x00'
 b'\x02\x00*>>\x14\x85\x00\x02\x00\x00\x00,\x00\x03\x004>\xf8\xc0'
 b'\xa9\x00\x02\x00\x00\x007\xd7\x98K-\xfd\xdfb\xc4%\x00\x00\x00?')

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

{'A1': {'B1': {'C1': 1974810954,
               'C2': [{'D1': [68, 3],
                       'D2': 0.18562515079975128,
                       'D3': [1125244284, 1916571173]},
                      {'D1': [-103, -109, -98],
                       'D2': 0.4858448803424835,
                       'D3': [1317272378, -1540999146]}],
               'C3': [-677885139, -35691836],
               'C4': 37,
               'C5': {'E1': 811844311,
                      'E2': -2073921959,
                      'E3': 11592110300920666580}},
        'B2': -4201173194645500453,
        'B3': 42214,
        'B4': [0.008862141519784927, 0.23337595164775848, -0.4772631525993347],
        'B5': 84,
        'B6': 8884250931422750335},
 'A2': 2937609094}

Пример 2

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

(b'3QJZM\x00PK\xce\xa4\xeems\xd4\x10\xe8\xca\xbe)\x0c\x8c\xbf\x08FN\xbe\x1e\xdf'
 b"\xc7\xe0\xd0H:}\xdc\x00]'N\xa0\xe5\x94Z\x98\xa7\xc0\xb0\x12\x17\xd3h\xc4"
 b'\xca\x87S\xf0\xc0\xba\xf0/\xd3\rq\xb4\x81h\x97\xb5\xaf\x10\x99\x10'
 b'\xc1\xc3\x18~\x15H9\n|\x97\x0e9\x00\x03\x00*>\xae\xfd\xac\x00\x02\x00\x00'
 b'\x00-\x00\x03\x005\xbe\x90%w\x00\x02\x00\x00\x008\x95>y\xaa\xed\xa3r\xc1'
 b'\x02\x00\x00\x00@')

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

{'A1': {'B1': {'C1': 2090274361,
               'C2': [{'D1': [90, -104, -89],
                       'D2': 0.34177911281585693,
                       'D3': [-1062202857, -748108598]},
                      {'D1': [-121, 83, -16],
                       'D2': -0.2815358340740204,
                       'D3': [-1061490641, -754093644]}],
               'C3': [-1791067734, -308055359],
               'C4': 2,
               'C5': {'E1': -2123851851,
                      'E2': -1357866736,
                      'E3': 13962030199580670218}},
        'B2': 5462484741992469520,
        'B3': 59594,
        'B4': [-0.16508692502975464, -0.5323227643966675, -0.15515051782131195],
        'B5': 224,
        'B6': 15008310070448512295},
 'A2': 1319167380}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

Структура H:

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

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

Пример 1

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

(b'OMR\x00\x00\x00;\x00\x00\x00\x02\x00\x8b3\x01\xb8\xf7\xd5\xdb\xf3\xa9O\xf0?'
 b'\xe5\nec\xba\xbf\xe4`\xe8\x00\x00\x00\r:\x93g:\xfb\x97\x88\t\xc99\xe1'
 b'\xe9?\xe7\xf6G\x82\x1e\xe7\xb0\xde\xca\x00\x00\x00\x1fD\xc0\xe1p`'
 b'\r\x91\xad\x009\xbf\x0fi\xc2\xd3\xe6\xc5\xb2\xfa\xce\xff\xf1\xec^\x7f'
 b'\x04\xa5\xc1JE\x1c`\xa9\xd3\xaf(\x00\x00\x00\x04\x00W>;b\xea\xba\xca\xb5'
 b'\x9c\x8d\xa2\xc5\xa2\x99M\xda\x17\xecW_\xa91\x06t;\x00\x00\x00\x02\x00y>'
 b'/\x9c\xd9\x00\x02\x00O\x00\x00\x00_\x85S\xc5e\x00\x03\x00m\x00\x00\x00}\x19'
 b'-9u')

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

{'A1': {'B1': {'C1': {'D1': 96,
                      'D2': -24,
                      'D3': {'E1': [13057, -18185, -10789, -3159, 20464],
                             'E2': 0.6575190494386303},
                      'D4': 58,
                      'D5': 10621523098430081481,
                      'D6': 57,
                      'D7': 57833,
                      'D8': 0.7488133946819655},
               'C2': 4954207462871634349,
               'C3': {'F1': 222, 'F2': 202}},
        'B2': -0.5602074861526489,
        'B3': 211,
        'B4': 230},
 'A2': [{'G1': [3316841166, 4294044766],
         'G2': {'H1': 2849222440,
                'H2': [32516, -23103, 19013, 7264],
                'H3': 0.1829945147037506},
         'G3': 2236859749},
        {'G1': [3133846940, 2376254882, 2572016151],
         'G2': {'H1': 822506555,
                'H2': [-5033, 24489],
                'H3': 0.17149676382541656},
         'G3': 422394229}]}

Пример 2

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

(b'OMR\x00\x00\x00;\x00\x00\x00\x02\x00\x8f\x95\xa1U(K|\xaf8\xd1\xd3?'
 b'\xd8\x01k\x99\xec\xc1\\\xcf\x97\x00\x00\x00\rkB\x05.\xd7|\x14\xfd\xb9X\xf6'
 b'\x18\xbf\xe78\x85\x12\xa5\xa9\xcc<\x98\x00\x00\x00\x1f\xd4#-0\x80'
 b'\xeb[\xb1\x009?s\x16\x84w\x94\xca@\xd8\x11d\xe3\xaf\x82\x86\xaa\x01\x98\xba'
 b'\x9e[\xdd\x1b\xe36`\x00\x00\x00\x02\x00[?6i`\xf1\xec\xbc\xe6\xcb\xa0\x8e'
 b'\x83\xa1\xd1\x18\n\x0b\xa4Y\xfb$2\xfa\x87j\x93\x15\x90\x00\x00\x00'
 b'\x04\x00y\xbf\x0f\xf8\xc0\x00\x03\x00O\x00\x00\x00_\xbb\xf8\x83\x11\x00'
 b'\x03\x00m\x00\x00\x00\x81_\xe0\x93P')

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

{'A1': {'B1': {'C1': {'D1': 207,
                      'D2': -105,
                      'D3': {'E1': [-27231, 21800, 19324, -20680, -11821],
                             'E2': 0.3750866892978786},
                      'D4': 107,
                      'D5': 4757260084421393849,
                      'D6': 88,
                      'D7': 63000,
                      'D8': -0.7256493915750126},
               'C2': -3160632827139368015,
               'C3': {'F1': 60, 'F2': 152}},
        'B2': 0.9495623111724854,
        'B3': 119,
        'B4': 148},
 'A2': [{'G1': [3393247249, 1692643202, 2259288472],
         'G2': {'H1': 467875424,
                'H2': [-17762, 23517],
                'H3': 0.7125453948974609},
         'G3': 3153625873},
        {'G1': [4058823910, 3416297091, 2714834954],
         'G2': {'H1': 1788024208,
                'H2': [2980, 23035, 9266, -1401],
                'H3': -0.5623893737792969},
         'G3': 1608553296}]}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'eJSWR\x87J\x05\x00)\x00\x00\x00\x03\x00\x00\x00.\x00K&\xc9!r\xc0|\x98\x05'
 b'\x00\x00\x00I\x00\x00\x00y\x00\x00\x00\xee\rdlywpuS\xb6jPE\xe1>\xf8=\xd5S+x'
 b'%\x1f?\x0e\xf2\x99\xcbkZ\t\x97>\xd0\x03\xd3-\xbc\xfc\xba)\x17/\x01\x0b\t=YL'
 b'\x81 Y\x89\xbd\x07H(\x02G>\xe4\x18K\x94\xa6"0\xa3\xaf!\x7fu\x077\x18\x94\xe6'
 b'\xbd\xec\xb8\xbf>\x02\x00\x00\x00q\x00\x00\x00\xd9\xdb\x8d\xcf\xb6\x89\xb2'
 b'\xb5$\xb6\n\x9c\x85\x1b?\xbb\xacK\xeb\xf4')

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

{'A1': {'B1': 19079,
        'B2': 'dlywp',
        'B3': [{'C1': 1790333813, 'C2': 0.43998193740844727, 'C3': -8},
               {'C1': 726914365, 'C2': 0.6216654777526855, 'C3': 14},
               {'C1': 1808505330, 'C2': 0.29499322175979614, 'C3': -48}],
        'B4': -7458875286406748597,
        'B5': [1669070731569124099,
               -9129824225907244753,
               155453385226148128,
               2496846093684588103,
               3965267185809466160],
        'B6': {'D1': [-0.11258715391159058, 0.3744577169418335],
               'D2': [3482180569,
                      3048376758,
                      2617947684,
                      3141475205,
                      4109061036]}},
 'A2': 238,
 'A3': 13}

Пример 2

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

(b'eJSWR\x8e8\x05\x00)\x00\x00\x00\x03\x00\x00\x00.\x00_t;B\x82JM+\x05'
 b'\x00\x00\x00I\x00\x00\x00y\x00\x00\x00\xc2+dhlvqE\xa9}.\x066 \xbf\x82S'
 b'\xb33\x08\x19,\xd7>\xc1\xe6q\xae"Rd\xc2\xbe\x04\xae\xf6\x18\x16\xcag3'
 b'\xbe+\xd6\xbc7\xd06\xaf+\x8do8\x93c\x86X$\x1d\xd8\xb8b\xa1\xd2\xb5'
 b'\xad\x8d\x04\x86\xe4\n\x86\xd4\xebx\x91%?\xc0\x87T>\x02\x00\x00\x00q\x00\x00'
 b'\x00^\xe8\xa55)\xd8\xe43*\xbc\x9b.\xba#\x15\xee\x0c\xaf\xf5\xcd')

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

{'A1': {'B1': 14478,
        'B2': 'dhlvq',
        'B3': [{'C1': 779987269, 'C2': -0.6258243322372437, 'C3': -126},
               {'C1': 137605971, 'C2': 0.4202583134174347, 'C3': -63},
               {'C1': 581857766, 'C2': -0.3796716332435608, 'C3': 4}],
        'B4': 3120232040155018335,
        'B5': [-4741331865039210834,
               3147794932471485995,
               2618990945545777037,
               -5929601743775541219,
               -1453389398392044403],
        'B6': {'D1': [0.6467509269714355, 0.2075490951538086],
               'D2': [900065374,
                      870635561,
                      781958186,
                      3994362810,
                      3455430412]}},
 'A2': 194,
 'A3': 43}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'JXVH7\xcb=\xe6U[s\xef\x98\xd4\x0e\xc0g\x00\x91/c\x19n\x1a&\x04\x00\x00'
 b'\x00\x90\x00\xd1\xd3O?>\xeeZ>\xec\x1aY>\xab!\x7f>\x03\x00\x00\x00\x1f'
 b'\x00\x91\xf9\xa7>\xa9|\xc1\xbe\x95&\xb7c\x02\x00\x00\x005\x00\xce:8\xbf#'
 b'\xd8\xf2>\xd5\xd5W?+!\x83\xf9\x03\x00\x00\x00G\x00+\x00=\x00S\x00\x92&f=\xc4'
 b'\x12\xbc\xbe\x03\x00\x00\x00]\x00\x02\x00\x00\x00c\x00i\x1aPW/'
 b"\x96\x87\xfb\xfd@{\xd8\x00\xd70\xa7'(A\xbd?\xba\x0b\xbf5\xf3\xcdBdGPxx")

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

{'A1': {'B1': -1192509051829892297,
        'B2': 3222197400,
        'B3': {'C1': -0.3673306703567505,
               'C2': [{'D1': 8619,
                       'D2': 15999,
                       'D3': [0.8118258118629456,
                              0.21379944682121277,
                              0.212016761302948]},
                      {'D1': 9877,
                       'D2': 25527,
                       'D3': [0.32807591557502747, -0.3779042065143585]},
                      {'D1': 8491,
                       'D2': 63875,
                       'D3': [-0.7196472883224487,
                              0.47430524230003357,
                              0.8431065678596497]}],
               'C3': [9874, 15718],
               'C4': -322123718261204375,
               'C5': 3631956221,
               'C6': -4809518776281147648,
               'C7': -0.5458106398582458,
               'C8': 53},
        'B4': [145, 47, 99, 25, 110, 26, 38]},
 'A2': [-12813, 25666, 20551, 30840]}

Пример 2

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

(b'JXVH\xd9Mod#\x90\x98K\x13y\xaa\xd5U\x00\xc4\x93\xbe\x19\x9a\xe5'
 b'\x11\x02\x00\x00\x00~\x00Q\xa2b?\xcf$F\xbf<q}?\xc0\t\xba\x85\x03'
 b'\x00\x00\x00\x1f\x00=\xfe:\xbf @}\xbf\xd37\x9f\x84\x02\x00\x00\x005\x00+'
 b'\x00=\x00\xe5\x8a\x9b|\x12\x86vQ\xe9\xa0 \xa8\x8d\xbd\x02\x00\x00'
 b'\x00G\x00\x05\x00\x00\x00K\x00\n\xadv\xe5?\xf7C\x1f\xcf\xcd\xab'
 b'\x81\xd9\xd3\x9c>\xdec\xed$\xc0\xb7\x16\xbf\xf9`O6\x87')

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

{'A1': {'B1': 5447262230987886041,
        'B2': 3584719123,
        'B3': {'C1': -0.0691683292388916,
               'C2': [{'D1': 2496,
                       'D2': 34234,
                       'D3': [0.8852892518043518,
                              -0.7739991545677185,
                              0.990009069442749]},
                      {'D1': 14291,
                       'D2': 33951,
                       'D3': [-0.7304418683052063, -0.9892597198486328]}],
               'C3': [-29979, 31899, -31214, 20854, -24343],
               'C4': 2252916092420140298,
               'C5': 2175520207,
               'C6': 2660892761030185945,
               'C7': -0.5887413024902344,
               'C8': 249},
        'B4': [196, 147, 190, 25, 154, 229, 17]},
 'A2': [20320, -30922]}