ИКБО-16-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x9dOEB\x85\xc2\xa1\xdap\xadJ]M\x00\x19\xa6\x0b\x17\x7fW\xb6\xf4z\x9e}1?h'
 b'E\x03\x8e\xbfr\xc6\xbf\xb6\xbeZOc\x00^\xac\x19\xbf\xe5\xe9\xf5\x99\x97\xcaq'
 b'\xac\xbe\x16c\x9e!\xadn\xe6\xbf\xd8P\x10\x1b\xc1?H`\x02\x00v\x00\x1e\xc3'
 b'\xd5\x03\x00\x00\x00J\x00\x9d\xbd\xb9\xcb\tj\x9d\xfa?\x11\x8e\x84`'
 b'6\x81\xc0\x03\x00\x00\x00`\x00l\xeed\r\xe7\x1f\xf3\x1d\xcc\x15\xe1'
 b'\xba\xe1\x97*')

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

{'A1': {'B1': 3668034181,
        'B2': -21136,
        'B3': 23882,
        'B4': [{'C1': {'D1': [30, -61, -43],
                       'D2': -16995,
                       'D3': 52153,
                       'D4': 9,
                       'D5': [106, -99, -6, 63],
                       'D6': -29167,
                       'D7': 24708},
                'C2': 25,
                'C3': 8859906853855234982,
                'C4': 0.693323016166687,
                'C5': -0.17537683901040713,
                'C6': 1331347126},
               {'C1': {'D1': [54, -127, -64],
                       'D2': -4500,
                       'D3': 3428,
                       'D4': 231,
                       'D5': [31, -13, 29, -52],
                       'D6': -7915,
                       'D7': -7750},
                'C2': 94,
                'C3': 10924032756094540204,
                'C4': -0.33680564165115356,
                'C5': -0.7010102898230766,
                'C6': 454054104}]},
 'A2': 1615347649,
 'A3': [151, 42]}

Пример 2

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

(b'\x9dOEBz\xfay\xbbZ\x83m\x86L\x00\xb7F\xec\x06\x06\x80\xe7\xc2\xd0\x15'
 b'UP\xbe\xc0\xd8\xc4\x06\xfc$\xef\xbfd\xdd\x15\xdea\x00\xd0\xb2\xd8'
 b'^\xe8\xf5\xff\xef]Z\x8ck\xbf\x00A\xeb\x0e2\xc9\xae?>"\x98\xdf*\x08'
 b'i\xec\x05\x00t\x00N\x1a\x02\x00\x00\x00J\x00\x0ex\x17~.m\xe4k\x06\x1eu|s\xf7'
 b'x\x02\x00\x00\x00_\x0028\xff\x14\x9fM\xd4\x91\\>\xf9\xf0\xc2\x81DM%\xdc')

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

{'A1': {'B1': 3145333370,
        'B2': -31910,
        'B3': 34413,
        'B4': [{'C1': {'D1': [78, 26],
                       'D2': 30734,
                       'D3': 32279,
                       'D4': 46,
                       'D5': [109, -28, 107, 6],
                       'D6': 29982,
                       'D7': 29564},
                'C2': 183,
                'C3': 15042840242413825094,
                'C4': -0.2034495621919632,
                'C5': -0.9732647068219862,
                'C6': 3725974884},
               {'C1': {'D1': [-9, 120],
                       'D2': 14386,
                       'D3': 5375,
                       'D4': 159,
                       'D5': [77, -44, -111, 92],
                       'D6': -1730,
                       'D7': -15632},
                'C2': 208,
                'C3': 6768910196591745202,
                'C4': -0.9201103448867798,
                'C5': 0.06012875015369623,
                'C6': 3751289406}]},
 'A2': 3966306346,
 'A3': [129, 68, 77, 37, 220]}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZLIY:q$\xadd5B\xb7\n\x07K\xffK\xcc\xe0R\xf69\x8cN\xb7\xbf\xa6\x85'
 b'\x95\xfb\xfe@\xb2>\x0f\xed\x15\xbf;\x00W\x00\xa2,D y\x00rr4\xb0\xdf\x95t>'
 b'c@\xb1\x00\xb7>X\x8b\xe6<\x99\x8e\xacAg9n\xeb\xa9I\x10+\x10e\xb43\x7fV'
 b'\x07\xa2\x83\x1cQ\x05\xbd\xf4%\xb17\xbe\x07\xf9\x1a\xf6\xad\x9e\xd0tA\xec#o'
 b'\xf70\xff\x019\xf2\xc9\x9f\xe8\xf7]\x95\xfb\xb8\x81Q\xe7\x01\x03\x00'
 b's\x00\x84:\xe6\x1a\xb8\xd8"\xe4\xb03\xe9\xbf\xd3\xad\xae\xbe\xdc\xad'
 b'\xc0\xbe\xbb%\x18?\xb9')

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

{'A1': 2904846650,
 'A2': 18395804845530559844,
 'A3': 52299,
 'A4': {'B1': -0.09104229369252037,
        'B2': -74087002,
        'B3': 0.3481521010398865,
        'B4': -0.5856484770774841,
        'B5': [{'C1': 46848,
                'C2': 62,
                'C3': 88,
                'C4': 7440417787849008779,
                'C5': [1165042837174840889, 9485151833278362725]},
               {'C1': 20764,
                'C2': 5,
                'C3': 189,
                'C4': 1943593227746616820,
                'C5': [2588515855803264502, 14551756026726643567]}],
        'B6': 11426,
        'B7': 8260,
        'B8': {'D1': 184,
               'D2': 31936897,
               'D3': [-5985, 24055, -1131],
               'D4': 451295876,
               'D5': -0.7875599342139799,
               'D6': [-0.34116992354393005,
                      -0.37632644176483154,
                      0.5943257212638855],
               'D7': 185}},
 'A5': 4500386715616440946,
 'A6': 16483,
 'A7': -79}

Пример 2

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

(b'ZLIY\\DZ\xe9\x90\xd8\xe1\x01\xf4L\xc2\xc3R\x98hp\xf5\x93\x9a0\xce\xbf}\x05'
 b'\xc1\x11\xc8\xe1\n?\xdaB\x15>;\x00W\x00\xf4\n8\x0cy\x00\x8b\xdd\xd7\xb3'
 b'\xc7\x95\x8eN?\x85\xc2:\xb7f\x91@\xfd\xa5KI\xb1\x94\t\xc4\xa7\x96Q2'
 b'x\xe6o\xaeQ$\x0eG\x8f\xb4\xe5\xa3\xdfB\xcf\x19\xdc(>\x85\xc5,w\x01&\x1c}\x01'
 b'\x06\x8d\xde\x92\x19\xdfIThU\xcb\xb8\xbf\x03\xae>)Hr\x98\xd1\x01\x03\x00'
 b's\x00\x8b\xa1\xb8\xaf\xdc+x\xe9\xbe\x06\xdd\xbf\x0c\x8b\x1a>\xc3i'
 b'\xc1>\xde\xad\xc5<\x90')

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

{'A1': 3915007068,
 'A2': 14105921593765124240,
 'A3': 38994,
 'A4': {'B1': -0.23585827087925115,
        'B2': 297862525,
        'B3': 0.5425076484680176,
        'B4': 0.1457628309726715,
        'B5': [{'C1': 46906,
                'C2': 102,
                'C3': 145,
                'C4': 690371571254426944,
                'C5': [8063264340365977540, 16552012065836126638]},
               {'C1': 57251,
                'C2': 66,
                'C3': 207,
                'C4': 8587455765552880665,
                'C5': [16036480451599934977, 14651731673945676178]}],
        'B6': 2804,
        'B7': 3128,
        'B8': {'D1': 72,
               'D2': 30513266,
               'D3': [-16456, -20989, 10558],
               'D4': 2948112779,
               'D5': -0.4535367279028699,
               'D6': [0.1509210467338562,
                      0.37776002287864685,
                      0.02413075789809227],
               'D7': 144}},
 'A5': 5660626466599591307,
 'A6': 34111,
 'A7': -62}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'IPOF\x04\x00\x1e\x00\x00\x00\xe90Y\xe1\xccn"\x00\x00\x00Q\x00\x00\x00'
 b'\x05\x00\x80\x00\x00\x00zwcs\xa2\xe7PDY\x9ddUUO\xde>"\x86\xd9\x1eW\x0c'
 b"V\xfd.\xc8\t\x94'\xc5\xaa\x9b@\xf2\x9a\xc2\xb1\xbe\xb6\xec,npub\x8c"
 b'GS\x12\xd2\xbeS\xb9\x96P"\x81\xbe\x05\xad\x16\xc7z\x87\xfa\xce&\xf7\x01\xa7'
 b'.\x92j\x92\xfa6-\x18\x16]\xad\x9aZ|?\x96M\xae\xe0b\xa2\xad\x0b\xd2'
 b"\n\xfaf\x9b\x1b%8\xbe\xf0\xfb\x11\xbfEz;?\x05\xed'\xbf\xeac\xbf>")

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

{'A1': {'B1': 'zwcs', 'B2': 233},
 'A2': -857646800,
 'A3': 110,
 'A4': [{'C1': [6153215997618743202, 2222955372725817173, 10667277296548056151],
         'C2': -15065,
         'C3': {'D1': -230646870,
                'D2': -0.3471878170967102,
                'D3': [-74, -20, 44, 110, 112]},
         'C4': -4696671312502037899},
        {'C1': [413910200145590611, 2796447878431053485, 18055611032162206199],
         'C2': 11574,
         'C3': {'D1': -1386408424,
                'D2': 0.9857574701309204,
                'D3': [-106, 77, -82, -32, 98]},
         'C4': -7248831625825636958}],
 'A5': [-0.17982904613018036,
        -0.5702505111694336,
        0.7323344349861145,
        -0.6559603810310364,
        0.37380915880203247]}

Пример 2

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

(b'IPOF\x04\x00\x1e\x00\x00\x00Q\xaf\xbe\xab\xdc\xfb"\x00\x00\x00Q\x00\x00\x00'
 b'\x03\x00\x80\x00\x00\x00iknv~\x10\xba\xb4\x1c\x1b\xc1?&\xd8\x0cU@u'
 b'\x11\xf77\xe0f\x9b\x9c\xae\x07\xceq,\x1b\x15\xce\xd1\xcd\xf3L\xbf\xac\xc5T1'
 b"p^J\x8dm\xa8\x1d.\xf4Y\xaf\xfd\xe1Cx$\x0fu\xa9\xcf\xa5Z\xea\xae\n\xcdH'"
 b"\xa7\xc8m\x91\xdd\xfd@\x18\x08\x94\xa0\x04\xfb\x06\xbe\xbaeq\xf8'"
 b'\x99$\x14\x13\xf7\x95N\x00\xd3\xead?tZm?\x99\x80F\xbe')

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

{'A1': {'B1': 'iknv', 'B2': 81},
 'A2': -592724305,
 'A3': 251,
 'A4': [{'C1': [4593982904999743614,
                17803139721137543206,
                14846026684295471159],
         'C2': 11377,
         'C3': {'D1': -775023333,
                'D2': -0.8005951046943665,
                'D3': [-84, -59, 84, 49, 112]},
         'C4': -851710670296757666},
        {'C1': [1091129242680143705, 769810261376739701, 15965662862570375373],
         'C2': 16637,
         'C3': {'D1': -1600911336,
                'D2': -0.13181692361831665,
                'D3': [-70, 101, 113, -8, 39]},
         'C4': 22119936592979097}],
 'A5': [0.8942081332206726, 0.927161455154419, -0.19384993612766266]}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

Структура H:

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

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

Пример 1

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

(b'HCRFY\x0e\x83\x85\xac\x000\xe2\x00>\x00\x00\x00\x02\x00O\x00\x00\x00Q'
 b'?\x08T\xee\x00\x00\x00\x03\x00\x00\x00[\x00b?\x1c\xf4\x10\xf64\x9b\xc2\xf4M'
 b'\x00\x00\x00*\x00\x00\x00-\xf3\xa4\xcc\x84\x81\xdac\xcdW\t\x9cb\xb6\x8f&?'
 b'\xeal\xc0\xb9~P\xbaf\xb8\xdf\x9a&\xdab@\x8c/Znrgt8\xf2T\x07\x00\x00'
 b'\x00\x04\x00^\x89\x9f\x86b\xd9\xbf\xc2@2~t\xbc0>\xaa\xaf5\x1b\xe5dgD\x07\xb5'
 b'\xf4\xd2\t\xbf\xae\x01\x8f:?o\x12\x04%\xd2\xe3\xbc\xfeb\xca]\x92')

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

{'A1': {'B1': 243500460,
        'B2': {'C1': [{'D1': -10, 'D2': 13467}, {'D1': -62, 'D2': 62541}],
               'C2': -13,
               'C3': 164,
               'C4': 3431236058},
        'B3': 226,
        'B4': {'E1': 99,
               'E2': 52567,
               'E3': {'F1': 2460, 'F2': 1656131366, 'F3': 0.8257754919927927}},
        'B5': [102, -72],
        'B6': {'G1': 57242, 'G2': 2799658147733527150}},
 'A2': 0.5325459241867065,
 'A3': 'rgt',
 'A4': {'H1': [56, 242, 84, 7],
        'H2': -1986034078,
        'H3': -39,
        'H4': -0.14258414435013966,
        'H5': 0.3333679735660553,
        'H6': 468018279,
        'H7': [4902086782516576174, 112372559828354085],
        'H8': 15196197368443329938},
 'A5': 0.6130990982055664}

Пример 2

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

(b'HCRFY\x02\x00_|\x000\xbd\x00>\x00\x00\x00\x02\x00O\x00\x00\x00Q>\x87\x9f/'
 b'\x00\x00\x00\x04\x00\x00\x00[\x00c>|\x10Yf2\xac\x03\xffw\x00\x00\x00*'
 b'\x00\x00\x00-\xa6z\xbeo\x9c+\x15\xf55\xc7\x96\xd8\xeb\x04\xb6?\xc3j\t\xa1'
 b'\xda}\x80e*8\x9b\xa4\xa5pR\xe8\xa3\xa7\x10jzny\x81\x18\xce\x1b\x00'
 b'\x00\x00\x04\x00_w\x8a\xd9D\xfa?\xeb\xa0\xa7\xa8\xce\x88\xb4\xbfQ'
 b'\x11\x81\xfb\xb8\x97s\xa7\x94\x1a\xee\xe4\xea\xaa\x1e\x85\xf4T\t\xe5\x8a'
 b'%\x0f\x83\xa6\x1e\x1a#rQZ')

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

{'A1': {'B1': 33578876,
        'B2': {'C1': [{'D1': 102, 'D2': 12972}, {'D1': 3, 'D2': 65399}],
               'C2': -90,
               'C3': 122,
               'C4': 3194985515},
        'B3': 189,
        'B4': {'E1': 21,
               'E2': 62773,
               'E3': {'F1': 51094,
                      'F2': -655686474,
                      'F3': 0.15167351153375463}},
        'B5': [101, 42],
        'B6': {'G1': 14491, 'G2': 11864012294770108176}},
 'A2': 0.26488634943962097,
 'A3': 'jzny',
 'A4': {'H1': [129, 24, 206, 27],
        'H2': 2005588292,
        'H3': -6,
        'H4': 0.8633611962325376,
        'H5': -0.8166733384132385,
        'H6': -71788685,
        'H7': [12075306114232265246, 9652432302844290319],
        'H8': 9486302762715205978},
 'A5': 0.24615611135959625}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xe4RCDP\x00\x00\x00\x02\x00;\xfe\x1cbr\x0b5\x8e<\x00\x02\x00\x00\x00'
 b'e\x1e\x91\xd5?\xcf\xac\xa7&\x13\xf6]\xfe+Nu\x82\x04\xd0\x00\x06\x00\x00\x00'
 b'g/tgybiuxdq\x00\x05\x002HvU\x89~?1\x0c\x83\x84\x86\xf4\x05b\x8a\x82\xac'
 b'\x00\x04\x007\x80\x8bUf^\xbe\xcc\x8c3B\xeds/\x05\x06w\xebfj>\xdb\xea\xcd\xbf'
 b'y\xf5\xed>\x92\x05\xa1\xbf\x00i\xa6>\xef5~\xbf\x13\xc3\x86')

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

{'A1': [{'B1': 'tgybi',
         'B2': 72,
         'B3': {'C1': 30293, 'C2': -30338},
         'B4': 0.6915971636772156,
         'B5': 9549588363850973868},
        {'B1': 'uxdq',
         'B2': 128,
         'B3': {'C1': 35669, 'C2': 26206},
         'B4': -0.3995071351528168,
         'B5': 4822637421768636395}],
 'A2': -484,
 'A3': 25202,
 'A4': 188059196,
 'A5': 'fj',
 'A6': 7825,
 'A7': -10945,
 'A8': {'D1': 3484198694,
        'D2': 5110,
        'D3': 6772898505590703312,
        'D4': [0.429525762796402,
               -0.9764087796211243,
               0.28519919514656067,
               -0.5016120672225952,
               0.4672049880027771,
               -0.5772022008895874],
        'D5': 47}}

Пример 2

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

(b'\xe4RCDP\x00\x00\x00\x02\x00;-W,\x8f\xec\xce\x87s\x00\x02\x00\x00\x00eJ \xd3'
 b'\xbbr\x82\x1e\xe0\xf0\x99\x07\xb0\x1f\x02\x06\xa2\x94\n\x00\x04\x00\x00\x00'
 b'g\xccmkybrwoyr\x00\x05\x002\xa0\xae\xdb\x18?>\xfa\xccJ\xa0\x915\xd2WB[\xc1'
 b'\x00\x04\x007\xc5\x95\x03\xeb\xd7>4\xfe%\x12\xefL,\xae\x97\xbb\xdbor;'
 b'.\xf8\x02?\x0b\x90\xe7\xbe\xd5\x0f9>\x06\tV')

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

{'A1': [{'B1': 'mkybr',
         'B2': 160,
         'B3': {'C1': 44763, 'C2': 6207},
         'B4': 0.4898398518562317,
         'B5': 11570088095214885825},
        {'B1': 'woyr',
         'B2': 197,
         'B3': {'C1': 38147, 'C2': -5161},
         'B4': 0.17675073444843292,
         'B5': 1364392966908001243}],
 'A2': 11607,
 'A3': 11407,
 'A4': -322009229,
 'A5': 'or',
 'A6': 18976,
 'A7': -11333,
 'A8': {'D1': 1921130208,
        'D2': -3943,
        'D3': 553976847728284682,
        'D4': [0.002669811714440584,
               0.5451797842979431,
               -0.41613176465034485,
               0.1308949887752533],
        'D5': 204}}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xecVLXLy\xf4\xf6)\xbf\x8e\x986?\xcd<g\xef\x95\xdd@cpzdam\x00'
 b'\x03\x00\x00\x003_1\xe1N\xc3\x1dA9\x9b\xa43\xf7\x00\x02\x006\x00`fze\x9bC'
 b'\xbc\xd0C?\xe8`<\xf8g2\xb4;f\xdfo\xbfw\x07|Q\x1e\xd3\xe8d?\xd3X\xcd'
 b'd\xb2\x86\xa8\xb0\xbd\x9a\xa2\xbfP\xcc\xf51:\xcf\xc1n\t\x83/?\xc3g\x8d'
 b'D\x8aX\xb0p\x80\xb3\xc6o\x07I\x14&\x0f')

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

