ИКБО-31-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xc7DLUW\x00b\x8f\xf7\x87i\xb1\xaf\x81~\xde~\xdcR\x9c\x16\x91\xc8Q'
 b'$\xd1\x16\xd6\x91\x83r\xd6\xa8\xa8\xfcb\x85E\x97\x95\xbf\xb4\xe2\x00'
 b'4\r\xb7\xc81\xb5\x9au\x84\x0c\xdc$2\xbd%\xcd\xf8\xb3c\xdfd(5\xc2"\xc6]3'
 b'3q\x99q3\xa9\xc9a\x89\xc4\t\xab\x03\x81g\xee\xc0&\xea\xf24eO\xca'
 b'\x17\x10\x87~\x170T\xc6\x10\x06dk\xbe_j[\xce$\x00\x00\x00\x02\x00\x10'
 b'\xbf\xe3\x0cs\x01\xc7\xd8\xe4\x7f?\x15\xf7\xfbo+J\x9d\xbf\xef!P\xc8\xf53'
 b'H\xd4\xf5\x82\xadD\x06\x87x\x00\x06\x00\x1a\x00\x06\x00J')

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

{'A1': {'B1': -8683477535175602170,
        'B2': 'dk',
        'B3': {'C1': -0.2181791514158249, 'C2': -12764},
        'B4': [{'D1': 126, 'D2': 3696401430}, {'D1': -111, 'D2': 3360761041}],
        'B5': -0.5952696833399185,
        'B6': 127,
        'B7': {'E1': 0.5858151316642761,
               'E2': 1865108125,
               'E3': -0.9728168415982532,
               'E4': -3101429087692486792,
               'E5': [1645662707603908776,
                      18186244779217895348,
                      16285073486094283189,
                      11129947244883882685,
                      2724106798987437096,
                      3873696864854553457]},
        'B8': [2574332841,
               3378612676,
               162202497,
               1743700006,
               3941741669,
               1338644240]},
 'A2': 10373909154693611902,
 'A3': 222}

Пример 2

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

(b'\xc7DLUW\x00Ze\x06d\xfc\xf8\xd3`\x99F\xad/#\xb6~\x91\x03N\x01\xe7D\x07'
 b'.R\xd9\xb5\x80\x9a\x1c\xb8T\xec\x06\x900\x87X\x1dc\xde=\x16\xeb\xe7\xa1\x00'
 b'\xa9\xe3\r6\xfd\xaa\xc4\x1br\xd6\xb9~p\x1b\xd3\xb4W\xdb\xae\xb8'
 b'\x0f\xd2\n\xdfJx\x88,&\x0c\x0b\xdcQ\r\xf7\x9c\xca\xb0\xfb\xe4\x9d}\x91\xaa'
 b'\xdd\xb1se\xbe\xfc\x9f\xfaF\xd0\x00\x00\x00\x02\x00\x10\xbf\xe5~\x92'
 b'\xfd\xa0\xed\n\xcc>\xcc\x07\xe1\x9e\x8d\x81\x8a?\xb6\xa6\x19\x9fR\xef'
 b'\x10\x82\x1c\xbd7\xf6\xa7\xa8\xe2\x00\x07\x00\x1a\x00\x02\x00R')

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

{'A1': {'B1': -295938512859243087,
        'B2': 'se',
        'B3': {'C1': -0.4934080243110657, 'C2': 18128},
        'B4': [{'D1': -83, 'D2': 790869630}, {'D1': -111, 'D2': 55443943}],
        'B5': -0.6717009500202107,
        'B6': -52,
        'B7': {'E1': 0.398497611284256,
               'E2': -1634893430,
               'E3': 0.08847198619599461,
               'E4': -9071167501371987742,
               'E5': [4901937652790821018,
                      2069497401475870855,
                      6349340855821069287,
                      11601459432750775722,
                      14131014522365702171,
                      15254914438851465170,
                      783426741726881292]},
        'B8': [198988045, 4154247856]},
 'A2': 7279616885360124057,
 'A3': 70}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xd9EDI\x1e\x00\x00\x002A\x82\x00\x00\x00\xaf\x13%n\xd0\xddN\x9f\x99\xd6'
 b'\x97"\x82\x8e\xadr\xef\xd7\xea\t\xdf\xce\xaf\x0bV\xeem}\xee\xf9\xcfy\xe3#'
 b'e\x00\xeec\xee>x].\xd2\x9f\xa2\xab3H=\x82Nu5\xd6\xf1\xc4\xe6R\x9f\xb6\xa8'
 b'\xbe\xc5\xe7\x02p\xbd\xcc\xb1\xc5\xad\x84\xe8\x01u\xab4\xc6{\xac\x8e'
 b'U\x1e\xc6z\xa3\x80\xd24\x8e]S>\xe8\xb0\xa3\xa3\xde8\x03\xb5{\xf3\xb0\x1a'
 b'Ib:\x00J\x00Z\x00j\x00\x81\xbe\x04\x00z\x00\x00\x001\x08\x17\xb4\xfb\xde'
 b'\x8ex\xe8 s}\xbf\xf8\xd8*\xbffm_?R\xae=\xbf\xf3')

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

{'A1': {'B1': 166385647,
        'B2': 9038142080533122783,
        'B3': 2043673070,
        'B4': 9187,
        'B5': 101,
        'B6': 0.465606153011322,
        'B7': 23928,
        'B8': [46, 210]},
 'A2': 16690,
 'A3': {'C1': 48769,
        'C2': [{'D1': 866886303, 'D2': 17426174586101316936, 'D3': 2673010372},
               {'D1': 3317606582, 'D2': 12521609831883211495, 'D3': 1963059332},
               {'D1': 2076587179, 'D2': 9269387449389649580, 'D3': 1569600722},
               {'D1': 2968010323,
                'D2': 17544815798795543459,
                'D3': 1648958128}],
        'C3': 49,
        'C4': {'E1': 16751295902361327368,
               'E2': [-0.9900379180908203,
                      -0.6673731803894043,
                      0.8727630376815796,
                      -0.7409411668777466],
               'E3': -13}},
 'A4': [1847923631, -1622221360, 580376217, 1923976834]}

Пример 2

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

(b'\xd9EDI\x1e\x00\x00\x00h\xbap\x00\x00\x00\xfa\xbe\x7f\x97\x18\xff'
 b'\xfa\xd9\r\xb5\xa8\x822H4\x86y\x17!\xc4\xf2\xfa~\xb4~L9\x80\xbc\xab'
 b'\xd3(\xeb\xb4\x18\x1bs&|?\x04\xbcR,\x17\x0e\xbd$\xefJ3\x18\x95t\x8b\xb3\x9c<'
 b'\xd2\xae\x1f\xe2\xda\xe9\xae\xbc\xf4n\x8c#Y\xdaR \xb8e0x\x00\x7f\xc4R'
 b'\x89\x15\x17kyJ\xc2(C\xe5:\x00J\x00Z\x00\x01\xfa\x03\x00j\x00\x00\x00'
 b'\r\xdb]\xc2&\x05\x14-TU\xaa{\xbfwkU?a\x9a\x9f=\xc0\x7fI\xbe\x08')

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

{'A1': {'B1': -1004464263,
        'B2': -9207243856104457486,
        'B3': 684960700,
        'B4': -19221,
        'B5': 6936,
        'B6': 0.9849616885185242,
        'B7': -17404,
        'B8': [82, 44]},
 'A2': -17816,
 'A3': {'C1': 64001,
        'C2': [{'D1': 616369687, 'D2': 12937562538256845551, 'D3': 2933013660},
               {'D1': 3923436063, 'D2': 15733645859259464878, 'D3': 1706565714},
               {'D1': 2130737200, 'D2': 5366438177878397636, 'D3': 3846383810}],
        'C3': 13,
        'C4': {'E1': 6065526285495590363,
               'E2': [-0.9830678105354309,
                      0.8336710333824158,
                      0.07793117314577103,
                      -0.1967763900756836],
               'E3': 8}},
 'A4': [-1753235718, -637862120, -2102872819, -2043393998]}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\nGUTA\xa0\x92\xdd\x1fB\xe1\xdd\x11\xf5\x03\x00^\x00[\x89\x1b%\x0b\xe9'
 b'd\x1d\x86\x00\x90\x03\x00\x00\x00\x9d\x00\x02\x00\x00\x00\xa9'
 b'\x00\x00\x00\x05\x00\x00\x00\xad\x00\x00\x00\xc2\xc8\x15?%\x08\xd9\x85z:h$U'
 b',\xfa\xab\xb3}l:7.e=\xb8\xea\x9cj\xaa\xdc\x85\xa6\xc4cd\x06\xecy|F\xac'
 b'"\x8fC\x00\x00\x00L\x00\x00\x00U\x00\x00\x00P\xd7\xa46}\x0e\x94`J\nf2I\x08'
 b'Ks\xeaz\x03\xde\x15v[{\x05\xd2\xb2\xa3\x9a\x86#\x8c\xea\x87\x92=`\x86'
 b'\xebm\x98z\xab?\x07\x00j\x00\x00\x00\xaf\xb9\xd7\xe7\xbe1\x13\x14?\xf6\x0eo'
 b'\xbfi\xc4oJ\x19\\\xacE\x9d@\x05\n\x99\x94')

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

{'A1': {'B1': 160, 'B2': -8814, 'B3': -572440033, 'B4': 62737},
 'A2': [{'C1': -77, 'C2': 13275878525727566973},
        {'C1': -22, 'C2': 7189053999053171356},
        {'C1': 100, 'C2': 10313995515367910406}],
 'A3': {'D1': 2118073958847449435,
        'D2': {'E1': -1943828838,
               'E2': 0.07154829800128937,
               'E3': 0.053669703882189834,
               'E4': [916772688,
                      1620315773,
                      845548106,
                      1934297161,
                      3724770026,
                      2069591573,
                      2746405381],
               'E5': -81},
        'D3': 144,
        'D4': [-0.4528177082538605, 0.5784178376197815, -0.9338220357894897],
        'D5': [-15255, 19055],
        'D6': [23577, 17836, 16541, 2565, 38041]},
 'A4': 0.5850945711135864,
 'A5': {'F1': 2085, 'F2': 34265, 'F3': -6054478004851557766}}

Пример 2

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

(b'\nGUTA\xa1\x1e\x86\x81\xa5\xce\x1f\x13\x8c\x04\x00g\x00\x19r\xd4\xde\x8d\x8a'
 b'\xeae\x93\x00\x91\x03\x00\x00\x00\xaa\x00\x02\x00\x00\x00\xb6'
 b'\x00\x00\x00\x02\x00\x00\x00\xba\x00\x00\x00%\xf4\xc2\xbd\xc0\xaa\xf9\xc4O'
 b'7\xcf\x8b?>}\xaa\xaa\xb2\xdb\xedW\xe4\x1d\xb2\x86\xe7$\x0fj9D\xc0\r'
 b'DL\x80\xaeQ\x89I\x987\x05\xb6\xa9^\x9a/\x14\x0c7qC\x00\x00\x00L\x00\x00\x00U'
 b'\x00\x00\x00^\x00\x00\x00D\xda\x02\xbe\xb2\x82Q\xfd$\xd2c\x16\xf6\xcdeE\x08'
 b'P]\x07\xc8\xc3\xc4\x8a*$\xa9\x9f\x1f\x93\x8e\x1cS\x94m\xbf\xf8,\xc7L\xa4'
 b'\xbd\xd6\xbf\x07\x00w\x00\x00\x00\x0c\xab\x97\xf2>\x87\xf5Y\xbf!^'
 b'\x03\xbfc\xb0\x92\xbc\rPH\xc9')

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

{'A1': {'B1': 161, 'B2': -31202, 'B3': 533636481, 'B4': 35859},
 'A2': [{'C1': -86, 'C2': 9705853013501795250},
        {'C1': -25, 'C2': 4903786968529899300},
        {'C1': 76, 'C2': 375936535512592000},
        {'C1': -74, 'C2': 8158002530842468009}],
 'A3': {'D1': 7343834484314501657,
        'D2': {'E1': 479105823,
               'E2': -0.9280444979667664,
               'E3': -0.35532481668333515,
               'E4': [3187857988,
                      4249977522,
                      375640612,
                      1164299766,
                      123555848,
                      2328150984,
                      2678662186],
               'E5': 12},
        'D3': 145,
        'D4': [0.47381338477134705, -0.8514026999473572, -0.5131550431251526],
        'D5': [-20381, -17262],
        'D6': [20493, 51528]},
 'A4': -0.09519223123788834,
 'A5': {'F1': 43712, 'F2': 50425, 'F3': -6161700272523495601}}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xc9BCOL\xe1\xd8\xc2\xbd\xd6m\xfc\xcb\x01\x1a7\xbb\xdb\xe5\x98\xb8\x00^\x00'
 b't\x00\x86\x00\x9a\x00\xb0a\xbb?\xe3\x9e\xcd*\xc5\x90D>\xa3\xda\r\x00\x00\x00'
 b'\x02\x00\x00\x00\xbe\x8a\x98\xa1\x93&\x1fI\x1d19\x1e\xdd\x8eA\xf2'
 b"\xd5'\x85\x1f\x9c\x9bsf\x83f\xa0\x88H\x99\xf1\xdd\xcc\xd0\x17\xe8"
 b'\xa1\xd8\xe5\xa8\x0c\xef\xdb\x08\x9e\xab\x84F\x8b\xd9\x00\x00\x00\x02\x00Z'
 b'd\x10\xd4\x9aN\x8f\x0fY\x10@Ve\xcd\x1b`\xcb\x00\x00\x00\x04\x00l\x9ea'
 b'\x12\x15@\xf4\x16\xb8A\xb96\xdb\x00\x00\x00\x02\x00\x82\xfb4\xb8i'
 b'\xc9\x96\xb0\xe3w@\x17\xbc\xf5\xb7\x00\x00\x00\x03\x00\x94Y\xab\xaf.'
 b'\xdd\xf2\xb5o\x13\xf7\xf0\xe9\xd6q\x1d\x95\x00\x00\x00\x04\x00\xa8\xd6\xb2')

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

{'A1': -505888067,
 'A2': -2995460228304455749,
 'A3': -9243,
 'A4': {'B1': 39096,
        'B2': [{'C1': -2663704720093836327, 'C2': [-6744, 3311]},
               {'C1': 1171030898349138123, 'C2': [25616, -11110, 20111, 3929]},
               {'C1': 4680390893377238747, 'C2': [-24991, 4629]},
               {'C1': -5700581586161044041, 'C2': [-1228, -18327, -13930]},
               {'C1': 1438883493083946389,
                'C2': [22955, -20690, -8718, -19089]}],
        'B3': 25019,
        'B4': 0.6131349406609918,
        'B5': 0.32002297043800354,
        'B6': [214, 178],
        'B7': [-8459834246643627747, 3546900118454268629]},
 'A5': {'D1': 2847717096865097347,
        'D2': 102,
        'D3': 11567575468926160080,
        'D4': 401121752}}

Пример 2

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

(b'\xc9BCOL\x90A\x033\xd8\x06\x0e?A\xc6i\x93[P\xd2H\x00`\x00r\x00\x88\x00'
 b'\x9c\x00\xb0\x8cG?\xe4\xb8W\xe6\x80\xc9\x88=N\xc4\xaa\x00\x00\x00'
 b'\x03\x00\x00\x00\xbe54e=S\xa1\xecB\xeb\x03\x0e\xaf\x08J\xf9\xf2\xf2U\xe2'
 b'Zy\x87\xf5\\t\xbayr\xe4\x12i2\x01\xf1\xbd\xac\xb7\xc0\t5$\xb6Y\xe2!Wf'
 b'\xb7Q\xd9\xcf\x00\x00\x00\x03\x00ZG,\xf9=\xc0\x1b\xac\xdb\xec\x91'
 b'Y\xb4\x00\x00\x00\x02\x00n\x17\xa5l\xdf$#{\xfb?\x98:\xf53#\xf95'
 b'\x00\x00\x00\x04\x00\x80\x03)d\xfc\xd5\x0c\xb6\xc1\x8d\x90\xef\xb6\xc4\x10'
 b'\x00\x00\x00\x03\x00\x96m"u\xbd\xbd\x9e\xd3_\xf3\x9e\x07Q\x9f\x17'
 b'\x00\x00\x00\x03\x00\xaaD\xbb=')

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

{'A1': -1874787533,
 'A2': -2880599246807602797,
 'A3': 23376,
 'A4': {'B1': 53832,
        'B2': [{'C1': -2152343048232511025, 'C2': [-16375, 13604, -18855]},
               {'C1': -4603896133489436236, 'C2': [18220, -1731]},
               {'C1': 4582477445648873781, 'C2': [6053, 27871, 9251, 31739]},
               {'C1': -5277781634664971248, 'C2': [809, 25852, -10996]},
               {'C1': -3215583748866072809, 'C2': [27938, 30141, -16994]}],
        'B3': -29625,
        'B4': 0.6475028516781984,
        'B5': 0.050480522215366364,
        'B6': [68, 187, 61],
        'B7': [3833800496869665858, -1512348904945157646]},
 'A5': {'D1': 17462112008412853596,
        'D2': 116,
        'D3': 13436897287123579393,
        'D4': -239227721}}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'9EETV-*N\xe1\xa9!\xf7h\x10\xa1\x92\xd0cyC7\xa5\xb1i\xcb3\x88\x1c'
 b'\x98\xe6\x19\xd3L\xda\x8e<\n\xe8NK\x00\xb0\x1b\xda\xe6f\x82\\,7-\xad'
 b"f\xfem\x8ez\xa8p\xf7\x94\x12\xe8SL\tao'\x1f\xd8z\xca\xc9(!\n\x02\x00y"
 b"\x00\xa9\x0c\x9e\x15J\xbf\x934\xa5\x84\x88l\x82p\x0b>\xad\x12'\xc6\x00\xd1p"
 b'\xa2\xc4\xf9e\xec"4\xd06^\xbf\x03\x00{\x00\x00\x00zb\x89\x18g\xdcu\xb9')

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

{'A1': 7563551112705223213,
 'A2': -795696880,
 'A3': [{'B1': 927168867, 'B2': 10960785349150355877},
        {'B1': 1288903142, 'B2': 21197381764419290},
        {'B1': -421913680, 'B2': 7398619477830304358},
        {'B1': 2056154622, 'B2': 5499994736455807144},
        {'B1': 661610761, 'B2': 729909461761316895}],
 'A4': 'zb',
 'A5': 169,
 'A6': {'C1': 12,
        'C2': {'D1': -0.789392352104187,
               'D2': 8107161612817085587,
               'D3': -3386489048663245301,
               'D4': [112, 162, 196, 249, 101, 236, 34, 52]}},
 'A7': -0.8680238723754883,
 'A8': [6281, -9113, -18059]}

Пример 2

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

(b'9EETV\x1e\xfc\x9c\x90\rs\x80!\x0f_#\xc7\xc2\xb0k\x14\xb3\x12('
 b'\xcc\x1b\xbf\x81\xf7o\x01\x18\xc4I]wu\x11r_jw\xe9\xd2\x90\x03H\xc5'
 b'c\xf1\xff\xf7n\x83\xc4\x95\xffy$\xd6\xe8/>L\xa3\xed\xc0e\xb8\xc1"\xce'
 b'\x98\xe4(\x1d\xb8\x05\x00y\x00n\xf6\xa4:\x83\xbd\xd9\xae|1\xd7\xff\x819\xb1'
 b'\xff\xe6\xf3\xaeq\xff\x8b\x1d\x9dnth\xbc@\xeb\xdd\xe1\xad>\x07\x00~\x00\x00'
 b'\x00cmlfbv\xae:\xfc\xc2\x89\xf27cE\xbbl\xfe1')

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

{'A1': 2414055902368562206,
 'A2': -953983217,
 'A3': [{'B1': 342601922, 'B2': 17834746125474075315},
        {'B1': -1005059729, 'B2': 7664970510118640969},
        {'B1': -1865225865, 'B2': 7996141075645679619},
        {'B1': -6962045, 'B2': 11766848301902996601},
        {'B1': -1201291027, 'B2': 13266805039584649921}],
 'A4': 'cmlfb',
 'A5': 110,
 'A6': {'C1': -10,
        'C2': {'D1': -0.06407669186592102,
               'D2': 4143874431870873305,
               'D3': -8358837387146100815,
               'D4': [29, 157, 110, 116, 104, 188, 64, 235]}},
 'A7': 0.33961382508277893,
 'A8': [-20874, -966, -30270, 14322, 17763, 27835, 12798]}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'MJE\xaeW\xe8\xcb,\xcc0\x12\n\xd4\xe19(?\xed\x93\x10\xf6E\x99b'
 b'\x00\x00\x00\x02\x00\x00\x00u\x00y=\x11\xf2\xab\x00\x02\x00\x00\x00\xb2ovv"'
 b'a?\xd8l-{q\xf2\xa4\xbf>i\xc3\xc9\x00\x03\x00,\xd8\x87\xeao\x17\x00/\x7f/R'
 b'\xf7\x1f\xdfT\x8ape\xb4\xb1\xbf\xb1\xb1Og\xd1\xd6\xd0?P^\xe9\xb5\x00\x02'
 b'\x00Qr\x13\x149\xfc\x00S\xdf\xea\xc9w/\xa4D\x9f\x00=\x00aK\x90\x95'
 b'\x10 \x92\x02\x97+X3=1u^\x1b\xc9\x86\x91C\xadL\xec\xf19\xcc7@o\xa7K'
 b"Y\x1b\xecL\x16\x0eM/\xfb\xbf\xc6\xac\x0e\x07\x1aR\xf0\xfbx\xba\xddI{j?\xdds'")

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

{'A1': 6334536269161304586,
 'A2': -11039,
 'A3': 14632,
 'A4': 0.9242024240491384,
 'A5': [{'B1': 201,
         'B2': 'ovv',
         'B3': 3632786031,
         'B4': 23,
         'B5': {'C1': 8801, 'C2': 0.381602640678276, 'C3': -0.7438012957572937},
         'B6': 9164634988067378314},
        {'B1': 181,
         'B2': 'pe',
         'B3': 1913852985,
         'B4': 252,
         'B5': {'C1': -19279,
                'C2': -0.06911178860340361,
                'C3': 0.8139482140541077},
         'B6': 16134930128745809055}],
 'A6': {'D1': {'E1': [5445015845989384855,
                      3123302679497235995,
                      14521453768359079153,
                      4164764505301535577,
                      2012066791140700155],
               'E2': -0.17712569567506575,
               'E3': 4218993373,
               'E4': 18811,
               'E5': [106, 63, 221]},
        'D2': 0.03563181683421135},
 'A7': [115, 39]}

Пример 2

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

(b'MJE\xae\xfd:\xedA\xefH)7\xce\x082\t?\xeb\x9cR\xc9\xb7.P\x00\x00\x00\x02'
 b'\x00\x00\x00u\x00y?.\xd2\xcc\x00\x05\x00\x00\x00\xb2my\xc1y?\xda\xe69'
 b'\x1ci\xe6\xbc\xbeZ\x88&\xa3\x00\x02\x00,Nj\x93\xec\xa2\x00.\xef\x08\xed\xba'
 b'\x8b\xe7d\x85gox\xa2\xa4?\xea\xf0\x11\x1b\xa6\xd0,\xbf5\xa2\xf78\x00\x03'
 b'\x00P\xc9I\xe3\xe2\xd1\x00S@\xc6}m\x8c\xabp2\x00<\x00a\xc0 \x90'
 b'\xb9\xcb\xb0\x06\x1bh\xc7\x048\xac\xfb\xec\xe7\x15T^-\x84\x0c\xf2'
 b'(\x8c\xc9\xff\x82w\xaf\xf62\x8d\x9d;W\xb2\xa5"\x1f\xbf\xeb\xc3\xac-\xbb\x92'
 b'\x92lF\x9a\xecg9\x95V\xaa0\xe2\xc8|s')

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

{'A1': 18247157707688126775,
 'A2': -12792,
 'A3': 12809,
 'A4': 0.8628324451214642,
 'A5': [{'B1': 163,
         'B2': 'my',
         'B3': 1315607532,
         'B4': 162,
         'B5': {'C1': -16007,
                'C2': 0.4203017022588076,
                'C3': -0.21340999007225037},
         'B6': 17224278160345359493},
        {'B1': 56,
         'B2': 'gox',
         'B3': 3377062882,
         'B4': 209,
         'B5': {'C1': -23900,
                'C2': 0.841805032736834,
                'C3': -0.7095178961753845},
         'B6': 4667555973281050674}],
 'A6': {'D1': {'E1': [13844224382197564955,
                      7550007941776796903,
                      1536956922422161960,
                      10144920571447604786,
                      10204377578536772127],
               'E2': -0.8676358121125125,
               'E3': 1816566508,
               'E4': 26425,
               'E5': [149, 86, 170]},
        'D2': 0.6829040050506592},
 'A7': [48, 226, 200, 124, 115]}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'RCJ\xd5;\x824?\xd7\xfc\xccPF\xbf\xa3&\x8fp?\x06\x95\x8e\xe3\xbe\x08\x85NB'
 b'\xbf\x18\x8f^\xd0\xdb\xff1\x0b\x1a\xb0\xd0l^\x18\xbf\xfd\xc5\xb1\xf0'
 b':\xae\xa0\x02xZ;[\xd1\xf6d\xe9\xaa\xadS\x00N\x140`C\r\x11W+\x87\x00`'
 b'\xa6\x88E\x8b\xab\x844\xabG\x19?d\x8dz?z\xc4|\xbf\xbaT\xff>\x10\x8a\xa6<\xb2'
 b'\x8fh\xbf\x02\x00\x00\x00K\x00\x00\x00\xb1/\xee\x05$U\x14lxE\x80BTj\xae9N'
 b'g\xda?\xbc\xbc\xdf')

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

{'A1': 0.7051121592521667,
 'A2': -809,
 'A3': [{'B1': -0.7746703624725342, 'B2': 163},
        {'B1': 0.939684271812439, 'B2': 6},
        {'B1': -0.44444718956947327, 'B2': 8},
        {'B1': -0.7590106129646301, 'B2': 24}],
 'A4': [-607101297, 436941311, 1584189616, -973226216],
 'A5': 2923098289,
 'A6': 17785096713941811872,
 'A7': {'C1': 2913659236,
        'C2': {'D1': [0.5987498164176941,
                      0.97871994972229,
                      -0.9873729944229126,
                      0.4986932873725891,
                      0.02032950520515442,
                      -0.9084426164627075],
               'D2': [1166583392, 881109899],
               'D3': [12209, 1518, 21796, 27668, 17784, 17024],
               'D4': 0.412555271462826},
        'C3': 78,
        'C4': 3122983615267352596,
        'C5': {'E1': 48316, 'E2': -33}}}

Пример 2

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

(b"RCJ\xd5\xa3\x84'\xbf\x98\r\xbci\xea\xbe\x91\x1a\xd0\x1c?`\xb7\xc7Z\xbf"
 b'L@c\xda>\xe4 \xbd\xc6\xf0@j\xa1\x1e\xc6\x07w\x83)\xf4\xde\x9b>"v]\xc7\xa6'
 b'6T\xe0B\xa3\xc4O\xe46\xa3S\x00q\xe0\xa4\x1e&\xd1\x9fm`\x87\x00~k2\xf5\x8c'
 b'\xe8\xcb\xd7\x87\x7f\x10\xbf\xe4\xae\xf1>\xe5\xdd\xaa>\xc2Y\xc2=\x98'
 b'\xe2a\xbf\xbf:\x12\xbf\x02\x00\x00\x00K\x00\x00\x00<y1\x16\xff\xa4\xc3\xf9L'
 b'\xfa\xf1:p\x13o\x87|w\xbc?\x1fb\x8a')

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

{'A1': -0.6543676257133484,
 'A2': 3480,
 'A3': [{'B1': -0.45783793926239014, 'B2': 145},
        {'B1': 0.6125503778457642, 'B2': 96},
        {'B1': -0.8546099066734314, 'B2': 76},
        {'B1': 0.42653846740722656, 'B2': 228}],
 'A4': [-255410912, 513894976, -2089351226, -1679887319],
 'A5': 1568023102,
 'A6': 14169242383890687687,
 'A7': {'C1': 2738283599,
        'C2': {'D1': [-0.5644459128379822,
                      0.4720374345779419,
                      0.33372417092323303,
                      0.09489776194095612,
                      -0.8823637962341309,
                      -0.5712088942527771],
               'D2': [-181245058, -674502516],
               'D3': [31036, 5681, 42239, 63939, 64076, 15089],
               'D4': 0.11119821840754951},
        'C3': 113,
        'C4': 6948385520739067104,
        'C5': {'E1': 25119, 'E2': -118}}}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"LDYO\x9bOW\x00 k\xacwA\x9bp\x1b\xcba\xd8\xe9\xca\t~\xc5:l\x93Z'k%Y\xb84O\xab"
 b'\x19\x04\x00\x15\x00\x00\x00b[\xeb\xf3g\x83\xe9U\xdc\xdd\x91\n?c\xbc\n\x03'
 b'\x00/\x00\x00\x00\xbd\xc5\x9cDW\xc6\xd8\x10\x19\xadP\xe1\x02\x00E'
 b'\x00\x00\x00L\xb1\x165\x11\x002\nHT\xcd\xc1MQ\x90c\xea\x9cy1nkjqtz\xf9%\x00'
 b';\x00M\x00')

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

{'A1': 79,
 'A2': {'B1': {'C1': -10143, 'C2': -23, 'C3': 202},
        'B2': 5858551777905347122,
        'B3': 2632606608,
        'B4': 12665,
        'B5': 'nkjqtz',
        'B6': -7,
        'B7': [{'D1': [986021385, 660247404, -1202117269, 430657332],
                'D2': [23394, -3093]},
               {'D1': [1441366887, 177331676, 180118335],
                'D2': [-14915, 17564]},
               {'D1': [282642007, -514806503], 'D2': [-20148, 13590]}]},
 'A3': 1977250941898615584,
 'A4': -53}

Пример 2

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

(b'LDYO\x9b\xa5c\x00A\xf9 Z\xe0>Y?\xa5\xa9\x19\xffLg{*\xd9$*\x894\xe1y\xd7'
 b'\xfb\xc14\x85\x94O\x16X^\x05\x00\x15\x00\x00\x00\xa0\x92\x05i\xdd=\xfcm\x15'
 b'\xc0B?\x02\x003\x00\x00\x00\x97\xa2!\x99U)i:Ls\x9e=\xba\xfb\xc2\x99a\xa8\xec'
 b'\xda\x1d\xd9|)\x05\x00E\x00\x00\x00\xb8@\x10H\x11\x00U\xa4{\xd7\x0e$^'
 b'\xe8\x05s\xb0aftmqgzfo\xfc)\x00;\x00Y\x00')

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

{'A1': -91,
 'A2': {'B1': {'C1': 6569, 'C2': -1, 'C3': 76},
        'B2': 16743860110773429333,
        'B3': 1638953733,
        'B4': 29798,
        'B5': 'mqgzfo',
        'B6': -4,
        'B7': [{'D1': [-651527321,
                       881404452,
                       -69764639,
                       -1803209535,
                       1582831183],
                'D2': [-28000, 26885]},
               {'D1': [1845247453, 1061339157], 'D2': [-23913, -26335]},
               {'D1': [979970389,
                       1033794380,
                       -1715274822,
                       -622024607,
                       696047901],
                'D2': [16568, 18448]}]},
 'A3': 4564748830622415169,
 'A4': -91}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'POIWSU\xf6%\x05\x006\x00\x00\x00~\xf0@ub\x00@\x9a\xa7!\xb4\xc7\x9d\xd9'
 b'3\x17\xc1\xd4\x00\xa4\x0b\xde\xb5\xbb\x98\xfeg \xad\x9b:\xe6\x08gD\x8f\xd3v'
 b'Xh\x18\x00\x00\x00\x1e\x00\x00\x00$\x00\x00\x00*\x00\x00\x000\x00'
 b'\x00\x00\xad\xa5\x1b?8\x15\xb3>\x02\x00\x00\x00J\x00\x00\x00\xd5vY\x19Im'
 b'\xe7\x02qaR\x00}\xd3\x7f\xbfIw9\x92\x03\x84_\x82\x00O\x10{\xb03\xdev\xbf\xbf'
 b'\xd3R\xd7?\xeb&\x00\xa0\xe4+_\x95m\xfd\xda\x84\x98\x1aP\xf6gt\xfc\xfc'
 b's\xb1n\x8a\xd5?\xcb\t\xba;\xb0\xaf3\xee8t\x11\xa7\xb2')

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

{'A1': -2475,
 'A2': 37,
 'A3': [{'B1': 3650996148, 'B2': 5939},
        {'B1': 2751517889, 'B2': 56843},
        {'B1': 4271422389, 'B2': 8295},
        {'B1': 3862600621, 'B2': 26376},
        {'B1': 1993576260, 'B2': 26712}],
 'A4': 1967190142,
 'A5': {'C1': 'qa',
        'C2': {'D1': [0.6079967617988586, 0.34977126121520996],
               'D2': 209256068421351125},
        'C3': -0.9993208050727844,
        'C4': 9394372498591151945,
        'C5': 0,
        'C6': 79,
        'C7': {'E1': -0.12290753137538624,
               'E2': [21203, 16343, 9963],
               'E3': 40960,
               'E4': -8873501468680836124,
               'E5': [6808, 63056]},
        'C8': {'F1': 29799,
               'F2': 0.33657424287225957,
               'F3': 0.0056774369440972805,
               'F4': -6408213006908149840,
               'F5': -78}},
 'A6': 564632128}

Пример 2

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

(b'POIWS\xb2\xb7\xc0\x07\x00B\x00\x00\x00PP\x19dv\x00\xda\xcb\xd3\x9a\x118\x87k'
 b'\xc6U0[\x86\x93\x10\xc8\x14a\xfd\x1cu\x9eV\xde\xec\\\x8c\x0c\x8d\xc2"<'
 b'\x03\xaab\x11gh\xa1A\x10\x0fh\xcc\xb38\x18\x00\x00\x00\x1e\x00\x00\x00$\x00'
 b'\x00\x00*\x00\x00\x000\x00\x00\x006\x00\x00\x00<\x00\x00\x00\x9c\xcf'
 b'\xc2=f\x93\xb7\xbe\x02\x00\x00\x00^\x00\x00\x00\xf8m\x08\xa7\x04\xf7'
 b"\xad\x91sxf\x00\xf3\xb5\x90>\x11\xc8\xdf\x14_d\x04\x97\xbfO\xa8'\xaf\x8e"
 b'f\xa9\xef?+\x94q\xcc\x95\xcc\xccHle\xbf{\xe5A\xba\xeb\x8d\x0cIoSX\x9c\xd7'
 b'\xb6\x7f\xad\xf4\xd6?o\xc04\xbf_\x9c\xcb-\xa6\x1aFm\xb5')

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

{'A1': -18510,
 'A2': 192,
 'A3': [{'B1': 1804023825, 'B2': 21958},
        {'B1': 2475055920, 'B2': 51216},
        {'B1': 486367508, 'B2': 40565},
        {'B1': 1559027286, 'B2': 3212},
        {'B1': 1008910989, 'B2': 43523},
        {'B1': 1751585122, 'B2': 16801},
        {'B1': 3429371664, 'B2': 14515}],
 'A4': 1679380560,
 'A5': {'C1': 'sx',
        'C2': {'D1': [0.09512254595756531, -0.3585464358329773],
               'D2': 10497317905824771576},
        'C3': 0.28263816237449646,
        'C4': 10881932959168841745,
        'C5': -65,
        'C6': 79,
        'C7': {'E1': 0.9894287859726676,
               'E2': [37931, 52337, 52373],
               'E3': 18636,
               'E4': -1460782675248847508,
               'E5': [3213, 28489]},
        'C8': {'F1': 22611,
               'F2': 0.3586839434823277,
               'F3': -0.7060613036155701,
               'F4': 7874010299539102815,
               'F5': -75}},
 'A6': -1697395750}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'EQM\xf8\xee\x03\x00>\x00\x00\x00\xe9t\xe2N\x11\x819\xf5:\x15\xa8\x01\xdb'
 b"\xa1h\xb6\xdc?\xa8U\xfcL\x97'X\xeagY\x10r\xa4\x89\x1e\x86\xba?j\x02\x00D\x00"
 b'\x00\x00\xc6Ns>\x02\x00F\x00\xdb\xdd%\x04\xf7%gukaY\xea\x83oK\x8a')

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

{'A1': 61176,
 'A2': [-8741, 1061, 9719],
 'A3': [{'B1': 17670296524302742761,
         'B2': {'C1': 58, 'C2': 21},
         'B3': 0.44863334470940197},
        {'B1': 16886290333610825128,
         'B2': {'C1': 103, 'C2': 89},
         'B3': 0.1036089979210788}],
 'A4': 106,
 'A5': 'gu',
 'A6': {'D1': 0.23760518431663513, 'D2': [-363241109, -1974767741]}}

Пример 2

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

(b'EQM\n\xce\x03\x00>\x00\x00\x00\xbcX\x0f\x958\xd7\xc3\xe3\xe4\xaeJs\x95'
 b"w\xcaf\xe2?\xde\x04\x96%\xab<\x9fg\xb4\xc2\xa8\xaaJLh\xf7\xcc\xbf'"
 b'\x06\x00D\x00\x00\x00\xef\x0fO?\x02\x00J\x00L\x97/o\x11\xc6nimckwUV'
 b'\xef\xda\xbcJ&t')

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