{'A1': 8787919432074565686,
 'A2': 0.2284059448099729,
 'A3': {'B1': 'cpzdam', 'B2': 'fze', 'B3': 1597104462},
 'A4': -4387278746308824073,
 'A5': [{'C1': 155,
         'C2': 17340,
         'C3': 53315,
         'C4': 0.7617478229163539,
         'C5': 996597615,
         'C6': -0.9649579524993896},
        {'C1': 81,
         'C2': 7891,
         'C3': 59492,
         'C4': 0.3022950633404471,
         'C5': 2965215906,
         'C6': -0.81562739610672}],
 'A6': {'D1': 49,
        'D2': 0.0015850493218749762,
        'D3': 2435,
        'D4': 47,
        'D5': 0.1515976509733199,
        'D6': [28800, 46022, 28423],
        'D7': 18708,
        'D8': 9743}}

Пример 2

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

(b'\xecVLXL\xe6\xbc]\xd7\xc567\xfc?\xe9w\x83\xb9\x11\xef\xdekzybup\x00'
 b'\x07\x00\x00\x003\xcd\xff\xb7{\x99\xa9\x0c\xc8(\x19>\xfa\x00\x02\x00:\x00ds'
 b'ssmxph\xc0\x9bt\x8bg\xbf\xe3\xf7\xc8\xf61\xfe\x16\xfb8\xd4\xf3='
 b'\xb1\xda\xb8\xb3H\xf4N\x18?\xdb\x19\x11I\xe1m\xe0u\xcdn\xfd\xbfS1sI?gt'
 b'\xdf\x98\xa7?\xbf\xe6\xb9\x89\x1b\xdd\x88\xb6|\xf2\x86AM%`\x94\xf4\xfb')

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

{'A1': -1820476968056506372,
 'A2': 0.7958391775750859,
 'A3': {'B1': 'kzybup', 'B2': 'sssmxph', 'B3': 3456087931},
 'A4': -7374348861036740870,
 'A5': [{'C1': 192,
         'C2': 39796,
         'C3': 35687,
         'C4': -0.6239971931935908,
         'C5': 4214805747,
         'C6': 0.08684295415878296},
        {'C1': 179,
         'C2': 18676,
         'C3': 19992,
         'C4': 0.4234050008287493,
         'C5': 1976397565,
         'C6': -0.8249732851982117}],
 'A6': {'D1': 73,
        'D2': 0.9041270613670349,
        'D3': -26457,
        'D4': 63,
        'D5': -0.710148386406465,
        'D6': [31986, 34369, 19749],
        'D7': 24724,
        'D8': -2821}}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GPZX\xbe\x00\x00\x00\x03\x00\x00\x000\x84\x95\\\xc6\x97@j\xa2\xbf\xb5g'
 b'\xe4\x0b\xf2\x05k\xfa\x15C\x0e\xa5\x00\x00\x00?\x00\x99\xb76\x14&\t\xd2\xd8{'
 b'djc\xed\xbdG~3B\xf5\xd4\x06f\xd3\xc7?\xac\xb9I<\x7f\x08\x80\x00'
 b'\x03\x00\x00\x003\xcf\x16\x81\x94*M8\xca?\xe9;\xef\x8d\x97@\xbc\x00\x02\x00'
 b'\x00\x006yE\r\xf2\x8e\x1f\x135\xbf\xe5=$\x8aU \x8e\x00\x03\x00\x00\x00'
 b'8\xa0\xf8+}qg\xb4q\xbf\xe8\x9d\x1a6FsT\x00\x04\x00\x00\x00;J!K\xaa&'
 b'\x98\xa6\xec\xfa3A\x04;.i\x01_3\xb7\x92G')

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

{'A1': 'djc',
 'A2': -8893099881162315102,
 'A3': -1078630428,
 'A4': 11,
 'A5': -1007280219804725595,
 'A6': {'B1': [{'C1': 0.056101120600502874,
                'C2': [237, 189, 71],
                'C3': [-49, 22, -127, -108, 42, 77, 56, -54]},
               {'C1': 0.788566376251786,
                'C2': [126, 51],
                'C3': [121, 69, 13, -14, -114, 31, 19, 53]},
               {'C1': -0.6637137128646076,
                'C2': [66, 245, 212],
                'C3': [-96, -8, 43, 125, 113, 103, -76, 113]},
               {'C1': -0.7691775379240462,
                'C2': [6, 102, 211, 199],
                'C3': [74, 33, 75, -86, 38, -104, -90, -20]}],
        'B2': 64051},
 'A7': {'D1': 16644, 'D2': 59, 'D3': 3344205706700493383},
 'A8': 13201761511289313403}

Пример 2

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

(b'GPZX\xbe\x00\x00\x00\x03\x00\x00\x000\xbf*\x85s\x07\xe3io\x8d\xe8\xa4'
 b'y\x08\x9fq\xa4Z\x05\xcd\x01\xff\x00\x00\x00C\x00\x9dW\n.\xe2O\xdc\x11~stop'
 b':DI]\xde\xe9o)0(\xc1\xf4\x1ad\xaa?~\xd6\x88\xe0 \t\x00\x00\x03\x00\x00\x00'
 b'3\xbe^\xe6\t\xa7\xbb\x943?\xedr\x03\x14\xac9T\x00\x05\x00\x00\x006\\P\xf6`c'
 b'\xf5^\xd0\xbf\xe1\xa20\xfb<Gt\x00\x03\x00\x00\x00;\x1d)\xf0\xdbMH\x16'
 b'\xdf?\xe5j-\x96G*\xf8\x00\x05\x00\x00\x00>k\xec\x8d\x122a\xe4\xfc\xa5'
 b'\xb0\x9c\xdc\x01n\x19J\x04\xffkb.')

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

{'A1': 'sto',
 'A2': -4671774934343390865,
 'A3': -1914133383,
 'A4': 8,
 'A5': -6957599242759372289,
 'A6': {'B1': [{'C1': 0.007528814954641527,
                'C2': [112, 58, 68],
                'C3': [-66, 94, -26, 9, -89, -69, -108, 51]},
               {'C1': 0.9201674846424717,
                'C2': [73, 93, 222, 233, 111],
                'C3': [92, 80, -10, 96, 99, -11, 94, -48]},
               {'C1': -0.5510487467711145,
                'C2': [41, 48, 40],
                'C3': [29, 41, -16, -37, 77, 72, 22, -33]},
               {'C1': 0.6692111907117058,
                'C2': [193, 244, 26, 100, 170],
                'C3': [107, -20, -115, 18, 50, 97, -28, -4]}],
        'B2': 42416},
 'A7': {'D1': 40156, 'D2': 1, 'D3': 7933453603915391534},
 'A8': 6271876980604146046}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\\OXUP\x00w\x00\x83%?\t\xe4:?g$\xc9\xbfE\x93\xe5?e\xa0\x10>\xe9\x82*<\xd6'
 b'S\x85?\x17\xa7\x82#\x00\x02\x00\x00\x00\xaf\xfa\xa7\xd7X\xf5o\x19'
 b'|\x9b\xee\x00\x08\x00\x00\x00.\x8bpR\x8e\x0c\xb9\xd3\x00\x04\x00\x00'
 b'\x00?\xe0\xa3K\x88\x08\xcd\x12\x1f\x00\x05\x00\x00\x00L\xe5\xa3\x8b\x81'
 b'\x19\xf4?\x00\x04\x00\x00\x00ZR\xd2\x00\x00\x006\x00\x00\x00C\x00'
 b'\x00\x00Q\x00\x00\x00^\x00\x00\x00\x04\x00\x00\x00g\xc3D^\x05\xfc<\x06f\xb6'
 b'\xe9\x91\xc4\xf7\xa6=\x14=\x8fB\xce[\x02\xc0\xd9\xbd\xa9\xddE1\x02\xc7\xbeB'
 b'<6J\xf3\xc3vS|\x1e7\xdcN\xc5D\x9eZ\xeb')

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

{'A1': {'B1': [{'C1': -18,
                'C2': [167, 215, 88, 245, 111, 25, 124, 155],
                'C3': 35696},
               {'C1': -45, 'C2': [82, 142, 12, 185], 'C3': 57507},
               {'C1': 31, 'C2': [75, 136, 8, 205, 18], 'C3': 58787},
               {'C1': 63, 'C2': [139, 129, 25, 244], 'C3': 21202}],
        'B2': 49988,
        'B3': 24069},
 'A2': {'D1': [18175409234385670596,
               17845017730643608270,
               6558016048827325765,
               3531604677780846154,
               17565013072611784668],
        'D2': 20165,
        'D3': 17566},
 'A3': 37,
 'A4': [0.538638710975647,
        0.9029050469398499,
        -0.7717879414558411,
        0.8969736099243164,
        0.4560711979866028,
        0.026162872090935707,
        0.5923997163772583],
 'A5': 35,
 'A6': [90, 235],
 'A7': 250}

Пример 2

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

(b'\\OXUP\x00\x8c\x00\x98\x1b\xbe(\x19\xd2?r\xa9 \xbe\xdcw\xbe\xbf"\xb0\xf6>U'
 b'1\xbb>Yr\xbe\xbfYj_\xc0\x00\x03\x00\x00\x00\xc4\xaf\x7f7&mQ\x16%\x08V\x00'
 b'\x08\x00\x00\x00.\x1f\x85\xa8\x81\xbee\n\xa0C\xde\x00\x07\x00\x00\x00?\x96W]'
 b'=\x9e0\x85\xe3g\x00\x06\x00\x00\x00O-\t\x94T6\x00\x02\x00\x00\x00^\x0f'
 b'\x05V\xac\xcf\x06X\xc3R\x00\x06\x00\x00\x00i\xf1\x1c\x00\x00\x006'
 b'\x00\x00\x00F\x00\x00\x00U\x00\x00\x00`\x00\x00\x00o\x00\x00\x00\x05'
 b'\x00\x00\x00x\x0c\xb8\x93\x8e\x7f\xd4<\x08\x05({1\x02!\x91\xb2;\t\x86Q'
 b'7[\xbd\xd3\xb5\xeb\xa4\x01\xbfb\xca\x95\x1e;c\x9cm\x0c\xae\x80'
 b'\xc5\x17\xab\xa8\xebkh\xf0H\xe2\x0c')

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

{'A1': {'B1': [{'C1': 86, 'C2': [127, 55, 38, 109, 81, 22, 37, 8], 'C3': 8069},
               {'C1': -34,
                'C2': [168, 129, 190, 101, 10, 160, 67],
                'C3': 38487},
               {'C1': 103, 'C2': [93, 61, 158, 48, 133, 227], 'C3': 11529},
               {'C1': 54, 'C2': [148, 84], 'C3': 3845},
               {'C1': 82, 'C2': [86, 172, 207, 6, 88, 195], 'C3': 61724}],
        'B2': 3256,
        'B3': 37774},
 'A2': {'D1': [9211053143023450929,
               153564056987993681,
               3988990611954574337,
               13790807750768026524,
               7857847317940382632],
        'D2': -5269,
        'D3': 26864},
 'A3': 27,
 'A4': [-0.16416099667549133,
        0.9478931427001953,
        -0.4306010603904724,
        -0.6355127096176147,
        0.20819751918315887,
        0.21235176920890808,
        -0.8492793440818787],
 'A5': -64,
 'A6': [72, 226, 12],
 'A7': 175}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'RPO\xe4\x00Y=;fK^Gl2\xd21b\x01I\xee\xf2?\xf5eT\xcf\xc4\x9f\x04\xde-\xcd'
 b'\x00\x02\x00\n\xc3P\xe9\x10\x02\xfac3bZE\xa72B\xef\xea\x13\x0b\xff\xeb'
 b'\xb9|GQ>(\xa8\x98\xd5\xc4!\xa2\xb3\x00\x05\x00\x0c\xbf\xe8\xac\xdb|\x7f\x84'
 b'&S\xefz\xb2\x00\x00\x00 3YFU\x85\xf4)\xe3\xbf\xee\xf1\xec\xf5r\x1c'
 b'\xc6\x18>\x83\xba\xc0\xa6\x9d\xbd\nV\xe4OE\xc4\xddj\xc6-\xc6\xa5\x87\x9dB'
 b'N\x98\n\xadb\xe8hf&\x9c\x06T\x92\xef\x00I')

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

{'A1': {'B1': 3700065901995108835,
        'B2': -0.9670319360601745,
        'B3': 24,
        'B4': [{'C1': 16003, 'C2': 186},
               {'C1': 49318, 'C2': 157},
               {'C1': 48394, 'C2': 86},
               {'C1': 58447, 'C2': 69}],
        'B5': -4261132273018559097,
        'B6': 11331706027338719976,
        'B7': 7522742679131951855,
        'B8': {'D1': -0.7711007529834475,
               'D2': 21487,
               'D3': 31410,
               'D4': {'E1': [94, 71],
                      'E2': -1018107632,
                      'E3': [49963827,
                             1650083239,
                             843247594,
                             319553515,
                             -1183037615,
                             1042851992,
                             -708566622],
                      'E4': 179,
                      'E5': [1815269937,
                             1644251630,
                             4064277861,
                             1422902431,
                             81669581]}}},
 'A2': 0.04575185105204582}

Пример 2

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

(b'RPO\xe4\x00W>\xc9_\xe2\x10x\x02&\xa1L \n\xc6t,\x80\x81M\x8d\x11-C'
 b'\xa8]\x00\x08\x00\nY\x963N`3\xa2\xd9\x88\xffW\xe1\xb1`X=^n\xaa<\xc8\xec'
 b'i\x00\xc2\x94L\xbb\x1d\x1dN\xb2\x9b\x00\x03\x00\x12\xbf\xbcO\xf5\xe1'
 b'S\x87\x80<$\xdb\x10\x00\x00\x00\x1e}\x1a2bBZ\x15O?\xeb5a\x88\xa5\x7f\xd8y'
 b'<\x92\x1b\x02\xf4Z\xb2\xad\xa3+\xe8+\x12\xe60i\x93 \xb8\xb5\x1e_\xfcE'
 b'\xab\x8a\x90mv\\G\xb5\x08\x01"\x03\x00G')

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

{'A1': {'B1': 9014573001736852815,
        'B2': 0.8502662342907525,
        'B3': 121,
        'B4': [{'C1': 15506, 'C2': 27},
               {'C1': 756, 'C2': 90},
               {'C1': 45741, 'C2': 163},
               {'C1': 11240, 'C2': 43}],
        'B5': 1361829167324248245,
        'B6': 2188745320086278253,
        'B7': 8528770637181821443,
        'B8': {'D1': -0.11059509993677175,
               'D2': 15396,
               'D3': -9456,
               'D4': {'E1': [16, 120, 2, 38, 161, 76, 32, 10],
                      'E2': 1503015758,
                      'E3': [1613996761,
                             -1996531743,
                             -1319086019,
                             1584310844,
                             -924030720,
                             -1030468421,
                             488459954],
                      'E4': 155,
                      'E5': [3329502336, 2169343249, 759408733]}}},
 'A2': 0.39330965280532837}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZIUG\x00_jmzqq\x00\x00\x00\x02\x00\x00\x00l~t\x90\x86\xbf\xd0\x0b\xad<'
 b'\xb25x\xbd\xbe\xf4[>$\xa8\xdd\xbf,\xd7s\xbe\xfb\xfc\x89\xbd\x90\xbe\xd0?'
 b'\x07|W>\xa3\xeb\xf6\xbf\xeb3\xeb\xa3\xfc\xef8nr\xea?\xe3\xc5\x99\x05\xeb'
 b'a\xf2y\xaf\x00\x00\x00\x02\x00\x00\x00r\x10\xc8\x05?\x01\x02r?\xc5\xe4\x8d['
 b't\x97\x98xeoih\x94\xa0\x01G\xfd\xa2\xefXf6R\x1f\xb5\x0e')

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

{'A1': {'B1': 0.17103735890958371, 'B2': 'xeoih'},
 'A2': 'jmzqq',
 'A3': [{'C1': -27488, 'C2': 1}, {'C1': 18429, 'C2': 162}],
 'A4': 2121568390,
 'A5': -0.2507126896606091,
 'A6': {'D1': [-0.09323950856924057,
               0.16080041229724884,
               -0.6751624941825867,
               -0.4921610653400421,
               -0.07067644596099854,
               0.5292410254478455,
               0.3201596140861511],
        'D2': -0.8500879481211774,
        'D3': 7958681051642304773,
        'D4': 235,
        'D5': 1643280815,
        'D6': [4015547958, 1377809678],
        'D7': 4296},
 'A7': 5,
 'A8': 0.5039435625076294}

Пример 2

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

(b'ZIUG\x00_pjtxq\x00\x00\x00\x03\x00\x00\x00l\xdf\x01=\xf9?\xd7S\xc7>'
 b'\x1c\xb6\x98\xbe\x9e\x0b\x99\xbf\x7fu\xd0?\x02\\\xee?Sam\xbf.;\xe2\xbf'
 b'y\xfb\xa3?8\x93\x03\xbf\xe1\xf0\x07\\\xee`\xd4JR\xb4w\xdb_\xeb\xbb\xed'
 b'\xb9gM\xa2\x00\x00\x00\x02\x00\x00\x00u\x1c\xe5A\xbe\xb5V\x92\xbf'
 b'\xe1\xdeK\x08\xd3Qhpmafp\xf3\x93\xba\x10\x17\xc4\x8d\x07\x89\x99\xcfU'
 b'\x89\xa87\x9b\xe4')

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

{'A1': {'B1': -0.5583853886005672, 'B2': 'pmafp'},
 'A2': 'pjtxq',
 'A3': [{'C1': -3181, 'C2': 186},
        {'C1': 4119, 'C2': 196},
        {'C1': -29433, 'C2': 137}],
 'A4': -553566727,
 'A5': 0.36448842111244906,
 'A6': {'D1': [-0.30868223309516907,
               -0.9978914260864258,
               0.5092304944992065,
               0.825705349445343,
               -0.6806012392044067,
               -0.9764959216117859,
               0.7209932208061218],
        'D2': -0.5605503859578911,
        'D3': 5355541333771545531,
        'D4': 237,
        'D5': 3110555042,
        'D6': [2580501897, 2822216676],
        'D7': 7397},
 'A7': 65,
 'A8': -0.3541761040687561}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ZQWM\xbf\xe9\xd8\xf1\xbep\xad\xb2\x00\x03\x00F\x00\x00\x00I\x00\x03\x00O'
 b"\x00\x00\x00R\x00\x00\x00\x02\x00X(\xa9U0\x01&\x1b\xd1\xdagPy&\x89s\xd3\xe1'"
 b'\x8aC\xcc\x8a%.qN\xfa\xd3\xd5G\x05\xde;#\xb3\xefijaG\x0fJ\xb0\x89Ym'
 b'wc\xc3\xfd[r\x9e\xe2SG\x05\x8d\xf1#}\xb2\xc9\x0f\xca\xfd\x9d\xfb\xed\xb3')

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