{'A1': 52746,
 'A2': [-26804, 28463, -14831],
 'A3': [{'B1': 16412198105087170748,
         'B2': {'C1': 228, 'C2': 174},
         'B3': 0.5750477157231242},
        {'B1': 7466753412971234526,
         'B2': {'C1': 180, 'C2': 194},
         'B3': -0.22630027508906392}],
 'A4': 39,
 'A5': 'nimckw',
 'A6': {'D1': 0.8088368773460388, 'D2': [-621849003, 1948666556]}}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CUJ\x06npuju\x8a\xfb\xed\xb4\x90\xa90\xef.\xeb?v\x1a\xe9\x80\xe8\x10\x08F'
 b"\x80\xd7\xbf\xe7y\xfep\x00\x00\x00\x05\xbf\xea\xcd'\xb6\xa37\xa0\x8f"
 b"l\xbf\x88'\xc7\xbdb\xf0\x14?\x91\x96\xc4\xbe\t\xb5|=<\xab\xac\xee\x80\xee"
 b"\xe6\xbfQx!tg\xa2\xb7\xc8.\xdaQ\x1d?\xdd\x9c\xc0\x04\x00\x00\x002\x00U\xde2'"
 b'/V\xa3\xb9\xa4\xea@n\xb3\x82\xdcQ\xa1\xc5\x8d\xfaB\x00\xe0\xb0\xadY%\xd2'
 b'\xc8\xbf\x00\xa0\xa5\xb9\xc9\xcf\xcc\xbf4\xa6\x03UY\xa0\xd6\xbf')

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

{'A1': 6,
 'A2': 'npuju',
 'A3': [{'B1': -1142, 'B2': -19, 'B3': 0.8494792890965273},
        {'B1': 6774, 'B2': -23, 'B3': -0.3672041968126294}],
 'A4': 31207,
 'A5': 254,
 'A6': {'C1': -14943,
        'C2': -1395,
        'C3': {'D1': -0.716614214097127,
               'D2': -3983536780172232623,
               'D3': 13879211414793607726,
               'D4': [-0.09724336862564087,
                      0.581792950630188,
                      -0.3839612305164337,
                      0.06169608607888222],
               'D5': -5070113994967949739,
               'D6': 5898733319109012132},
        'C4': [-0.1939131439097599, -0.22509118618768298, -0.3535369234292347]},
 'A7': 4009248375364566789,
 'A8': -0.9240665435791016}

Пример 2

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

(b'CUJmlwirm\x04\xb5\xe3$c{~}\xeb\xd5\xbf\xcc\xe5q0\xfbg\x9f\x9a\xfb\xc3\xbf\\'
 b'f7h\x00\x00\x00\xe4\xdaX\x7f)\xdae&\x86N\x02\xbf\xc3r\r=\xdcLQ\xbeD\x98'
 b'\xcd\xae\xa9p\xd2\xbf\x9e\xf0\xdc\xf2=\xee\x13\xc4\x85\x0e\x05\x10\x80d'
 b'\x18\xca\x02\x00\x00\x002\x001\xd3\xf4\xe0\xc5\xd4\xbbN\x10Z\xf5\x01'
 b'>\xbc\xaa\x88w\xb2\x0fJ:\x00.\xae\xf24rR\xe8?L\xfd\x89\x84\x84.\xe7\xbf\xec#'
 b'\xb7\xf0l\x89\xe0?')

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

{'A1': 109,
 'A2': 'lwirm',
 'A3': [{'B1': -19196, 'B2': -29, 'B3': -0.34249818183666236},
        {'B1': -6708, 'B2': 113, 'B3': -0.1561158445692512}],
 'A4': 26204,
 'A5': 55,
 'A6': {'C1': -19849,
        'C2': 18959,
        'C3': {'D1': -0.2881263930379456,
               'D2': -4317845667883192162,
               'D3': 14562499896289857157,
               'D4': [0.03453327342867851, -0.20439475774765015],
               'D5': 5673362101951058737,
               'D6': 9847890509705861648},
        'C4': [0.7600642236843151, -0.7244284237530478, 0.516775579592943]},
 'A7': 2766857417854081764,
 'A8': -0.5090106725692749}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'IAGV\xfe\x1b\xd0\xab\xf8\x00\x04\x00h\x85\xfb\x00\x00\x00p\x00\x00\x00s\x00'
 b'\x00\x00v\x00\x00\x00y\x00\x00\x00|\x00\x00\x00\x7f\x00\x00\x00\x82\x00'
 b'\x00\x00\x85\xbf\xe2y\xe9\xe4\xf7\xdd`=\x8c\xf6O\x00\x04\x00\x00\x00'
 b'\x88\xf7\xf4\xf4p\xf4 \x9aD\xfd\xc2x\xdbD\xdb\xa4\x14\xfa\xda@T\xf3\xa3A'
 b'\xf7\xa9\x86\xf8\xed@\xb5\xaa=\x00\x00\x00\x98Cl\xd9\xab\xae\x89*u\x066\x80'
 b'\xa8\n\x8e8\xebG\xf7\x02\xbaE(\xad\n\x88\x13\xc3\xf7\x97\xf3\xab'
 b'k\xaa\x1d\xdd\xbf!\xe8M?\x14Sp=F\x98K\xbf|\x0e\xd8\xf9\x8d\xd7\x060\xc4XL'
 b'\xb9\xa2i\xbd\xc4\x087\xa3')

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

{'A1': 466660344,
 'A2': [-21586, -30422, 29958, 13952],
 'A3': -31237,
 'A4': {'B1': [{'C1': 168, 'C2': 2702},
               {'C1': 56, 'C2': 60231},
               {'C1': 247, 'C2': 698},
               {'C1': 69, 'C2': 10413},
               {'C1': 10, 'C2': 34835},
               {'C1': 195, 'C2': 63383},
               {'C1': 243, 'C2': 43883},
               {'C1': 170, 'C2': 7645}],
        'B2': {'D1': -0.5773820373569087, 'D2': 1032648271},
        'B3': [-0.6324508786201477,
               0.5793981552124023,
               0.048485081642866135,
               -0.9846014976501465],
        'B4': [-579569686054659516,
               -161433753483500524,
               -370913285695651337,
               -6231019336543917507],
        'B5': {'E1': -464478764961343412,
               'E2': [-71, -94],
               'E3': 1774044168,
               'E4': 14243}},
 'A5': 67,
 'A6': 27865}

Пример 2

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

(b'IAGV\xfe\xc9oQ\xc4\x00\x02\x00hX\xe4\x00\x00\x00l\x00\x00\x00o\x00'
 b'\x00\x00r\x00\x00\x00u\x00\x00\x00x\x00\x00\x00{\x00\x00\x00~\x00'
 b'\x00\x00\x81\xbf\xe2\x84\xa0\xda@\x8b\x82\x13\xde\xcd\xa6\x00'
 b'\x04\x00\x00\x00\x84\x1cOZ\xee\x06zk\x8a\x82\xe9\xea\x9a\xdc\xe1O'
 b'\x12X\x98\x18\xfa{:\xff\xb0+S\xcc\xad\xd1&\xa9\x90\x00\x00\x00\x94H\x0e\xda'
 b'=.\t&wq\x14\x11\xf0~\x0bH"R\xe2<\xe00g\xcd\xd7\x00\xa2(a\x0e\xaaC'
 b'\xbf,\x1b\x84\xbf\x07B\xa1>\xd4\xae\xc6\xbe~a\x85t\x05\xf1\xd4\x0b\x93q\xa1'
 b'\xb47\xd0\xf0x\xd0-\x17')

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

{'A1': -915451452,
 'A2': [15662, 2342],
 'A3': 22756,
 'A4': {'B1': [{'C1': 119, 'C2': 28948},
               {'C1': 17, 'C2': 61566},
               {'C1': 11, 'C2': 18466},
               {'C1': 82, 'C2': 57916},
               {'C1': 224, 'C2': 12391},
               {'C1': 205, 'C2': 55040},
               {'C1': 162, 'C2': 10337},
               {'C1': 14, 'C2': 43587}],
        'B2': {'D1': -0.5786899817215814, 'D2': 333368742},
        'B3': [-0.6722948551177979,
               -0.5283604264259338,
               0.41539591550827026,
               -0.2484188824892044],
        'B4': [2039949134579526538,
               -9013415228353720558,
               6383879935886032816,
               3122064013608266128],
        'B5': {'E1': 8360354176312766881,
               'E2': [-76, 55],
               'E3': -789546800,
               'E4': 11543}},
 'A5': 72,
 'A6': 3802}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'!HDNB?\x05\x93\xff\x8e\xc2P\xfb;Y \x9e\x9b\xf7\xfd;\x83\x05_l\x8f\x00\x00'
 b'\x00\x10\xb3\x8eg\x84\x07w\xb3Mq\x1d;RVi\xaf\x02\x00\x9c\x00f\xb3>\xc0`< '
 b'<\x14I\x13\xbe\xa4\xb2A\xbfI\xee\x931\x83\x83=\xb8z\x81\xd7q\x93-\x01'
 b'\x14\xee\xe5\xed\x11\\\xdc?\x92\x17\xa1\xc3\x12\xc7\xa28\xcc\x9d\x9d\xbe'
 b'\xab\xa4 \xc0\xd1L\xe2-\x9eT\x0c\xb8{\xbfn\xf0\x9cr\xc9\xed\xd3\xc8?\x99'
 b'\x91\x1f>9\xc2\xf9,\x02\x00\x9e\x00Fm\xb7\x19W\x8c\x12]?\xd2 \xbf\xf0'
 b'\\\x91\x95\x80\xfe\xe4?\xc1pl\xf9^zYR\x05\xf3\xe4')

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

{'A1': -337556052623817409,
 'A2': 4322883465090455867,
 'A3': 1411,
 'A4': 27743,
 'A5': {'B1': -0.6282081007957458, 'B2': 0.6560671731230325, 'B3': 193},
 'A6': {'C1': 16,
        'C2': -29005,
        'C3': 103,
        'C4': {'D1': 3010922372,
               'D2': -5807015333338451635,
               'D3': 'pl',
               'D4': 4332529227770278758,
               'D5': -0.1438334584236145},
        'C5': [{'E1': -0.7566320896148682,
                'E2': -4535,
                'E3': -109,
                'E4': -2917916151834770639,
                'E5': 19764081,
                'E6': 0.44311950905077535,
                'E7': [6034, -15455, -14574, 14498]},
               {'E1': -0.30784451961517334,
                'E2': -23381,
                'E3': 32,
                'E4': 888508946406232512,
                'E5': 1858042808,
                'E6': 0.19396755539239718,
                'E7': [-28263, 15903, -15815, 11513]}],
        'C6': [1501191929, -453835438]},
 'A7': 6706577100829584710}

Пример 2

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

(b'!HDNB\xdbA\x85~\xea6\xdd\xd9?\x8b\xa1\x9768\x81\xf05\x92\xa0\xf3\x8f\x00\x00'
 b'\x00\x03\xea\x89<\x80{\xbc\xbdd\x03\xa9O;,\xb6\x0b\x03\x00\x9c\x00b\xf7\xf9'
 b'\x1d\xc2\x1a\xa3g\xfe\ra\xbf\xf3\xb6h\xbfG\xfa;{\xfd\xf7\xbd\r;\xc2\xea'
 b'\xbeO\xa4\xae\xa8+\xfc+\x04\xe0\xd1\xbf\x16O\x86\xe9\xd3\xa9\xff(t\xaa\xf3>'
 b'Zo\xb8 \xefF\xbd%k$\x81\xabl\xba\x00\x18\xaf\xa0\x1a\xc4H\xd3?G;pf\xaf'
 b'\xc4{\xa1\x04\x00\x9f\x00r%g\xca\x11\x14\xc2\xc3\x11{8\xbf\xc0\xd8\xb2R\x83'
 b'/\x9e?\x19cgn\xefjX^\xf3{\x9a\xef\xf3\x8b\x18C\x9c;.\xea')

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

{'A1': -2747979816853224997,
 'A2': -1116549425487836353,
 'A3': 37429,
 'A4': -3168,
 'A5': {'B1': -0.7206278443336487, 'B2': 0.02947812263729399, 'B3': 25},
 'A6': {'C1': 3,
        'C2': -30230,
        'C3': 60,
        'C4': {'D1': 3183246208,
               'D2': 843910613429715812,
               'D3': 'cgn',
               'D4': 7467842028139312994,
               'D5': -0.8791197538375854},
        'C5': [{'E1': -0.9090415835380554,
                'E2': -1465,
                'E3': 59,
                'E4': -1530595993144787589,
                'E5': 2930003902,
                'E6': -0.27929786963857817,
                'E7': [20246, -5754, -22061, 10495]},
               {'E1': 0.4759098291397095,
                'E2': 28506,
                'E3': -72,
                'E4': -9141063533821759712,
                'E5': 12217515,
                'E6': 0.3013162860904557,
                'E7': [15175, 26224, -15185, -24197]}],
        'C6': [1582852847, -275088397, 1125682163, -366068836]},
 'A7': -4340885024188979854}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"\xdcWLR*i\xd6\x13\xc2'\x01\xdbT\x1b\xb4\x85}\x05\x00'\x00\x00\x00\x06"
 b'\t\x06?B\xc6\x02\x00\x00\x00f\x00\x98\x00\x00\x00zwody{\xe3_\xc4'
 b'\x91\xd3\xcb\x00\xfaQ-\xd6\x93\x9a\xeb\xbf\x89Vf.\x80T_\x04\x00,\x00-'
 b'S\xb6\xdf|\xbe\xbb@\xa0\xaf\x9d\x0c`\x91\xe3?\xe2\x89\xa9\xaf\xf6'
 b'f\xf4\x02\x00K\x00u\xa5\xb3JU\x0c\x9f\xcc\xc05\xe1\x9b4\x00\x00\x00,\xd4'
 b'q\x8a\x16>\\\xa6u\xb3\x82\xd9yH\x8dQ\xa4<~m\x9dO\x00\x00\x00\x8d'
 b'\xd8\xb4\xf2\x99m^\xe4v\xb5\x85\x8c\x93\x91\xb94U\xf3\xc3\xfedBEC\x19'
 b'\xba\x86E^\xa9\x9cNe`')

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

{'A1': {'B1': 42, 'B2': 6114482189357012585, 'B3': 2105914395, 'B4': 'zwody'},
 'A2': 0.5235751867294312,
 'A3': -14782,
 'A4': [{'C1': 11232318047821696085,
         'C2': {'D1': -0.8626193221230658,
                'D2': 22153,
                'D3': 11878,
                'D4': -128,
                'D5': 24404,
                'D6': [-7301, -15265, -11375, 203],
                'D7': 3753268013},
         'C3': 44,
         'C4': 378171860,
         'C5': 8780192655820086334},
        {'C1': 11343861835336093000,
         'C2': {'D1': 0.6114959951787462,
                'D2': -30238,
                'D3': -20567,
                'D4': -10,
                'D5': 62566,
                'D6': [-16772, 16571],
                'D7': 1253287285},
         'C3': 141,
         'C4': -1712147240,
         'C5': -7814724238964400531}],
 'A5': {'E1': 47505,
        'E2': [21812, 50163, 25854, 17730, 6467],
        'E3': 7299944297259173562,
        'E4': 96}}

Пример 2

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

(b"\xdcWLR\x19\xb30`\xa3O\xab\x149?\xa6p\x05\x04\x00'\x00\x00\x00w\xa65\xbf\xb1"
 b'v\x02\x00\x00\x00c\x00\x95\x00\x00\x00yssg\xc3\x0c\xf4\xf0\xf5\xc4`z\x1c'
 b'\xe8}$\xd2\xbf\xe4\xde\xb4\xcc\xe5dV\x03\x00+\x00\xeb\x13h\xaa'
 b'\x7f\xa0\x89\x10\x1cY\xf7\xa1K\xe1\xec?]0\xd6\x83\xd7\x8a`\x02\x00H\x00\x13'
 b'\x0cJ\x93-\xce\xb1\x1e\\\xea\xe7W1\x00\x00\x00,\x19\xf3b\x04`v\xf9\xf2'
 b'l,\x83\x9c\xde\xec[\xb3\x9f\xc1:\xd1L\x00\x00\x000\xafq\xd7\x85l`\xb9'
 b'\xcb\xcbn\xf2\xb1)\x82x\xfe\xe1\xcc\xb4\x93\xc2i\xb8\x92\xee]"\x903\x9c\x86'
 b'\x96\xf1')

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

{'A1': {'B1': 25, 'B2': 4113100718227861683, 'B3': 91268671, 'B4': 'yssg'},
 'A2': -0.7095713019371033,
 'A3': 30385,
 'A4': [{'C1': 6334289082292751917,
         'C2': {'D1': -0.28347728411782747,
                'D2': -8476,
                'D3': -13132,
                'D4': -27,
                'D5': 22116,
                'D6': [3267, -3852, -15115],
                'D7': 2858947563},
         'C3': 44,
         'C4': 73593625,
         'C5': -7168837335399172512},
        {'C1': 15076575594229263582,
         'C2': {'D1': 0.9025018847849284,
                'D2': 12381,
                'D3': -31786,
                'D4': -41,
                'D5': 24714,
                'D6': [-24449, 4233],
                'D7': 2471103507},
         'C3': 48,
         'C4': -2049478225,
         'C5': -5624311163056988052}],
 'A5': {'E1': 33321,
        'E2': [65144, 52449, 37812, 27074, 37560],
        'E3': -7600215575865696786,
        'E4': 241}}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'>SYB\xe4?\xd23I2x\x1d\x94\x00\x00\x00w\xa0(\xffP\xe6\xdb\xec\xf1e\xda\xc1'
 b"\t\xf0\xa3\x89\x03Y\x9a\x96D\xf2'\x03S0\xe0\xf5\xccg\xdc\x8d\xda\x8f\x92`"
 b'0\x1d\xa7X\x8a\x1e\x9aL0\x91\x8a\xca\xa1\x00\x00\x00\x03\x00\x8d7'
 b'\xc7+\x1a\xecU\x121k.\xde\xd0$U\x8f\x06\xefr_\xe7\xc5x1T\xeb]3b\xc2'
 b"\xd3\xa1V4%D\xca)\xd0^\xeb=\xe8B\xf8>mH\x9a2\xa7\xfa'\xa98\x8e\x83\x00"
 b'\x00\x00\x02\x00\x00\x00Q\x00\x00\x00\x02\x00o\xbf\xeew|\xfa\x98\x08'
 b'\xcc\xbf\xd6\xba\xff\x93\x87\xfa\xf0?\xaa\xec\x94Qn\xc5\x00')

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

{'A1': 228,
 'A2': 0.28438024452813093,
 'A3': {'B1': 3650161071256800899,
        'B2': [{'C1': -34,
                'C2': 53284,
                'C3': [21903, 1775, 29279, -6203, 30769, 21739]},
               {'C1': 93,
                'C2': 13154,
                'C3': [-15661, -24234, 13349, 17610, 10704, 24299]}],
        'B3': [0.11340898275375366, 0.23172226548194885]},
 'A4': {'D1': -6905989305637016335,
        'D2': [1708835081,
               -257718013,
               1503303236,
               -232324269,
               820049356,
               1742507482,
               -1886232528,
               497506442],
        'D3': 2205158739035212449,
        'D4': [-0.9520859617626001, -0.35516347319928254, 0.0525862073331016]},
 'A5': 14279,
 'A6': 3106054743146982190}

Пример 2

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

(b'>SYB!\xbf\xd3\xd7\xe8\x93\xee\xde|\x00\x00\x00w\x03\xff&\xbbzg\xa3'
 b'\x13\x9c\xa6O\xe2\xbd\x89\xbf\xbf4\xed\xfc\x9e<\xdb=\x8d?\x1f:\x9a>\x1cX'
 b'\xc8h\xb9\x10\xbf=\xbd\xbc\xd8\xaa}\x99\r\x82T\xcf#\x00\x00\x00'
 b'\x03\x00\x8d\x15\xf2\rU\x87\x1b3Y;F\x8c\x97\xbc\xc8\xe5\x96\xdf,\x84\xcf,'
 b'6\xf9\xb7\x86\x8f\xf9\xf3\x9f\xb8\xd5\x1c/\xa2\x8fY\xa1(]\xd1>'
 b'\xd5\xa2\xfe\xbd\xe2\xfe\xe9-\xca\xcbn\xfa\xe2\xc6\x81\x00\x00\x00\x02\x00'
 b'\x00\x00Q\x00\x00\x00\x02\x00o\xbf\xeb\xfe\x8a\x8d\xbcw\x18\xbf\xe8\xf0'
 b'\xc4nN4\x16?\xe2\x9bs\x91\xe53\xd6')

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

{'A1': 33,
 'A2': -0.3100530094775207,
 'A3': {'B1': 3299673354518316673,
        'B2': [{'C1': -116,
                'C2': 38844,
                'C3': [-14107, -26913, 11396, -12500, 14073, -18554]},
               {'C1': -113,
                'C2': 63987,
                'C3': [-24648, -10980, 12194, -28839, -24280, 24017]}],
        'B3': [0.417259156703949, -0.11083776503801346]},
 'A4': {'D1': 287991487829353235,
        'D2': [-1666822174,
               -1115045953,
               888011934,
               1021001101,
               1059011226,
               1042045128,
               1756958911,
               1035844824],
        'D3': -6161600431872749789,
        'D4': [-0.874821926907063, -0.7793905405429793, 0.5814760064619076]},
 'A5': 5618,
 'A6': 960822646408821574}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xf3OTF$\xd4 \xc3\x00\x03\x00%\xb6\x14\x00\x02\x00B\x00\x00\x00\x03\x00\x00'
 b'\x00FS~\xa8\xcc\x9e\xb2\xf0\xdd\x00K\x05mlg!\xa8\x9a\xee\xb3( i+\xc8\x19^'
 b'\x8d\xfa\xb7\xd9Y\x94\xcc\xe3\x8a\xb88J\x85i\x00(\x005/\xe1\xc9\x9a0@'
 b'\xe7Z$\x00\x00\x00\x02\x00I\xd4\x91)\xf6\x90\xad\x9a\x89\xfa\xc0\xc7\xa3')

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

{'A1': 617881795,
 'A2': 'mlg',
 'A3': -74,
 'A4': 20,
 'A5': {'B1': [{'C1': 564697838,
                'C2': -1289215895,
                'C3': 734533982,
                'C4': -115},
               {'C1': -88614567,
                'C2': -1798511734,
                'C3': 3090696837,
                'C4': 105}],
        'B2': [47, 225, 201],
        'B3': 6016431749002883293,
        'B4': {'D1': 1088903716,
               'D2': [154, 48],
               'D3': -3129674127079794039,
               'D4': 4206938019}},
 'A6': 5}

Пример 2

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

(b'\xf3OTF\x19H\r`\x00\x02\x00%\x15\xbd\x00\x02\x00A\x00\x00\x00\x05\x00\x00'
 b'\x00E\xb9\xb6\x94\x92F:87\x00L\x84ho{\x94\xa2i\xbeI\xde%;\x0b\x81\xc5\xf4'
 b"\xee\r\x1e\x02\x18\xf4\x9e%\x84\x92\xa3\x01w\x00'\x004\x82\xb5+"
 b'\xd2\x98\xb9\x85\xfe\xc5)L\x00\x00\x00\x02\x00Jp\xa2Q\x1d/\xea'
 b'\xfb\xce\xe0\xbf\xb4\xf8')

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

{'A1': 424152416,
 'A2': 'ho',
 'A3': 21,
 'A4': 189,
 'A5': {'B1': [{'C1': 2073338473,
                'C2': -1102455259,
                'C3': 990609861,
                'C4': -12},
               {'C1': -301130238,
                'C2': 418684453,
                'C3': 2224202497,
                'C4': 119}],
        'B2': [130, 181, 43, 210, 152],
        'B3': 13382046698742364215,
        'B4': {'D1': -20633268,
               'D2': [185, 133],
               'D3': 8116138664274885582,
               'D4': 3770660088}},
 'A6': -124}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'EJS/\r\x89o?\x89\x14\x18x\x00\x00\x00xef\xbf\xd2#\x8e\x05\x08\xb6sO\x03'
 b'\x1b\xbe+\xf3M\xbd2\xfao>Sx\x98>\xe7\xa3T?\x84\xfd(>z\x0ch?\xf8\xa4'
 b';?\xef\x1a\x11>\x99\xf8.\xbeuW.?d\x86\x81>\x9b\x11\xc7>\xb8\xa18\xbf\xbe\xde'
 b'\xb0\xbe\x00&\x19l\x82\xbe\xcc5l\xcb\x1b\xab\xf1A\xd7?\xe9HNT\xa9\xfe'
 b'\xe6\xe2[t~<\xabZ\xe1C*\x92\x02\x00\x1e\x00\xa2*lr\x08\x04\x00&\x00]\x00\xc4'
 b'\xcfF\x04\x006\x00!\xf7\x12\xb4\xa4\x04\x00F\x00*\xf5\xf2Z\xc6\xbbY-?V\x00j$'
 b'M\xd7kU\t~\xba]\x1d ')

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

{'A1': 1735162661991681327,
 'A2': {'B1': [{'C1': [-0.05028073117136955, 0.23435285687446594],
                'C2': 1919691426,
                'C3': 8},
               {'C1': [0.2977930009365082,
                       0.8306259512901306,
                       0.1650295853614807,
                       0.9064403772354126],
                'C2': 3485728861,
                'C3': 70},
               {'C1': [0.7329859733581543,
                       0.14170430600643158,
                       -0.17087019979953766,
                       0.6810219883918762],
                'C2': 3021141793,
                'C3': 164},
               {'C1': [0.25297844409942627,
                       0.38880619406700134,
                       -0.7212176322937012,
                       -0.34544938802719116],
                'C2': 1525871914,
                'C3': 198}],
        'B2': 0.6771504282951355,
        'B3': {'D1': 3876682846627767808,
               'D2': 0.36339990339108996,
               'D3': 18665,
               'D4': 8384544613023175758,
               'D5': -7914438759982351234},
        'B4': -682810262,
        'B5': 2314108839098144107},
 'A3': 'xef',
 'A4': [53951, 36387],
 'A5': 13698546331356104709}

Пример 2

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

(b'EJSf\x15(\x033~\x81\xab|\x00\x00\x00qxi\xe4L\xec)\xcc\xca\xb9Q\xfe)'
 b'\xc5\xe8\xa0vM\xbe\xd7|]\xbf\r=8\xbf\xca\n\x0f?\xb8CQ\xbf@$E\xbf\xad\xda'
 b'\xb8=\xfal1\xbe\xb5\xe6>\xbf\xe1V \xbf\x0c|d\xbf\xe3KE\xbe\xd5\xa9'
 b'\xd0\xbd\xc6bQ?y\x97R\xbf\x9f\xd5\n\x9f\xd02\xd7\r\x18K\xd8\xfe\x169'
 b'\xcb\xbf8\xec\xf6\x9f\xecqO\xe1F\xe94\xe1\xd7d\x11\xe7\x04\x8c'
 b'\x04\x00\x1e\x00\x9d\x1c\xc2O\xad\x04\x00.\x00\x97z\xde\xa5\x7f\x04\x00'
 b'>\x00\xa0\xc2w\xad\xff\x03\x00N\x00/\x14F}\xd6\x02\xad\xd2\xbeZ\x00D\xe5'
 b'\xff\x9d\x96\x8crd\xb7\xa7\x8b\x8c')

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

{'A1': -6088446463666809498,
 'A2': {'B1': [{'C1': [-0.20064783096313477,
                       -0.8651861548423767,
                       -0.7196815609931946,
                       0.5587583780288696],
                'C2': 1338121373,
                'C3': 173},
               {'C1': [-0.8174395561218262,
                       -0.7700843811035156,
                       0.09026084095239639,
                       -0.17326727509498596],
                'C2': 2782821015,
                'C3': 127},
               {'C1': [-0.7457078099250793,
                       -0.6263256669044495,
                       -0.8925178050994873,
                       -0.19267229735851288],
                'C2': 2910306976,
                'C3': 255},
               {'C1': [-0.10188642889261246,
                       0.8179134130477905,
                       -0.8226237893104553],
                'C2': 2101744687,
                'C3': 214}],
        'B2': -0.411476194858551,
        'B3': {'D1': 997321714088727967,
               'D2': -0.21267974322889738,
               'D3': 60472,
               'D4': -1637373683172597770,
               'D5': -8357300946600468172},
        'B4': -1644174012,
        'B5': 10127372593178774678},
 'A3': 'qxi',
 'A4': [19684, 10732],
 'A5': 16772858559480842956}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'AQR\xa3\x00\x05\x00\x00\x00,\x001\x00\x02\x00=\x00\x00\x00\x03\x00Q\x00\x02'
 b'\x00\x00\x00T\x00\x04\x00\x00\x00X\x93\xd5hd\r\xc0R\x0b\t\xbayzjgzxX\xad'
 b'_\xa8#\x00\xf4\xeet/\xdek\x0b\xcc\xcb\x89\x1d\xa3\xd0\xc9\xff\xacp\x02(o'
 b'\x91\xa5&u\x16qev\xb5\x89\xba{F\xadA4\x104?c<(\xc5t\x05\xe4V\xb5')

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

{'A1': 'yzjgz',
 'A2': {'B1': 2019077471, 'B2': 12115528474529378270},
 'A3': [{'C1': 1795935435, 'C2': 137, 'C3': 29, 'C4': -1546597889},
        {'C1': -1401945560, 'C2': 111, 'C3': 145, 'C4': -1524206314}],
 'A4': 'qev',
 'A5': [-19063, -17797],
 'A6': {'D1': [1185759540, 271859555, 1009304948, 98850485], 'D2': 37845},
 'A7': 7522152397276907962}

Пример 2

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

(b'AQR\xa3\x00\x04\x00\x00\x00,\x000\x00\x02\x00<\x00\x00\x00\x04\x00P\x00\x02'
 b'\x00\x00\x00T\x00\x02\x00\x00\x00Xb\x1d\xbe[\xb8\xabu\xcdV\x1bbgkq\xa3\xbc"n'
 b'M\xb9\x18>\xb4\xbf\x9f\x99\xc4\xbes\xf5\xf7H3\x11\x82\x05\x934\xd9\xe3.\xf5'
 b'\x92\xe6\xe2&fnyx\xe5\x86\xeeL\xb0~\xc0\xa1\xc8\xcc\r\xb7')

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

{'A1': 'bgkq',
 'A2': {'B1': -1547951506, 'B2': 5600534269211418521},
 'A3': [{'C1': -994151435, 'C2': 247, 'C3': 72, 'C4': 856785413},
        {'C1': -1825252893, 'C2': 46, 'C3': 245, 'C4': -1830362586}],
 'A4': 'fnyx',
 'A5': [-6778, -4532],
 'A6': {'D1': [-1333870431, -926151241], 'D2': 25117},
 'A7': 13716760136642287131}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'TTDF\xbac\xa5A\x02\x00\x93\x00\x02\x00\x00\x00\x97\x00W\x7f\xf0Q#\xbf'
 b'\x03\x00\x00\x00\x9b\x00\x00\x00<\xf0\xfb\xbe\xbba\xc14%\xf8\x9b\xef'
 b'db\xe3\xb5<\r\x7f\xd2\x9ah\x94-\xfd\xca\x02\x00,\x00\x00\x00\x03\x00\x00\x00'
 b'.\x00\x00\x00\xb1X\xd3 N\x01\x97\xf9~\xd5T\xaf\xf1\xdd_\x9eVr\xc0\xa4'
 b'\x1d\xd4boihi\xae\xf4"\xbd\'\x16_\x8cG\x18\xbaI\x05\x00^\x00\x00'
 b'\x00\x03\x00\x00\x00c\x00\x00\x00ED\xff\xe8\x9b\x89\xda"\n\xfc\x9c'
 b'\x98\xb5\xc7Gh\xd6}ys\xd55:\x00o\x00\xe3\x97g\x9c\x16\xdd5g\xc7\xf5')

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

{'A1': 1101358010,
 'A2': [{'B1': 'db',
         'B2': {'C1': [222082531, 1754976895, -889377388],
                'C2': 550721713,
                'C3': 4187423054},
         'B3': {'D1': 2941572478, 'D2': 56817, 'D3': 15284553856824286815}},
        {'B1': 'boihi',
         'B2': {'C1': [-1121782610, -1939925465, 1236932679],
                'C2': -385924027,
                'C3': 584747419},
         'B3': {'D1': 2560424970, 'D2': 51125, 'D3': 3879133619688990791}}],
 'A3': [38883, 40039],
 'A4': 32599,
 'A5': {'E1': -0.6379690170288086,
        'E2': [-8938, 26421, -2617],
        'E3': -0.49206721782684326},
 'A6': 25019,
 'A7': 4163187905,
 'A8': -4197}

Пример 2

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

(b'TTDF\x1cn\x9e\xdf\x02\x00\x94\x00\x04\x00\x00\x00\x98\x00\xa1\x96'
 b'z\xee\xe0\xbe\x06\x00\x00\x00\xa0\x00\x00\x00\x00\x84\x1b?BB5\x08'
 b'\x0e\xe1\x9f\x15knnx\x10\xd8S9y}\xb0(\xb27\xce\xf7\xb5\xaa\x11k\x04\x00,\x00'
 b'\x00\x00\x04\x00\x00\x000\x00\x00\x00J\xc4(\xbe\x13\x19\xc7x\x8f\x9a'
 b'\x1b5\xf1\x9d\x98\x8d,\xe1\xec\x89K\xabgwaf\xce:)\xc1^\xbf\x0c\x16'
 b'\x04\x00d\x00\x00\x00\x02\x00\x00\x00h\x00\x00\x00;n\xfc\xac\x18/'
 b'\xdb\xc0w\x04\xdb\x04P\xf1~\x82\xc8\xd1\xb6\xcc\xfd\xde@\x00p\x00\xa8{\xf5/'
 b'\xfd\xe3\xc3Z#f5[\xb7\x89\xbek\xd0\xfc\xa0\xd0')

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

{'A1': 3751702044,
 'A2': [{'B1': 'knnx',
         'B2': {'C1': [961796112, 682655097, -137480270, 1796319925],
                'C2': -1104624566,
                'C3': 2026314003},
         'B3': {'D1': 891001487, 'D2': 40433, 'D3': 12343110854222056856}},
        {'B1': 'gwaf',
         'B2': {'C1': [-1054262578, 369934174],
                'C2': -1392742853,
                'C3': 3235589912},
         'B3': {'D1': 81462391, 'D2': 61776, 'D3': 16068224131103490686}}],
 'A3': [31656, 12277, 58365, 23235],
 'A4': -26975,
 'A5': {'E1': -0.4393194317817688,
        'E2': [26147, 23349, -30281, 27582, -816, -12128],
        'E3': 0.60748291015625},
 'A6': 16962,
 'A7': 3775793205,
 'A8': 5535}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xa0JDE\xcc\xfa\x9b2\xc0\x91\xaa\x83\\\xd0\x90\x0cl\xc8\x1f\xc3\xaf\xe8\x9aq'
 b'\xd5\xc3j\x06A\\\x88a\xea4\x0c\xe6B\x93\x95pM\x93\x8f,\x1e\x8f\xceb'
 b'\xd8D\x18\x08j\x00\x00\x00,\x0f\xd1]\xea#\xd9?\xde\x96\xf92|t_\xf1'
 b'\xd6\xb3\xb6\xcfw\xaa\xeb\xbf\xc0_\xde\x83\xfa\x12\xa3\xbf~\x17\x1d\xd1'
 b'H\xc9\xe7?\x04\x00\x00\x00t\x00|\x00\x00\x00x[\x82\xb3\x94\x19\xdb?\x01\x97'
 b'obpp\x88F\x07\x81\xb8\xad"u\xc7\xf0\xd9?r\xa21i\xc6\x82=u\x02\x00\x00\x00'
 b'x\x00')

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

{'A1': [{'B1': 849083084, 'B2': 37312, 'B3': 3495723946, 'B4': -932442992},
        {'B1': -391134433, 'B2': 29082, 'B3': 107660245, 'B4': 1636326465}],
 'A2': [3859559658, 1888850754, 747606861, 1657704222, 135808216],
 'A3': {'C1': 0.423436332036935, 'C2': -26879},
 'A4': {'D1': 0.3928171077898124, 'D2': -1053995711001422114},
 'A5': {'E1': -0.8645590836437076, 'E2': -0.03725417003369058},
 'A6': 0.7433208545923973,
 'A7': 'obpp',
 'A8': {'F1': 0.4053209918881424,
        'F2': 8448052264696914546,
        'F3': [18056, -32505]}}

Пример 2

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

(b'\xa0JDE\xa7\xab\xaa\x1f{\xf8\xd3\xf1\x8eb\x99%j\x17\x81\x05\x82 \xc9\xd7'
 b'\xaeF\x9b\x9e\xc7J\xe9\x1c\xef\x94\xea8y\x8b\xf3\x80\x11\xa5rF'
 b'\x11\xd7\xfd\x9a8\xeb\xf8\xc9j\x00\x00\x00ttp.\x95\x1a\xec\xbf\xddc\x15\x92'
 b'k\xba4\xe5\xa0\x0cK\xc5\xf7\x8f\xc4?\xc0\xb3\xe4=\x1f\xe7\xc4? \x8c\xa2v'
 b'$m\xca?\x04\x00\x00\x00t\x00\x84\x00\x00\x004\xb4\xca\xf9\x8cB\xed\xbf\xc1b'
 b'inqe\x82W\x19NK2:\x1dL\xb0\xcf\xf8\x04\xb4\xb5@\xd1\xa3\xe8\xbf\x94W\x7f\xa1'
 b'~\xfc\xbf\x06\x06\x00\x00\x00x\x00')

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