{'A1': -0.8077324599775493,
 'A2': [{'B1': 'ija', 'B2': {'C1': 71, 'C2': 15, 'C3': 1253083481}},
        {'B1': 'mwc', 'B2': {'C1': 195, 'C2': -3, 'C3': 1534238434}}],
 'A3': [6000771135688637874, -3958722356809306701],
 'A4': {'D1': [10409, 21808],
        'D2': [1, 38, 27, -47, -38, 103],
        'D3': 5798708367011864871},
 'A5': {'E1': -8483712379334528690, 'E2': 18074024230585776931, 'E3': 179},
 'A6': 239}

Пример 2

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

(b'ZQWM?\xe4\xf6\x92\xc0f#\xc8\x00\x02\x00F\x00\x00\x00H\x00\x03\x00N'
 b'\x00\x00\x00Q\x00\x00\x00\x03\x00W/\x9d|I4\x1c\xd56\x1e\xc0L\x0fhXR\x03\x1aH'
 b'jq\xd1^\xa7\xaf<0\xdf3!\x89\x14\xbc/\x18p\x8axkyu\x8d\x08\xcb\xb3hv'
 b'j\x06\x9fH\x1e>W\xb4\xf4\xaa\xcd\xf1\xef-\xc2\x1fo\xed\xec\xfe'
 b'\xdd\x91\x00\xbe\n\x82\xb2\x88X\x17\x1e')

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

{'A1': 0.655099273471131,
 'A2': [{'B1': 'xk', 'B2': {'C1': 121, 'C2': 117, 'C3': -1928803405}},
        {'B1': 'hvj', 'B2': {'C1': 6, 'C2': -97, 'C3': 1209941591}}],
 'A3': [-5407509451061121598, 2265290739734647040, -4752842753432873186],
 'A4': {'D1': [12189, 31817],
        'D2': [52, 28, -43, 54, 30, -64],
        'D3': 5480714000075528776},
 'A5': {'E1': 7670141844859075632, 'E2': 16083235566912286488, 'E3': 112},
 'A6': 138}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZIJ\x84iagr\x04\xa4\xc6J\xdb\x05\x96\x19\xf0\x91\x9f\x9cA\x00O\x00[\x00f\x00'
 b'v\x00\x83\x00\x8f\x00\x9f\x00\x04\x00\xa8\x00\x00\x00~\xdb\x9a~\xb0\x00'
 b'\x00\x00B\xa2\xcf\xa5\xf2^\x94\xf7\xe5\xe60U\xae\x00\xbc\x06\x00\x00'
 b'\x00;\x00\x00\x00s\xa2\x98\xaa\x80J\x05\x00\x00\x00J\x00\x00\x00\x07'
 b'\x1d\xc2H\x03\x00\x00\x00X\x00\x00\x00\x80\xe4=\x02\x00\x00\x00d\x00'
 b'\x00\x00\x83\xc21\xa3fvl\xc1\x07\x00\x00\x00o\x00\x00\x00\xddY^\x85$\x04'
 b'\x00\x00\x00\x7f\x00\x00\x00X\x0f\x80\xeb\x03\x00\x00\x00\x8c'
 b'\x00\x00\x00\xe7\x05`W\xb2Ru\xf4\x07\x00\x00\x00\x98\x00\x00\x00\x87'
 b'\xdeG\xf4E\xcf\x05e\x15\x8b\x0be\x06\xe7\x02#/\x14\xbb\x0b\x17')

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

{'A1': 'iagr',
 'A2': 1843667536865305604,
 'A3': {'B1': 37360,
        'B2': 40095,
        'B3': [{'C1': [-26, 48, 85, -82, 0, -68], 'C2': 115},
               {'C1': [-94, -104, -86, -128, 74], 'C2': 7},
               {'C1': [29, -62, 72], 'C2': -128},
               {'C1': [-28, 61], 'C2': -125},
               {'C1': [-62, 49, -93, 102, 118, 108, -63], 'C2': -35},
               {'C1': [89, 94, -123, 36], 'C2': 88},
               {'C1': [15, -128, -21], 'C2': -25},
               {'C1': [5, 96, 87, -78, 82, 117, -12], 'C2': -121}],
        'B4': [18398, 17908, 1487, 5477],
        'B5': 2124077950},
 'A4': {'D1': 3396561735235472267, 'D2': 386644756},
 'A5': 66,
 'A6': 16570876489451818914}

Пример 2

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

(b'ZIJ\x84lxmzq\x06i\x14\n\xc9T\x0e\xdbb\x15\nA\x00O\x00Z\x00e\x00r\x00\x81\x00'
 b'\x8c\x00\x99\x00\x04\x00\xa2\x00\x00\x00\x1bq\xf0M\xaa\x00\x00\x00\xf0B'
 b'\x0cC\xf9if\xa7\x94\xa6\xf4\xe1\xce\x07\r\x06\x00\x00\x00;\x00\x00\x00&{U'
 b'R\xdd\x7f\x05\x00\x00\x00J\x00\x00\x00\xc6a\x9e\x02\x00\x00\x00X\x00'
 b'\x00\x00\xdf\x9a\xb1\x02\x00\x00\x00c\x00\x00\x00\xa1\x1d8|\xb1\x04\x00'
 b'\x00\x00n\x00\x00\x00G\xbde\x9f\xaa\x81(\x06\x00\x00\x00{\x00\x00'
 b'\x00\x004\xc8\x02\x00\x00\x00\x8a\x00\x00\x00\xf5s\x8c\xf7\xae\x04\x00\x00'
 b'\x00\x95\x00\x00\x00Y\xae\r\xc9+\xb2Q\xee@C\xa9R\xf4\x10"\x82\xa9\xa0\x7f'
 b'b\xf4')

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

{'A1': 'lxmz',
 'A2': 1032671259703969393,
 'A3': {'B1': 25307,
        'B2': 2581,
        'B3': [{'C1': [-90, -12, -31, -50, 7, 13], 'C2': 38},
               {'C1': [123, 85, 82, -35, 127], 'C2': -58},
               {'C1': [97, -98], 'C2': -33},
               {'C1': [-102, -79], 'C2': -95},
               {'C1': [29, 56, 124, -79], 'C2': 71},
               {'C1': [-67, 101, -97, -86, -127, 40], 'C2': 0},
               {'C1': [52, -56], 'C2': -11},
               {'C1': [115, -116, -9, -82], 'C2': 89}],
        'B4': [3502, 11209, 20914, 16622],
        'B5': 1307603227},
 'A4': {'D1': 12214362595596085571, 'D2': -194871392},
 'A5': 240,
 'A6': 10711642844063534146}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'JANP\x00\x08\x00\x00\x00/W\x0e\xce\xd1\xa2\xa4\xbaS?\x1fhZg\x11\xdbr\x007'
 b'\x00\x02\x00\x00\x00{\x10\xf1\x87W\x14\xa9\xc9\xcf(\xfa\xab\x90_qqbyydit\x8f'
 b"ml\xc7i?Mb\xc3\x99\xad\x0f\tk\x16\xf1'\xc5\x12\x82;6\x87\x0e\xab"
 b'\xe9\xc2\xbd\x00t\xc8?U\xf7\xa7>\x99Ga\xda\x0e\x06~\xa1\xc6\xbaZ\x02\xc9'
 b'\x10F~\xcd^\xf0\x91\xbfI\xa3i<\xf7\xfb\xf3\xbd\xc3\x07\xcd\x00A\x00^')

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

{'A1': 'qqbyydit',
 'A2': {'B1': 6273178730745870931, 'B2': 0.6226860284805298},
 'A3': {'C1': 1729223538,
        'C2': {'D1': 10335036323605204322, 'D2': 50073},
        'C3': [{'E1': -83,
                'E2': 252275478,
                'E3': -3801,
                'E4': 3306324539,
                'E5': 13959,
                'E6': 246147522,
                'E7': [-0.03136137127876282,
                       0.835810124874115,
                       0.29937270283699036]},
               {'E1': -38,
                'E2': 235306657,
                'E3': -14662,
                'E4': 1510131984,
                'E5': 18046,
                'E6': -849416047,
                'E7': [-0.7876496911048889,
                       0.030271505936980247,
                       -0.09522972255945206]}],
        'C4': 4337,
        'C5': [-121, 87, 20],
        'C6': 169},
 'A4': [-55, -49, 40, -6, -85, -112, 95]}

Пример 2

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

(b'JANP\x00\x08\x00\x00\x00/\x84\xd3p:\xb4\xdd\xfb:?d\xa8\x18rK\xb9\xa2\x007'
 b'\x00\x02\x00\x00\x00{\x13uP\x95)\xcfT\xe0}\xc6O\x1dbgbwpbgjs\xd8'
 b'u\xc4\x99\x19H\x7f\x7f\xd9v\x1f\xaf\xa0\x89\xec\xab\xf8\x98\xd2\xa2\xde'
 b'\x08r\x88/\xc9\r\xbe\x8a\x99\xcf\xbf\x01\x00\xd5\xbeP/\xbf\x82\xb7>!\xc0\x92'
 b'\x90\xa3\x96\\y}_^\xe8\x8b\xf3>)t/\xbf:wv\xbd\x91)9\x00A\x00^')

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

{'A1': 'gbwpbgjs',
 'A2': {'B1': 9571117030537296698, 'B2': 0.8931899070739746},
 'A3': {'C1': 1917565346,
        'C2': {'D1': 15597589046300802943, 'D2': 55670},
        'C3': [{'E1': 31,
                'E2': -1348433428,
                'E3': -21512,
                'E4': 2563941086,
                'E5': 2162,
                'E6': -2010134259,
                'E7': [-0.2707047164440155,
                       -0.5039189457893372,
                       -0.2033071368932724]},
               {'E1': -126,
                'E2': -1220664896,
                'E3': -28016,
                'E4': 2744540281,
                'E5': 32095,
                'E6': 1592298483,
                'E7': [0.1654822677373886,
                       -0.728385329246521,
                       -0.07087940722703934]}],
        'C4': 4981,
        'C5': [80, -107, 41],
        'C6': 207},
 'A4': [84, -32, 125, -58, 79, 29, 98]}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ENG\xb7o\x9e\xcf\xbe3\x9c\x0f\x10FQ\xeb\xc8\xa6\xf1bR\x84\x00I\xbbF?\xf4\xe2'
 b'K?\x00\xacR\x98\xfd\xcfP\xbfC\x9f\xeb\xd1Y\xe7\xaad?u4\xea<\x90\x8e,Z\xd2'
 b'\xce\xe1\xbf4\xca\x95\xbb\xad\x7f\xdc\xc95\x9dau\t5,\x0f\xbfp\xb9O?!\xc5,?'
 b'\\DE?\x08\xf5\xb8>\xa96\xd9\xbb\xda\xf9~\xbfajI/\xf3\xf6)Bj!\xb0\xf1\x9dH"J'
 b" &K\xa2=%\xe0M'\xea\xbe\xa7\x04b\xf5\xaaE\xe6\x87o\x05\x0eP\xfb]\x9a?\x17")

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

{'A1': 3201277551,
 'A2': {'B1': -3968989285237941197,
        'B2': 1382216102,
        'B3': {'C1': 18108989518165567045, 'C2': 390044253},
        'B4': [{'D1': 0.7762952446937561,
                'D2': 0.7964317798614502,
                'D3': -0.0010261513246330178,
                'D4': [67, -97, -21, -47],
                'D5': 89},
               {'D1': 0.8932327628135681,
                'D2': 0.028589466586709023,
                'D3': -0.5564967881404801,
                'D4': [52, -54, -107, -69],
                'D5': 173}],
        'B5': [56447, 13769, 24989, 2421],
        'B6': [-0.5592682957649231,
               0.8114233016967773,
               0.6748829483985901,
               0.7705743312835693,
               0.36124444007873535,
               -0.006628830451518297,
               -0.9959999322891235],
        'B7': 97,
        'B8': 106},
 'A3': 73,
 'A4': 47,
 'A5': [1110046451,
        -240115350,
        1243760797,
        -1572133344,
        1306535229,
        -1480660441,
        -1426759164]}

Пример 2

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

(b'ENG\xb7u\x8c\xdd5Y\xf7M\xaf\xf1\x01\x80\xa8\x933\x89\xb5\x84\x00\xdc\x8e'
 b'\xc9>@\xa5\x0b?\x00\x0b\xb9 \xe2,\xe5?C5\xfd\xaf\n\xfd\x1du\xbe\x80#l\xbf0'
 b'\x90\xa5\x1d\x0c<\xcd?\x19\xb8\x18VJT\xdfi\x03\xf0J\x96\x1f\x8a\xc5(\xbf'
 b'\xaa\x1aF>\xcb${?a6\xb4\xbe\x01\xcbP?\x933d\xbc+J\xbc\xbe\xcdc\xf6\xe3'
 b'\x1e\xc8\xf1L\x1a\xebf\xb16M&\xd7\x1bL/\xc2\xa9\xbct\r\xff5\xc33'
 b'\x13\xee\x9b\x84\xe5\x85\x18?\xe4\x9d\xf3\xb2\xe5\xd4A\x18')

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

{'A1': 903711861,
 'A2': {'B1': -6305037340778825895,
        'B2': -1249299565,
        'B3': {'C1': 12894823761728538085, 'C2': 406967525},
        'B4': [{'D1': 0.3936680555343628,
                'D2': 0.5454902648925781,
                'D3': 0.6617289198987635,
                'D4': [67, 53, -3, -81],
                'D5': 10},
               {'D1': -0.23937220871448517,
                'D2': -0.9224166870117188,
                'D3': 0.2283949990043097,
                'D4': [25, -72, 24, 86],
                'D5': 74}],
        'B5': [57172, 873, 19184, 8086],
        'B6': [-0.6592642068862915,
               0.1934610903263092,
               0.9810301661491394,
               -0.3519773781299591,
               0.8155975937843323,
               -0.013928311876952648,
               -0.36775335669517517],
        'B7': -51,
        'B8': 99},
 'A3': -10,
 'A4': -29,
 'A5': [1290913822,
        -1318655206,
        -685355722,
        -1037087717,
        225754281,
        868431359,
        -2070155757]}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'EJYBzubeyjmev?t\\\x9d\x00\x02\x00\x00\x00sL\x14}~P\xfc9RQz\x81\xd6\x80'
 b'\xea\xf2\x8d\x00\x00\x00\x02\x00\x00\x00\x1b(D\x0f\x8a\x98=\x81O\xad'
 b'g\xbf\x0e\xeb\xbc?\xa4\xc5\x95\x81\xd9\x97\x8a`\x8f%\x94\x13\xde\x0e'
 b'"\xcdd\xf3H\xef\x15\x00\x00\x00\x02\x00\x00\x00G\xdcD\xd3(D\x81\xfeNN'
 b'K\x15\x93\xd0\x17\x96\xe6\xfa5n%\x9ct\xda\xc2\x00\x00\x00\x1f8\x98C&+'
 b'\xafo%\x10\x1c%\x02#\x9a\xc9[\x00\x00\x007/\xe2\xb6\xe1\x00\x00\x00Ky'
 b'\xbe\x1fi\x9d\xc6\x10\xc2\x83\xda\x99\x81\xa591\xf3\x00\x00\x00c\x0eOp\xac')

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

{'A1': 'ubeyjmev',
 'A2': 0.9545381665229797,
 'A3': [{'B1': {'C1': 5871147822516728461,
                'C2': [20732, 14674],
                'C3': 2901461147867513167},
         'B2': 14488,
         'B3': [1126575023, 1864699932, 620897178],
         'B4': -55,
         'B5': 91,
         'B6': {'D1': -21145,
                'D2': -1089541188,
                'D3': 63,
                'D4': 164,
                'D5': 14237428568552005775},
         'B7': {'E1': 12258, 'E2': -74, 'E3': 225}},
        {'B1': {'C1': 1018602299201220373,
                'C2': [9620, 5086],
                'C3': -2574700917047558578},
         'B2': 31166,
         'B3': [527015366, 281183194, -1719556807],
         'B4': 49,
         'B5': 243,
         'B6': {'D1': 20043,
                'D2': 362008599,
                'D3': -106,
                'D4': 230,
                'D5': 18029437791065397954},
         'B7': {'E1': 3663, 'E2': 112, 'E3': 172}}],
 'A4': 1276411262}

Пример 2

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

(b'EJYBzmhvkiark=\x8cd\x95\x00\x02\x00\x00\x00s\x81\xcf\x9d\xd5\xcf\xf5Ttr'
 b'\xc9\xc7\xc5O\x8aB\xb8\x00\x00\x00\x02\x00\x00\x00\x1b\xb7!ik\xabu\xe4\x9ee'
 b'\xd39~J\x87\xd2N\x93\xbd\xc3O<\x8cB\x82\xbb\xcd\x89\x82\x16\xec\xba~\xab'
 b'O\x84\xee\x00\x00\x00\x02\x00\x00\x00Gq\x9a\r\x07\xf8h\xaa9\xc8\xa5U\xb2\x04'
 b'\xf1\xf1{\xd8\xff\x0c\xf8S\x95\xe3\xc2\x00\x00\x00\x1f\xdc\xaa\x81\xc4\x9c'
 b'w\x16\x89\x80\xc7\r\x0e\x8fI\xd2\x85\x00\x00\x007\xe7\x9e\xf2\xe5\x00'
 b'\x00\x00K\x1b~bal\xd8\xb0\xb13G\x8f\xce\x82v\x07R\x00\x00\x00cb\xed\x97d')

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