{'A1': [{'B1': 531278759, 'B2': 63611, 'B3': 1653535187, 'B4': 392832409},
        {'B1': 545392001, 'B2': 55241, 'B3': 2660976302, 'B4': 485051079}],
 'A2': [954897647, 2163444601, 1181918481, 2600326929, 3388533560],
 'A3': {'C1': -0.9143738631006557, 'C2': 25281},
 'A4': {'D1': -0.8782449633614662, 'D2': -1930713369059957795},
 'A5': {'E1': 0.16064355023818155, 'E2': 0.16330328485619638},
 'A6': 0.20645576279375266,
 'A7': 'inqe',
 'A8': {'F1': -0.7699972404349187,
        'F2': 486384905584859028,
        'F3': [22402, 19993, 12875, 7482, -20404, -1841]}}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'DTUA\xc5\x86I\xab\xa5\xa7}\x9dl\xa4r\xc8\x00\x00\x00\x80\x00\x00\x00\xb5'
 b'\xc3yskh\xb3\xbc\x03\xf8\x93\xa8\xaa)\x08\xb3\xd9\\\x88R\x8ebc;/'
 b'\x14\xb1\x07\xe2M\xb3k\xc6\xea\x06\xfd\x85c\xd0\x81Ig\xeb\x83Zy\xee\x1e\xa8'
 b"\x00\x00\x00\x1c\x00\x00\x00'\x00\x00\x002\x00\x00\x00=\xbf\xe8GW"
 b'\xc9\xc2\xd1.?\xea.\x95e\xee\xc5\x80\xbf\xe1\xfd@G\n\xab`\xbf\xe8\x8e\xa3'
 b'\x01\x85  ?\xc5O\x15h\xed\x0e8\x95\x9a\xc3\xd6\xc3\xf6FU\x00\x03\x00\x19'
 b'\xb8 \x83\x0c\x00\x00\x00\x04\x00H\x16J\x1c\xf0\x00\x05\x00\x00\x00X'
 b'8\x00\x9e\xcf8\xbe\x87jr%C.E\xb7"\x82Y\xa0\xde\xc7\xfb\x97q\xdc\xceV?\x1agL')

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

{'A1': -4213599399791067747,
 'A2': 1822716616,
 'A3': {'B1': -7666600088466733483,
        'B2': 'ysk',
        'B3': -1205828852,
        'B4': [{'C1': 7544580526017063082, 'C2': 10504, 'C3': 179},
               {'C1': 15662543492245250875, 'C2': 12052, 'C3': 177},
               {'C1': 568101936004786694, 'C2': 64901, 'C3': 99},
               {'C1': 15024370542566398585, 'C2': 60958, 'C3': 168}],
        'B5': 373955824,
        'B6': [-0.7587088528294197,
               0.8181864729760235,
               -0.5621644389660609,
               -0.7674117116630477,
               0.16647594092693097],
        'B7': [939564751, 952010602, 1915044654, 1169629826],
        'B8': {'D1': 1503715015, 'D2': -5}},
 'A4': {'E1': 151, 'E2': 1910296150, 'E3': 0.6031386852264404},
 'A5': 195}

Пример 2

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

(b'DTUA\xbd;y\x1c\xa8\xb7\x06L\x99\xde\x93\xb1\x00\x00\x00Y\x00\x00\x00\x8e'
 b'\xa6ct\xe3.Zvn\x16\xabo\xfbq\xe6<@\x11\xde.q\xf0\xe3\x07\x182\x00\x00\x00'
 b'\x1b\x00\x00\x00&\xbf\xad\xe8"\xb1|\x03`?\xe0]\x17r3\x9c@\xbf\xe6:Kd\xe7r'
 b',\xbf\xef\xdb\x8f\x87\xe13\xae0Iy\x99\xf6\xa2B4\x00\x02\x00\x19\x88ct'
 b'u\x00\x00\x00\x02\x001\xfaz\xbc\xd8\x00\x04\x00\x00\x009v\xb9M\xb7HY\xd1'
 b'e\x0b\xf6\xa1\x0b\xb1\x11\xbe\x81O\x05\x86\x8dx\xb8\xf8cCy\xbfZ\x95\x80')

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

{'A1': -4811118612918630836,
 'A2': -1713466447,
 'A3': {'B1': 3479445889295204916,
        'B2': 'ct',
        'B3': -2006748043,
        'B4': [{'C1': 16370121160237951855, 'C2': 64369, 'C3': 230},
               {'C1': 4341489686744789219, 'C2': 1816, 'C3': 50}],
        'B5': -92619560,
        'B6': [-0.05841167847211781,
               0.5113637190342004,
               -0.6946160288603713,
               -0.9955518392467775],
        'B7': [1991855543, 1213845861, 200712459, -1324237183],
        'B8': {'D1': 1325762189, 'D2': 120}},
 'A4': {'E1': 184, 'E2': -127712391, 'E3': -0.8538436889648438},
 'A5': 166}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KBK\xffG\xe0\xb6\xdawtpydbzfP"?^\xc3\x96\x04\x00\x05\x00\x00\x00}_\xc9\xa4'
 b'1\xe9l\xd8F\x95\xe39\xd8\x03\xe9X>\x1c\x9enV@\xbe\xbdPJ\xfa\xd7'
 b'\x9f\x0e\xf3\xd4=\xbb\x00\x00\x00\x03\x00\x87u\xd6K\x00\x02\x00\x9f\xc7'
 b'x\xb7\xa9">\xf7@\\"\xa1;x\xb1Q\xba\xfd\x95\x85\xb8\xfa\xe3L\x17\x86'
 b'\xecn\x0f\x9df\x0c=\xc9\xd2\xbc\xb81\x9d\x8e/\xd1\xe3u\xfd\x99"\x10[\xc3'
 b'\x96\x00K\x00U\x00_\x00i\x00s\x02%\x83p\xb4\xa6z\n@\x8f!\x89\xdd2\nd\xb4'
 b'\x9av\x9f8\xe2\xf6\xacP\xe7')

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

{'A1': 1205909210,
 'A2': 'wtpydbzf',
 'A3': 80,
 'A4': 34,
 'A5': {'B1': 0.8701719045639038,
        'B2': 4,
        'B3': [{'C1': 14373440147804845888, 'C2': 92, 'C3': 34},
               {'C1': 11618012366708080021, 'C2': -123, 'C3': -72},
               {'C1': 18078376993126903311, 'C2': -99, 'C3': 102},
               {'C1': 882083008980988317, 'C2': -114, 'C3': 47},
               {'C1': 15124061705696579675, 'C2': -61, 'C3': -106}],
        'B4': 95,
        'B5': {'D1': [-911986199,
                      1826113173,
                      -482748413,
                      -380092900,
                      -1636936128,
                      -1094889398,
                      -86532338,
                      -204194373],
               'D2': [154674282304535050,
                      4651973816102292068,
                      13013844499466745516],
               'D3': 117},
        'B6': -10677,
        'B7': [80, 231]}}

Пример 2

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

(b'KBK\xff_\x87\xad\x07uoomenza\xd6\x04\xbd\xd0B\xfdg\x00\x06\x00\x00\x00'
 b'\x87x\x87\x8f\xbf\x98\x12\xeff\x92(\xb3\xd5\x061\xf6\xf7\x8d\x8a\x0b~(o\x97'
 b'\xb8\x97E\xfb\xb0HQ\x0e\xfa\x80\x00\x00\x00\x03\x00\x93\x08\x8e\xd2\x00'
 b'\x03\x00\xab\xfbEu%.\xa1u\x05H\xa6\xb7\xf6\xc1\xf9g%&\xa9\xbd\xf19{i3\xc7'
 b'$9r\xd2#]\x95\xdbU/\x8dD|\x14\x12\x9e{?\xb1/\xa2\xcbB\x08\xdd\xb5\xe0Z'
 b'\xa0\xb08\x0e\xa7\xb8\x96\x00K\x00U\x00_\x00i\x00s\x00}:\xf9\x07\x05\x81'
 b'\xcc\x88\xaek\x1e\xe3r\x01]\xa0\t\xc6\x14d\x1c\xae\xc8\x0c\xe1\xf7|+')

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

{'A1': 1602727175,
 'A2': 'uoomenza',
 'A3': 214,
 'A4': 4,
 'A5': {'B1': -0.10169027000665665,
        'B2': 103,
        'B3': [{'C1': 18106006679469520133, 'C2': 72, 'C3': -90},
               {'C1': 13255995830133139113, 'C2': -67, 'C3': -15},
               {'C1': 4142019953402591602, 'C2': -46, 'C3': 35},
               {'C1': 6743537175973676156, 'C2': 20, 'C3': 18},
               {'C1': 11419791310368983874, 'C2': 8, 'C3': -35},
               {'C1': 13105574561845874343, 'C2': -72, 'C3': -106}],
        'B4': 120,
        'B5': {'D1': [-2020622440,
                      317679250,
                      682874118,
                      838268813,
                      -1978958296,
                      1872214167,
                      1174122568,
                      1359936128],
               'D2': [4249435443634669742,
                      7718856890148298761,
                      14273143193398152417],
               'D3': 8},
        'B6': -28974,
        'B7': [247, 124, 43]}}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x1fBOMY\n\xe4\x1b?\xea\xb2\xc60X\xa78{\x8f\xc4\xea?S\xcf\xc2%\x9f\xc3['
 b'\t\x7f\xae\x1d\xa17\xcf\x08\xe3?\x97\x7f\x95\xda[\x18\xafRO\x82TS\x91\xee'
 b'\xd7\xeb\xbf\xe2\xb1/;\x81\xb8\xc0\x87\xdc\x08c\xd2)\xbd\n\xee\xbf'
 b'\x1f\xcd\xc4\xc4+\x84\xcf,\x9b\xe4H\xdcF\x8f\x0c\xec?\xa3\xecx\nP\x96\xc2'
 b'\x92\xd4\xc4g\x81\xc0 T\x158}.\xd0\x1b\xcf\x13\x90\x04\xfbO\x03\x00\x92\x00'
 b'\x00\x00tW2\x93\x83\xb3\xdf\xbf\x02\x00\x00\x00\x98\x00\x00\x00\x00\xff'
 b'\xd3{\xfe\xfcZ\xbb\x89\xfbp,\xd7\xcb\x9fk')

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

{'A1': {'B1': {'C1': 0.6089483499526978,
               'C2': 818328298,
               'C3': [{'D1': 0.8364941984811862,
                       'D2': 83,
                       'D3': 9153948613354046159},
                      {'D1': 0.594825371409504,
                       'D2': -105,
                       'D3': 5715823396241708415},
                      {'D1': -0.8701088751210053,
                       'D2': -30,
                       'D3': -2555862364834811983},
                      {'D1': -0.9388109032471172,
                       'D2': 31,
                       'D3': -7265203932278504243},
                      {'D1': 0.8765331634515658,
                       'D2': -93,
                       'D3': -3129224840225326868}],
               'C4': -1065261116},
        'B2': {'E1': 2004152949526582304, 'E2': [5071, 1168, 20475]},
        'B3': [64393, 11376, 52183],
        'B4': -0.4953316628901725,
        'B5': [-97, 107],
        'B6': 0},
 'A2': -1,
 'A3': 31699,
 'A4': [-2, -4, 90, -69]}

Пример 2

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

(b"\x1fBOMYlc:\xbf\xb2\x0c\x1d\xcb\xe0\xd0\xa10\xb1'\xb0?\xf8\xa8\x9d"
 b'\xfac\x13\x95\xfdS\x90O\xc1\xc0S\x0c\xd7\xbfkRv\x0f\xea)\x85\x1d\xe4\x04'
 b'\x814\x7f\x17\x03\xd7\xbf\x1e\xed&$\xa3\xe8x\x1bNf\x0bX\xf1\x0b\r\xe7\xbf'
 b'\xdf9E\n\x14\xba\x07\xae? 89\xd3M\t\xc6\xbf$\xadJ\xb1|\x11\x1eu\xf0\x00\xbc'
 b'\xfb\xb5\xbfk5\xcf\x04\x12&>\xea9/=\x05\x1d\x02\x00\x92\x00\x00\x00&\x05'
 b'a)j\xc4\xe8\xbf\x02\x00\x00\x00\x96\x00\x00\x00B\xd7r\xc5\xdb4\x89H{\xe6'
 b'\xd6\xc2\xb48')

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

{'A1': {'B1': {'C1': -0.7280795574188232,
               'C2': 3407678642,
               'C3': [{'D1': 0.06310565411860436,
                       'D2': -8,
                       'D3': 6052157384770100648},
                      {'D1': -0.3601273901342603,
                       'D2': 107,
                       'D3': -2009303443670337966},
                      {'D1': -0.35956370756504463,
                       'D2': 30,
                       'D3': 5628225099894367981},
                      {'D1': -0.7203426088093294,
                       'D2': -33,
                       'D3': 4588613566118643001},
                      {'D1': -0.17215893567703322,
                       'D2': 36,
                       'D3': -1119955871876429139}],
               'C4': -1241793536},
        'B2': {'E1': 4478286691332090815, 'E2': [14826, 15663, 7429]},
        'B3': [59003, 49878],
        'B4': -0.7739764030631349,
        'B5': [-76, 56],
        'B6': 66},
 'A2': -41,
 'A3': -14990,
 'A4': [-37, 52, -119, 72]}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'\xe3TJGVG\x00\x00\x00Z\x8a\xd2\r}.\x17\xb4O\x00\x00\x00\x84k\xf4\r*y\xd3'
 b'?m\x00\xf4\xa7\x11\xf1=\x1f\\\x91\xcd\x9c\xd7\x1a\xb3\x17\xd0\x02\x1b'
 b'\x96\x02\x00\x9f\x00\x8eV\xf9;\xb5\xd7T\xaa\xddy\x9d\x05\x02\x00\xa3'
 b'\x00\x00\x00\xc1\x92\x86\xe9a(\xfa*\xd2\xafA\xfb\x0f\x9c\xfa\x1b.'
 b'\x99h\x9d\xa7\xe88Xp@x\xbf\xca\xbf\x03\x00\x00\x00I\x00\x00\x00(\xb9\x7f'
 b'\xc6\xc6\xcb\x02b%\x9a.\x00}?\x19\xce\x0c\xbf\x90\xc1\x1b\xec\xad'
 b'\xfb\xee\xbfZ17\xfe\x11\xd9Z\x0c\xf9\x19?\xbb^m\xbf\x94\xecZ\xce\x19\x1d'
 b'\xe4?sq\x00\x88\x002}')

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

{'A1': {'B1': -63, 'B2': 146},
 'A2': 12976891965929065050,
 'A3': {'C1': -79581230,
        'C2': -7104259988860003313,
        'C3': 167,
        'C4': 232,
        'C5': -0.20896819254329713,
        'C6': [59782, 10337, 11002]},
 'A4': {'D1': 0.30427028048296045,
        'D2': {'E1': [40, -71, 127], 'E2': -58},
        'D3': -250501132,
        'D4': 61,
        'D5': 31,
        'D6': -28324,
        'D7': -51},
 'A5': 1946346789185181596,
 'A6': 150,
 'A7': [{'F1': 1644350406,
         'F2': 39461,
         'F3': 0.9882839918136597,
         'F4': -0.5500198006629944,
         'F5': -0.9682225810520766,
         'F6': 90},
        {'F1': 301872945,
         'F2': 23257,
         'F3': 0.6014564037322998,
         'F4': -0.927226722240448,
         'F5': 0.628552344357916,
         'F6': 115}],
 'A8': {'G1': 0.007609195075929165, 'G2': 404613534485632949, 'G3': [50, 125]}}

Пример 2

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

(b'\xe3TJGVG\x00\x00\x00\x1f\xec\r%YOX\x1fM\x00\x00\x00@\xe2i\x1a\xc6[\xc2'
 b'\xbfk\x00\x9f\x93PH\x88p\xf1\xaf\xc7\x81\x04Sz\xa9}\xe8\xff\x91\x03\x00\xb4'
 b'\x00\xdeb\xa7>\xbcyk\xb4G\xf4L\xb1\x06\x00\xba\x00\x00\x00\x96'
 b'\xfd\x05\xac\xce\xc3\xcd\nT\xbc!xq[\x84y\xb5\xbf\x86\xce\xd8!V\xa8i'
 b'=\xe3\xbf\x02\x00\x00\x00I\x00\x00\x008\x81L\x05*\xa9\xdb\xe6\xfc'
 b'\xa6\x02\xe0f?\xb7\t\x0e?\xe0\xa0\xcc] \xf7\xd0?\xdb\xfe\x83\x0e np'
 b'\xf5r\xb2>\x92\xe6\xcd>\xec\xba\x92\x19%\xf0\xe6?\x03\xe9\xdc_QG\xdc{'
 b'\xea\xf0\xbe2\x97\xbf\xbe 8\xc1f\x8db\xe7?\x1fo\x00\x86\x00\x9d\x003\x93'
 b'\x97\x8d\xdd\xf9')

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

{'A1': {'B1': -106, 'B2': 253},
 'A2': 2258642457418656799,
 'A3': {'C1': -1135342899,
        'C2': -4632663032303880159,
        'C3': 134,
        'C4': 206,
        'C5': -0.6012466705151907,
        'C6': [44037, 50126]},
 'A4': {'D1': -0.14342571534850102,
        'D2': {'E1': [56, -127, 76], 'E2': 5},
        'D3': 1213240223,
        'D4': -120,
        'D5': 112,
        'D6': -20495,
        'D7': -57},
 'A5': 18440126841123701889,
 'A6': 145,
 'A7': [{'F1': 3873155370,
         'F2': 42748,
         'F3': 0.9018555879592896,
         'F4': 0.5548357367515564,
         'F5': 0.26508340034571454,
         'F6': -37},
        {'F1': 537822206,
         'F2': 28782,
         'F3': 0.3485333025455475,
         'F4': 0.4021497368812561,
         'F5': 0.7168145656085847,
         'F6': 3},
        {'F1': 1365236969,
         'F2': 56391,
         'F3': -0.4705389440059662,
         'F4': -0.37420040369033813,
         'F5': 0.7307803160599669,
         'F6': 31}],
 'A8': {'G1': 0.32692617177963257,
        'G2': -5670889241959499332,
        'G3': [51, 147, 151, 141, 221, 249]}}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'\xa6HWR\x00I\\;\x03\xb1aice\xb2SH\xe5\xf7\xa8\xd3\x9e\xff\x1fU\x04\x00\x00'
 b'\x00V\x00b\x00mI\xbf\xe4\x9cx\x0e\xc6\xcfN\xc2\xbf\xe0q\xcb\xfa\xf7\xd6|'
 b'\x99?\xa1\xb5\x81\xd5\xcb\xe9`\x00\x00\x00"\x00\x00\x00+\x00\x00\x00'
 b'4\xa1\x00\x00\x00\x03\x00\x00\x00=DJ \xfc\x1f\x00\xcfl\xb3\xc4\x15\xab\xcfB'
 b'\x82~\xfc\xdfKj\xbf\x1d_z\xec\x18\xcd\xbf\xe0\x06\x1c\xeb\x9e\xaev\x9e%')

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