{'A1': 'mhvkiark',
 'A2': 0.06855121999979019,
 'A3': [{'B1': {'C1': 8271361840899572408,
                'C2': [53237, 21620],
                'C3': -5250799779378240354},
         'B2': 56490,
         'B3': [-2117821321, 378110151, 219057993],
         'B4': -46,
         'B5': 133,
         'B6': {'D1': 26067,
                'D2': 964577927,
                'D3': -46,
                'D4': 78,
                'D5': 10645879839259378306},
         'B7': {'E1': -6242, 'E2': -14, 'E3': 229}},
        {'B1': {'C1': 1651900216540890350,
                'C2': [48077, 35202],
                'C3': 8185869600582838841},
         'B2': 7038,
         'B3': [1650552024, -1330564281, -1882291594],
         'B4': 7,
         'B5': 82,
         'B6': {'D1': -14171,
                'D2': 1437730033,
                'D3': -15,
                'D4': 123,
                'D5': 15636230691947406274},
         'B7': {'E1': 25325, 'E2': -105, 'E3': 100}}],
 'A4': -2117100075}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xccQASf\xfb\x87\xd45)\x03\x00\x00\x00\x1e\x00*\x003\x00<\x00E\x00N\x00W\x00'
 b"|\x00\x846la\xa92>^\x1d\x06v\x8e\x05\xe4/\x97H\xea\xdbi'\r*\xb4tU\x13\x9efc"
 b'Q\x92\x98\xf2\xc7\xb3>\xe7\x00RB\xa4_[\xd6.\xa3\xa2\t\xe3\x7f8\xdd\xd0'
 b'\x1d?\xdd\xcer\xef\xa8\xd7a\xa7\xbdo\xb1\xd7Q\x9fmA\x8eJ\x15<8\xe7 \xa46\x17'
 b'5\x04\xeb\x16Z\xf9}\xeb\x8c\xf7\x02\xf5\xcd\xab\x8d;m\n\xb6\x1fs\x0e\xb2\x03'
 b'\x00\x00\x00`\x00\x00\x00\x02\x00l\x001\xf0|\xc7U?\x7fXo\xb4')

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

{'A1': -1178,
 'A2': {'B1': 691393671, 'B2': [1634481796, 1581134505, 2390099485]},
 'A3': [{'C1': 5, 'C2': 2840042839320506340},
        {'C1': 13, 'C2': 7162586063254631466},
        {'C1': 81, 'C2': 65089661494794386},
        {'C1': 82, 'C2': -6727481920170515390},
        {'C1': 9, 'C2': -2504250084892835869},
        {'C1': -50, 'C2': 8051775747480153970}],
 'A4': {'D1': {'E1': 205, 'E2': 36267, 'E3': -5616425105249112773},
        'D2': {'F1': [2672940977, 1250836845, 3879222293],
               'F2': [1651418314430653472, -791798399845402278],
               'F3': 61489,
               'F4': -5445036120920963204}}}

Пример 2

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

(b'\xccQAS<\xd7R [;\x03\x00\x00\x00\x1e\x00*\x003\x00<\x00E\x00N\x00W\x00'
 b'\x80\x00\x1b\x14\x96Vy\x0b\x05\xcb\xd1b@\xf1\x8c\xd6\x0c\xa6+$\xb5\x00\xcbd'
 b'.`\x95\x0c\xcc\x906E\x85\xcf\xec\x04\xdd\xa1&;\xfcs\x02\xe5M\x97\xe0R'
 b"O\x99\xe6z\x010\xd15\xd4\x93fNf!\xc8\xb8\n\xb2U\x8c\x10'\x1b\xcb0}\x8a\xc7"
 b'\xa7\x07\x9c\x82\xc42\xf3n,\xea\x91&\x93@\x07\xd9\x12\xd9\xd8llA\x89\xbc'
 b"#%\x0b'\xceg4\xca\xb0\xf9G\x04\x00\x00\x00`\x00\x00\x00\x02\x00p\x00\x92"
 b']J\xba\x86\xb5\xe9\xc3\xe0\x96')

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

{'A1': -10436,
 'A2': {'B1': 995827794, 'B2': [1452676123, 3406105465, 4047528657]},
 'A3': [{'C1': -116, 'C2': -3818853317054427946},
        {'C1': 100, 'C2': 4987332843418247214},
        {'C1': -123, 'C2': -271580875886105393},
        {'C1': 115, 'C2': -7399604538181819134},
        {'C1': -26, 'C2': 7391484741053055354},
        {'C1': 78, 'C2': -8334559776259694234}],
 'A4': {'D1': {'E1': 35, 'E2': 2853, 'E3': 5186370828402937383},
        'D2': {'F1': [3407554320, 3347742000, 2191263655, 1861432004],
               'F2': [-2808204841890747860, -4861282388831315694],
               'F3': 23954,
               'F4': -7574839164696872374}}}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'EJI\xf9\xf0N\xf8\x1e\xff\xba/p?\x92\x04\x00\x00\x00@\x00\x00\x00\xa6\xdc'
 b'\xb0\xd3f\x87\xd7\x0f\xee\xbf\xc3\xd4\xf0!\x9d\xcf\xc9q\xee?T\x8f'
 b'|\x94\x0c\x8cm\x8d\xd8?{\x00\x00\x00\x80\xcf{\x86^\xd9\xe0\xa7csjp/\xd5q\x8b'
 b'\x80\x0bX\xe8\xb09\xc1\x96A\xa3\xd3\x82\xb7[\xda\rb1\xd9PT\x96\xcd&t+\x197'
 b'\xe5\xc1\x8d\xdeb]w\xe3\xfa\x7f[\xc1\x98\x85\xf8\xebF\rC\x92G\x14\x0c\xad'
 b'\x99\x0f\x1c\x02\x9c|\x94D\x00\x00\x00')

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

{'A1': 20208,
 'A2': {'B1': 7928,
        'B2': -1,
        'B3': 0.9382282495498657,
        'B4': 146,
        'B5': 'csjp'},
 'A3': [{'C1': -9050, 'C2': -0.939433826881773},
        {'C1': -11069, 'C2': 0.9513901762921346},
        {'C1': -28844, 'C2': 0.38363207508729835}],
 'A4': {'D1': {'E1': 470784429, 'E2': -1803772926},
        'D2': {'F1': [47, 213],
               'F2': [192973681,
                      967895128,
                      -1555982655,
                      1538753235,
                      828509658,
                      -1772859175,
                      729032397,
                      -1041942759],
               'F3': 141,
               'F4': 25310,
               'F5': 11007179569498388317,
               'F6': 5157258247596144773,
               'F7': 20,
               'F8': 12}},
 'A5': 2256260992,
 'A6': -1478436514}

Пример 2

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

(b'EJI\xf9=Y\xd0P\xa2\xaf{S\xbe\xc0\x06\x00\x00\x00@\x00\x00\x00d|\xa8O\x83\xfd'
 b'K\x13\xe8\xbfb\xd2\x00\x01rY\xe7\xe4|?\xc9G\x1e\x19\xa7/\xab\xcf\xe9?'
 b'}\x00\x00\x00\xab\x10\xda\xba\xfe\xb0\\\xdacnlbri\x11\xf1\xfd\xe4w\xd2'
 b'y\x8e\xb9I\xf1\xb7\x8eQ\x8dd\xb4\xf0?Py\xe1fD\xb6\xd3\x82m\x97d\xff\x13\xe5;'
 b']}\xb2;\x8bm\xb6%|\x1a\x10\xbc\x8e\xb7\x9eu\'\x0cy"\x01y\x02j'
 b'\xe2\xbb\xf1\x1d\xbdF\x00\x00\x00')

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

{'A1': 22845,
 'A2': {'B1': 20688,
        'B2': -94,
        'B3': -0.2065265029668808,
        'B4': 192,
        'B5': 'cnlbri'},
 'A3': [{'C1': 31844, 'C2': -0.7523555709290024},
        {'C1': -11678, 'C2': 0.007054237087800397},
        {'C1': 18377, 'C2': 0.8066001826016735}],
 'A4': {'D1': {'E1': 3798598265, 'E2': -1122111045},
        'D2': {'F1': [17, 241],
               'F2': [-763894531,
                      1236897401,
                      1368307697,
                      -256613235,
                      -512143297,
                      -743029658,
                      1687645570,
                      1004868607],
               'F3': 93,
               'F4': -19843,
               'F5': 1160376355417590587,
               'F6': 8722389964437294780,
               'F7': 34,
               'F8': 1}},
 'A5': 3134853291,
 'A6': -631459586}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'PRQ\x8f3\x02\x00\x00\x00k\x00\xb8\x00\x02\x00\x7f\x00Gz2?\x9b\xb4\x83'
 b'.\xf0\xd6h\x9d?(\xc7\x19\x80q\x98`\xb8\xa7\x0c\xf2\x15r[LVP\xcbnLy\xec'
 b'\x95\xcfr\xc5\x03*\xf7\x88\xfb\xfb\xbc\xe2\x8d\xcb\xcbe\xba\x86_$\x1dK_\x9a'
 b'e\xe9\xbd\xa52\x19\xdezmvjlz3\xd9\xc6#M\x8b{\x03em\xdb\xaf\xc6\x88\xbf'
 b'\x1f\xa5\x03\x06\x00\x00\x00S\x00\x02\x00Y\x00\x02\x00\x00\x00a\x00\x02'
 b"\x00c\x00M'7\xbf\x89\xfbH?")

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

{'A1': 51,
 'A2': [{'B1': 'zmvjlz', 'B2': [600234291, 58428237]},
        {'B1': 'em', 'B2': [2294722523, 61153215]}],
 'A3': 184,
 'A4': [-0.7154434323310852, 0.7850881218910217],
 'A5': {'C1': 0.697178304195404,
        'C2': 46235,
        'C3': 131,
        'C4': -4095953915792134098},
 'A6': 25,
 'A7': {'D1': 17441499867235512704,
        'D2': 1281061397,
        'D3': 20566,
        'D4': [2035052235,
               1926206956,
               -148241467,
               -1124336760,
               -875852318,
               1602665061,
               1598758180],
        'D5': -0.11396332085132599},
 'A8': 3726193317}

Пример 2

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

(b'PRQ\x8f.\x02\x00\x00\x00m\x00\xb3\xba\x06\x00\x81\x00\x80\x80\x07'
 b'\xbf\x93\x8b\x98Z[q\xd7\xf1a8h"\x9d\x85v\xdd\xa7\xbd\xd7\xabI\xae\x18'
 b'\xeb\x05\xc8b1\xe2\x91\x00R\x11h\xbf\xccHl\r\x07g\x13\x83\xba\x08a\xfd'
 b'\xe4\x96wUX\x00\x80A\x86\x14?\xc0\x7f]\xbcuwbxh"\xfew<)mh\x86ovwozg\x8a\x06'
 b'9\xdf\rMG\x05\x00\x00\x00S\x00\x02\x00X\x00\x05\x00\x00\x00`\x00\x02\x00e'
 b'\x00\xc2\xc2[\xbf\x1b=|\xbf\xa1kM\xbf6Kb\xbf\x86\xda\xb5\xbe!\xbc\xfb\xbe')

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

{'A1': 46,
 'A2': [{'B1': 'uwbxh', 'B2': [1014496802, 2254990633]},
        {'B1': 'ovwoz', 'B2': [956729959, 1196232159]}],
 'A3': -17741,
 'A4': [-0.8584405183792114,
        -0.9853073954582214,
        -0.8024235367774963,
        -0.8839601278305054,
        -0.35518282651901245,
        -0.4916696846485138],
 'A5': {'C1': -0.5293045043945312,
        'C2': 35731,
        'C3': 152,
        'C4': 7509860069969845082},
 'A6': 34,
 'A7': {'D1': 12382574229151188381,
        'D2': 3944263241,
        'D3': 51205,
        'D4': [-1847447198,
               1745965568,
               1816710335,
               325519117,
               1627961987,
               2006377725,
               -2147461035],
        'D5': 0.5801735520362854},
 'A8': 3160244160}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'BPUc&!\x8a\x1a}VO\xe9G\xbe\x03\x00C\x00\xb7\xbf\x97\x96u\x06\x81)C\xed'
 b"C\x92\x84\xb1^>\\\xa8\xe2\xe9^\x15\x0e?\xc4[J\xc3I\xf0-'':\x96\xdbZ\x00"
 b'\xc7^8\x9c\xb3\xcc\x9d1\xd2?\xe5\xce\xb4I\xbfofd\xf2)?\xb5\x92\xc9\xfcM?#'
 b'\xeek\xfc\xd4,\xfe\x03\x00\x00\x00U\x00\x00\x00\xc7\xce$?\x04 .\x15#\xa1'
 b's\x9a\x16\xa1\x02\x00\x00\x00X\x00\x00\x00D*>. \xfa\x06)\xd9Z\x06\x12'
 b'%\xc4\xa4N\xd2\xcd')

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

{'A1': 8486,
 'A2': -4735559956194059638,
 'A3': [{'B1': -0.7879151105880737, 'B2': 26223},
        {'B1': 0.6638548374176025, 'B2': -27979},
        {'B1': 0.8046384453773499, 'B2': -4573}],
 'A4': {'C1': -1768439881,
        'C2': 10539528425692006005,
        'C3': 16853217869710668164,
        'C4': 0.5550135374069214,
        'C5': 2823176741030878148,
        'C6': 3684055591,
        'C7': {'D1': [107, 252, 212],
               'D2': 0.6437801718711853,
               'D3': {'E1': 355344388,
                      'E2': 41251,
                      'E3': 39539,
                      'E4': 41238,
                      'E5': [44, 254],
                      'E6': 68,
                      'E7': 15914},
               'D4': 8238,
               'D5': [-651622662, 621938266],
               'D6': -60,
               'D7': 3453111972}},
 'A5': 24263,
 'A6': 0.2842783450163924,
 'A7': -27}

Пример 2

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

(b'BPUc\x12h~\xc7\xa5\xb6\x9f\xc0EL\x03\x00C\x00\xcc\xa2{|\x81\xea\x839\xab\x83'
 b'\xc0=w\xfa\x0bc\xec\xd9\xd1\x97\xc4\x93~?\xf9\xde\x08E\xd2\x9f\xff\x8dFd'
 b'\xf7\xabZ\x00dA\xb0,1\xbfqi\xe5?\xb2\x82\xd0>\xbf\x12\xaf9\xc1\x02\xbf\xc8Ky'
 b'E\xb4\xbe\xacxt{\xd6$\xc9\x02\x00\x00\x00U\x00\x00\x00\xf7\x9a\xc0<aT'
 b'\xf0\xc8\xfeF\xe8\xa4\xe6\xa9\x03\x00\x00\x00W\x00\x00\x00 Z\xe4\xda'
 b'\xac\x92\\\x85\x9e[\xb1Sc\xf5\x0eAw\x95')

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

{'A1': 26642,
 'A2': 5496010712472209278,
 'A3': [{'B1': -0.7453690767288208, 'B2': -20718},
        {'B1': -0.5107608437538147, 'B2': 19400},
        {'B1': -0.35209253430366516, 'B2': 30892}],
 'A4': {'C1': 2088477388,
        'C2': 4449701203269642881,
        'C3': 10939764579156884087,
        'C4': 0.9944422245025635,
        'C5': 10232072603859214073,
        'C6': 2885116998,
        'C7': {'D1': [116, 123],
               'D2': 0.02351139299571514,
               'D3': {'E1': 3371193441,
                      'E2': 18174,
                      'E3': 42216,
                      'E4': 43494,
                      'E5': [214, 36, 201],
                      'E6': 32,
                      'E7': 58458},
               'D4': 44250,
               'D5': [-1635427182, 1666429275],
               'D6': -11,
               'D7': 2507620622}},
 'A5': 16740,
 'A6': 0.6691216215343925,
 'A7': -78}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TNUQ\x8d\x00\xae\x9a"\x9fnPZ\x9dC\x7f\xec\xbf\x8dhsep\xa9\xec\xc71\x07'
 b'\x16\xb8\xee\x02\x00\x00\x00\x17\x00\x00\x00\xa81\x93\x82\x1b\xefC\xd6\x02'
 b"\x00\x00\x00'\x00\x00\x00\xd7(\xf9\xa82d<W\xbcs\x03\x00\x00\x007\x00\x00"
 b'\x00\xa4\xba7\xb2\x8b\xab\n\xef\x02\x00\x00\x00I\x00\x00\x00\xc5\x80\xaf'
 b'\x01\xc0X\x12\xca\r\x1c\x03\x00\x00\x00Y\x00\x00\x00\xa4?\xa9[\xa2'
 b'\xdd\x018\x02\x00\x00\x00k\x00\x00\x00\xbe\x95\x99rO\xec\x9f!|'
 b'\xde\x03\x00\x00\x00{\x00\x00\x00\n\x00\x04\x00\x13\x00\x00\x00\x94\x1b\x00'
 b'\x00\x00+\x00\x00\x00=\x00\x00\x00M\x00\x00\x00_\x00\x00\x00o\x00'
 b'\x00\x00\x81\x00\x00\x00:\xdd\xc7X\x10\xc1')

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

{'A1': {'B1': {'C1': -0.8905351708695102, 'C2': -115},
        'B2': 'hsep',
        'B3': 148,
        'B4': [{'D1': -289925625, 'D2': [-4951, 12743]},
               {'D1': -700190949, 'D2': [12712, -32109]},
               {'D1': 1941722940, 'D2': [10455, -22279, 25650]},
               {'D1': -284513397, 'D2': [-17756, -19913]},
               {'D1': 470665746, 'D2': [-32571, 431, 22720]},
               {'D1': 939646370, 'D2': [16292, 23465]},
               {'D1': -562290273, 'D2': [-27202, 29337, -5041]}],
        'B5': [56634, 22727, 49424]},
 'A2': -1625122130}

Пример 2

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

(b'TNUQ\x8f\x00\xda\xb7e\x7f\xc0\xfbmZG\xab\xdf\xbf&qiwwr\xedY\x03\x96'
 b'\x1b\xba\xba\x02\x00\x00\x00\x17\x00\x00\x00\xc8\xb1{\xae\xc0'
 b"\xa6\xca\xf6\xa6\xe7\x03\x00\x00\x00'\x00\x00\x00\xc92\xad\x82\x86\xf6\xf5"
 b'\x89\xeb\x02\x03\x00\x00\x009\x00\x00\x00\xd3jG\xf7\x8f\xd3X\x9a\xd6'
 b'`\x03\x00\x00\x00K\x00\x00\x00\xfb\xbc\xe3\xab\xc1A\xd6\x04\x02\x00\x00'
 b'\x00]\x00\x00\x00t#g\xd0\xe2\xe9\x18G\x02\x00\x00\x00m\x00\x00\x00R\xbbj'
 b'M\x89,5c6\x93\x03\x00\x00\x00}\x00\x00\x00\n\x00\x04\x00\x13\x00\x00\x00g'
 b'\x1b\x00\x00\x00-\x00\x00\x00?\x00\x00\x00Q\x00\x00\x00a\x00\x00\x00'
 b'q\x00\x00\x00\x83\x00\x00\x00\xe5\xee\x835\xc5\x8c')

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