{'A1': {'B1': {'C1': 161,
               'C2': [{'D1': 73, 'D2': -0.644100216732548},
                      {'D1': 194, 'D2': -0.5138912107201601},
                      {'D1': 153, 'D2': 0.03458791479893608}],
               'C3': 1145708796},
        'B2': 1547371441,
        'B3': 'aice',
        'B4': -19885,
        'B5': 18661,
        'B6': [4155036574, 4280243460]},
 'A2': {'E1': 520146796, 'E2': [-1278995029, -817724802]},
 'A3': {'F1': -225378534500245638, 'F2': 60440, 'F3': -51},
 'A4': {'G1': -0.5007462121915995, 'G2': 40485}}

Пример 2

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

(b'\xa6HWR\x00<Ea\xed5atoh\x1c\xef\xd3\xd2Oh\xeb\x0f\xbd\xc2F\xe4\x00\x00'
 b'\x00I\x00U\x00`\xa0\xbf\xd0\xd2C\xfc~\x07\xf8E?\xeb\xa4\xd4M\x90JD'
 b'\x00\x00\x00"\x00\x00\x00+_\x00\x00\x00\x02\x00\x00\x004w\rnj\xa3f\x04'
 b'\xd7\xdb\xf2;^J\xc1p\xf3\xce\xe5\x17\xee\n\xdcR\xf8\xd1\x11\xed?\xee\xad\x8f'
 b'\xf2\x99\xcc\xd2\x04N')

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

{'A1': {'B1': {'C1': 95,
               'C2': [{'D1': 160, 'D2': -0.2628335920090872},
                      {'D1': 69, 'D2': 0.8638707652010642}],
               'C3': 1997368938},
        'B2': 1164045621,
        'B3': 'atoh',
        'B4': 7407,
        'B5': 54226,
        'B6': [1332275983, 3183625956]},
 'A2': {'E1': -1553595177, 'E2': [-604882082, 1254191347]},
 'A3': {'F1': -3538395621077789960, 'F2': 53521, 'F3': -19},
 'A4': {'G1': 0.958686803655292, 'G2': 1102}}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'$LFE\nB\xba5\x00\x02\x00\x00\x00d\x9f\xe3\xa4#\x00\x04\x00\x00\x00f\\#\xf3*'
 b'\x00\x04\x00\x00\x00j\r-\x9cf\x00\x03\x00\x00\x00nK\x83\xf7\xcf'
 b'\x00\x05\x00\x00\x00q?Vw\x1f?\xe3YP\x00pD\xfe\xb8Y\xd3\x9d\xfb\xbf'
 b'\xf5\x84\xbf\xdc\xac\xda\xf0\x99\xad\x9cf\x84\x00v\x00\x03\x00\x82\xbf\xe2'
 b'\xd2\x98\x9c\x18\x99F\xef\x14kjsvkfyfvfagrciqco\xc6\xaaoc\xad\x03'
 b'\xc1\xd2\x16vl\xd1\xbf]\x8a\x8a\xbfG[\xb3>\x0c\xc2_')

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

{'A1': [{'B1': 172145205, 'B2': 'kj'},
        {'B1': -1612471261, 'B2': 'svkf'},
        {'B1': 1545859882, 'B2': 'yfvf'},
        {'B1': 221092966, 'B2': 'agr'},
        {'B1': 1266939855, 'B2': 'ciqco'}],
 'A2': 0.8377551436424255,
 'A3': {'C1': 0.6046524056020244,
        'C2': [-1202072675, -71305852],
        'C3': -0.44805024620173994,
        'C4': 102},
 'A4': -124,
 'A5': {'D1': 3333058403, 'D2': 12467021301555817681},
 'A6': [-0.865395188331604, -0.7787429690361023, 0.13746021687984467],
 'A7': -0.5882075356246694,
 'A8': -4332}

Пример 2

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

(b'$LFEn\xd5s\x93\x00\x03\x00\x00\x00d\xd5\xdc\xf0+\x00\x03\x00\x00\x00g'
 b'\x96\xb0[M\x00\x04\x00\x00\x00j\xb4A\xd0\xaf\x00\x02\x00\x00\x00n\x1eG\xeb1'
 b'\x00\x02\x00\x00\x00p?>?\xef\xbf\xedO\xe5\x94N\x9c\xeey\x18_u$\tM\xa4?\xd7'
 b'\xe1\xc7HG*x\xe6A\x00r\x00\x06\x00~\xbf\xcc0W\x96L2\x88\xb6&ojhspdfukcgy'
 b'ek\xbf6\xb8u\xe8\xd5KvN\xa5\xd5F=\xfa\xc7\xc4>\xea\x9d\x80?P]\xab\xbfi'
 b"\xd6\x95?'\x99\x87?\x0e\x03\x90")

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

{'A1': [{'B1': 1859482515, 'B2': 'ojh'},
        {'B1': -706940885, 'B2': 'spd'},
        {'B1': -1766827187, 'B2': 'fukc'},
        {'B1': -1270755153, 'B2': 'gy'},
        {'B1': 508029745, 'B2': 'ek'}],
 'A2': 0.7431630492210388,
 'A3': {'C1': -0.9160030266401955,
        'C2': [2031640437, 604589476],
        'C3': 0.3731554227676166,
        'C4': -26},
 'A4': 65,
 'A5': {'D1': 3208034421, 'D2': 16777398958336365894},
 'A6': [0.12245133519172668,
        0.4582328796386719,
        0.8139292597770691,
        -0.9134305119514465,
        0.6546863913536072,
        0.5547418594360352],
 'A7': -0.22022528494598625,
 'A8': -18906}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"BOTnucorh'\xcb\xa8nCO\xf9o\xb7)\x92G,\x81\x13\xa5\x90>~\xe9\x03?\x0f"
 b'\x00\xc1y\x9b\x01\x99\xaembrudr\xc5D\xda\xa3L\xb6\xc3\xed\xfaEw\xd0v\xf0\x87'
 b'\xb02\x0ep\xbc\xad\xe2\x9a\xb5d\x91r\x90R0vkjwmt}\xca\xe3\xf6\x90\xf2\x91'
 b'\r\x8d$\xa3M\xa2\x9c\xb90\\\x06\xf8\xdct\xb0\x01\xf5\xb0]\x1d\t#;E'
 b'a\xfc\xd7\x9av\xd7g%\x13>\x80i\xd707*\r\xe2\x11\xa6\x9a1c\xd1\xee3v\xa4'
 b'_8\x96+\x0f{\ri\xf3\xcb\xcb\x07D\xbe\x84')

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

{'A1': [{'B1': 'nucorh',
         'B2': 1856555815,
         'B3': 5157230391127002947,
         'B4': {'C1': -1525448404,
                'C2': [16016, 59774, 16131, 15, 31169, 411, 44697]}},
        {'B1': 'mbrudr',
         'B2': -1545976635,
         'B3': 15021552026150745676,
         'B4': {'C1': -1333268362,
                'C2': [3634, 48240, 58029, 46490, 37220, 36978, 12370]}},
        {'B1': 'vkjwmt',
         'B2': -152843651,
         'B3': 5594355350360945296,
         'B4': {'C1': 817470626,
                'C2': [1628, 56568, 45172, 62721, 23984, 2333, 15139]}}],
 'A2': {'D1': -671325883,
        'D2': -9205899536921823590,
        'D3': 1288606918347118441,
        'D4': 1664195238},
 'A3': 1983114961,
 'A4': [24484, -27080, 3883, 3451, -3223, -13365, 17415, -31554]}

Пример 2

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

(b'BOTnlqynv\x10\x0f>\xb9D*^\x96\xd0\xae8\xa4\x8e\xffo\x90d\xb0\xf3'
 b'\xc9\x8ar\x05\xc9\x86\x17u\xd6\xa3Rmoolusb/\xe7\x88%LR\xfe\xb2Q\xbbzW: '
 b"Q\xe2\xedR\x9a'\x1c\x9f|\x98w\xe4\x94\x1e\x1dheujnc$\x92\x8bx\xd1\x9b\xca"
 b'\xd8\xd2\xc7\xbe\xd9S\x1c\xb1mYc`HN\xf6\xc6\xad\xa6\xd5\xfa(\x0e\x9d('
 b'J!\xa2\xb2\xed1\xc3$}\xa9-\xbe\x93\xdb\x07<8<\xc3\x1e\xaa\xe4q\x1a\x88\xc6 `'
 b'\x85\x11\xff\xb8VN\x11W\x91\x18\xb3\xc4"Dv')

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

{'A1': [{'B1': 'nlqynv',
         'B2': -1187115248,
         'B3': 11833400231815162436,
         'B4': {'C1': -1871708274,
                'C2': [45156, 51699, 29322, 51461, 6022, 54901, 21155]}},
        {'B1': 'moolus',
         'B2': -1998114974,
         'B3': 8843752122484935717,
         'B4': {'C1': 1361066583,
                'C2': [60898, 39506, 7207, 31903, 30616, 38116, 7454]}},
        {'B1': 'heujnc',
         'B2': 2022412836,
         'B3': 15690197860199603153,
         'B4': {'C1': 1840323667,
                'C2': [25433, 18528, 63054, 44486, 54694, 10490, 40206]}}],
 'A2': {'D1': -1574876632,
        'D2': 3290298599617981874,
        'D3': -4378562907229940802,
        'D4': 1910811166},
 'A3': 549881882,
 'A4': [-31392, -239, 22200, 4430, -28329, -19688, 8900, 30276]}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'LNJou\x00\x02\x00\x88\x00\xb7r\x16\xf6\xec\xae\x06\xed\x1a\x80\x06\x86}\xe1'
 b'Q\xa0jA\xc7C\xcaB?\xf4bM<r\xaa\xde\xbf\xd6\xc96\xbf:i\xe8&\x9c\xed\x1ap&BX'
 b'\xfb\xf8c$\x8e\xb2\xdb\xe3?*\xde\xe5\xf3\x9b\x7f\\\xc4\x15\xcd\x00'
 b'T\xfa\x0f\xc0 \x87\x9br\x00\x80\xb3\\\xc9(\x1fl\x82\xda\xbfW\x8fZ\x16_'
 b'\xf2\xf7\xc1\xd2\xe0\x96\xf6\xbc(\x85\xb6\x18\xf9\xe3\xffv\x04\xc0\t\xe4'
 b'\xf5\xc8\x7f\xc8\xa2*~\xd9\xbf\x844y9\x00W\x009\xf0)}D)e\xe1^\xa1\xc3\x0e'
 b'\xba\xa8\x08\x8f')

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

{'A1': {'B1': 192,
        'B2': {'C1': [9, -28, -11], 'C2': -0.398325594871491, 'C3': -124},
        'B3': 31028,
        'B4': [{'D1': 0.6205685402120471,
                'D2': -203039190,
                'D3': -1000570981,
                'D4': -13035,
                'D5': -7239781866700909568,
                'D6': 3011510386},
               {'D1': -0.4142103485384234,
                'D2': 375033687,
                'D3': -1040715169,
                'D4': -7982,
                'D5': -497447075794061674,
                'D6': 74907619}]},
 'A2': {'E1': [16241433005315977273, 10306673264302465374],
        'E2': {'F1': 183,
               'F2': 114,
               'F3': 22,
               'F4': 112127222,
               'F5': 5900135001420208877,
               'F6': -96},
        'E3': 106},
 'A3': 65,
 'A4': 199,
 'A5': 0.760898768901825,
 'A6': -0.47915321244140263,
 'A7': {'G1': -0.7140172719955444,
        'G2': 26938,
        'G3': [-24, 38, -100, -19, 26, 112, 38, 66],
        'G4': 88},
 'A8': 251}

Пример 2

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

(b'LNJou\x00\x02\x00\x88\x00\x9c\xcb\xe3\x87\xa9\xb0\x89\xdbZ\x08\xa9\xcd\x1c`'
 b'\xf5d3\xe3\xa0\xee\x8f\x8a\xbe\xd6*\x0e\x8a\xc0s\xef\xbf\xac\x12\x1a'
 b'?\x1e\x02\xf1\x9f\xd2M:\xea\xe3\xbc~\x0e8\xc1\xde\xa9\x03\x11\xc1?#z\x0b'
 b'\x14\xc2D\xc7u\x8a\xe8\xa5\x13X<\xc9\x15\x03\xa2\x7f\x9b+FZ\x07\xfd\x03\xcf'
 b'\x84\xe7?\x0b\xb2\xbb\x8d\xcaGm\x12\x7f!\xe8\xb6G\x8eu\xb8\x1e"\x16\x98V'
 b'\x85`]\xc8n\x0c_i\x17\xda\xb0\xea\xbf*\xd0\x169\x00W\x00P\x16\x947zY\xc9V'
 b'\x8d5\x00\x87\xcfx}X')

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

{'A1': {'B1': 96,
        'B2': {'C1': [93, -56, 110], 'C2': -0.8340883691080037, 'C3': 42},
        'B3': 5840,
        'B4': [{'D1': 0.13333173555793976,
                'D2': 336296483,
                'D3': 1975993538,
                'D4': -6006,
                'D5': -6772545460590079067,
                'D6': 1177262975},
               {'D1': 0.7349619939707097,
                'D2': -1917079029,
                'D3': 309151690,
                'D4': 8575,
                'D5': 2458605261628618472,
                'D6': 2237044758}]},
 'A2': {'E1': [6253627939033978448, 6376385480144991629],
        'E2': {'F1': 156,
               'F2': -53,
               'F3': -29,
               'F4': -1984910969,
               'F5': -765580267023213861,
               'F6': 100},
        'E3': 51},
 'A3': 227,
 'A4': 160,
 'A5': -0.270629346370697,
 'A6': -0.9828798958199865,
 'A7': {'G1': 0.6018474102020264,
        'G2': 542,
        'G3': [-15, -97, -46, 77, 58, -22, -29, -68],
        'G4': 126},
 'A8': 14}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ATAW\x90\xbe\xfe\x91Y\xbfz\x89\xe8R\x00\xac\x04\xec\x1b\x1e\xe9fQ2'
 b'\xae\xb7\xd3\x86_\xc6\xea\x07\xdb\x9c\xfa\x9d\x8a\x00\x02\x00\x00\x00\x1c?'
 b'~\xe0\xd7\xbf\tZ\xcd?\riZ>\xa8\xb1r\xbe\xb3&h\x9e|\xa2\t\xd1\x98\xe3\x17{'
 b'\x90\x00\x02\x00\x00\x00@?}p\x92\xbe\xe2\xe7\x9b\xbe\x88\xc5w\xbdl2\xe6\xbf'
 b'^\xa9\xa2\xc4\xefG\t\xb3\x16 \x01\xfa`\x00\x02\x00\x00\x00d\xbe\x9e\xda\x10?'
 b'\x01\xe5\x1d\xbe\xa8!T?Xl\xb9>P\x8e\x0b\xe0\x1cw\xc4k\x04\xf1"&'
 b'\x81\x00\x02\x00\x00\x00\x88\xbf\x08\xbc\xa7\xbe\x83N\x8a\xbfxK\x83>'
 b'\xc0L\\\xbf\x16O\xd6\xd9\x00\x00\x00$\x00\x00\x00H\x00\x00\x00l'
 b'\x00\x00\x00\x90B:\x00\x8b\x1b\x81\xa0x\xdec\xf5C\x99\x91\xbe\x0c\xe6M\x9f')

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

{'A1': -0.49720266461372375,
 'A2': -0.9786667823791504,
 'A3': 82,
 'A4': {'B1': [{'C1': 138,
                'C2': [1606871559, -610469219],
                'C3': [0.9956182837486267,
                       -0.536541759967804,
                       0.5523887872695923,
                       0.32947880029678345,
                       -0.3499023914337158],
                'C4': -98},
               {'C1': 144,
                'C2': [2090994129, -1729947781],
                'C3': [0.9899989366531372,
                       -0.44317325949668884,
                       -0.2671315371990204,
                       -0.05766572803258896,
                       -0.8697758913040161],
                'C4': -60},
               {'C1': 96,
                'C2': [-280557133, 371196410],
                'C3': [-0.3102574348449707,
                       0.507402241230011,
                       -0.3283792734146118,
                       0.8454089760780334,
                       0.20366685092449188],
                'C4': -32},
               {'C1': 129,
                'C2': [477611115, 82911782],
                'C3': [-0.5341286063194275,
                       -0.256458580493927,
                       -0.9699022173881531,
                       0.37558257579803467,
                       -0.5871556997299194],
                'C4': -39}],
        'B2': {'D1': 1111097483, 'D2': 1982041752007341379},
        'B3': [-103, -111],
        'B4': -0.13759727776050568,
        'B5': 159},
 'A5': 82582302,
 'A6': -1628524937126358138}

Пример 2

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

(b'ATAW\x90\xbfZ}\n\xbd\x8d`\xc3\x86\x00\xac\xe7\xcd\xc1\xa7R-qhD\x90m\x8b'
 b'\x04\x16\xa3\xae$;\xf9\xd6\xe2\x00\x02\x00\x00\x00\x1c>z\xce\xa1>\xd0.\xdf?'
 b'h\x9e\xa1?\x0cV\xa5\xbe;^\xe0G\xbb\xaa3\xdb\xb7H\xef\x02\xbe\x00\x02\x00'
 b'\x00\x00@\xba[\xab<\xbf\x14\xb9\xac?\x04\xce\xb8?\x0c\x16r\xbe\xef\xbdo@'
 b"@\xea?9I9`\xcb\xdc\x00\x02\x00\x00\x00d\xbf*\x9a\x81\xbeA\xba'\xbe"
 b'\x9c\xee\xed\xbe\xa1?h\xbfa\xb3\xc4\xfe\x11\xfeF\xdaB\xd5\xf6\x0b'
 b'\xb3\x00\x02\x00\x00\x00\x88\xbdY\x19\x8c\xbfU,\xc4>\xdd\xb0\xc7\xbd'
 b'\xd7\x14\x82\xbdo_\xf3\t\x00\x00\x00$\x00\x00\x00H\x00\x00\x00l'
 b"\x00\x00\x00\x90\x8c\xcd$\x80\x9b'SJh6bU@\x01>$f\xc1\xf3")

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