{'A1': {'B1': {'C1': -0.4948290236570152, 'C2': 38},
        'B2': 'qiww',
        'B3': 103,
        'B4': [{'D1': -1162208362, 'D2': [-4750, 857]},
               {'D1': -408488246, 'D2': [-20024, -20869, -22848]},
               {'D1': 48990709, 'D2': [13001, -32083, -2426]},
               {'D1': 1624676952, 'D2': [27347, -2233, -11377]},
               {'D1': 81150401, 'D2': [-17157, -21533]},
               {'D1': 1192815074, 'D2': [9076, -12185]},
               {'D1': -1825152203, 'D2': [-17582, 19818, 11401]}],
        'B5': [61157, 13699, 36037]},
 'A2': 2137372634}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'WEVR\xed\x02\x00\x00\x00%\x00\x13j;:O\x00`\x00\xe0\x9c\x0c\x8e\xf1/\x87hd'
 b'iffugkvli\x1a\xfdk[S\xa0\x0e\xb8i\x04\x00\x1b\x00R-\xe3-- \x19\x9a9\xbb'
 b'\x10\x06\x00\x1f\x00dp\xcay\x14V\xd2\xebF\xfc>\xd0\xa8\xdf\xef'
 b'\xb7\x10\x18\xd6\x03\x00C\x00\xbf1\x96\xc6wc\t\xc4\x04\x00X\x00'
 b'\x00\x00\x9c\xd2\xf5\xb5\xb8\xf1\xd8\xbf7U\x18\xb1\x95\x8bi%k\xf1\x8e,')

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

{'A1': [{'B1': -5184029841180328678, 'B2': 105, 'B3': 'diff', 'B4': 11602},
        {'B1': -4955760482239828509, 'B2': 16, 'B3': 'ugkvli', 'B4': 28772}],
 'A2': 976972307,
 'A3': {'C1': 403748847, 'C2': -42, 'C3': [1444182474, -62460974, -542584770]},
 'A4': {'D1': [12735, -14698, 25463, -15351],
        'D2': -0.38975351113848844,
        'D3': 21815,
        'D4': [24, 177],
        'D5': 3210769026853211029},
 'A5': 7532041616317258976}

Пример 2

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

(b'WEVR\xed\x03\x00\x00\x00(\x00\x18mX\xf6a\x00t\x00\xf6\x88\xf6\xd7\xc9e[\x11m'
 b"ztlaigdnvviw\xeds\xcb\xf8i\xd5\x81\xf7\xa4\x06\x00\x1b\x00'\xbf\x87"
 b'\x15\xb6\xbc\x81\x14\xc8\xdb^\x03\x00!\x00I\x89\xfa\x00\x19\xa1P\x0f'
 b'H\xf8\x97\x04\x00$\x00\xc6I7G\xa93\xdb\x8e\xb5\xc6\x99M\xcb)\xa9\x7fG'
 b'I\xad\x03\x00U\x00!\xa3\xf2\xc8\xd2\xcd\x17"T\xe2\x05\x00j\x00'
 b'\x00\x00\x90\x1f\xb0#\xee\xd5\xb5?\x92SYJ}\x02\xd1\x0f!\x0fc\x03')

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

{'A1': [{'B1': -611973423223311379, 'B2': 164, 'B3': 'mztlai', 'B4': 48935},
        {'B1': -2609813436611816057, 'B2': 94, 'B3': 'gdn', 'B4': 35145},
        {'B1': -556177715005685510, 'B2': 151, 'B3': 'vviw', 'B4': 18886}],
 'A2': 4132990232,
 'A3': {'C1': 1229422505, 'C2': -83, 'C3': [866731831, -961179941, 701189529]},
 'A4': {'D1': [-23775, -14094, -12846, 8727, -7596],
        'D2': 0.08529556628502477,
        'D3': 21394,
        'D4': [89, 74],
        'D5': 244055439481832061},
 'A5': 1250705239111534838}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'$DDZC\x03\x00E\x00mxwhrz_\x00W\x14\xa4\xe3\xfd\xccy\xed\xe0\xb7Zf\x99\x026'
 b'\x8f\x8eKUA\xb2\xfd\r\xcd\xf9\x85l\xc4\x7fm*\x9d\xbf\x01\r\x99\x02\xa0\\'
 b'p\xf5\xec\xce\x8e\xb61\x881\x9b\xf5\xbeB\x8f\x1f\xed\xe7\xbf5O'
 b'\x02\xdd\xb2\x1f3\xfe\xedZ\xed\xf0D4\xc0\xa3|\x89QZ\xa8\x1c\x0e\xe1\x18\xcd'
 b'\x06JF\xf8B\xaa\xc2\xf9\x19rKk\x99p\xd8\xe7\x96\x9c\x02\x00W\x00\x00\x00')

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

{'A1': [{'B1': 8079, 'B2': 901769197},
        {'B1': 591, 'B2': 857715421},
        {'B1': -4610, 'B2': 1156640090}],
 'A2': 'mxwhrz',
 'A3': {'C1': 3612,
        'C2': 4825684284483115233,
        'C3': 170,
        'C4': 8113634175465683394,
        'C5': -1667831848,
        'C6': [2091106356, -1470475895]},
 'A4': {'D1': 87,
        'D2': 42004,
        'D3': [2043477475,
               1522000109,
               906140006,
               1431015055,
               234730049,
               1820719565,
               711819204],
        'D4': [218218397, 1553990297, -823331472, -2010007922],
        'D5': -0.47969964146614075},
 'A5': 66}

Пример 2

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

(b'$DDZC\x03\x00E\x00ghtepx_\x00p\xa9\xb5[#4\x17\xf1\xb3\xc2\xd6\xfdcm+'
 b'\x03\x16\xdc\x18Q)\xd7X~I\xfbc\xaf0u\x9c\x9d\xe0q\xe8\x1f\x81\xc18'
 b'\x0e\xb2\x1dZn\xb0\xd0\xac(\x1ep?\xff\xb4p\x89\xb4\xe0\xa8O\x0fB\xfb\xcf'
 b'XQ\x13\xf9]U\xe5\x866\xde\x1b\xeb\xbc"N:\x0f<\xf9\x1c;\xc5x\xae\xd7\x8fMA'
 b'8\x9c\x8c\xb9\xf7\x7f\xea\xd5\xa7\xa1\x02\x00W\x00\x00\x00')

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

{'A1': [{'B1': 28852, 'B2': 2833298569},
        {'B1': 3919, 'B2': 1490025282},
        {'B1': 4945, 'B2': 3847577081}],
 'A2': 'ghtepx',
 'A3': {'C1': 3898,
        'C2': -2905251921111746244,
        'C3': 143,
        'C4': 9221042775631872333,
        'C5': -1582836246,
        'C6': [467547782, 1310899435]},
 'A4': {'D1': 112,
        'D2': 46505,
        'D3': [389292891,
               3603084273,
               728589309,
               417076739,
               1490495825,
               1677412734,
               2624925871],
        'D4': [-395190115, 952205599, 1511895566, -1395609490],
        'D5': 0.937960147857666},
 'A5': 255}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ZSSU\xb9f\x97\x0b\x97X\x0f\x00\x00\x00\x03\x00\x00\x00U#\xd9\xd7\x0b|'
 b'r\xa6\xf8\x00\x05\x00\x00\x00[\xb1\xbf\x00\x03\x00e;\xd1\xf5w\x8c'
 b'\xca\xbf\x87\xbc\xfa\xea\xb9\n\x00\x00\x00\x00\x03\x00\x00\x00k\x1bX\x9a'
 b'\x0f\xaf\xe6\x04\x80?9\x1a\x13\xa5-\xbfH\x08\t$\x97?2[*\x00C\x00I\x00O~'
 b'3,\x88@\x9e\\d/\t\x83\xa5\xd9\x9c\xa5\x1eN,\xa4')

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

{'A1': 102,
 'A2': {'B1': 151,
        'B2': {'C1': 194467855,
               'C2': [{'D1': 1152, 'D2': 0.7230541110038757},
                      {'D1': -23251, 'D2': -0.781372606754303},
                      {'D1': 9367, 'D2': 0.6967035531997681}],
               'C3': 2583332305606190840,
               'C4': [32307, 11400, 16542, 23652, 12041],
               'C5': {'E1': -20033, 'E2': [33701, 55708, 42270], 'E3': 15313},
               'C6': 245,
               'C7': 119,
               'C8': -29494}},
 'A3': -0.011590919769450814,
 'A4': [78, 44, -92],
 'A5': 7000,
 'A6': -1710247962}

Пример 2

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

(b'ZSSU\xb9\x1az\xee\xe1y$\x00\x00\x00\x05\x00\x00\x00a\x0f\x87\x87$\x88'
 b'Z\xb7\x83\x00\x02\x00\x00\x00k\x15\x95\x00\x02\x00o~\xe2tj|\xf6?\xe3\xb5'
 b'=D)\x03\xe2\x00\x00\x00\x02\x00\x00\x00s\xa8\xd7\xf8\xa1\xa7s\x14'
 b'\xc7\xbdi\xaaQ\x1c\x86\xbe\x03*\xff\x14\xf0\xbe\x9d\x98c\xc6\x19\xbfxNF@b>q('
 b'|\x00C\x00I\x00O\x00U\x00[\x88\xedxX\x01\xbb\xcaTYa')

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

{'A1': 26,
 'A2': {'B1': 122,
        'B2': {'C1': -287213276,
               'C2': [{'D1': 5319, 'D2': -0.05704719200730324},
                      {'D1': 7302, 'D2': -0.12809370458126068},
                      {'D1': 5360, 'D2': -0.3078032433986664},
                      {'D1': -14823, 'D2': -0.9699443578720093},
                      {'D1': 16482, 'D2': 0.23550599813461304}],
               'C3': 1119011623401076611,
               'C4': [-30483, 30808],
               'C5': {'E1': 5525, 'E2': [443, 51796], 'E3': 32482},
               'C6': 116,
               'C7': 106,
               'C8': 31990}},
 'A3': 0.6158739405874452,
 'A4': [89, 97],
 'A5': -22313,
 'A6': -123623565}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x95ERQMzhr\x8e\x00\x00\x00y\xd3\xa6?\xed\t\xbb\x92{\x08lb\x04\x95\xa6.'
 b"2\xd7\xe7\xbd]\x80\x12?\xa2\x13HX\xf3\xe4\xb1\xfdW\xe9\x9d\xd2\x967\x15'"
 b'\x0e\xac\x97=\xc6c\xac\xbe\xfa;\x17\xefbI\xb4Y\xcapw\xa1\x08\xdc\xd7p'
 b'\x9aZ@\xbfH\xd6+\xbeYk\xee[Pu5n\xa7\x99\xc0\xbc6;\xdf\xc4\xa6~\x19\xbe'
 b'\xbf02?\xb5\x99\xa3(}W\x94\xfc\xc3\xbb\x99\xdcm\xc8\x84p\xd5\xc9\x18??/\xa7='
 b'\xcc\xa8U1\xcf\xc4\xb1N?\x89\x0c\x00$\x00<\x00T\x00l\x00\xd5I\x05\x00'
 b'\x00\x00\x84\x00\x00\x00\xebPz\xd6\xbbI\xc3\xc2C}\xebfw\xb4')

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

{'A1': 'zhr',
 'A2': {'B1': [{'C1': [-11399, 16294, 2541, -27973, 2171, 25196, -27388, 11942],
                'C2': -0.11320342123508453,
                'C3': 0.5722711682319641},
               {'C1': [5026, 22600, -6925, -591, -5801, -11619, 14230, 10005],
                'C2': 0.0740586370229721,
                'C3': -0.3366987109184265},
               {'C1': [15354, -4329, 18786, 22964, 28874, -24201, -9208, 28887],
                'C2': -0.7513824701309204,
                'C3': -0.1678096055984497},
               {'C1': [27481,
                       23534,
                       30032,
                       28213,
                       -26201,
                       -17216,
                       15158,
                       -15137],
                'C2': -0.14989718794822693,
                'C3': 0.6960563063621521},
               {'C1': [-26187,
                       10403,
                       22397,
                       -876,
                       -17469,
                       -9063,
                       -14227,
                       28804],
                'C2': 0.5968297123908997,
                'C3': 0.0816330835223198}],
        'B2': 18901,
        'B3': [-22324, 12629, -15153, 20145, -30401],
        'B4': {'D1': 20715,
               'D2': [122, -42, -69, 73, -61, -62, 67],
               'D3': -5251,
               'D4': 102},
        'B5': 46199}}

Пример 2

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

(b'\x95ERQMaar\x8c\x00\x00\x000\x87\x96\xb1\xeb\xab0\xc0\xf33+$O\x8d\xdb\x97'
 b'\xb0{%\xbfy\x98\x87\xbe0\xe6\x9cl\xac\x94\x03[\xf1Y\x01J\x9ele\x9b=_\xec<'
 b"+dh\xbfu\xf9\xfb>\xe1\x07\x90\x17(\x0f\x0c\x18\xe9\x87\xacb']\xa0>\x7f\xbf{?"
 b'\x94\xa8"\xd2\xe0+\x9d`%\x05\xa8mgLS\xed\xf2\xe2\x0f\xbe\x00\x89o\xbf'
 b'\xd4\xca\xa2\x02\xf8P\xdd\x00\xaf\x1b\xfc\xe6\x08b\x04\xfeV\xed8\xbf'
 b'!\xc0V\xbf\x1ef\xcer\x83\xef(\xb3\x0c\x00$\x00<\x00T\x00l\x00\n\x90'
 b'\x04\x00\x00\x00\x84\x00\x00\x00\x18\x1c\xd3\xea\x90\xc4~\xa7\xfeP\xf8\x88'
 b'}n')

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

{'A1': 'aar',
 'A2': {'B1': [{'C1': [-30928,
                       -20074,
                       -21525,
                       -16336,
                       13299,
                       9259,
                       -29361,
                       -26661],
                'C2': -0.646418571472168,
                'C3': -0.2648351490497589},
               {'C1': [-6608,
                       27804,
                       -27476,
                       23299,
                       23025,
                       18945,
                       27806,
                       -25755],
                'C2': 0.0288540069013834,
                'C3': -0.9077784419059753},
               {'C1': [-1675, 16123, 2017, 6032, 3880, 6156, -30743, 25260],
                'C2': 0.31321069598197937,
                'C3': 0.983390748500824},
               {'C1': [-22380, -11742, 11232, 24733, 1317, 28072, 19559, -4781],
                'C2': -0.14051416516304016,
                'C3': -0.9356842041015625},
               {'C1': [-13612, 674, 20728, 221, 7087, -6404, 25096, -508],
                'C2': -0.7223714590072632,
                'C3': -0.8388691544532776}],
        'B2': 36874,
        'B3': [26142, 29390, -4221, -19672],
        'B4': {'D1': 7192,
               'D2': [-45, -22, -112, -60, 126, -89, -2],
               'D3': -1968,
               'D4': -120},
        'B5': 28285}}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xc3KBT0\xca\xb5\x8c\xa6\xe3\xbe\xf5\x03\x008\x00\x00\x00A\x84O\x10;\x00'
 b'\x00\x00\xb8*\xac\x9f\xe4\xcd\xf4\xd3\x02\x00J\x00\x978\x05\xbfTMH\xc7\xf6,'
 b'\xe5\xbf\x02\x00j\x00\x00\x00\xa7#F\x8b\xdf\x0c\xd8^\xfau\x8e\xf7\x16a\x92%'
 b'_\x03aab{\x9a\x13h\xd2\xeb\xbf\xf7H\xda\x7f$2\xbe\xbc\xf5\xae\xd7\x05'
 b'i\xd9\xbfM\x19\xfbd\x0by?L\x00\x00\x00[\x00\x00\x00')

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

{'A1': {'B1': -1934243280, 'B2': -172039258, 'B3': [167, 35, 70]},
 'A2': {'C1': 273646657,
        'C2': {'D1': 57227,
               'D2': 4200519692,
               'D3': 117,
               'D4': 242954215525644174},
        'C3': -3173685455574259016,
        'C4': 'aa',
        'C5': -0.5203947424888611,
        'C6': -0.6617387668833694},
 'A3': [{'E1': -0.8694343932037152,
         'E2': [247, 72, 218],
         'E3': -0.17396734654903412},
        {'E1': -0.39703508436999946,
         'E2': [77, 25, 251],
         'E3': 0.972830057144165}]}

Пример 2

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

(b'\xc3KBT+\x9b\xccAx\x7f\x82\xbb\x02\x008\x00\x00\x00+\xcdB\xf7:\x00'
 b'\x00\x00*\xab\x9b\x01\x8c\xdc\x91#\x04\x00I\x00Bv\xa6>\xeaX\xf1\x07/\xc0'
 b'\xe6?\x02\x00k\x00\x00\x00u\xd2"\x9e\xabZ]c\xd2\x8e\x8c\x84/c\x97\xf1\\vgt'
 b'gPs\x0b\x80\x1b\xaf\xb2\xbf\t\xf7\xe4I\x80M?h;\xb5\xf6\xf2\xfd\xc7\xbf'
 b'\xff2j\xc70a\xbfM\x00\x00\x00\\\x00\x00\x00')

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

{'A1': {'B1': 1103928107, 'B2': -1149075592, 'B3': [117, 210]},
 'A2': {'C1': 4148350251,
        'C2': {'D1': 40482,
               'D2': 1667062443,
               'D3': 210,
               'D4': 6697300573131410574},
        'C3': 2563072156831034154,
        'C4': 'vgtg',
        'C5': 0.3251209855079651,
        'C6': 0.7109599261409845},
 'A3': [{'E1': -0.07298442722408294,
         'E2': [9, 247, 228],
         'E3': 0.8027387261390686},
        {'E1': -0.18743741079603216,
         'E2': [255, 50, 106],
         'E3': -0.8796505331993103}]}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x9eWUICflynmb\x83\xe2\xbe9)\xc6\xc3\xee\x02\x00\x00\x00a\x00\x00\x00D'
 b'&no\xf9\xe5\xe4\x8ca\r.\x056\x128\xf9\x02\x00\x00\x00\xa1\x00\xdc\xa2\xfd'
 b'\xd7\xa5\xae\xcc\x94B\xa4\x1a\xb5\x14\x847?J\xc8\xd0\xb7\x08\xf2\xd0'
 b'}\xd2\xbf_*\xddZ}B@\xbf\xe7I\xf4q/zp\xe7\xe4\xbf\xe2\x8cRo\xdc\xbf\xbb'
 b'=\x00\x00\x00\x1dZ\xf8|\xd8\xd67QC\x00\x00\x004YoP\x83\xf8\xa6\xdd'
 b'\xab\x1d1\xd8?f\xfdIO\x00\x00\x00W\xeb~[\x06\xf0\xba\xfeU\x00\x00\x00'
 b'\x9a\x02\x83\x1a\x08\xfa\xf2\x13l(\xed\xee?\xbe\xcb')

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

{'A1': 'flynmb',
 'A2': 968811139,
 'A3': -289159639,
 'A4': [{'B1': [-36, -65, -69],
         'B2': {'C1': 0.7168591022491455, 'C2': -14262},
         'B3': 5852382466089179677,
         'B4': {'D1': -0.28892921100748215, 'D2': 1524443743},
         'B5': 52,
         'B6': -2091880615,
         'B7': 0.3779977968575703},
        {'B1': [102, -3, 73],
         'B2': {'C1': -0.7510145306587219, 'C2': 18919},
         'B3': -91496932312159401,
         'B4': {'D1': -0.6532518755371357, 'D2': 1867680994},
         'B5': -102,
         'B6': 135955202,
         'B7': 0.9664499388596532}],
 'A5': [1869489732, 2363811321, 86904161, 4181201462],
 'A6': [-66, -53],
 'A7': -671243556,
 'A8': 13049923476130672293}