{'A1': -0.8534704446792603,
 'A2': -0.0690322145819664,
 'A3': 134,
 'A4': {'B1': [{'C1': 226,
                'C2': [68592558, 607910358],
                'C3': [0.24492885172367096,
                       0.40660759806632996,
                       0.9086704850196838,
                       0.5481970906257629,
                       -0.18297910690307617],
                'C4': 71},
               {'C1': 190,
                'C2': [-1146473509, -1219956990],
                'C3': [-0.0008379702921956778,
                       -0.5809581279754639,
                       0.5187792778015137,
                       0.5472174882888794,
                       -0.4682421386241913],
                'C4': 64},
               {'C1': 220,
                'C2': [1089093433, 1228497099],
                'C3': [-0.666420042514801,
                       -0.1891866773366928,
                       -0.3065103590488434,
                       -0.31493687629699707,
                       -0.8816492557525635],
                'C4': -2},
               {'C1': 179,
                'C2': [301876954, 1121318411],
                'C3': [-0.05300287902355194,
                       -0.832714319229126,
                       0.43298932909965515,
                       -0.10501958429813385,
                       -0.05844111368060112],
                'C4': 9}],
        'B2': {'D1': 2362254464, 'D2': 11179996179011625557},
        'B3': [64, 1],
        'B4': 0.16054822504520416,
        'B5': 243},
 'A5': 3889021351,
 'A6': 5921513777702923659}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XGWM\x00d\x17?\x02\x00\x1e\x00\x00\x009\x00[\x00vd\xcd\xb7\xdb\xb0'
 b'\xad\xe2p\x00\x00\x00kiz&\x17>\x83\xbf\xb9\xbe\xe8\x97\xad>\xa3=\x07B'
 b'\x00\x8e\xaa\x1d\xf8\x03\x00 \x00,\x00\xe9\xe0\x16?=\xefS\x99s\xa8i\x19%'
 b'R\xbf-\xd3\x17?\xc4\x1d\xaf\xfeq\xa2\xd1\xb5\xc1\x02\x00F\x00N\x00\xc0\xb0s'
 b'\xbf\x8aK\xaf\xa99?\xee#\xb6\x9c\x16\n\x9a=\xfa\xb0\x03\x90\xf1\x02\x00h\x00'
 b'\x00\x00\xe8)\xa8g')

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

{'A1': 0.59136962890625,
 'A2': 'ki',
 'A3': [{'B1': {'C1': -93,
                'C2': 1853,
                'C3': 2861432898,
                'C4': -2019,
                'C5': [0.1476077139377594,
                       -0.36278924345970154,
                       0.3390495777130127]},
         'B2': 0.5893693566322327,
         'B3': [61, 239, 83, 153, 115, 168, 105]},
        {'B1': {'C1': -60,
                'C2': -20707,
                'C3': 3517084158,
                'C4': -15947,
                'C5': [-0.8208785653114319, 0.5930660367012024]},
         'B2': -0.9519157409667969,
         'B3': [138, 75, 175, 169, 57, 63, 238]}],
 'A4': -2112838192438877066,
 'A5': {'D1': 4052747184, 'D2': [379368995, -96626166], 'D3': 1739074024}}

Пример 2

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

(b'XGWM\\\x8f\x1e\xbf\x04\x00\x1e\x00\x00\x007\x00]\x00ZlOwc\t\xe2\xbcr\x00'
 b'\x00\x00fpho\xef\xda,\xbf!!\xe4>\xec5\x01\x19\xc4\x1c\xeb{\n\x02\x00"\x00*'
 b"\x00%%\xbe>\x16v\xa1\nI'\xba%\xb0'?O8t?\x1b\xbd8?\x01\x8bd\x0f"
 b'"\x13\xe7\x1a_\x03\x00D\x00P\x00\xd3t>\xbfC\xcf\x05h\x92\xcbIe\xe4'
 b'\x0f\x00\xccJ\xa0^\xd31\xf6\x81\x02\x00j\x00\x00\x00\x19\xad\xc6\x9c')

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

{'A1': -0.6193749904632568,
 'A2': 'fpho',
 'A3': [{'B1': {'C1': -20,
                'C2': 309,
                'C3': 3944530969,
                'C4': 2683,
                'C5': [-0.6752156615257263, 0.44556525349617004]},
         'B2': 0.3713771402835846,
         'B3': [22, 118, 161, 10, 73, 39, 186]},
        {'B1': {'C1': 1,
                'C2': 25739,
                'C3': 3876790799,
                'C4': 24346,
                'C5': [0.6550315022468567,
                       0.9539842009544373,
                       0.7216355204582214]},
         'B2': -0.7439700961112976,
         'B3': [67, 207, 5, 104, 146, 203, 73]}],
 'A4': -4836292727034385318,
 'A5': {'D1': 2180395475, 'D2': [1041509, 1587563212], 'D3': -1664701159}}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'EIOWU\x05\xb78\x0f\xac%/htrmydhrS\x03\x00\x00\x00$\x00\x163\x00\x00\x00'
 b'W\x00\x00\x00\xb0\xc8\xdc\xbe\x18g{M\xbf\x8a\xd9\xdf\xdf\xbd\x96\x13'
 b'\x90\xba\x12\xa4\xbe\t\x81e\xbf  \x9f?w\xee\xdc\xbf\xb4v~\xcfZ\xb9\xd3'
 b'?t\x10\x1af\xc6\x00\xe6\xbf\xba\xd1\x03\x00\x00\x00=\x00H\x1c\x1aZ\n\xd6\x18'
 b'\xc8\x151\x08\x96\x17\xb4;\xbf\x02\x00U\x00\xa2\xb6\x1b\x95O')

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

{'A1': 1365,
 'A2': {'B1': 14519,
        'B2': 790998031,
        'B3': 'htrmydhr',
        'B4': 83,
        'B5': [{'C1': -0.43121862411499023, 'C2': 24},
               {'C1': -0.8026642203330994, 'C2': -118},
               {'C1': -0.10931367427110672, 'C2': -106}]},
 'A3': 22,
 'A4': {'D1': 36883, 'D2': -0.3204553723335266, 'D3': -0.8965001702308655},
 'A5': {'E1': [-0.45205479825063044, 0.3081881548222143, -0.687594603936772],
        'E2': 1511660616,
        'E3': 10810944875124020746,
        'E4': -0.7332167029380798,
        'E5': [186, 209],
        'E6': -1793345886,
        'E7': 79}}

Пример 2

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

(b'EIOW\x13\x96[JL\xfd\x89Bdscbxuhzh\x04\x00\x00\x00$\x00\x1e8\x00\x00\x00'
 b'b\x00\x00\x00\xf2|\xdd\xbc\x82}\x11\xfe\xbe\xd9g\x8a\xb3\xbe\x8eA'
 b'\x013\xbf\x88$=}k\x81\xbe\xca\xf6`?8|\xd7\x9e\x08\x11\xe4\xbf\xfc\xff'
 b'\x11\xc3\xeb\xc2\xd1?\x84e\xd1\xb9/D\xda\xbf\xbc\xe7\xb9\x1b\xcc\xc1'
 b'\xecc\x03\x00\x00\x00B\x00\xbb5%\xb4W"\x19\xbe\x86{w\xee\x8d\xb8"?'
 b'\x08\x00Z\x00\x8d\xf6\x90\xd3\xc5')

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

{'A1': 38419,
 'A2': {'B1': 19035,
        'B2': 1116339532,
        'B3': 'dscbxuhz',
        'B4': 104,
        'B5': [{'C1': -0.0270371176302433, 'C2': -126},
               {'C1': -0.4962271749973297, 'C2': -39},
               {'C1': -0.35066530108451843, 'C2': -114},
               {'C1': -0.6992378830909729, 'C2': -120}]},
 'A3': 30,
 'A4': {'D1': 15652, 'D2': -0.2527731955051422, 'D3': 0.8787657022476196},
 'A5': {'E1': [-0.6270793058755606, 0.2775220303519743, -0.41041176935467427],
        'E2': 3022337467,
        'E3': 17183338721900569175,
        'E4': 0.6356285214424133,
        'E5': [188, 231, 185, 27, 204, 193, 236, 99],
        'E6': -745474419,
        'E7': 197}}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XBUIJ\x02\x00\x00\x00?\x00p\x05=\x12A\x00\x00\x00\x02\x00\x00\x00q'
 b'\x00\xa1\x89\x14_s\x00\x00\x00\x90z\x19\xbb\xdd\xfc\xc3W\xa8U\xc9AQ\xe6\xb8'
 b'&\xeeB\xa0-\xf0f\x05\x00\x00\x00\xa3\x00\x00\x00em\x9f\xe18\xc6\x14\n?'
 b'p\x8dT\xb0\xfd\xdd\x96n\xbb \xfc\x0b\xaa\x99R\x1dw\xec\xd7\x1ee\xbb\xd6c'
 b',\xf6H\x9f\xeb\x96P>\xff\x0b6\x18\xc9\n\x19JQij\xd9Bm\x1e\n\xb2\xf3AK'
 b'\xb8\xf2\x02\xaeD\xc5s\xa2\x8e*\x00U\xb4\x9b\xaa\x04\x95\xfe\x04\xf3'
 b"\xa1'\xc2[|\x91\xaa\x82Y\x07\n\x8fr\xc3QW\x869|H9\x04\x08\xe4\x97K\xb0H\xd3")

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

{'A1': [{'B1': 'em',
         'B2': 305988976,
         'B3': {'C1': [-97, -31, 56, -58, 20, 10, 63, 112],
                'C2': 13505898212718826637,
                'C3': [8583107284774419488,
                       3198636260706932716,
                       18392226537356085494],
                'C4': 5857521799462925835}},
        {'B1': 'ij',
         'B2': 1595181473,
         'B3': {'C1': [-39, 66, 109, 30, 10, -78, -13, 65],
                'C2': 8342149398938171467,
                'C3': [12293617885005909666,
                       13990328832582653188,
                       722644682958535771],
                'C4': 8951333443967611535}}],
 'A2': -1155958128,
 'A3': -803,
 'A4': 1437095875,
 'A5': -430882359,
 'A6': {'D1': 7417478752620127928, 'D2': [14664, 2052, -26652, -20405, -11448]}}

Пример 2

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

(b'XBUIJ\x02\x00\x00\x00?\x00\x16\xc2\xd3TA\x00\x00\x00\x02\x00\x00\x00q'
 b'\x00\xc0\xffESs\x00\x00\x005\xc1-\x01\xad\xc3\xa7_\xa5\x8e\xb0\xd2O\x80\x9a'
 b'\xecv%\xbf\xecE\xfd\x03\x00\x00\x00\xa3\x00\x00\x00na\x97os\xf14\xaeb'
 b'\xae\xf6\x0f\x08\x122^\x04\x94\xe83\x9dn\xa8\xac\x1b\x15V\xae\xbd'
 b'l\xc7\x80\x0f;\x9c*\xef\x0b\xa9K\xd5\xae\xd3\x16s\n\xd0\xccM\x99hu\x7f'
 b"98\x84n.A\xedF\x99\t\xdd{\x106\xc1\xdc\xa7\x070\x88\x14]\xb99\xb1'\x89\xf4"
 b'-\xf8\xc3T\xeb\xe0!]\x85\x1e\xeb\x1cwB#\xfc\x88\x84UG\xe5H\x06\xde$')

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

{'A1': [{'B1': 'na',
         'B2': 1423163926,
         'B3': {'C1': [-105, 111, 115, -15, 52, -82, 98, -82],
                'C2': 10665753386664071158,
                'C3': [1520999138577953768,
                       4255761766899625558,
                       12598058722060610204],
                'C4': 11046710654910273235}},
        {'B1': 'hu',
         'B2': 1397096384,
         'B3': {'C1': [127, 57, 56, -124, 110, 46, 65, -19],
                'C2': 13922333422237882694,
                'C3': [13356854645004675036,
                       14121087159916540217,
                       16942125483261225812],
                'C4': 6162200806654375708}}],
 'A2': 19775797,
 'A3': -15443,
 'A4': 2393202599,
 'A5': -2142252368,
 'A6': {'D1': 18250253370700262554, 'D2': [-6841, 1608, 9438]}}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'FSGZV\x94>\x0b>\x02\x00\x00\x00<\x00A\x00\x00\x00\x88H\xc3\xa4\xd67\xe8\xb5V'
 b'*\x0fwe?\xac\x90\x08i\x02\x00\x00\x00_\x00\x00\x00K\x98+\x9b=\xe3]'
 b'\x9f8\x92\xa9\xf4\xea\xbe#cc\xb8\xe7*L\xf9\x82\x0f\x82t\xd4\xda\r\xb3\xde'
 b'\xfda9.\x0f\xfbc\x03\x00\x00\x00>\x00\xa8\x1aD\xdb\x92\xca\xf1\x8d\xd6\x7f')

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

{'A1': 0.13598090410232544,
 'A2': 'cc',
 'A3': {'B1': [{'C1': 76, 'C2': 998343864279335673},
               {'C1': 179, 'C2': 7204368720114875870}],
        'B2': [184, 231, 42],
        'B3': {'D1': 6824, 'D2': 3398622020}},
 'A4': {'E1': 13107788110488619144, 'E2': 10838},
 'A5': 0.8963479399681091,
 'A6': 1762169004,
 'A7': {'F1': [-29199, 32726],
        'F2': [38987, 39723, 58173, 40797, 37432],
        'F3': -0.4588978588581085},
 'A8': 35}

Пример 2

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

(b'FSGZVc\x05\x13?\x03\x00\x00\x00<\x00B\x00\x00\x00N\xef\xd0\x82K\r\x0f\xa6E'
 b'\xb4\\\xbc:?\x15\x1ch\x85\x02\x00\x00\x00`\x00\x00\x00\xd4\x86\xc3'
 b'\xb4\xd2\xac\xfc4\x98\x9aJ\x7f[?\x9enrs[(ss\xc0\x0c\x1ek\x99\xc0\x95\xc3\x11'
 b'\x96\xcb\xcd\x94@\x17.\xdc\x03\x00\x00\x00?\x00QH\xe8\x82\xda,\xb1K;\x82')

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

{'A1': 0.5743009448051453,
 'A2': 'nrs',
 'A3': {'B1': [{'C1': 115, 'C2': 14093382374085496000},
               {'C1': 17, 'C2': 15865644103414696854}],
        'B2': [91, 40, 115],
        'B3': {'D1': 18513, 'D2': 752517864}},
 'A4': {'E1': 11965797352915136334, 'E2': -19387},
 'A5': 0.7294366359710693,
 'A6': -2056774635,
 'A7': {'F1': [19377, -32197],
        'F2': [34516, 46275, 44242, 13564, 39576],
        'F3': 0.8574110269546509},
 'A8': -98}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'iUBWR\xa2\x04\x00\x1a\x00\x00\x00kv\x02\x00\x00\x00R\x00\x00\x00T\x00'
 b'\x00\x00\xca@\xc09\x11\xfeh\xdf\xe0\xbf\xc6\\\xc0\x9c\xff\x96^\x08'
 b"\xc8\x9c\xc0\xc3\xe6?\x02Z\x7f'\x98\xa5\xca.t\x95\xf6\x1d\xe4?^\xea:+"
 b'\xb5\xd8\x92zW]\xf5\xf8\xe2\xbf\xb1\xbf7\xbfai\xdb\x996n\xe8G\xb8\xbf'
 b'\xe7?|\xcc\x8d\xd0\x1b\xa8\xd7\xbf\xcf^\xdd\xbaS\x08?[\x0c\xb1\xd9P\x9f\x97'
 b'\xe6G\xc0U\x85\x18\x9a\x8b\x99?\x8f\x04=\x17\xc4\xd0\x99*R\x12'
 b'\xb6\xef\x1d\x87\xc1^nK\x941\xe3\xdc\x86\x9d\xd5\x840\xa9\xf7*\xa7~')

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

{'A1': -94,
 'A2': [{'B1': 16586, 'B2': -0.5272717439891537, 'B3': 2629852358},
        {'B1': -26881, 'B2': 0.7113955556999476, 'B3': 662657538},
        {'B1': -23144, 'B2': 0.6286576193828861, 'B3': 725281374},
        {'B1': -10059, 'B2': -0.5928904364662506, 'B3': 3208101809}],
 'A3': 30315,
 'A4': 'ai',
 'A5': {'C1': -26149,
        'C2': {'D1': [0.7421533016635695, -0.36963553778259217],
               'D2': 207,
               'D3': -8866,
               'D4': 0.5325275659561157,
               'D5': 91,
               'D6': 5180995131848372492,
               'D7': 0.02494660162604645},
        'C3': 1167,
        'C4': 5949,
        'C5': 17273013564937457860,
        'C6': [29, 135, 193, 94],
        'C7': -7095741294528148626,
        'C8': 9126310413073417429}}

Пример 2

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

(b'iUBWR\xa5\x03\x00\x1a\x00\x00\x00\xf7\xb0\x03\x00\x00\x00D\x00\x00\x00G\x00'
 b'\x00\x00\x80f\xc2\xd6\xbf\xbf}\xb5\xec?\xe0\xdb\x80\xe90\x9e,\x87'
 b'\xfe\xd0\xdb\x19\xd7\xbf\xb1-\x1c\xde\x1f\x13ZS\x01\xe3\xef\xb9\xe5\xbf'
 b'{\xee[esugW\x9c\xa0V\x86l3h\xe5\xbf\x18\xcd\xa3\x97k\xbf\xe4\xbf\xcd\xed\xdd'
 b'\x1214\xbf\x8b%`\xc0\n\x8c\x08o\xec\xfc\x88\xf2B\x04Q\xd5?\xe9\x9b\xe4'
 b's\xad(\xdb\xaf\x8b\xe4\xb2F \xd5+?m\x10\xd5]Z\xa9\x7f\xee\x85\xbfl'
 b'\xed\xc8\x1df\xbf')

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

{'A1': -91,
 'A2': [{'B1': 26240, 'B2': 0.8971546883683106, 'B3': 3917536224},
        {'B1': -25040, 'B2': -0.3609532872161363, 'B3': 3726388657},
        {'B1': 4895, 'B2': -0.6789473947234044, 'B3': 1700523643}],
 'A3': -20233,
 'A4': 'sug',
 'A5': {'C1': -25513,
        'C2': {'D1': [-0.6689698333381848, -0.6483667337146555],
               'D2': 205,
               'D3': -8723,
               'D4': -0.7038737535476685,
               'D5': -117,
               'D6': -1409898760774852571,
               'D7': 0.33306986368019387},
        'C3': 39913,
        'C4': 29668,
        'C5': 5094385417111414957,
        'C6': [32, 213, 43, 63],
        'C7': -1261103165054054291,
        'C8': -4655000416026837115}}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xd9TVY\xf7\xf0O\xaf\x12\x00\x06\x00\x00\x00o\x00\x85\x00\xefltdwwixu\x0e'
 b'x+\xfb\x16b\xd4\x9a\x0fIp\xaa\xdc\xbf?\xfbC\xfd\x7f|\xac\xe2P\xb2\x95'
 b'\x99\xd3?/\x86\xce\xa9\x93\x9f\x0c)5xx\xb1\xe0\xbfm\x8d-\xadf\xcd\xd0'
 b'\x17\xd1\xb4\x012\xb1\xbf\xcf\xa2U3/\xc18\xb9\xd7o\xc7\xb1\xd9\xbf\xc29}'
 b'\xba\xc2)b\xb7\x02\xdd\x0c>\xec?\x1b\x00)\x007\x00E\x00S\x00a\x000x \xe7J'
 b'u\xb7\xe4\xfe\xa3{\x00\x00\x00n\xb1s\xe9)jF\xbf')

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