Пример 2

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

(b'\x9eWUICepgbch`3\xd0\xe4\xf7Z\x8f+\x02\x00\x00\x00a\x00\x00\x00\xb3'
 b'F\xcb\xc1\x1aF<\xe7\x1e\xc3\xf8\xa27DY\xea\x03\x00\x00\x00\xa1\x00\xcb\x1e<'
 b"\xda'w-{\x8cX\xfdI\xe4j\x12=\xda\xc4*$\xddj>\xe5\xe2?L\xb6\xa3\x00\x9c"
 b'.y?\xfb\xb3\xbagM\x93K]\xe4\xbf\xf3\x13\xa3Y\xea%\x08=\x00\x00\x00\xbe?TT'
 b'\xba\xc8<+C\x00\x00\x00`U"\xc6\x9d\x80JG\xd30\xda\x8d?4\xabeO\x00\x00\x00'
 b'2\x0c\xae\xbe\xb95}\xc3U\x00\x00\x00\xe5\x86\xc4\x1fPn\xcc@U6\xf7\xe6'
 b'\xbf3H\x1e')

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

{'A1': 'epgbch',
 'A2': -456117408,
 'A3': 730815223,
 'A4': [{'B1': [-22, 37, 8],
         'B2': {'C1': 0.03574647009372711, 'C2': -15142},
         'B3': 3115585744837820350,
         'B4': {'D1': 0.5904838645157089, 'D2': 10729036},
         'B5': 96,
         'B6': -1647959467,
         'B7': 0.014576322028834854},
        {'B1': [52, -85, 101],
         'B2': {'C1': 0.97336745262146, 'C2': -19461},
         'B3': -4360269792340472782,
         'B4': {'D1': -0.636388576221399, 'D2': 1503859699},
         'B5': -27,
         'B6': 1344259206,
         'B7': -0.7176772751903522}],
 'A5': [3251324595, 3879487002, 2734211870, 3931718711],
 'A6': [51, 72, 30],
 'A7': -633594165,
 'A8': 5331514894261778215}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'RNSX\x0b\xb5\xa0\x9c\x00\x00\x00\x06\x00\x00\x00`\xa2\xd5?\xe0'
 b'\xb0\xc4\xb2\x85\x81\x12\x83\x9a\x00x\xcdR\xfb\xf3\xae\x02R\xf6I\xeb'
 b'\x00\x07\x00\xa8*\xc4\xf2\xe3.z0\x88\xcc/\xcb\xd5\x9a9\xb6\x15'
 b'\x7f\xa1\xda\xe0j\xd1\xf4K\xf2\xa4\xa7~\x9a\x04w&\xaeL\xa2\xf8\x84_\x83\x9e'
 b'\xb3\x03\xc3^\x1e\xc2\xd6\x98(\x98|\xfe\x00\x00\x000\x00\x00\x008'
 b'\x00\x00\x00@\x00\x00\x00H\x00\x00\x00P\x00\x00\x00X>\xb17\x8e\xbfV|f>\xdf,M'
 b'\xbeJ\xbf#\xbf|u\xf4>\xd5\xb81\xbf1f\x86\xbf\x7fC\xea0L\x95\xa8b\x9c\xcb\x9c'
 b'!\x06\xe3\xbc[\x06\x08\xff\x183\xb9\xa3C\x8a\xd6')

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

{'A1': 196452508,
 'A2': [{'B1': 779759752, 'B2': 3425684437},
        {'B1': 2587473429, 'B2': 2141313760},
        {'B1': 1792144459, 'B2': 4070877054},
        {'B1': 2583983910, 'B2': 2924258040},
        {'B1': 2220852126, 'B2': 3003368286},
        {'B1': 516085400, 'B2': 681082110}],
 'A3': {'C1': 162,
        'C2': -43,
        'C3': 0.5215781676052151,
        'C4': -31846,
        'C5': {'D1': [0.3461269736289978,
                      -0.8378356695175171,
                      0.43588486313819885,
                      -0.19799475371837616,
                      -0.9861748218536377,
                      0.417420893907547,
                      -0.6929706335067749,
                      -0.9971300363540649],
               'D2': 810325416,
               'D3': [25244, 52124, 8454, 58300],
               'D4': 1527122175},
        'C6': 52562,
        'C7': 4227051010},
 'A4': 1391872491,
 'A5': [24, 51, -71, -93, 67, -118, -42],
 'A6': 717550307}

Пример 2

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

(b'RNSX\xf0\xdf\x0ba\x00\x00\x00\x05\x00\x00\x00Xe\x7f\xbf\xe8% <\x1ec0N\xcc'
 b'\x00lK\xc5\n\x98G\xa0;\x85\x1f\xf6\x00\x02\x00\x9c\xb6\xb2\xccY\xb4K\x1d\x85'
 b'.\x19v\x88=\xad1j\xf9\xcd\xbf\n\xa1\x8bJ\xdeo\xe8\xd8Q\xc8\x88\n/\xe6w(>'
 b'i\xff\xa2\xb7\xc6\xb6\x81S\x00\x00\x000\x00\x00\x008\x00\x00\x00@'
 b'\x00\x00\x00H\x00\x00\x00P\xbfG\xe5n\xbf\x7f18>\xb3\x03\xe0>\xc3\xc7^'
 b'\xbd\xd1\x9a\xd3>\x11\xdd\x87\xbd\xb46\xa3\xbd\xa1G\x00*o\xa5\xc3\x8e3H\xd1'
 b'\x99\xf3\x10+\xcf\xbb\xb4\r\xee\xcc')

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

{'A1': -253818015,
 'A2': [{'B1': 3024821637, 'B2': 773420680},
        {'B1': 1034760554, 'B2': 4191010570},
        {'B1': 2710260446, 'B2': 1877530705},
        {'B1': 3364358703, 'B2': 3866568766},
        {'B1': 1778361015, 'B2': 3333849427}],
 'A3': {'C1': 101,
        'C2': 127,
        'C3': -0.7545319723313693,
        'C4': 20172,
        'C5': {'D1': [-0.7808445692062378,
                      -0.9968447685241699,
                      0.3496389389038086,
                      0.3823804259300232,
                      -0.10234608501195908,
                      0.1424466222524643,
                      -0.08799483627080917,
                      -0.07874870300292969],
               'D2': 711960003,
               'D3': [36403, 18641, 39411, 4139],
               'D4': 3485185037},
        'C6': 19397,
        'C7': 177751968},
 'A4': 998580214,
 'A5': [-18, -52],
 'A6': -1229796263}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x85NMYX\x92\x03\x8b\x9a\xe5\xda\xe6}?m\x99B\x00G\xa1\xdbw&\x92dg9dHhMV'
 b'\x92\xcf\xa0\xbfxi1\x00\x00\x00\x81mbvsktva\xfd\xd8\x8e\x1a\xd7S\xdaP7'
 b'\xc0\x8d\xf8\xce\xc9\xf9\x01\x1f\x82\x19:\x00\x00\x00\x08\x00+\xbdr('
 b'W2\xb1\xecS\x00\x03\x00\x00\x003Py\xa7}\x00\x02\x00\x00\x0092GSF\x00\x03\x00'
 b'\x00\x00=\x8f\x9c\xd7\x12\x00\x02\x00\x00\x00C\xf4w\xb1\xe8\x9b\xda\xf7'
 b'\xea\xd4\x92\x18\xdePs\xdb\x9b\xde6\x8c\xb7=5S\xcb\x9f\xf7\xe6o\xf65\xe7'
 b'\xd9\x1f')

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

{'A1': 88,
 'A2': -7925337421844388227,
 'A3': 0.9281197786331177,
 'A4': {'B1': 'mbvsktva',
        'B2': -0.059120502322912216,
        'B3': [{'C1': 850521171, 'C2': [64984, 36378, 55123]},
               {'C1': 1350150013, 'C2': [55888, 14272]},
               {'C1': 843535174, 'C2': [36344, 52937, 63745]},
               {'C1': 2409420562, 'C2': [8066, 6458]}],
        'B4': -830999993621219350},
 'A5': [-24101, 30502, -28060, 26425, 25672, 26701, 22162, -12384],
 'A6': -0.9703550934791565,
 'A7': {'D1': -3129411447957496933,
        'D2': 56886,
        'D3': 140,
        'D4': 46909,
        'D5': 894684063,
        'D6': 17863088075268675871}}

Пример 2

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

(b'\x85NMY\x9aE\xcd{X\xf4L\xd3O<c\xb1b\x00G|\xc7C\x95\xd4LP\x8b\xbe<f\tQ'
 b'\xb4\xd8\xf1\xbfQ\x15"\x00\x00\x00\x81nqvplkcf;g\xf7\x0fa#e\xcb\x17'
 b'\x9f"G\xc1\x08\x00\x87\xd3~\xdf\xdc\x00\x00\x00\x08\x00+\xbd\x1a\xbf'
 b'Q\x84L\xbd\x9c\x00\x02\x00\x00\x003\xef(m\xfd\x00\x02\x00\x00\x007\x99ES'
 b'\xf2\x00\x03\x00\x00\x00;y\xfc\x1fM\x00\x03\x00\x00\x00ACP[H\x1b\x8f\x9c'
 b'm\x94\xdd\xa1\xdc\x93.\xdcI%"\xd80\xa5\xf9#H\x10\xbei4\xc9\xca\xbc\xc7\xa6')

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

{'A1': -102,
 'A2': 5029811980828726095,
 'A3': 0.013897271826863289,
 'A4': {'B1': 'nqvplkcf',
        'B2': -0.03778010979294777,
        'B3': [{'C1': 2219621788, 'C2': [15207, 63247]},
               {'C1': 4012404221, 'C2': [24867, 26059]},
               {'C1': 2571457522, 'C2': [6047, 8775, 49416]},
               {'C1': 2046566221, 'C2': [135, 54142, 57308]}],
        'B4': 4850477163936193645},
 'A5': [31943, 17301, -11188, 20619, -16836, 26121, 20916, -9999],
 'A6': -0.8167287111282349,
 'A7': {'D1': -7719836217508963255,
        'D2': 9506,
        'D3': 216,
        'D4': 12453,
        'D5': -115128304,
        'D6': 13720555781055367078}}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b"\x06MAK\x06\x00\x9f\x00'\x9c\xa5>\xa5\xa5!LB.\x13\xbe\xfd%)\xdc\x00\xe6\x8d8"
 b'\x81!\xee?]\xda\x03\x00\xab\x00\xf8\x12\x0f\\~?\xd2"T\x93\xd3\x85\xe1\xbf'
 b'UZ\xae\x00\x07D\x99\x0b\x86U\x15r\xa8\x0f\x1aE\xb6\xeb\xbeK\xe0\x81\xe9I'
 b'\xa2\x14zfl\x03\x00N\x00\x00\x00Xg\x07\x00vql\x03\x00[\x00\x00\x00'
 b'\xc2\xe6\xf5Ytjlfx\x05\x00h\x00\x00\x00ZH\xb7\xaclith\x04\x00w\x00\x00'
 b'\x00\xd1$(fkzua\x04\x00\x85\x00\x00\x00pVTeno\x02\x00\x93\x00\x00\x00@'
 b'\xedr\xb0Q\x00^\x00m\x00{\x00\x89\x00\x95\x00\xca\x8d\x9c7\xeaQ\xa9\x19m'
 b'\xa0')

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

{'A1': [{'B1': 'zfl', 'B2': 485208},
        {'B1': 'vql', 'B2': 1509287618},
        {'B1': 'tjlfx', 'B2': -1397274534},
        {'B1': 'lith', 'B2': 1713906897},
        {'B1': 'kzua', 'B2': 1700025968},
        {'B1': 'no', 'B2': -1334645440}],
 'A2': {'C1': 0.3234569728374481, 'C2': -4750402319665748571, 'C3': 3693684221},
 'A3': 0.9415899376464836,
 'A4': 93,
 'A5': {'D1': {'E1': 218,
               'E2': [-54, -115, -100],
               'E3': 4856,
               'E4': 0.9935922026634216,
               'E5': -0.5475862386238879,
               'E6': 23125},
        'D2': {'F1': 55, 'F2': 20970, 'F3': 2691504553}},
 'A6': 194593799,
 'A7': 21894,
 'A8': [262697493, -340376294, -2116006978, 346180073]}

Пример 2

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

(b'\x06MAK\x05\x00\x8f\x00\x11c\x9a\xbd\xc9\x1a\x81\x8f\xe9\x8d\xaa\x9d'
 b'\x1a \x11\x1c\xda\x99\xd1\xcb\xd7\x00\xe0\xbf3n\x03\x00\x99\x00\xb4l'
 b'\n\xcf\x0f>`\x08\x14\x9dxm\xed\xbf\xa7\t\x9c\x00l5p\xd6 8\xde\xfd'
 b'\xc8\x03/\xabPs\x80\xd5\xc0\x1dF\xa1\xaf%hbft\x04\x00N\x00\x00\x00qeIh'
 b'zd\x02\x00\\\x00\x00\x00\xfd\x80\xb8\xb9rvw\x03\x00h\x00\x00\x00.\x1b\xfd'
 b'-bmxl\x04\x00u\x00\x00\x00*3L\xa6oc\x02\x00\x83\x00\x00\x00\xd8\xc7\x94LR'
 b'\x00^\x00k\x00y\x00\x85\x00\xbf27j\x13C\x91\x84\xa8l')

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

{'A1': [{'B1': 'hbft', 'B2': 1749640561},
        {'B1': 'zd', 'B2': -1179090691},
        {'B1': 'rvw', 'B2': 771562286},
        {'B1': 'bmxl', 'B2': -1504955606},
        {'B1': 'oc', 'B2': 1284818904}],
 'A2': {'C1': -0.07538426667451859,
        'C2': -7085695029439554871,
        'C3': 470884378},
 'A3': -0.5001028996310268,
 'A4': 51,
 'A5': {'D1': {'E1': 110,
               'E2': [-65, 50, 55],
               'E3': 27828,
               'E4': 0.1404382288455963,
               'E5': -0.91961317710253,
               'E6': 2471},
        'D2': {'F1': 106, 'F2': 17171, 'F3': 1822983313}},
 'A6': -697289364,
 'A7': 14368,
 'A8': [63503838, 1934666543, 499176832, 632267078]}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'VRA\xe2cKVc\x93\xda\nvV\xdc\xbf\xc6\xc7J\xc7\xf5\xe0\x86\xed\xaf'
 b'\x96!\xa0\x00\x08%- \xdb\x93\xae\x063}\x0b_x\x06\xecO\x00\x00\x00LK.w\xfe'
 b'K\x1b\xef\xc3\xce\xe4\xeeg^\xd7\xe1\xa1u\xf5Tb\xf4T\x1e\x89\xdaJ\xe3\x8a'
 b'\xcd\x03_wfycot|\x04\x00/\x00\x00\x00M\xb3}\xf5\xabk\x7f\x80\x8d\xfeo\x8e'
 b'\x7f\x8cf\xb3\xee\x7f%\xd7\x8auo\xc9\xb9\xc4\xece')

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

{'A1': [{'B1': -30, 'B2': 1666599779},
        {'B1': -109, 'B2': 1450576602},
        {'B1': -36, 'B2': 1254606527},
        {'B1': -57, 'B2': -309927691},
        {'B1': -81, 'B2': 10494358},
        {'B1': 8, 'B2': -618648283},
        {'B1': -109, 'B2': 2100496046}],
 'A2': 11,
 'A3': -335120289,
 'A4': {'C1': 'wfycot',
        'C2': 124,
        'C3': [-1217295717980288180,
               -2173164494700359997,
               2185640422350878113,
               6846541854935800457],
        'C4': 77,
        'C5': -8250454416919528013,
        'C6': 254,
        'C7': {'D1': 2357169775,
               'D2': [102, -77, -18, 127],
               'D3': -10459,
               'D4': 7344461394561955210}}}

Пример 2

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

(b'VRA\xa4B\xb9gj{=y\x07\x8b\xfao.a\\\x1e\xc3\x95\xbf_\xd2b\xe2K\x01'
 b'\xf6\xec_\xbd\xfd\xd7\xfc~;Hr\x16\xae_\xda?\x00\x00\x00\xc7\xe2\x0fs\xbe'
 b'T\x1c\xf5\xda\xc1r\x926\xa7\x8d\xfbisjaxz\xb8\x02\x00/\x00\x00\x00'
 b'\xf3u\x16\xe6\x13~\x1d\xd9\xd9/\xf5\xa70\xc5"\x18\\\xaepT\xd54\xa9p'
 b'\x08\x94\x18\xe8')

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

{'A1': [{'B1': -92, 'B2': 1785182530},
        {'B1': 123, 'B2': -1962444483},
        {'B1': -6, 'B2': 1549872751},
        {'B1': 30, 'B2': 1606391235},
        {'B1': -46, 'B2': 21750370},
        {'B1': -10, 'B2': -37920788},
        {'B1': -41, 'B2': 1211858684}],
 'A2': 114,
 'A3': -631263722,
 'A4': {'C1': 'isjaxz',
        'C2': -72,
        'C3': [-784659058118368569, -320416145646370342],
        'C4': -13,
        'C5': -2749133670196046219,
        'C6': 47,
        'C7': {'D1': 3308300277,
               'D2': [34, 24, 92, -82],
               'D3': 21616,
               'D4': 16724279980211123413}}}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LZFO\xc9\x91B\xbd\x99u3\xee\xe4?\xc0\x025\xbd\x9b\xd5\xb9\xc0\x8a\x1a\x17Ynx'
 b'\xef?U>\xc6\x13\x10\xfc\xcd1\xfe\xee\x1bE\xca\xeb\xe9?\xfbHi\xfbf\xd1'
 b"\r\xb7\x00$\xfe'\x1c\xcd\x9c\xbf\xcb\xa2\xde\x87|)\xab$\x9f\xf0s\xcf\x8a\xff"
 b'\x11<\x97D\r5\xf3\xc9- sa\xab,T.\xc41\x1bf\x8ax.\xa1\xa5\x0c\x90\x1d7s\t\x03'
 b'\x00\x8d\x00\x00\x00ts\xf2\x89\xfa1\xed\x8ey\t+\r\x88k\x12\xa4*#\x18'
 b'\x03ma\x05Ru\x1d\x85\xe2\x00\x9f\xfa\x90[\xde\xbf\xbf0\xd7\xa9\xbe`\xa4\xc7'
 b'?N\xed\x83z\x0e7\xe1\xbf')

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

{'A1': 201,
 'A2': -111,
 'A3': [{'B1': 0.6540772721181514, 'B2': 13887365790844650176},
        {'B1': 0.9834510555309219, 'B2': 3588801624065588821},
        {'B1': 0.8100329732692158, 'B2': 13190429123872901371},
        {'B1': -0.028126182499850216, 'B2': 2642251221215126219}],
 'A4': {'C1': {'D1': [4328521688530808991, 2318731429569971351],
               'D2': 115,
               'D3': 97,
               'D4': 11435,
               'D5': 834940500,
               'D6': 911311720575297051},
        'C2': [-112, 29, 55, 115, 9],
        'C3': [-0.1244866589501008, 0.18470391568887967, -0.5379707711103181],
        'C4': [2314367860, 2397909498, 220924281, 2752670600, 51913514]},
 'A5': -2124259259510857363}

Пример 2

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

(b'LZFO\x80\xdf\xb0Ri\r\xe4\xd7\xbb?\xf1Q\x7f{%\xadNh`\xf2\xd2\xfb1;'
 b"\xcb\xbf\xac\xf1\x8b'O\x9b\xf6\xf4\x965\xa1\x9e\x1dA\xe4?vB`5}#"
 b'\xb8\xb6\x0c\xcf\xc4\xbaW\x90\xe4?h\xa4\x88\x92\x03c?~N\x8d\xce\x85\xce\xe5'
 b'\t\xa5\xe5,\x8c\xb7\xc9\xaf\x89\x92\xe0\xbd\x9b\xe3\xc7Y\xfc\xe7\xc0\x0e'
 b"\xf3\xb0<\xb2\x08\xfdi#\xc8\xaec\x03\x00\x8d\x00\x00\x00\xa1'\x06"
 b'\x18C\x97\x8e\x94\xde\x83#S\x90-\xf1\xd6\xd0\xbd\xe2\x08\xd6A8'
 b'\xfa\xf8\xfe\x0b\xc2\x12\x0bv\x13>Z\xec\xbf\x1c\xd1&Z!u\xd4?\x08\xa3/'
 b'\xc9;\t\xe4?')

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

{'A1': 128,
 'A2': -33,
 'A3': [{'B1': 0.10876298263003537, 'B2': 7516135204625273329},
        {'B1': -0.21274399562925606, 'B2': 17651466553793442220},
        {'B1': 0.6329486940609736, 'B2': 13166312531291030134},
        {'B1': 0.6426199577167337, 'B2': 9097098639306171496}],
 'A4': {'C1': {'D1': [11892288966219435342, 10559164082249542885],
               'D2': 224,
               'D3': 189,
               'D4': 58267,
               'D5': 3892074951,
               'D6': 18233019065145953984},
        'C2': [105, 35, -56, -82, 99],
        'C3': [-0.8860159282779441, 0.3196490650546069, 0.6261271409431126],
        'C4': [403056545, 2492372803, 1394836446, 3606130064, 149077456]},
 'A5': -4464194260304379434}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'UEV v\xbd\xc9\xbdN~\xc4\x1fbo\xbe\x11 \x1e\xac\xc0\x00 oh\x00\x00\x00\x02'
 b'\x00\x00\x00H\xd4V\xe8\x15\xbd\x9b\xd9\x89\x9a\xe1\x00\x85\xd3\xd0y\x8c'
 b'\xfc\xed\xc1>\x9f\x0c\xa5>\x882\xd2A3Y=\xf6p\x84\xbf9\x93\xda\x14< +\x00\x02'
 b"\x003\xbf!=\xb2M\xae\x00\x03\x00\x00\x00;\xbf\xd5\xc1?\tYPTX*\xae'\xce\xd4"
 b'\x04?\xe2\xad\xc0\x91\xcf\x8a\xfa\xbdn_\\\x04\x831i\x9c\xbf{\xbcg\xb0\xa0'
 b'\x00\x02\x00>\xc8s\xbd\x9f\xb75\x00\x02\x00\x00\x00F?\xea\x7fM\xea\xc2N('
 b'V\xfa\xa5\x10dC\xef?\xcb0\x02\xf8\xda\xb9\x10\xf8\x831\x03C\xe4i\xc4\xd5'
 b'?i\xb84')

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

{'A1': 1992149437,
 'A2': 1316930591,
 'A3': 25199,
 'A4': -0.14172407984733582,
 'A5': 44224,
 'A6': {'B1': 3562465301,
        'B2': -0.07609850913286209,
        'B3': 39649,
        'B4': 0,
        'B5': 9643280447605370305},
 'A7': 'oh',
 'A8': [{'C1': {'D1': 8235,
                'D2': [0.31064334511756897, 0.2660127282142639],
                'D3': 48929,
                'D4': 0.08706222474575043,
                'D5': [65, 51, 89],
                'D6': -0.3399198142335582,
                'D7': 22570},
         'C2': -82,
         'C3': 667866116,
         'C4': 0.5837099883904948,
         'C5': 189,
         'C6': 28255,
         'C7': [23556, 33585, 27036],
         'C8': -0.9833435416221619},
        {'C1': {'D1': 45216,
                'D2': [0.1203317940235138, -0.7249122858047485],
                'D3': 51315,
                'D4': -0.07798615843057632,
                'D5': [20, 60],
                'D6': 0.8280400834214037,
                'D7': 22266},
         'C2': -91,
         'C3': 275006447,
         'C4': 0.212402698050433,
         'C5': 248,
         'C6': -31951,
         'C7': [835, 58473, 50389],
         'C8': 0.9129669666290283}]}

Пример 2

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

(b'UEV E\x945Ty\x9b!\x12\x10\xf5\xbd\xda\x93\x99^\xd1\x00 ps\x00\x00\x00\x02'
 b'\x00\x00\x00Gj%\xcf5\xbfL@\xd2v\x18\xeb\x9a\xa7|t\xc7\x82\x0f\x1e?Y\xc3\xf4>'
 b'\x90\x97\xad\x11\x1e?.\x9bn\xbe\x95\tt9\xf8\xdd\xd5\x00\x02\x003\xfcm\xbf'
 b'&\x1f,\x00\x02\x00\x00\x00;?\xbc\xe9\x9dd\x81\xd3\x10\xd37\xd8z\x87\xe7\x97'
 b'\xbf\xe7\x18>\xd2\xc8+\xeax\x01\xf8B\x84\x96\xf6xG\xbc\xecx\xd3x\x8e\x00'
 b'\x02\x00=%\xde\xbfjK\xe9\x00\x02\x00\x00\x00E\xbf\xe5`/\x0f*\xdd\xb0\x92'
 b'R\xa1N\r\xb9.\xbf\xa9\x01\x1b\xcdx4\xc0\t:\x8dw\xde\xe0\xb1dV\xbf\x13w\r')

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

{'A1': 1167340884,
 'A2': 2040209682,
 'A3': 4341,
 'A4': -0.10672683268785477,
 'A5': 24273,
 'A6': {'B1': 1780862773,
        'B2': -0.7978640794754028,
        'B3': 30232,
        'B4': -21,
        'B5': 11144012643956821790},
 'A7': 'ps',
 'A8': [{'C1': {'D1': 56789,
                'D2': [0.8506462574005127, 0.2824071943759918],
                'D3': 64621,
                'D4': -0.6489131450653076,
                'D5': [17, 30],
                'D6': 0.11293967918193126,
                'D7': 54071},
         'C2': -40,
         'C3': 2055726999,
         'C4': -0.7217096440157296,
         'C5': 120,
         'C6': 504,
         'C7': [17028, 38646, 30791],
         'C8': -0.028866207227110863},
        {'C1': {'D1': 30862,
                'D2': [0.6820591688156128, -0.2910877466201782],
                'D3': 9694,
                'D4': -0.9152207970619202,
                'D5': [57, 248],
                'D6': -0.6679911895980037,
                'D7': 37458},
         'C2': -95,
         'C3': 1309522222,
         'C4': -0.04883658297704008,
         'C5': 9,
         'C6': 14989,
         'C7': [30686, 57521, 25686],
         'C8': -0.5760353207588196}]}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x06ERG\xf8\x02\x00\x00\x00a\x00\x00\x00c\x00p\x00}\x00\x8a\x00\x96\x1c_'
 b'?V\xcc\xa4\xdc\x8e\xe4a\xb8&\n5}8\xc7\xed?\xfe\xe7( \xad\x86\x19'
 b'\xf0\xc4\xbfY#>\xbe\x1bo\x91\x98\xcc\xe6\x11\x11;\x1c\x93\x99\xc7'
 b'\x88\xea\n\xea\xbe\xf3\x8bh=W\xa6Z?\x87\x89\xf6>.z\\?=\x8e\x87;\x94>d'
 b'\x01wj\xaf\xb5\x89\xd2s\xe5\x08,k\x7f|\x0cY\xff\x81$x~\xc5k\xb7'
 b"\xb0\xc7\xdf\xd1/'\xf9Qi\x1a\xea\x8b\xaa\xc6\xe6\xdb\xa6\x84'\xf3"
 b'\xf55\xce\x05\xdbt[\xf6[>\xa3\xe9?')

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

{'A1': -8,
 'A2': {'B1': 'wj',
        'B2': [{'C1': -81,
                'C2': [-30283, 29650, 2277, 27436, 31871],
                'C3': 22796},
               {'C1': -1,
                'C2': [9345, 32376, 27589, -20297, -8249],
                'C3': 12241},
               {'C1': 39,
                'C2': [20985, 6761, -29718, -14678, -9242],
                'C3': 33958}],
        'B3': {'D1': 39,
               'D2': -835324429,
               'D3': -9467,
               'D4': 0.801177196134502},
        'B4': 0.8715299367904663,
        'B5': 13286151677957950550},
 'A3': 0.9305689282849172,
 'A4': 59390,
 'A5': -0.16357726169576492,
 'A6': {'E1': -0.18568171560764313,
        'E2': [28443, -26479, -6452, 4369, 7227, -26221, -30521],
        'E3': [-0.4571145176887512,
               0.056774090975522995,
               0.8541006445884705,
               0.4815180003643036,
               0.8612393140792847,
               0.004136829171329737]},
 'A7': 23346836}

Пример 2

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

(b'\x06ERG\x8d\x03\x00\x00\x00a\x00\x00\x00d\x00q\x00~\x00\x8b\x00$\xbf\x15'
 b'?\x9bo\xa2\xe8h\xd2\xd36\xd8- Q\x0eH\xd8\xbf\x0eG\x98\xff\xe2o\x11'
 b'\xa6\xd8\xbfg\xd6x?z6\xc1o\xd9\xd3{\x88\xda\xdb\xc9IiZ\xf26$?@t\xd0'
 b'>\xed\x80_>\xfaGS\xbeT\xa1\xc4>\x11\xb7\x84;\x89{\xd2^vlk\xdf08\xf2\x8aR*6'
 b'\xf7\x00\xeecg\xf85\xde\xbbW8~\xecXv\x90\x04+\x83.\xda\xed\xb8\xe7RK\xd16'
 b'\x06"\xff\xd5\xf6\xe0/3\xe7\xb08\x8d\xc0\xe7\xc4\x8d\xc1\xbf')

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

{'A1': -115,
 'A2': {'B1': 'vlk',
        'B2': [{'C1': -33,
                'C2': [14384, -29966, 10834, -2250, -4608],
                'C3': 26467},
               {'C1': -8,
                'C2': [-8651, 22459, 32312, 22764, -28554],
                'C3': 11012},
               {'C1': -125,
                'C2': [-9682, -18195, 21223, -11957, 1590],
                'C3': 65314}],
        'B3': {'D1': -43,
               'D2': 858775798,
               'D3': -20249,
               'D4': -0.1371389514543837},
        'B4': 0.5849478244781494,
        'B5': 3950732646155448219},
 'A3': -0.37939794466430277,
 'A4': 18190,
 'A5': -0.3851359932559659,
 'A6': {'E1': 0.9720215201377869,
        'E2': [13946, 28609, -11303, -30597, -9254, 18889, 23145],
        'E3': [0.6414633989334106,
               0.4071369171142578,
               0.21826525032520294,
               -0.20632925629615784,
               0.3840433359146118,
               0.004050143528729677]},
 'A7': 1590852489}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

Поле Описание
1 int32
2 uint8
3 double
4 int32
5 uint16
6 double
7 uint32
8 int32

Структура E:

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

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

Пример 1

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

(b"JKKA\xa7\xf2\x84\x19\x19\xb6\x16R\xfa']\xb08\xb7\x00\x00\x00\x10R2"
 b'\xaf\xe00\xa3\xe2\xe0F\x80\xfa\x0c\xa5\xb5\x99\n\xae\xea\x9d\xc5\x03\x1b'
 b'w\xf3% \x8cZ\xfd>\xad\xef?\x96\xea6I\xd1_\x80\x039/\x19(\x91?g53\xad\xc59z'
 b'\x19B\x1bu\xf0\xff?p\xda\x81nV\x9bre\xfe\x915\x86\xf4\xdfVO\x1e'
 b'\x02\x00\x00\x00M\x00\x00\x00\xafm\x1e\xcea\xc8\xac\x00z\x83-\xf9'
 b'\xe4\xec\xb9P\xf6!S1\x11\xafb\xce\x1d.2\x8e\x0f\xf3\xe9\x9b|\xba\x1f\xcd'
 b'\x87\x95\xc2\x91\xcc\x02\x00\x00\x00~\x00\x00\x00\xef4\x82\x84\xb9e\xe2'
 b'\xc9\x96.\x08\xf2\x1d\x95\xc9\xde\x86uU\x00\x00\x00\x86\x00\x00\x00*\x00z|I'
 b'\xca\x02\x00\x00\x00\xaf\x00\x00\x00[')

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

{'A1': 5915115379516306087,
 'A2': {'B1': 10234,
        'B2': 45149,
        'B3': 56,
        'B4': {'C1': {'D1': -210298109,
                      'D2': 37,
                      'D3': 0.9898981998743501,
                      'D4': 1228335766,
                      'D5': 24529,
                      'D6': 0.016754525668378317,
                      'D7': 2905814375,
                      'D8': 427440581},
               'C2': 3393813626,
               'C3': [{'E1': [28289, 39766],
                       'E2': -2309073144293464718,
                       'E3': 86,
                       'E4': 7759,
                       'E5': [4034206530, 3664789503],
                       'E6': 48634018389716399,
                       'E7': -31878,
                       'E8': 2447232206996044077},
                      {'E1': [36402, 62223],
                       'E2': -7671937904045941783,
                       'E3': 194,
                       'E4': 52369,
                       'E5': [2937139539, 773705314],
                       'E6': 14547301593826604271,
                       'E7': 11926,
                       'E8': 8468701106688356872}],
               'C4': 91},
        'B5': 21008,
        'B6': [50, -81, -32, 48, -93, -30, -32]},
 'A3': 32838,
 'A4': -1247474438,
 'A5': 2713,
 'A6': -979506514}

Пример 2

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

(b"JKKA\xf8=\x8a\xa6\xb2\x8fJc'\xe0osR\xb7\x00\x00\x00\x97\xb6\xdb\xeb\xea\x19["
 b'\xda\xdbM\xb6\x83_\xe1}\xd6dx\x82\x07\x1f\xe6\xa5X\xfd\xc0p\r\x8fo\xdf'
 b'i\xb2?O9$\xad\xaad\x14\xc2\xfe\t\x8b_\xd7?\xa0\xc6\xe4\xbfN\xf8\xf8\n\xc4%n'
 b'\x10\x17\xbbu\x82qg\x8b\xbdPQ\n\r\xb0\xf9uC\xcfz\x0b\x02\x00\x00\x00'
 b'M\x00\x00\x00q\x80\x07\x8f\xab\xde\xf7\x9cy[D\xeb \xea\xcc\xda\xe2\xa77\xdc'
 b'\x93\xea\xfc\xd8\x1f\xdd`\x9eO&\xde\x94\xadIK\x9a\xc0\xc2dE\xc2\x02\x00\x00'
 b'\x00~\x00\x00\x00)\xf6\xec\xba\xef\xa4\x93\xc9+\n\xb3\xa7\xd1\xfc\x1dQ\xa7BU'
 b'\x00\x00\x00\x86\x00\x00\x00*\x00k\x12%\x02\x02\x00\x00\x00\xaf\x00\x00'
 b'\x00H')

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

{'A1': 7154688955492482552,
 'A2': {'B1': 57383,
        'B2': 29551,
        'B3': 82,
        'B4': {'C1': {'D1': -44522010,
                      'D2': 192,
                      'D3': 0.07192799066165434,
                      'D4': -1390134961,
                      'D5': 25770,
                      'D6': 0.3652064893349529,
                      'D7': 3219441312,
                      'D8': 184088654},
               'C2': 35983979,
               'C3': [{'E1': [26481, 48523],
                       'E2': 4861065907344658768,
                       'E3': 207,
                       'E4': 2938,
                       'E5': [275654084, 2188753687],
                       'E6': 11310753817584697457,
                       'E7': 23417,
                       'E8': -6349271951002768572},
                      {'E1': [40544, 9807],
                       'E2': -4413357986673748770,
                       'E3': 100,
                       'E4': 49733,
                       'E5': [3935558711, 3709851900],
                       'E6': 14525134572740212265,
                       'E7': 2603,
                       'E8': 4802896716851423155}],
               'C4': 72},
        'B5': -18793,
        'B6': [-37, -21, -22, 25, 91, -38, -37]},
 'A3': 46669,
 'A4': 2111922051,
 'A5': 25814,
 'A6': 520585848}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'CQIv\xe1\xd6\x99gc\x02s\x8f\xa7P\x08\xb42\xbd\xcd\xb6\xbf\xb0-\xb0'
 b'n\x12\x9c\x81\x1d5\x16\x89K\xcbRQ\xe8?\x8cm1\x0bj\x83Q\x16\xc0\x92'
 b'\xba\xba\xd17\xcb\xe4\xbf\xcfeF]ol\x00\x00\x00\xa4\xc6\xd5[\x01\xc6\x80~'
 b'\xa4\x9e\xaeV\xa5N5\xc3(\x12\xce\xabN\x0c\xd4?\x02\x00@\x002\xb8\x00|'
 b'M\x98\xef?`\xcc\xed=i\x0f\xdb\xbfP\x00\x00\x00\x06\xd8\x02\x00\x00\x00\\\x00'
 b'W\xb8')

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

{'A1': -10527,
 'A2': -103,
 'A3': 'gc',
 'A4': [{'B1': {'C1': 2811196162, 'C2': -0.08907682884094581},
         'B2': {'D1': 11696, 'D2': 28336, 'D3': 18}},
        {'B1': {'C1': 891126172, 'C2': 0.759927174626031},
         'B2': {'D1': 28044, 'D2': 2865, 'D3': 106}},
        {'B1': {'C1': 3222688131, 'C2': -0.6498068901326681},
         'B2': {'D1': 26063, 'D2': 23878, 'D3': 111}}],
 'A5': {'E1': {'F1': 0.31325117853001183,
               'F2': [9115503354935887524, 14066235483192467108]},
        'E2': 55302,
        'E3': [0.9873416349344153, -0.42281561897033804],
        'E4': 47191}}