{'A1': 2941251831,
 'A2': {'B1': 27887, 'B2': 'tdwwixu'},
 'A3': [{'C1': 14,
         'C2': 120,
         'C3': 64299,
         'C4': 25110,
         'C5': -0.44790274748667724},
        {'C1': 63,
         'C2': -5,
         'C3': 64835,
         'C4': 31871,
         'C5': 0.3062490693442139},
        {'C1': 47,
         'C2': -122,
         'C3': 43470,
         'C4': -24685,
         'C5': -0.5216638896756947},
        {'C1': 109,
         'C2': -115,
         'C3': 44333,
         'C4': -12954,
         'C5': -0.06716929115745462},
        {'C1': 207,
         'C2': -94,
         'C3': 13141,
         'C4': -16081,
         'C5': -0.40147577211509455},
        {'C1': 194,
         'C2': 57,
         'C3': 47741,
         'C4': 10690,
         'C5': 0.8825744930852404}],
 'A4': {'D1': {'E1': [48, 120, 32, 231, 74, 117], 'E2': 2751390903},
        'D2': [110, -79, 115, -23],
        'D3': -0.7750573754310608}}

Пример 2

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

(b'\xd9TVY\xeb\xe9\x17\xda\x12\x00\x03\x00\x00\x00E\x00U\x00,ygrgavyk\xb0'
 b'\xa2\xb6a~\xf1l\xc4\xe9\x8b\xa3\x86\xd4?\xb7p\xe3\xcf\x1c\x06\xf8'
 b'\xa4~\x15\x02\xf7\xe3?\x90D\xa8\xc6\x03\xbf\xc2\xe0\x80\x16\x9ep\xe9'
 b'\xbf\x1b\x00)\x007\x00}\x86\x8e\xa918f\x94@\xa0K\x00\x00\x00\xe1~\x15'
 b'\x87\x8a\x0fk?')

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

{'A1': 3659000299,
 'A2': {'B1': 31020, 'B2': 'grgavyk'},
 'A3': [{'C1': 176,
         'C2': -94,
         'C3': 25014,
         'C4': -3714,
         'C5': 0.3207177034701718},
        {'C1': 183,
         'C2': 112,
         'C3': 53219,
         'C4': 1564,
         'C5': 0.6239023608988239},
        {'C1': 144,
         'C2': 68,
         'C3': 50856,
         'C4': -16637,
         'C5': -0.7949972571869}],
 'A4': {'D1': {'E1': [125, 134, 142, 169, 49, 56], 'E2': 2688586854},
        'D2': [-31, 126, 21, -121],
        'D3': 0.9182058572769165}}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XHY\x02\x00\x00\x00`\x00\xd6\x7f\xb0>\xe1W{V\x18\xcc\x1f\xa3\xf1VL'
 b'\x92\xe4\x1f\x0ese\xf3li\xb0\x89\xc3=V\xceP\xa6\x1c\x9f[\xb4\x81n\xc5\xc0R/j'
 b'\xfd\x9f\xac\x97\x0e`)C\x89t\x18\xc3\x19 r\xf5Al\x1b\xe7\x88\xa1\xfa5'
 b"\xf8\x98(R\x18\xa8\\\xdd?\xf7q]b\x00\x00\x00Z_\x89\xacsa\xfe'U?\x87\x8f"
 b"\x9d'\xa97\x14\xee.\x95-\x92\x1d&;u\x83}\xad\xa6\x0cq1|\xe6KC&\x89\x86"
 b"\xfb9'\x06g{\x1cbA")

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

{'A1': 'sa',
 'A2': 0.3447253108024597,
 'A3': {'B1': [{'C1': 1450924001,
                'C2': -1558197224,
                'C3': [-1840490767,
                       1930305508,
                       1768747877,
                       1036224944,
                       -1504653738,
                       -1269063908]},
               {'C1': 3234164353,
                'C2': -43372718,
                'C3': [244821151,
                       -1992087200,
                       432216180,
                       1106604576,
                       -1998120084,
                       -130680159]}],
        'B2': 0.458780311346922,
        'B3': 29175,
        'B4': 93,
        'B5': {'D1': 0.8326414823532104,
               'D2': -121,
               'D3': -25201,
               'D4': 3284583103312931111,
               'D5': [-5945451393532420718,
                      4849222844874296486,
                      7423664165753358630],
               'D6': 7291,
               'D7': 98,
               'D8': 65},
        'B6': 90},
 'A4': 95,
 'A5': -21367}

Пример 2

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

(b'XHY\x04\x00\x00\x00`\x00\xa1\x03\xa6<\xf9\xc3\xa1\x95\xde\xaec\x82\x08\\x'
 b'}\x90\x0e\xaa)vJ\x9e\x1e\x8b\x0b/\x86\xcf\xd5\xbaQ\xeb\xda \x95;\x87"'
 b'\n\xe5\xab\xb1\xec\xc3\xa4\xb7\xd5\xd0\x10\x00\x03n\xa2\xdeL\xa3\\\xaa'
 b'{\xda\xe3\x1f\xda\x97p\xdfi\xde\x08|$t7\xe4\xbf\x8ecid\x00\x00\x00\\B\xaf6'
 b'zcud\x94kf>\x8e\xa7\xb4\xa0\x92\xa9\xff\xb1W\x08\xdet\xffiPfy\x94\xe8@'
 b'\xc2f\xf1\x91\xdc\xbc\xf0\x8e.:K\xb2\x99\x0b\xea\xef"2\xcf')

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

{'A1': 'zcud',
 'A2': 0.020265402272343636,
 'A3': {'B1': [{'C1': 2510406649,
                'C2': -2107396386,
                'C3': [2105039880,
                       699010704,
                       513690230,
                       -2043737205,
                       1371198927,
                       -1793008917]},
               {'C1': 170035003,
                'C2': -323900443,
                'C3': [-709385021,
                       50335952,
                       1289658990,
                       2074762403,
                       -635444262,
                       1776251031]}],
        'B2': -0.6317692482555477,
        'B3': 25486,
        'B4': 105,
        'B5': {'D1': 0.22501975297927856,
               'D2': -114,
               'D3': -19289,
               'D4': -2447609975465733472,
               'D5': [-1687590480014344332,
                      -1099761689606831552,
                      -1582001853045264754],
               'D6': 8943,
               'D7': 50,
               'D8': 207},
        'B6': 92},
 'A4': 66,
 'A5': 13999}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'uYNBgutuoapd\r\x98CQK\x08\x05\x83b\x0cG\xac\xbf\xea\x1fLL\xe2\x00>'
 b'\x00\x00\x00`\xbf\x11\xf7?\xbf\x08\xe6b>\x0c\x12\xef?\x00E\xcd\xbd\x9c\xda~'
 b'\xbf_w\xab0\x95\xc9\xb84\xfb\x8bI\x8b3\xfc \xbe\xa5\xf1\xa5.X\xd5\x00'
 b'\x00\x00\x02\x00\x00\x00D/!\xc7\x08\x16\x18\xca-\x19\x03Z\xcd\x07N?\xd9\x0f'
 b'\xbd\xcdk\xb3\xc0\\\x98\x00H')

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

{'A1': 'gutuoapd',
 'A2': [{'B1': 3480, 'B2': 67},
        {'B1': 20811, 'B2': 8},
        {'B1': 1411, 'B2': 98},
        {'B1': 3143, 'B2': -84}],
 'A3': -0.8163205625169281,
 'A4': {'C1': {'D1': [3, 90, 205, 7, 78, 63, 217, 15],
               'D2': -0.10030307620763779,
               'D3': -64,
               'D4': 23704},
        'C2': {'E1': 3198546341,
               'E2': 46,
               'E3': 22741,
               'E4': [35635, 64544],
               'E5': 3396214431558453805,
               'E6': 25}},
 'A5': [-0.5701789259910583,
        -0.534765362739563,
        0.13679097592830658,
        0.5010650753974915,
        -0.07658861577510834,
        -0.8729197382926941],
 'A6': 3500926078350494537}

Пример 2

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

(b'uYNBhbpwnavx\x92\xe9u\xf3up"v\xdc{\x9aj?\xec&\xa3t\xaa\x8e.\x00\x00\x00d'
 b'\xbe\x04\xe1==\x8a\xaf\x15>\x98\xea\xaf\xbe\xbcc\x1a>\x80%\xcc?Qjs'
 b'\xb7\xfb\xdckZ\xfd\x1av\xb6]-s\xde\xaa\x1c\xfd\xb7\xe7\x81\x97\\\x9e\xe9\x00'
 b'\x00\x00\x04\x00\x00\x00D\x07\xc1\x85\x97\xe4\xc2s\x8c*\x17\x85\xc3\xb6'
 b']%\xee\xc1=\xd4\x0f\x17\x80G\xa5\x00L')

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

{'A1': 'hbpwnavx',
 'A2': [{'B1': -27927, 'B2': 117},
        {'B1': -3211, 'B2': 112},
        {'B1': 8822, 'B2': -36},
        {'B1': 31642, 'B2': 106}],
 'A3': 0.8797166136395782,
 'A4': {'C1': {'D1': [23, 133, 195, 182, 93, 37, 238, 193],
               'D2': 0.10354440659284592,
               'D3': -128,
               'D4': 18341},
        'C2': {'E1': 3085402519,
               'E2': 92,
               'E3': 40681,
               'E4': [46685, 11635, 57002, 7421],
               'E5': 558874716195156876,
               'E6': 42}},
 'A5': [-0.12976546585559845,
        0.06771675497293472,
        0.29866549372673035,
        -0.36794358491897583,
        0.25028836727142334,
        0.8180305361747742],
 'A6': 13257432281741335158}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'OHE\x00\x04\x00\x8fy\xdb\xbd\xab\x7f<\xc7\x04\xf5\x9a\xab\xa2(\xa0U$\x13'
 b'T\xe4t\xa0\xb2X\xd1\x98_\xaeE\x00\x00\x00\x05\x00\x9f\xd3D\xbf\xc7Wz\x13'
 b'f\x0e\xe0\x8b#4j\x88\x9a/\xe6yixB\xf1$F\x82Z\x19\x13\x00\x00\x00\x03\x00;'
 b'+=|\xcdvno\x10\xa6\xf4\xcb\xe8\x05\xa0\x1b\x00\x00\x00\x03\x00P<\x01\xe8`fls'
 b'\xbc\xf4\x94\x84\xc0\xd2&\xa4\x00\x00\x00\x03\x00e\xaav\n\x99stzy\xbd\xea'
 b'\x83E\xc1wH\x00\x00\x00\x03\x00zR\xd9\xd6E\x00\x00\x00>\x00\x00\x00S\x00'
 b'\x00\x00h\x00\x00\x00}4\xc1\x89\x84\xdd9\xd8\x92\xd9\xab\xd7x\xc68S|jOBR')

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

{'A1': [{'B1': 4823676561143765267, 'B2': 'yix', 'B3': 725449933},
        {'B1': 1199915507349037083, 'B2': 'vno', 'B3': 1006757984},
        {'B1': -4831073202370107740, 'B2': 'fls', 'B3': -1435104615},
        {'B1': 8772425498719516488, 'B2': 'stz', 'B3': 1390007877}],
 'A2': {'C1': 2044444075,
        'C2': 2134689540,
        'C3': {'D1': 62874,
               'D2': -85,
               'D3': 11684765520750662884,
               'D4': [29856, -19880, -11880, 24494],
               'D5': 69},
        'C4': [885098884, 3711555730, 3651917688, 3325580156, 1783579218]},
 'A3': 54084,
 'A4': -0.18235708186340727,
 'A5': 10025914827619839974}

Пример 2

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

(b'OHE\x00\x03\x00z\x06\x88\x93\x8b\x9a\x80{\xf5\xc7\x87o\xe0\xb4\x00(\xf1\xd7'
 b'\xe3\x0b\x84z\xa5\x1a\xec\xde\xe98\n\x00\x00\x00\x03\x00\x86z\x96\xbf'
 b"\xd55~\x88ij`~\x89%\x86ji\xe0?psw\xd8\x96'V\x0c\xb6T\xe5\x00\x00"
 b'\x00\x03\x00;T\xa0\xe5\xa7azirw\xe4\xab\t\x06\xc2\xec\x00\x00\x00\x03\x00'
 b'P\r\xfa\xd7\x97dua\xb7i\x1f[\x9f2\x83H\x00\x00\x00\x03\x00eX\xb2PQ\x00\x00'
 b'\x00>\x00\x00\x00S\x00\x00\x00h\xceW\x8b\x88\xfe\xd0\xf2\xa1\xf5^<\xe2')

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

{'A1': [{'B1': -2840039264476572443, 'B2': 'psw', 'B3': 1419830695},
        {'B1': 8248312665794331372, 'B2': 'azi', 'B3': 234542999},
        {'B1': -5230615013840747704, 'B2': 'dua', 'B3': 1488080977}],
 'A2': {'C1': 109613963,
        'C2': -1702855691,
        'C3': {'D1': 51079,
               'D2': 111,
               'D3': 16191566736159925003,
               'D4': [-31622, -23270, -4898, -5832],
               'D5': 10},
        'C4': [3461843848, 4275106465, 4116593890]},
 'A3': 31382,
 'A4': -0.3313900310655864,
 'A5': 9117860179829448767}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x0fSTS\x00\x00\x00&\x04o8\xbe\xfcgnqj\x04\t\xe1\x00\x00\x00\x02'
 b"\x00\x11l\xf6)\xbe\x16\xed$\x15\xf5\xcd,\x94A\xdb\xd0\xbe\x0f'"
 b'\x18\x0b\xd0\xbb\xe9\xe8\xf0\xed\xa6\xc7d4\xbc*N^|\x80\xfcwfN\x00\x04'
 b'\x00\r\x00\x00\x00\x13\xaa\x1a\xd3\x8b\xa6\xee\xce@\xa5\x11\x16\xec\xa7\x1a'
 b'\xfc\x0f\xd4K')

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

{'A1': {'B1': [{'C1': 16859, 'C2': -12098},
               {'C1': 3879, 'C2': 6155},
               {'C1': -12101, 'C2': -5656},
               {'C1': -3859, 'C2': -22841},
               {'C1': 25652, 'C2': -17366}],
        'B2': 5647087876202522190,
        'B3': 'gnqj',
        'B4': {'D1': 225,
               'D2': [4, 9],
               'D3': [1828071870, 384640021, 4123864212]},
        'B5': -1441082485,
        'B6': -6417965641913788692,
        'B7': -1491403761,
        'B8': 54347},
 'A2': 4,
 'A3': 1865989884}

Пример 2

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

(b'\x0fSTS\x00\x00\x00$k\x1f\x1b\xb6\xb1jh\xb6\xdf\xe5\x00\x00\x00\x02\x00\x0f'
 b'se\xadN\xc9{{\xec\x8dw9d\xb8)\xf3\xba5V\x12\xf5\xf2\xfe\xf0\xf9\x1c \xad4'
 b'\x18\xb5\xa0\xaf\x92\xbc\xd9}\xb3\xae\xeah\x00\x02\x00\r\x00\x00\x00\x11'
 b'\x81\xdc\x8f\xf9\xd3\x80\xc3\xfc\xdbG\x1a\xeeNP\x08\x1e\xde\x9a')

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

{'A1': {'B1': [{'C1': -18391, 'C2': -3142},
               {'C1': 13654, 'C2': 4853},
               {'C1': -3330, 'C2': -3847},
               {'C1': 7200, 'C2': -21196},
               {'C1': 6325, 'C2': -24401}],
        'B2': -7873178914641745304,
        'B3': 'jh',
        'B4': {'D1': 229,
               'D2': [-74, -33],
               'D3': [1936043342, 3380313068, 2373400932]},
        'B5': -2116251655,
        'B6': -3206347443909747986,
        'B7': 1313867806,
        'B8': 56986},
 'A2': 107,
 'A3': 521909937}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'SDSI_?\xb9\xd1\x8f3\xefB\x10\x96n2(G\r\xd6\xb7r~\x0f4\x1f\xf6Z'
 b'\xef\xd5\xa5\x0f\x9c\xeb\xd5\xae\x1a\x00\x00\x00\x02\x00W\x00\x00\x00{\xbf'
 b'\xdf\x07B\xdeqW\xd0\xa5\x14\xf2\x9d\xe3\xa6\xb8\x82\x1etf\x7f\x82'
 b'\xb4\xa7\x07K\xa88\x19\x1c\xe0s>N\xa0\x14>\xb0t>B\x00?\x00K\xac\r\xa7#\xce'
 b'\x9b\xab\xc3\xae>\xfeO3\xd0s\x16\xb1\x89\x19\x88\x08\x9e]\x14\xe1\xd9z&C'
 b'Y\xf6\xaa\x00\x04\x00\x00\x00[cT\t\xb8>b\x0c\xaek\x9d\x83"\xba%\xfe\xbf\x9d')

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

{'A1': 0.10085387247023214,
 'A2': [{'B1': 38510, 'B2': 3614216825727316606, 'B3': 3892},
        {'B1': 8182, 'B2': 6552690887755623381, 'B3': 44570}],
 'A3': {'C1': [{'D1': 2194491616276031239, 'D2': 1269315609},
               {'D1': 2080789739289449534, 'D2': -1334559166}],
        'C2': {'E1': [12397749121452846019,
                      12555752427280691990,
                      12792784288573447444,
                      16274173033237313194],
               'E2': 99,
               'E3': [6055573752048823915, 11349953668800495517]},
        'C3': -0.48481818888592176,
        'C4': [-91, 20, -14, -99, -29, -90],
        'C5': 47234}}

Пример 2

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

(b'SDSI_?\xdc\xa1\xdd\xb1\xb0:T?\xb1\xb1H\x13\xb1\xe5\xfcj\xb7*l\xbf\xb9\x96'
 b'\xaal\x94\x80a\t\xe8\xf9\xef\x00\x00\x00\x02\x00W\x00\x00\x00{\xbf'
 b'\xe8\x81\x19U9\xdf\xf0\xaa\xa6q\xe3c3\xd8(\x02i8\xa4\xe2w\x04:\xdf'
 b'\xf1\xe4\x1f\xd9:!cG\x93\x8e%*\x14\xac\xcd\x00?\x00K\xde\xdc\x8d\x93\x8d'
 b'\xf5\x8d[5\xee7Q\x9e\xcb%]\x94\xc0 \xd0&\xa8\nH\x10\x12\xd3\xe5\x85'
 b'\x02\xa0\x94\x00\x04\x00\x00\x00[\x08B!< \xcbIi\xa8\xb3K\x1a\xb0\x85b\t\xb8')

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

{'A1': 0.4473795161474403,
 'A2': [{'B1': 16305, 'B2': -5672262075884475721, 'B3': 10860},
        {'B1': 49081, 'B2': -7590134836914746904, 'B3': 63983}],
 'A3': {'C1': [{'D1': 173732341455717434, 'D2': -537795553},
               {'D1': -2793883908543640027, 'D2': 705998029}],
        'C2': {'E1': [16058866036177735003,
                      3886104352163308893,
                      10718603191515613768,
                      1158221036920152212],
               'E2': 8,
               'E3': [4765155992281901480, 12919449301496760760]},
        'C3': -0.765759149987387,
        'C4': [-86, -90, 113, -29, 99, 51],
        'C5': 55336}}