Пример 2

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

(b'CQIv\x05\xbd\xf4up\x0e~\x9c*\x84\xc5v0U3\xe2\xbfMuV#r=a7a\xc0\x89\xaa%\xb5)'
 b'\xa5?\x124\xbaU\xba\x8e\x838\xc7\xc4?\x95\xda\x80\xa5\xd3\xbf}\x9a~\xfe\xfc'
 b't\x00\x00\x00:Z\xb9\x05OC!KD\xeby\xb1\xa8Z2\x94d\xbe\xf4^\xd4:\xea\xbf'
 b'\x02\x00@\x00p\x01e\xe4\x99\x8f\xd5?\x80\x8eF"\x86\xff\xcc\xbf\xb2\x00\xaf]'
 b"g\xef\xeb\xbfP\x00\x00\x00\xbb\xee\x03\x00\x00\x00\\\x00s'")

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

{'A1': -17147,
 'A2': -12,
 'A3': 'up',
 'A4': [{'B1': {'C1': 714898958, 'C2': -0.5687662073670912},
         'B2': {'D1': 30029, 'D2': 9046, 'D3': 114}},
        {'B1': {'C1': 1631019325, 'C2': 0.04133382878105207},
         'B2': {'D1': 13330, 'D2': 21946, 'D3': 186}},
        {'B1': {'C1': 3342369678, 'C2': -0.3069765219306613},
         'B2': {'D1': -25987, 'D2': 65150, 'D3': 252}}],
 'A5': {'E1': {'F1': -0.819681344471928,
               'F2': [5413682233753557562, 10678697347027430212]},
        'E2': 61115,
        'E3': [0.33688971809535584, -0.22654797242750035, -0.8729740934141061],
        'E4': 10099}}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xefKUV\x82\xf6\x84\x03\xb8\x00\x04\x00Z\xc8\x11\xdb\x86#@\xa0\xdez\x00\x03'
 b'\x00\x00\x00b\x00\x00\x00h\x10)\xecH\x91\r\xdcB\xf7\xc8\x08\x8a\x92\xeeya'
 b'ppdvxqN\x07\xa5/qzcawyet\x0c\x90\x1f>lrzqylbl\x987F\x10zmyycwho\x00*'
 b'\x006\x00B\x00N\xb4\xdc\xfc:\xa8y\x89\xbf\xe2\x85\xc7\x1d1$\x9c\x80@7'
 b'\xa3\x88\xde\x18\xf9\xca\xf8o\x8e\xc5\xa0?\xd9\x14\xb5\x01}\x9c\x00\x04l')

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

{'A1': 2197193731,
 'A2': -72,
 'A3': [{'B1': 143299310, 'B2': 'yappdvxq'},
        {'B1': 1309123887, 'B2': 'qzcawyet'},
        {'B1': 210771774, 'B2': 'lrzqylbl'},
        {'B1': -1741208048, 'B2': 'zmyycwho'}],
 'A4': {'C1': 200,
        'C2': 1286769604510670458,
        'C3': [46300, 64570, 43129],
        'C4': {'D1': 137,
               'D2': -0.5788302965312542,
               'D3': [-128, 64, 55],
               'D4': 163,
               'D5': -8584396378590384242,
               'D6': -14944,
               'D7': 0.3918888582761042,
               'D8': 1132},
        'C5': 271182920,
        'C6': 2433604674},
 'A5': 63432}

Пример 2

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

(b'\xefKUV@l"L\xdc\x00\x02\x00B\xcb\xc1\xa8"\xa7~\xc6O\x8b\x00\x02\x00\x00\x00F'
 b'\x00\x00\x00J_\xab%\xf2r|{\xff\x05R\xac{\xae\x92wrpoqvucW\xf6\xc5\xa0fopcpy'
 b'th\x00*\x006}\xd5\x9e\xeb\x8a\xbf\xd0\xdb\xde\x17\xf6L\x80\xa3\xfeb\xa2\xe9'
 b'\x1e4\x0b\x8b8*\x0e\xff\xb5?\xef\xe7\xee\xd1L&\xf6\xf5@')

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

{'A1': 1080828492,
 'A2': -36,
 'A3': [{'B1': -1401180526, 'B2': 'wrpoqvuc'},
        {'B1': 1475790240, 'B2': 'fopcpyth'}],
 'A4': {'C1': 203,
        'C2': -4492302525520261237,
        'C3': [32213, 40683],
        'C4': {'D1': 138,
               'D2': -0.2634196504597597,
               'D3': [-93, -2, 98],
               'D4': 162,
               'D5': -1648823189386024434,
               'D6': -75,
               'D7': 0.9970621192780686,
               'D8': 62784},
        'C5': 1605051890,
        'C6': 1920760831},
 'A5': 1362}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'OHL\r\x04\x00:\x00\x00\x00N\xe4T\xd1\x1d>.\x81\xb8\xa6%<\xea?\x05\x00s\x00'
 b'\x00\x00\x87\x00\x00\x00\x02\x00\x00\x00\x9d\x00\x00\x00\xab\xc4'
 b'\x17\x9bW\xd3\xb8\xd7e\xef\xe1[\xb8a \xbf>[\xa4\xcc\x98\xce\xa8E\x90['
 b'\x02\x00B\x00\x98\xaff\xceF\x06\x04\x00J\x00\xd1d\x0f\x01x\xd0\xa5v\x06\x00'
 b'T\x00\x1c\x1aj\x04J<\x04\x00`\x00J&\x02\x8b\xc1\x03\x00j\x001\xa5D'
 b'\x00\x00\x00N\x00\x00\x00Z\x00\x00\x00d\x00\x00\x00m\x00\x00\x00e'
 b'\xb1d\xc5\x80\x11\xeb\xfb\xacHI\xaeL?-\x90\xce\xbe\xc4\xab!?\xa5\x06T'
 b'\xbe\xb8?\xca<')

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

{'A1': 13,
 'A2': {'B1': [23358, 52388, 52888, 17832],
        'B2': 58446,
        'B3': 0.1541188359260559,
        'B4': 0.819842172266396,
        'B5': [{'C1': [144, 91], 'C2': -104, 'C3': 175},
               {'C1': [102, 206, 70, 6], 'C2': -47, 'C3': 100},
               {'C1': [15, 1, 120, 208, 165, 118], 'C2': 28, 'C3': 26},
               {'C1': [106, 4, 74, 60], 'C2': 74, 'C3': 38},
               {'C1': [2, 139, 193], 'C2': 49, 'C3': 165}]},
 'A3': {'D1': -983256731,
        'D2': 4226486656,
        'D3': 18604,
        'D4': 0.7995343804359436,
        'D5': -0.40344372391700745,
        'D6': 0.6315271854400635},
 'A4': {'E1': [-0.20705659687519073, 0.024688586592674255],
        'E2': [-1692941141, -675753129, 1541533541],
        'E3': -0.6264910697937012}}

Пример 2

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

(b'OHL\xe3\x08\x00:\x00\x00\x00\xd8\xcf>jF?(?\x11k\x017\xe1\xbf\x02\x00^\x00'
 b'\x00\x00f\x00\x00\x00\x03\x00\x00\x00|\x00\x00\x00\xf9\xf7\xe5\x0e\x99I'
 b"5=\x88\xc5\xf8j4\x7f\xc6\xbeZ\xbc?\xa9\xa4y\x9a\xc6\xaa\x80`\xd6p['\x80D,"
 b'\xce+\x04\x00J\x00\x81\xc7)\xa5\x86}\x04\x00T\x00\x8cdN\x00\x00\x00X\x00'
 b'\x00\x00&\xb6\xfc\xa7-\xf0\xfa\xacE\xce<\x8f ?0;\xed>$\xbat\xbf'
 b'\x81\x80\x16\xbe\xc8\xe4z\xbf\n\xd2\xb6\xbd')

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

{'A1': 227,
 'A2': {'B1': [48218, 43327, 31140, 50842, 32938, 54880, 23408, 32807],
        'B2': 53208,
        'B3': 0.7750586271286011,
        'B4': -0.5379645434531755,
        'B5': [{'C1': [68, 44, 206, 43], 'C2': -127, 'C3': 199},
               {'C1': [41, 165, 134, 125], 'C2': -116, 'C3': 100}]},
 'A3': {'D1': -1476610522,
        'D2': 2902126637,
        'D3': -12731,
        'D4': 0.627185583114624,
        'D5': 0.46334218978881836,
        'D6': -0.9559652805328369},
 'A4': {'E1': [-0.146974578499794, -0.9800534248352051, -0.0892678052186966],
        'E2': [249952249, 1026902425, 1794688392],
        'E3': -0.3876892328262329}}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CDQT\xbb\xd7\x00\x02\x001\xcfh\xf8x2\xe0 \x00\x04\x00953P\xe7\x9e8/'
 b'\x00\x05\x00I\x08\x15XY\xf4\x00\x04\x00]\xb0\xb5\xde\xe3\x0f\xe2V'
 b'\x10>\x97\x10\xfd5\x9a\xf6+\xc1\xc4\xc8Bj\x16mKw\xf4<A\x13A\xa71\x13\x86b'
 b'X\xe5=\xf8\xd7[\xab\xde\x1b\xe4\x9e\x834\xb6O\xd0\x02?\xcd\x16&\x9f\xd6\xbf'
 b'\xf0\xbf\xa1+!\x89\x8c\x18@?\xe9h*^\x10C\x12\xbf\xd1\x7fu\xf4\rX0')

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

{'A1': {'B1': [{'C1': 48087,
                'C2': [1050087677, 899348011],
                'C3': {'D1': -49, 'D2': 1761114162}},
               {'C1': 57376,
                'C2': [-1044068286, 1779854667, 2012494913, 323069745],
                'C3': {'D1': 53, 'D2': 860940190}},
               {'C1': 14383,
                'C2': [327574104,
                       -448923433,
                       1537990171,
                       -459373772,
                       -1236283390],
                'C3': {'D1': 8, 'D2': 358111732}}],
        'B2': [0.22723849110252514,
               -0.03353218845408934,
               0.7939655148676101,
               -0.27340458710876003]},
 'A2': -80,
 'A3': [-18978, -7409, -7594],
 'A4': 16}

Пример 2

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

(b'CDQT2\xd3\x00\x05\x001\x13T\x95\xfa3\xab\xa6\x00\x03\x00E\xf6?Q$&\xd0\xdd'
 b'\x00\x02\x00Q\xb3\xc8\x9c\xea\r\x00\x04\x00Y\xc6-\xbc\xccp\xddJ\xdd~\xd2\xf3'
 b'\xee\xe7{=\xbbc\xf5Y^\xf7\xc0B\xce\x98\xbd!CxS\xfd\x01S\xe0\x15\x17\x838C'
 b'\xee]\xf3\x1bJ\x81\xa2\x07\x19?\x9f\xf7@\xd6W\xa2\x00\xbf\xc0>\xf64\x03\xe1'
 b'\x80?\xecK\xcb\x1d\x86\x1f\xc8?\xe0\x111\x96O\x05\xe4')

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

{'A1': {'B1': [{'C1': 13011,
                'C2': [2127754222,
                       -411353669,
                       1677023582,
                       -138394930,
                       -1732435645],
                'C3': {'D1': 19, 'D2': 1419115059}},
               {'C1': 43942,
                'C2': [2018770177, 1407194391, -2093464594],
                'C3': {'D1': -10, 'D2': 1062282278}},
               {'C1': 53469,
                'C2': [1576213322, -2120087783],
                'C3': {'D1': -77, 'D2': -929240563}}],
        'B2': [0.03121663387529061,
               -0.12692143955042567,
               0.8842521263732062,
               0.5020988403049924]},
 'A2': -58,
 'A3': [11708, -13200, -8886],
 'A4': -35}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'qVMQD\xa9\x88\xebO\xf5\x93\x9a\x99\x98P\xcd*{\x00\x00\x00\x84\xb8\xd4'
 b'\xc7\x1b\xbd1\xd2\x81\x1c\x9e\x9c\xa6\xe4!\xf5\x91C\x85\x0f\x1a"\x9a'
 b'\x90\xb9l\xae\xd8<\xec\xe9\xd6\x8c\xdb\xa4\xebH\xbe%\xdd\x13\xbdc'
 b'\x7f\xe5\xa5\xae-(ys\x7fEg\x85\xa7T\n!H\x14\x12\x9b\x13z\x05\x86'
 b'\xc1E\x8b\x85\xf1\xd9v\xfb\x82\xf0\x99\xc5S\xd0\x876\xa8\x04\xcb\xb4'
 b"\x18\x15h\xc6\x05\x00*\x00\x06\x004\x00\x00\x00\xd0*\x91\xa0\xc1+3'\x03\x00"
 b'\x15\x00:\xc0d\x00\x00\x00')

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

{'A1': 1340836009,
 'A2': {'B1': 3084209936160953333,
        'B2': {'C1': 42,
               'C2': 41105,
               'C3': 657664961,
               'C4': [{'D1': -942360444, 'D2': [27, -67], 'D3': 49},
                      {'D1': -1642298926, 'D2': [-100, -90], 'D3': 228},
                      {'D1': 1133638945, 'D2': [-123, 15], 'D3': 26}],
               'C5': -16326,
               'C6': {'E1': 13027511467615178835,
                      'E2': -966257384,
                      'E3': [-26078, -18032, -20884, 15576, -5652],
                      'E4': [2719691401898724566,
                             -5862027004655889443,
                             -8834015730363455443,
                             -7272728148225403737,
                             -8823882347422844397,
                             -4208067931445732879],
                      'E5': 208}}}}

Пример 2

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

(b'qVMQDo\x1e.\x14\xcf\xf2\x9e\xec`\x1c\xa7\x01p\x00\x00\x00\x92\x8a\xde\xc9tB"'
 b'\xe7\xcc\x81\x99\x02\xdc\xfa\xea\x95?\xac\x8b\xb9\xca\r\xccF85\xba'
 b"\x96\xf8\xcb\xe3\x8f;-CcH#s\x15VE<\xd0\xe3%\x9e\\\x91\xd6'\x8a\xdacj88_\xb1"
 b'\xcd\xa9\xf2q\x95iz@\xfe\xc0Ee\\\xc2\xa8Nh\xf4\xf7]\x94\x03\x00#'
 b'\x00\x06\x00)\x00\x00\x003-\xbc\x8c\x94\xae\x9f\xc8\x02\x00\x15\x00\xd1'
 b'8Y\x00\x00\x00')

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

{'A1': 338566767,
 'A2': {'B1': 119095117760885455,
        'B2': {'C1': 45,
               'C2': 36028,
               'C3': -929059180,
               'C4': [{'D1': -908162414, 'D2': [116, 66], 'D3': 34},
                      {'D1': -1719546649, 'D2': [2, -36], 'D3': 250}],
               'C5': 14545,
               'C6': {'E1': 7516130380855199168,
                      'E2': -1805781004,
                      'E3': [-27158, -21441, -18037],
                      'E4': [-7585692106529960502,
                             7152610367034870776,
                             -3441799779188530360,
                             -8491582652571310621,
                             -3625011529987234854,
                             -125966195668946263],
                      'E5': 51}}}}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"JQT%\xae\xf8Q\xfd\x8f\xec>\xde!\xf5W\xce\xe8\xe7?\x06ZXn\xc8\x19'\xe1\xda"
 b'?1\x02\x00\x00\x00D\x00\xf2\xf9P\xe9m\xd2\xe5?\x0e\x02\x00\x00\x00L\x00\xce'
 b'\xd8\xae\x13aJ\xe7?\xbf\x0bm/h\x00\x00\x00\xdf\xb7\x7f\x84O\xa8\x00\x03\x94'
 b'D\xcb\xd1F\x87\x90\x03\xbf\xf6\xf5]?\x14uH\xbf\xe1r\xad\xbd\xb5\xf4L\xbe'
 b'\xf8\x13\xe0L\x04\x00T\x00\x02\x00d\x00\xd0\x11\xfc}\xeftW|W\xc3\x13\xa5'
 b'\x903\xfb\xf7LU')

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

{'A1': 1375252005,
 'A2': {'B1': 0.46203604340553284,
        'B2': {'C1': 0.74716870478829, 'C2': 23046},
        'B3': 0.41999223249306317,
        'B4': [{'D1': 49,
                'D2': [1334083511, 2483224744],
                'D3': 0.6819371754607444},
               {'D1': 14,
                'D2': [1188154180, 3204681863],
                'D3': 0.7278294929917821}],
        'B5': 795675583,
        'B6': {'E1': [0.8670343160629272,
                      -0.783036470413208,
                      -0.08469177037477493,
                      -0.2001522332429886],
               'E2': [5112, 19680],
               'E3': 8959758555636568528,
               'E4': 2769535831,
               'E5': 4160435088,
               'E6': 21836},
        'B7': 223}}

Пример 2

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

(b'JQT\xca ^\xb0\xd8\x8a4?\x80\xb3\xcfA\xfao\xae?jA\xde\xb5\x08H\x86\xfd\xed'
 b'\xbfV\x05\x00\x00\x00D\x00\xa0\xd0\x98V9T\xe3?\x93\x05\x00\x00\x00X\x00\x8c'
 b'\x82\xd6\x8a\x88"\xd8?\xb0\'\x02\x97z\x00\x00\x00r\xf6\xa5#\x997BMt\x8fkJ`'
 b'\x86\x13\x0c\xf2\x13D5U-\x83JV\xdb\xefZ\xc6\x02\x03A@K\xf1\xecX\xfb5\r\xf1'
 b'\xfa\xc2|>oYo?`1M3UE\x02\x00l\x00\x03\x00t\x00\xdf\x1e\xe0Z\xd8Bj\xb1e\x87'
 b'\xd5\xbb\xd4M\x89\xbe\xfc\xb9')

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

{'A1': 2958958794,
 'A2': {'B1': 0.7052435874938965,
        'B2': {'C1': 0.05944807103501315, 'C2': 16746},
        'B3': -0.9371978194155266,
        'B4': [{'D1': 86,
                'D2': [2569250294,
                       1951220279,
                       1615489935,
                       4060877702,
                       1429554195],
                'D3': 0.6040312472673754},
               {'D1': -109,
                'D2': [1447723821,
                       3327848411,
                       1078002434,
                       1491923275,
                       4044174843],
                'D3': 0.37710774954215576}],
        'B5': -1761466448,
        'B6': {'E1': [0.2468375265598297, 0.9349583983421326],
               'E2': [12640, 13133, 17749],
               'E3': 12784103989249580767,
               'E4': 3151333221,
               'E5': 3196669396,
               'E6': -17924},
        'B7': 114}}