ИКБО-33-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'IDL\xf9\xb4\x94.\x00\x00\x00\x02\x00:\x00\x00\x00\x02\x00<\x8c\x02\xdc2\xbb'
 b'\xb3\xf5\xde\xadV\xc3QEh?\xd3\xea\x00o\xa1\x86\xa4>\x83i\xf3\xbf>\xf0'
 b'\x8c\x8a\x00\x00\x00>\x00\x00\x00Ubcgj\x91\xcd\x9b\xa6\x00r\xcc\xfc\x1e\x16'
 b'k?\xb7\x9f\xb9\x01\xf8\x88\x10F\xc8Ot\x9fJ6~\x94\xda\x01\x9b3\xab\x9b'
 b'\xbf\xc1\x9c\x9a1\x9d\xf8\x18\x1fz\xbb\xb0')

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

{'A1': 4189361198,
 'A2': 'bc',
 'A3': 'gj',
 'A4': {'B1': -29694,
        'B2': -36,
        'B3': 50,
        'B4': -4921319631046130863,
        'B5': 17768},
 'A5': 0.31115733052693373,
 'A6': {'C1': 0.25666770339012146, 'C2': -65},
 'A7': 0.4698222279548645,
 'A8': [{'D1': -28211,
         'D2': 155,
         'D3': [2785047244, 4229830251],
         'D4': 0.09228092477908967,
         'D5': 1187532660},
        {'D1': -24758,
         'D2': 54,
         'D3': [2123684353, 2603854747],
         'D4': -0.13759162352283805,
         'D5': 528137136}]}

Пример 2

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

(b'IDLGX\x80n\x00\x00\x00\x02\x00:\x00\x00\x00\x03\x00<\x7fNg\x9f\xe8C\xdak\xfa'
 b'\xcbg\x01\xe7\xbc?\xd3\xb1\x14\xcdS`t\xbf&\xdf\x84\xf1?\x11,\x0e\x00\x00'
 b'\x00?\x00\x00\x00Vbexva\xa21\x9cVARnR\xb0\xa8;\xbf\xe6\x8d\xc0\x91\xc7'
 b'\x9db\xacrJ4\xeda.\xb3,+\x81\xc6=\xf7\x0f\xbf\xe4\x90\x03\xd9A+'
 b'\xdc\xb4\x8b\x03\xd9')

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

{'A1': 1196982382,
 'A2': 'be',
 'A3': 'xva',
 'A4': {'B1': 32590,
        'B2': 103,
        'B3': -97,
        'B4': -1710283276166666495,
        'B5': 59324},
 'A5': 0.30768318225228275,
 'A6': {'C1': -0.6518480777740479, 'C2': -15},
 'A7': 0.5670784711837769,
 'A8': [{'D1': -24015,
         'D2': 156,
         'D3': [1447121518, 1387309115],
         'D4': -0.7048037383328103,
         'D5': -1401796044},
        {'D1': -4767,
         'D2': 46,
         'D3': [3006016385, 3325949711],
         'D4': -0.6425799601796558,
         'D5': -1265957927}]}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'ETI\x02\x7f?6\xc6\x0c\x00\x00\x00\x92r4\x03\x0b\xa0m\x0c\x81\xa3\x18\x05'
 b'\\\x82\xaaZV{9w\x91\x0b\xf9\xba\xa4n?\x0c\xb4\xed\x10\xa6\x99\xf8\x8a\xa1'
 b'-lK\xfb\xd9\xbf\x00\x00\x00\x02\x00\x00\x00\x1d\x06\x82f\x92/\xfc'
 b'\xfc\x00\x00\x00\x02\x001\xbf\xe8\xd5\xf1=\xc2y\xce\xfcPu\x9e\xfd'
 b'\xfc\xd1\x96|\\S\xa6\x11\x11\x99\x7f\x13\x01\xb6\x14\xf1\xc1(\xbed\x97\tR\n'
 b'\x9e\xc3t\xe5\x186GN\x01`\xc3\xc8\xf1\xb8\xf1\x02\xff\xac\x88\xc4\xb5_N\xcc'
 b'*\xe2C\x0f\x13 f\xf6r\xa9\x1c\xdd\xed-\xbf\xd1\xf2\xd1\xa9\x98'
 b'\xf0\x84\x00\x00\x005p\xec\x9eJ\xbfb\xea+\x12S\x94\x87')

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

{'A1': 639,
 'A2': 0.7139594554901123,
 'A3': {'B1': 484306221,
        'B2': -0.28044549524543805,
        'B3': {'C1': -65,
               'C2': [{'D1': 31545, 'D2': 8615680729342570047},
                      {'D1': 3252, 'D2': 17082336566846333229}],
               'C3': 6,
               'C4': {'E1': -126,
                      'E2': 26258,
                      'E3': 47,
                      'E4': -772,
                      'E5': [27723, -1063],
                      'E6': -0.7761160093539787,
                      'E7': -61835874},
               'C5': -33762922,
               'C6': [31836, 21414, 4369, -26241, 4865, -18924, -3647],
               'C7': [2935894606951352990,
                      -4362610246862549503,
                      6972637588615135999,
                      -6014341019086173142,
                      -2142852422875810190],
               'C8': 169},
        'B4': {'F1': 28908,
               'F2': 40522,
               'F3': -0.8863856196403503,
               'F4': 4691,
               'F5': 38023}},
 'A4': [29236, 779, 41069, 3201, 41752, 1372],
 'A5': 33450,
 'A6': 23126}

Пример 2

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

(b'ETI\x8d\xec=/"\xfa\x00\x00\x00\x92A\xf2\x04f\xd9\xb4lt\xed\x83y\'\x08\x12"'
 b'a\xf9\xa6=,\x84\xcf0\x15\xef\xe7\xf1\x95\x801j\x11\xfa\xde\xbf8o%>'
 b'\x83\xaa\x00\x00\x00\x02\x00\x00\x00\x1d\\KrkJD\xaf\x00\x00\x00\x02\x001\xbf'
 b'\xac\x90\x04_a\xc5\xc0\xd1\xd9\xec\x17\x00\xc2CQ\x06\xda\xac\xec\x0c'
 b'\xde\x9c\n\xe5R\x87\xb9\xfc\xder\x8b\xe9*\xc4\r\x10\xa8\x9d\x87\xa5'
 b'\xe7\xefh=\x19\x84\xc9|\xba\x05\xee\xa9V41a\x1b\xd8B#\x99\xf7\xc7H'
 b'\xc3\x08\x85\x88*\x0b\x85\xa6N\xe7\xbf\xe1\xb5a\x1c\xff\xf4\xfe\x00\x00'
 b'\x005q\xbe=\xf9\xbeu\xdd\xb2\x8eTH\xd2')

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

{'A1': 36332,
 'A2': 0.04275796562433243,
 'A3': {'B1': -2052698393,
        'B2': -0.5533910337832422,
        'B3': {'C1': -86,
               'C2': [{'D1': 63910, 'D2': 4408044160688713703},
                      {'D1': 61845, 'D2': 9237280936169488184}],
               'C3': 92,
               'C4': {'E1': 75,
                      'E2': 29291,
                      'E3': 74,
                      'E4': 17583,
                      'E5': [28453, 16003],
                      'E6': -0.05578626312570689,
                      'E7': -774247401},
               'C5': 12731217,
               'C6': [1754, -21268, 3294, -25590, -6830, -30791, -802],
               'C7': [8253947111973654696,
                      -7095520272326312679,
                      -8878428051978933930,
                      3760893936051299225,
                      -592424823477139414],
               'C8': 11},
        'B4': {'F1': 29118,
               'F2': 15865,
               'F3': -0.24010351300239563,
               'F4': 36436,
               'F5': 18642}},
 'A4': [16882, 1126, 55732, 27764, 60803, 31015],
 'A5': 2066,
 'A6': 8801}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

Структура H:

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

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

Пример 1

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

(b'\'SZDzemx6\x00\x04F\x00]9`\xd6*\x86g">6\x80\x00_\x80%\xc5\x10jQ'
 b'\xc4\xd6\xb5\x8b\x15\x08\x0fMB\xbb\x00\x00\x00\x13;\xfe\x87\\P\xbc\xc4xN*'
 b'\x9e\xc7\x8a\xa7Q\xcd\xca\xc9F\x99\xb8\xcc\xa0>\xe9%?\xbf\x15\xac'
 b'\xb6\xcct\x9bv?\x00|\x1bB\xa69\xbc?\xe7 \x83x/\xba\xe5\x83\xf0V\xba`|X'
 b'\x84**\x1b\xb7~\xb4\x19\xb7\xf9\x9e1\xf9\x87o\x06\xcb~\xca\xf0\xe1\x98CA'
 b'd~\x03\x00\x00\x00Z\x00\x0b\x03\x00\x00\x00`\x00J\x03\x00\x00\x00'
 b'f\x00\x15\x03\x00\x00\x00l\x00\xb2\x03\x00\x00\x00r\x00\x16\x02\x00\x00'
 b'\x00x\x00\xf1\x02\x00\x00\x00|\x00)4\xa4\xba_\xe8\x98\xd6\xbf\x158\xb7\x1ed'
 b'w\xdfU"\x1f\x14\x15\x07wK\x0e')

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

{'A1': {'B1': {'C1': 'zemx',
               'C2': {'D1': 3349031502,
                      'D2': -7402007064671574134,
                      'D3': 0.31406188011169434}},
        'B2': 4,
        'B3': {'E1': -0.7466722130775452,
               'E2': 44053,
               'E3': -13130,
               'E4': 0.9633095264434814,
               'E5': 0.11025466073941459},
        'B4': 93,
        'B5': 57,
        'B6': 3908599354632099424},
 'A2': {'F1': 100,
        'F2': [{'G1': 126, 'G2': [8423, 30851, -17873]},
               {'G1': 11, 'G2': [-31771, 22256, 24762]},
               {'G1': 74, 'G2': [22652, 10884, 6954]},
               {'G1': 21, 'G2': [32439, 6580, -1609]},
               {'G1': -78, 'G2': [12702, -30727, 1647]},
               {'G1': 22, 'G2': [32459, -3894]},
               {'G1': -15, 'G2': [-26399, 16707]}],
        'F3': 41,
        'F4': -0.3530827460149937},
 'A3': [3307569247, 3293669904, 361477590, 1112346376],
 'A4': {'H1': 6187795684926109717, 'H2': 1030047812086406946},
 'A5': 19,
 'A6': 8702287433322462779}

Пример 2

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

(b"'SZDgroo6\x00?F\x00\x00a\xdc\x96XF\xb4\xee\xfaX|\x00re\xe6gG\xa4\xb0"
 b'\xba4\xa8\x08\xc1\xea\xddeq\xb7\x00\x00\x00\x95:\xae\x13~\x90\x12'
 b'\xf4\xf5H\x16B\xf9\x8d\x9dj\x1c\xaaC\xd9\x8e\x9a\xc7O?\xbb\xd5Q>\xbf\xc8'
 b'\x9a\xbb\x10A2\xbc\x9c\xf9\x96\xe0\x08\xc2\xe1\xbf\xbc\xff\xd4j\x15\x9c'
 b'\xc6\x9b\xfa\xc7\x89{\x9ax\xa2\x8e|Z\x1c\xb0\xbd\xdc\x15\xba\xb5Tz\x146I'
 b'<\x01\xc4<a\x0f\x02\x00\x00\x00Z\x00\x92\x02\x00\x00\x00^\x00>'
 b'\x03\x00\x00\x00b\x00`\x02\x00\x00\x00h\x00P\x03\x00\x00\x00l\x00'
 b'T\x03\x00\x00\x00r\x00f\x02\x00\x00\x00x\x00\xbb\x9c\xc4\x82G\xbe'
 b'\xed\xd6\xbf\x88\xe0f\xb1\xa5\xb02\x0f{\x90e\xe8\x959"\x84')

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

{'A1': {'B1': {'C1': 'groo',
               'C2': {'D1': 4181857864,
                      'D2': -8153411252477321843,
                      'D3': 0.8116394281387329}},
        'B2': 63,
        'B3': {'E1': 0.20491687953472137,
               'E2': 51391,
               'E3': -17510,
               'E4': -0.010879769921302795,
               'E5': -0.554935873653267},
        'B4': 0,
        'B5': 97,
        'B6': 6411699477557057244},
 'A2': {'F1': 97,
        'F2': [{'G1': 15, 'G2': [-68, 27348]},
               {'G1': -110, 'G2': [-25579, -25658]},
               {'G1': 62, 'G2': [-14342, 31625, 30874]},
               {'G1': 96, 'G2': [-29022, 23164]},
               {'G1': 80, 'G2': [-20452, -9027, -17899]},
               {'G1': 84, 'G2': [21685, 5242, 18742]},
               {'G1': 102, 'G2': [316, 15556]}],
        'F3': -69,
        'F4': -0.3582606981609133},
 'A3': [1743152498, 3132138567, 3238570036, 1902501354],
 'A4': {'H1': 1095131885096853640, 'H2': 9521235878226530427},
 'A5': -107,
 'A6': -723933228299997638}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

Поле Описание
1 Массив uint8, размер 5
2 Структура F

Структура F:

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

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

Пример 1

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

(b'BAIB\xc0\xa7VM\x85\xce\xe3;\xd3c\xf0\xbe\x1ch\xb3M^\x00\x86\x00\x00\x00h\xfa'
 b"\x7fm'?\xbeH\xf0\xbaT\x15\xb5}\x8d\x035\xfb)\xe0\xf0\x06\xe7\x02\x00\x00"
 b'\x00(\x00\x00\x00G\xef\xd2\x02\xf19l\x08nl\xce;\x19=\x06\xab\x0b\x02\x00'
 b'\x00\x00A\x00\x00\x00\xcc\x15\x01\x02\x87\x93Z\xf3,\x00E\x00-D\xf2u\xf4\xe6'
 b'\x95^?\x06\xcf0?\x99\xe7\x02\x00Z\x00\x00\x00\xef\x80\t\xea4K\x9b\xeb\xe9'
 b"\xd9\xf9\xb9\x88\x96\x14\xa4\x84\x0e'X`\xb5\xff\xce\x02\x00\x00\x00v"
 b'\x00\x00\x00\xfa\x9e\x1e\x9a\x03[\xed\xfa\n\xbb\xf2\xf3\x03\xb4\x87\x82')

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

{'A1': 4315519939874564032,
 'A2': -0.46951159834861755,
 'A3': 1303603228,
 'A4': {'B1': 45,
        'B2': -193596860,
        'B3': 0.8694747686386108,
        'B4': 0.6906589269638062,
        'B5': {'C1': 59289,
               'C2': [{'D1': 116449321,
                       'D2': -25,
                       'D3': [909, -1227],
                       'D4': 606923757085454151},
                      {'D1': 2869312793,
                       'D2': 11,
                       'D3': [27758, 15310],
                       'D4': 17535490307183941068}],
               'C3': 239},
        'B6': -128,
        'B7': 9},
 'A5': {'E1': [88, 96, 181, 255, 206],
        'E2': {'F1': [-443065890187299606, 2814332657408051385],
               'F2': -6,
               'F3': 791205659715182238,
               'F4': -3397,
               'F5': 243,
               'F6': 2189931523}},
 'A6': -1432,
 'A7': 0.654014527797699,
 'A8': 9058169679183366334}

Пример 2

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

(b'BAIB\x0e2\xfc61\xdd6:#\xf5\x85>\xf8\xbd\x10\x9f`\x00\x98\x00\x00\x00\xf5"'
 b'\x11y\xb2>D!\xed\xb1O\xd2jTA\x94\x0e\xda\x98g\x10U\x11\x02\x00\x00'
 b'\x00(\x00\x00\x00\xbd\xa5\x16\x80\xa5\xfb\xc5n\x1f\xd6\xc9\xb5\xa1\xb6\xb7'
 b'M\xbc\x89\x1a\x03\x00\x00\x00A\x00\x00\x00SqhZ\x18/\xb4[,\x00G\x00'
 b'\xf7\xdd\xeaM\x1e\tc7\xbf\xaf\x0f\xe2\xbe!\x81\x02\x00\\\x00\x00\x00ih\xa5'
 b',\xc1\x8d\x1b\xdb\x12\x95\xe0\xc6\xd4~\xd0E|\x887\x99d\xd2e\x84C\xdb}'
 b'\xc5\x97U\xdf`\xd3w(.]\xf8\\\xfc\x04\x00\x00\x00x\x00\x00\x00\x9ebu'
 b'\xad\x15e\x96Q\x9d)y\x1a\xfd\x06\x89\xa3')

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

{'A1': 4194783306387829262,
 'A2': 0.2616358697414398,
 'A3': -1626292744,
 'A4': {'B1': -9,
        'B2': 508422877,
        'B3': -0.7163549065589905,
        'B4': -0.4415259063243866,
        'B5': {'C1': 33057,
               'C2': [{'D1': 1427138456,
                       'D2': 17,
                       'D3': [-27583, -9714],
                       'D4': 7982062602821215677},
                      {'D1': 2310819255,
                       'D2': 26,
                       'D3': [-10721, -18999, -18783],
                       'D4': 6607958334901875027}],
               'C3': 105},
        'B6': 104,
        'B7': -91},
 'A5': {'E1': [46, 93, 248, 92, 252],
        'E2': {'F1': [-2263882505414393556,
                      4001584908211246278,
                      9068916510563656857,
                      2916031696762935237],
               'F2': -98,
               'F3': 11336007097967801698,
               'F4': 31017,
               'F5': 26,
               'F6': 2743666429}},
 'A6': 8949,
 'A7': 0.34857991337776184,
 'A8': 6082905486446633284}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'DBV\xcd\x93\xe2\xe3\x8c\x06\xae\xdc\x00~\xe5M;<_\x85\xab\xaa9t\xab'
 b'\x0b\r\xd2Z\xcb\xf4\xbf\x9d\xdf\xf77(\xb6\x00\xd2\x8bZ\xaf\x9b\xb8\xdf\xf0u*'
 b'\x95`\xca\xd6D\xd3\xa9\xf7\xcfg\xcf\xef\xb6B\x16\x04Y\xf9\xf77'
 b'\xd1\x1c\xbe\xbd\xf3\xd0\x00\x00\x00\rjX\xce\x91\x00\x00\x00\x04\x00\x17'
 b"\x00\x02\x00\x00\x00'\x00\x00\x00\x02\x00\x00\x00/\xc1\xd9\x00\x00\x00\x02"
 b'\x001\x00\x02\x00\x00\x009\x00\x00\x00\x05\x00\x00\x00A\xf6\xec\xe3\xae'
 b'\\\xd2I>\x1f0\x00\x00\x00F')

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

{'A1': 14813433066286395100,
 'A2': {'B1': 16406152550798991152,
        'B2': {'C1': -0.3710007667541504,
               'C2': {'D1': 58701, 'D2': 4268391574555736436},
               'C3': 1784204945,
               'C4': [{'E1': [-1425338926, 1523315903, -1646266569, 683016402],
                       'E2': [-1956991077, -1193283467],
                       'E3': [42, 149],
                       'E4': -15911},
                      {'E1': [1623905860, -743835697],
                       'E2': [1741680566, 1108739161],
                       'E3': [249, 247, 55, 209, 28],
                       'E4': -2324}]}}}

Пример 2

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

(b"DBV\xaea7T\xd2.\xb0\x8f\x00\x86\x0f'\xb26\x82\x82Q\xf8\x17\xbe\xd4"
 b'z\xb0\xa9\xf00P\x05.\xddi2\x05\x01\t\x10\x9a=\x80\x1b\xfa\xce;\x1b\xbb'
 b'\x82\xaa\x03\xac\x94\xb8\x9c\x1b\x84!_\x15\x07\xc4U2\xfe\xcej\xfe'
 b'\xd2\x993\x96\xc2\xbd\xc7\xee\xc8\x10\xbfs\x1e\xa6\x00\x00\x00\r\x8ae'
 b"\xcf^\x00\x00\x00\x04\x00\x17\x00\x02\x00\x00\x00'\x00\x00\x00\x06\x00\x00"
 b'\x00/-f\x00\x00\x00\x03\x005\x00\x02\x00\x00\x00A\x00\x00\x00\x05'
 b'\x00\x00\x00I\xa3jDR\rm0%\xdf\xed\x00\x00\x00N')

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

{'A1': 12565385272783450255,
 'A2': {'B1': 4923012105279758317,
        'B2': {'C1': -0.9496864080429077,
               'C2': {'D1': 3879, 'D2': -5605149189983430722},
               'C3': -1973039266,
               'C4': [{'E1': [-730156887, -265269243, 786262322, 83953936],
                       'E2': [-1707245541, -87147749],
                       'E3': [187, 130, 170, 3, 172, 148],
                       'E4': 11622},
                      {'E1': [-1197728892, 559879431, -1001049346],
                       'E2': [-831848750, -1724672318],
                       'E3': [189, 199, 238, 200, 16],
                       'E4': -23702}]}}}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x06QLVY+=,/r\x00\x02\x00\x17\x00\x02\x00\x00\x00\x19(\x00`bb\x12\xa0?'
 b'\xe4\x1e(F\xea\xabtg\xfd\xbf\xea\x90\xf8r\x11\xc0\x98=\x05\xa2n\xe1\xc9\xdf'
 b'\x1a\xdc\x88\x80iXm\xbd_\x14\xed?\xb5>~\x8aV\x0c\xc0\x86B\x88w\xf4'
 b'\x00\xb6\xcd*\xcdg3\x00\x03\x004\x1b\xd7p\x89\xa7h=\xca7\x00-\x007E')

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

{'A1': 43,
 'A2': 0.04203743487596512,
 'A3': 'bb',
 'A4': [{'B1': 4768, 'B2': 0.6286813149539356},
        {'B1': 26621, 'B2': -0.8301965930859465}],
 'A5': 40,
 'A6': {'C1': {'D1': 61, 'D2': 94531297, 'D3': 51679},
        'C2': {'E1': 2154387565,
               'E2': -0.05446331575512886,
               'E3': 0.08298483731600736,
               'E4': -2042460041,
               'E5': -864490136152479949,
               'E6': [26, -36, -120],
               'E7': [27, 215, 112, 137, 167, 104, 61],
               'E8': 51767},
        'C3': 69}}

Пример 2

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

(b'\x06QLVY\xb3\xbb\xe7\x8e\x9d\x00\x07\x00\x17\x00\x05\x00\x00\x00\x1e'
 b'\x8f\x00\x86prqfviv\xff\xa1?\x87<\xf9\r\xf0\x9b\x00k\xca\xbf\xe6'
 b'\xae\xc0\x97b~\xdc\x90\xae\xbf\xe7\xbb\xfe\xc9gk\x80\xa9?\xbf\xe6w\xf52r'
 b'\xb5\x08L2\xbf\xe4g\x1cIt\x17\x109E\x9e\xae\x87\xff\xaf\xf0-W\xef\x1b'
 b"\xeb\xb2~N\xb5=\xdb\x11o?\xd2\x1e\xc0\x8a\xef\xa2\x94\xee\n!\x02\xa0'-"
 b'\xba5i\xebg\x00\x06\x00W\x8f?\xb1\xc0\xd2\x9cJ\xc44\x00P\x00]\xaa')

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

{'A1': -77,
 'A2': -0.007066561374813318,
 'A3': 'prqfviv',
 'A4': [{'B1': 65441, 'B2': 0.011346765268240855},
        {'B1': 27594, 'B2': -0.7088320690854419},
        {'B1': 37038, 'B2': -0.7416986402198376},
        {'B1': 43327, 'B2': -0.7021432862581216},
        {'B1': 19506, 'B2': -0.6375867304456921}],
 'A5': -113,
 'A6': {'C1': {'D1': 57, 'D2': 1168027271, 'D3': 65455},
        'C2': {'E1': 2994622133,
               'E2': 0.10696684569120407,
               'E3': 0.2831269604489901,
               'E4': -301326078,
               'E5': -6906501225766065305,
               'E6': [-16, 45, 87, -17, 27, -21],
               'E7': [143, 63, 177, 192, 210, 156, 74],
               'E8': 50228},
        'C3': 170}}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"PHLJ\xd22\xc1t4\x8cX\x9d@'\x00\x00\x00a\x00\x00\x00 \xd9\x95\x00\x01MD"
 b'T\xe7\x13\xcb\xdc\x7f^)\xf0\x9e\xed\x02\x00#\x00\x9az`\xe7\x90DY?n/Y\xbeX'
 b'Kp?\x1b\xe3\xf9\x009\xc7\xf91\xfcOD\xe2$\xe5\xec\x1c\xd8*\xc9\x7f\xdd'
 b'\xbf\xfa\xed\xe6\xed\xcdf<\xab\xe7\xceR\xd0_\xa1\xc7\xbd\x03\x00[\x00\xe0iO'
 b'\x15\xe6\xadB\xbf\x0b\x96\t\xbf\xcffO\xbf\x97\x1b\xff3\x00\x1fkm\x16]R'
 b'\x1f\xb0\xff\\r\x8e\xaf\xd3\xce\xe2\xbfr7+\xe5\xa4{"|\xf4]\xd4B540\xb5\x95'
 b'\x0f\xf43\x8eD?\x05\xdd\xbf')

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

{'A1': 4655974948969693490,
 'A2': [{'B1': [-4055, -4706],
         'B2': {'C1': -413107558,
                'C2': [0.8487024307250977, -0.2120949923992157],
                'C3': 0.9386496543884277,
                'C4': [58139, 249, 51001],
                'C5': -1935173156834889223,
                'C6': -0.460924426879912},
         'B3': -6107893959975571974,
         'B4': -12569},
        {'B1': [-12206, -24225, -16953],
         'B2': {'C1': 357525984,
                'C2': [-0.7604659795761108, -0.5374457240104675],
                'C3': -0.8101624846458435,
                'C4': [7063, 13311, 7936],
                'C5': -22483559527322261,
                'C6': -0.5877474240147182},
         'B3': 8944847758060894066,
         'B4': 24052}],
 'A3': -9952,
 'A4': {'D1': 1123002900737770196, 'D2': -0.45344525999899976},
 'A5': 19713,
 'A6': 6809403926377878596}

Пример 2

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

(b'PHLJ\xd2)~S\x11`Z+\xf7)\x00\x00\x00a\x00\x00\x00A\xea\x95\x00\x06+\x11'
 b'\x11\x1b\xbb\xa28\xb0m\t%\xa5$\xd7`\x03\x00#\x00\x88g\xcd\xca \xfe\x06'
 b'>\x8a\xe8P\xbf\xc8I\xa9>u\x89\x8dNr\xfe!G\xca\xac\xaa\x12`\x0b\x0c'
 b'\x7f\x80\xeb\xff\xfc\xd8\xbf\x00\xc1\x15\xc8\xe8(\x06\xfa\x85\xfe\x94ys'
 b'\xf7\x02\x00]\x00\x8b~dV\xb0\x167>6\x9e\x05?\xe9`\xb1\xbe\xc4\xbdZ.P\x1d\x9f'
 b"\x00u'\x10\x0b\xff7$j\xdb\xbcK\xcd\xea?y\xc4~P\xb2ndU\xcc\xed&7,~j\x9dV"
 b'\x9b\xf4\x82G\x11P\xaf\xe5\xbf')

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

{'A1': -636315553688748503,
 'A2': [{'B1': [9481, 9381, 24791],
         'B2': {'C1': -892508280,
                'C2': [0.13182878494262695, -0.816048264503479],
                'C3': 0.3306410312652588,
                'C4': [35189, 20109, 65138],
                'C5': 819675656434108193,
                'C6': -0.39044187544094267},
         'B3': -430611734112911104,
         'B4': -379},
        {'B1': [31124, -2189],
         'B2': {'C1': 1449426571,
                'C2': [0.17879748344421387, 0.5219453573226929],
                'C3': -0.34644249081611633,
                'C4': [48580, 11866, 7504],
                'C5': 4034955955156615327,
                'C6': 0.8375605286231047},
         'B3': 6153164703028659321,
         'B4': -4660}],
 'A3': -5567,
 'A4': {'D1': -7253437069124683994, 'D2': -0.6776504838454387},
 'A5': 11014,
 'A6': 7903879617610191121}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'OQIYy\x91\x00\x03\x00:\xbf\xe0\x1aUm\xff@\x10\x11T\xac7{\xa4`\xc8`\x84'
 b'\xa6{i\xc6`\xcc*>\xed\xaf\xa2\xba?\xc2-\xd1u\x82\xa7X\x00\x03\x00W'
 b'\xd4\x05a\x1c\x9a\xbemyvhv\x82\xa2\xf3\xeb\x1dMt\x89\x0fG>Uy\xa1\xb1\xc0\xa4'
 b'\x89\xf20\x12\xa6\xef\xa5\x00\x00\x00\x02\x00=?.\rd\xc1\xa2\x03'
 b'\xa0\xee\x00\x00\x00\x08\x00?\x00\x00\x00\x03\x00G?;7*\x95\xf4\xae\xeb\r\x00'
 b'\x00\x00\x04\x00J\x00\x00\x00\x03\x00N>0\x8bM\xae0\xdc\x9a=\x00\x00\x00\x06'
 b'\x00Q')

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

{'A1': {'B1': {'C1': 145, 'C2': 'myv', 'C3': -0.5032145641689585, 'C4': 17},
        'B2': {'D1': 6101312599358490720,
               'D2': -8888281120339080150,
               'D3': 0.46423059701919556,
               'D4': -70},
        'B3': 0.1420232604771694,
        'B4': [{'E1': [104, 118],
                'E2': 0.67989182472229,
                'E3': [193, 162, 3, 160, 238],
                'E4': [130, 162, 243, 235, 29, 77, 116, 137]},
               {'E1': [15, 71, 62],
                'E2': 0.7313104867935181,
                'E3': [149, 244, 174, 235, 13],
                'E4': [85, 121, 161, 177]},
               {'E1': [-64, -92, -119],
                'E2': 0.1724063903093338,
                'E3': [174, 48, 220, 154, 61],
                'E4': [242, 48, 18, 166, 239, 165]}]},
 'A2': 54277,
 'A3': 1629264574}

Пример 2

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

(b'OQIYyz\x00\x02\x00:\xbf\xcdW*\x13\xe6\x0f\x08.\x11\x8d\xeb\x1b\xb1=\xc7\xc1T'
 b'\xdb?X6\xf7C\xe8?\x01\x13\xdf\x98\xbf\xe8/S\x14}+\xb6\x00\x04\x00Y\xc8\x13hI'
 b'!XdrH\xa6\xeeh\xd4\x87u\xf0LA=\xbd\x04Xm\x8b\x00\xa0U{].\xa5\xf9'
 b'\xd35\x12\xcb\xb0\x00\x00\x00\x02\x00<>.\x0f\x9a_\xc9\x9c}x\x00\x00\x00\x07'
 b"\x00>\x00\x00\x00\x02\x00E\xbe\xaen]\xe7'\xee.1\x00\x00\x00\x02\x00G\x00"
 b'\x00\x00\x03\x00I\xbf xP\xbb\xc1\xb3\xfaX\x00\x00\x00\x02\x00L'
 b'\x00\x00\x00\x03\x00N\xbf1\xe2\xfeq_\xd5C\xa2\x00\x00\x00\x08\x00Q')

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

{'A1': {'B1': {'C1': 122, 'C2': 'dr', 'C3': -0.22922254535307496, 'C4': 46},
        'B2': {'D1': 1264925574531237825,
               'D2': 6114550567197426664,
               'D3': 0.5042094588279724,
               'D4': -104},
        'B3': -0.7557769203352709,
        'B4': [{'E1': [72, -90],
                'E2': 0.16998139023780823,
                'E3': [95, 201, 156, 125, 120],
                'E4': [238, 104, 212, 135, 117, 240, 76]},
               {'E1': [65, 61],
                'E2': -0.34068575501441956,
                'E3': [231, 39, 238, 46, 49],
                'E4': [189, 4]},
               {'E1': [88, 109, -117],
                'E2': -0.626835823059082,
                'E3': [187, 193, 179, 250, 88],
                'E4': [0, 160]},
               {'E1': [85, 123, 93],
                'E2': -0.694869875907898,
                'E3': [113, 95, 213, 67, 162],
                'E4': [46, 165, 249, 211, 53, 18, 203, 176]}]},
 'A2': 51219,
 'A3': 1749623128}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"FDC\x15Q\x1c;'\x000\x009\x00B\x00K\x00T\x00]\x00\xe5\x08\x1f\x10fVs"
 b'\xf7m\x00Qt\x89g\x12\x0b\xc8\xc4\xd7\xecp$\xdb\xech\x07\xc6\xe2\x84\x93O'
 b',\xe9\xd1\xa0\xc4l\xbe\xab\x19\x81P\x00h$\xbf\x11\xf4\xb6=sA\xdc\xa7\x05'
 b'\xc6+\x94\x16\xb5\xcfV]0\x0bj\xde\xa5\xe7\xa6\x1d\xf6\x1b"\xc3{|\xa6\xe0'
 b"\xf2\x1cyvaebxj\x07\x00\x00\x00f\x00\xc8\xfc\x1a;\xec\x0cA.\xd6=<Q'"
 b'\xb8\xfb/\xe3\xbfa\xd1gl\xd6\xed\xa5\x8d<\xa9\xfc&q\xc4\x16\xa6\xab\xbdY'
 b'1\xc2\xbd`\xd5N\n\xfb\x07\xb9?\xf1z@\xc2')

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

{'A1': 991711509,
 'A2': [{'B1': 533936981796777175, 'B2': 198},
        {'B1': -6858444380985654046, 'B2': 196},
        {'B1': 7494078295356194412, 'B2': 36},
        {'B1': -2575650802979565121, 'B2': 167},
        {'B1': 6255417516020712965, 'B2': 93},
        {'B1': 2136649772820990768, 'B2': 246},
        {'B1': -945572868165262821, 'B2': 28}],
 'A3': -616053727662503707,
 'A4': {'C1': 'yvaebxj',
        'C2': -824,
        'C3': {'D1': 15130,
               'D2': 3308,
               'D3': 0.10458040982484818,
               'D4': -0.5996073338269876,
               'D5': 10206825635702624609,
               'D6': 654092604},
        'C4': 50289,
        'C5': [-0.08381287753582001, -0.09482068568468094],
        'C6': 0.0977780246892812,
        'C7': [31473, -15808]},
 'A5': 14179595600450384977}

Пример 2

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

(b"FDC\x12\x02\xc8n'\x000\x009\x00B\x00K\x00T\x00]\x00\x15Q\xdf\xa2B\xf6\x96"
 b'\x01i\x00\x0e\x15{\x94\xce\x02N\x1e\xf0(\xc1\xd6\xed\xad\x00\x92\x05'
 b'\x9f\x84\xc0\xda\x86\x86+\x82RQ\xcbw\xeb\xb1\x17M\xadh\xde\xbd'
 b'\x1f\xe4\xf7\xd7y\xaaA8:k\xa9/fZ\x18;\xd8P\xb4\xf4\xb4l\xa6\xe3$\xb6\x9a\\'
 b'\xba\x1c\x93\xb5\xa1\xa2jms\x03\x00\x00\x00f\x00;\xe3\xbd-\xc0\xf9N\xcag'
 b'\xbbzS\xb2|\x1ff\xe4\xbfU\xcb\x83\xb9\xfe\xac\xc8DY\xce=\x16\xdbuc'
 b'\xaa\x19\xbfi\x19<?\x08\x05A\xc8#\xdb\xc0\xbf\xca<\x98s')

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

{'A1': 1858601490,
 'A2': [{'B1': -7926144107150235408, 'B2': 5},
        {'B1': -9067005511026572129, 'B2': 82},
        {'B1': -5959080679014151343, 'B2': 104},
        {'B1': -6162657155395633698, 'B2': 65},
        {'B1': 1754827359706102328, 'B2': 59},
        {'B1': -2042825856510570280, 'B2': 36},
        {'B1': -6794362711223526730, 'B2': 162}],
 'A3': 114549606605345045,
 'A4': {'C1': 'jms',
        'C2': -7365,
        'C3': {'D1': 11709,
               'D2': 63936,
               'D3': -0.003536838572472334,
               'D4': -0.6374661860923958,
               'D5': 4956401599955323733,
               'D6': 373149273},
        'C4': 30171,
        'C5': [-0.6002561450004578, 0.7347627282142639],
        'C6': -0.1316876151850368,
        'C7': [15562, 29592]},
 'A5': 2183685955598882062}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'aPQPE\xa3\x05\x00;\x00aM\xb5R\xa3\xdf\xc4\xef\x01y\x08\x8c\x94\x0fwU\xbe:'
 b'\xec?)\xd7\x86\xbd\x03\x00\x00\x00v\x00\x00\x00\x03\x00|\x00\x00\x00'
 b'\x8f\x02\x00\x00\x00\x88\x00\x00\x00\xcb\x95ioygu]u\x00?\x95O\xe0\x05'
 b'\x0bz\xd0\xd2\xd1\xb3\x80\xbe\x06\x935\xd3\xba>\xe7\x85\xa6f\xeb\xf4,\n|\xd2'
 b'S?\x9eZ\xce\xc4G?\xef7\xed\xcf\xe3\x1c\xd0xI\x95\xf1\xbe\xdc\x9a@\x00'
 b'R\x00d\x007\x16Ht\xae/4\xee\x8f\x02;\xeb\x80\x07\x03uOf\x16u')

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

{'A1': {'B1': 163,
        'B2': 'ioygu',
        'B3': {'C1': -1169564110649209503,
               'C2': 2349365505,
               'C3': 0.882170836376178},
        'B4': -0.06584007292985916,
        'B5': [{'D1': 0.5017908215522766,
                'D2': [20373, 1504, 31243, 53968],
                'D3': -0.2513718903064728,
                'D4': 37638},
               {'D1': 0.3648926317691803,
                'D2': [34279, 26278, 62699, 2604],
                'D3': 0.8274304866790771,
                'D4': 23198},
               {'D1': 0.7803467512130737,
                'D2': [14319, 53229, 7395, 30928],
                'D3': -0.47184208035469055,
                'D4': 39644}],
        'B6': {'E1': [1950881335, -298569810, -348454257], 'E2': -113},
        'B7': [1963132800, 1964402255]},
 'A2': 203,
 'A3': -107}

Пример 2

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

(b'aPQPE\x83\x02\x00;\x00\xcc@\xad\x88 P\xa4\xe1\xfc<\xe5I\xa6\xdc\xf7F\x0bo'
 b'\xe7?O1\x0b?\x02\x00\x00\x00a\x00\x00\x00\x03\x00e\x00\x00\x00R\x02\x00\x00'
 b'\x00q\x00\x00\x00_tjs\x94\x1d\xbf>lJp.\xfdXtp*\x9am?\x8f\x84\xc634?\r;f>\x94'
 b"\xc5'\xed\x95a\xa4\xbd\xbd\xf0=\x00O\x00\xc9\x1b\xc1\r$\x7f\xa2>\x03\xf9\xee"
 b'+\x8e\x03\x0bK\xf1\x9d\x85\xd6')

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

{'A1': {'B1': 131,
        'B2': 'js',
        'B3': {'C1': -2187535418332987188,
               'C2': 1239760124,
               'C3': 0.7323051820848334},
        'B4': 0.5437211394309998,
        'B5': [{'D1': 0.37327253818511963,
                'D2': [19052, 11888, 22781, 28788],
                'D3': 0.9281336069107056,
                'D4': 33935},
               {'D1': 0.703914999961853,
                'D2': [15117, 15974, 50580, 60711],
                'D3': -0.08026424795389175,
                'D4': 61629}],
        'B6': {'E1': [230759369, 1050836772, 737081603], 'E2': 82},
        'B7': [1259013006, -695886351]},
 'A2': 95,
 'A3': 116}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xc8CHHXz\x8c\x02\x00<\x00\xf4\x90{\xbf\x00\x0f\x03\x00>\x00\x02\xdaw?us\x05'
 b'\x00A\x00\xadg:?S\xa0K\xae\x95d\xa7t70Y\xc5e\x00\x00\x00n\x89G?0'
 b'\x0e\xe1\xfa\xe7ptwzyefudu\x19\xed\x86\xe3\x01\xb3#\xa9m\xd6\xc93\xa7M'
 b'\xd0y\x89<i\xe8\xa9\xf2f%p\x17\xd5G\xdf\xe2\xc9F\x00\x00\x00\xa9')

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

{'A1': [{'B1': -29574, 'B2': 'pt', 'B3': -0.9826805591583252},
        {'B1': 3840, 'B2': 'wzy', 'B3': 0.9681702852249146},
        {'B1': 29557, 'B2': 'efudu', 'B3': 0.7281444668769836}],
 'A2': {'C1': 41043, 'C2': 44619},
 'A3': -4226293760572037995,
 'A4': {'D1': {'E1': [25, 237, 134, 227, 1, 179, 35],
               'E2': [3386273193,
                      3494750003,
                      1765575033,
                      1727179240,
                      3575083045,
                      3387088711]},
        'D2': -87},
 'A5': 1061652846,
 'A6': 4209053232,
 'A7': -25}

Пример 2

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

(b'\xc8CHHX\x9f\x92\x03\x00<\x00\xbdq\xae\xbd\xed\xb4\x03\x00?\x00\xb8\xec\x8b'
 b'>\r\xd5\x02\x00B\x00\xcb\xea\x11?)\xe7;\xe8\x82h\x12*E\xe9\xe5@c'
 b'\x00\x00\x00\xee\x98\xfb\x9fID\xf9$\xf1sikwfmfvO\xcf\x1a\xc5\x92\xf1Y\x07'
 b'\x98\xbb\xa5\xf5\xcfW\x16\xbe\xba\x92\xa4\xf5C\xf0}\x99[\xea\xf6\xa1t\nND'
 b'\x00\x00\x00\xe2')

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

{'A1': [{'B1': -28001, 'B2': 'sik', 'B3': -0.08517787605524063},
        {'B1': -19219, 'B2': 'wfm', 'B3': 0.27329039573669434},
        {'B1': -10995, 'B2': 'fv', 'B3': 0.5699889063835144}],
 'A2': {'C1': 59177, 'C2': 59451},
 'A3': 4676400271361992834,
 'A4': {'D1': {'E1': [79, 207, 26, 197, 146, 241, 89],
               'E2': [2780534791,
                      374853621,
                      2761079486,
                      2112898037,
                      4142554009,
                      1309308065]},
        'D2': -30},
 'A5': -1610901266,
 'A6': 620315721,
 'A7': -15}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x0bEAUR\x02\x00\x00\x00<\x00\xfd\xfe\x12/w\xcdm"\xa0\xa0c^sjUL\xec'
 b'\x91B\xf6wn@\x06[\xfa\xd0\x0b8\x85\xb8\xf2sPXplp\xc3\xcf\xc3\x14\xe0\xfaN'
 b'\xdb\xd6>\xbc\xfa\x1c\x9e}\xe2F|Cd\xb9\xf1\x99\xbc>\xc5\xcbL>\xe3$'
 b'\xe3\x12\x00\x00\x00"\xc85\x0bNn?\\\xdb\xa3\x0c\xd3OQ?\xb7\xfa\xf4<+\x9a\n\''
 b'\x00\x00\x00\xc7')

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

{'A1': {'B1': [{'C1': 4862839636237360378,
                'C2': -18076,
                'C3': 0.3683619797229767,
                'C4': 0.19999606907367706,
                'C5': [-29, 36, -29],
                'C6': {'D1': 1671471138,
                       'D2': [94, 115, 106, 85, 76],
                       'D3': 450481424248771052,
                       'D4': [64091, 3024]},
                'C7': 34},
               {'C1': -2640165538557643320,
                'C2': 3235,
                'C3': 0.8176242709159851,
                'C4': 0.02990470640361309,
                'C5': [43, -102, 10],
                'C6': {'D1': -222788296,
                       'D2': [115, 80, 88, 112, 108],
                       'D3': 5691107458925183856,
                       'D4': [55003, 48190]},
                'C7': 199}],
        'B2': 253},
 'A2': 1999573758,
 'A3': 28109}

Пример 2

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

(b'\x0bEAUR\x03\x00\x00\x00Q\x00\xa3\x11 \xd8\xbc\x8b\xbf\xfe\xbf\xb1\x11\x8bC'
 b'O\x18\xcf\xf7\xcb\xb2\xc6\xc4\xb5IY\xbe\xb3I-Xf\x10"\xeaD8\x1e\xb6\x19\x12u)'
 b'\x12r\xbaK\x1b\x8e\xfd\xc6)\xb9\xd9/i\xc4\xd2\xa8\xbc\xec\xa0\x81'
 b'\xa5\xa2i\xae\tm\xb2\x83=\x83\xc3\xcd\xef\x15\xd4\xe1\xb2\x11\xbde\x7fW?\n'
 b'\xceb\xbf5\xdbR\x12\x00\x00\x00\xf3\x00\x82\xd3\x1b]\x0f]\x17\xdd\xb0hj\xaa'
 b"=\xe5\x13\xb0\xbd\x91D\xea'\x00\x00\x00\xbe.-+\x8cO\xf3\xde\xfd;*\xcb"
 b'\xca"\xbd2\xf0\xed>\xec \xb1<\x00\x00\x00\xdb')

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

{'A1': {'B1': [{'C1': -5556927274515840125,
                'C2': -17135,
                'C3': 0.8417876362800598,
                'C4': -0.8859564065933228,
                'C5': [53, -37, 82],
                'C6': {'D1': 296861694,
                       'D2': [-117, 67, 79, 24, -49],
                       'D3': 6433873399427288055,
                       'D4': [46014, 11593]},
                'C7': 243},
               {'C1': 1683518728279654912,
                'C2': -20259,
                'C3': 0.0832107663154602,
                'C4': -0.08597544580698013,
                'C5': [-111, 68, -22],
                'C6': {'D1': 571500120,
                       'D2': [-22, 68, 56, 30, -74],
                       'D3': 5456799320843293209,
                       'D4': [36379, 50941]},
                'C7': 190},
               {'C1': -153417814304412370,
                'C2': 10811,
                'C3': -0.03974417969584465,
                'C4': 0.4647231698036194,
                'C5': [-20, 32, -79],
                'C6': {'D1': 802797865,
                       'D2': [105, -60, -46, -88, -68],
                       'D3': 697611139571359980,
                       'D4': [45677, 15747]},
                'C7': 219}],
        'B2': 163},
 'A2': 3168280593,
 'A3': 49035}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'PJW\x11\x00\x17\x00\x1d\x00\x05\x00#\x00w\x00\x00\x00\x1a\x17\x9fF\x0b\x9bO'
 b"\x05r'f\xfbZ\xf0c\xc4\xc2\xef\xa0}\xd5\xaa\xbf\xae\xcc?\x08\xf6\xb8v\xa1"
 b'\xb5\xdb?\xbc\x96u\xa4\xbc\xba\xd5\xbf\xd0\xe0T\xa1\x159\xc8?\x90'
 b'\xee\xc3\xfdW\xf0\xc7?\xe6\x11\xd1.\x88\x1b]\xc5\xb8\x18\x9d\xb1\x82fB\x05^'
 b'e\x14?.\x0c\x0c=t\xee\x1a=\xe9\x9aF\xbd\xf2d\x11?u<OdVB\xc2\xd6\x02'
 b'\x00\x00\x00K\x00\x00\x00\x00]\xee\xd9\x99\x8a\xafBnS\x00\x00\x00')

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

{'A1': [{'B1': 1184831258, 'B2': 39691},
        {'B1': 661783887, 'B2': 64358},
        {'B1': -1000083366, 'B2': 61378}],
 'A2': [0.2240829071188104,
        0.43296085924143357,
        -0.3395225149200589,
        0.18924208047406532,
        0.18702220812689463],
 'A3': {'C1': [785453542, 3311213448],
        'C2': 4805211720818515200,
        'C3': 110,
        'C4': {'D1': 378978030164187320,
               'D2': [0.5796717405319214,
                      0.034191302955150604,
                      0.03782506287097931,
                      -0.048487577587366104,
                      0.5679465532302856],
               'D3': 15475004208415980661}}}

Пример 2

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

(b'PJW\x11\x00\x17\x00\x1d\x00\x02\x00#\x00_\x00\x00\x00\x164\xba'
 b'\x15\xe5\xa9\xcfW\xf6\xbf{\x14/D=\xd4p\x9e\x94\xf6\t^cJ\xe8\xbf\\'
 b'\xd7\xfb\xde\xb29\xee\xbf^\xdcdc\xd0\x0b\xc7\xb5\xa2\xbeVX\xc4'
 b'\xfc\xb6\xd7\xf1\x81&\xbdcU\x05?\x15\xc1\x9d\xbe\xdd\xc50\xbf\xdf'
 b'\xe9\x1a\xbe\x8c\xb3\xa3\xa7\xbd\xad\xcd\x81\x02\x00\x00\x003'
 b'\x00\x00\x00\x83\xc0\x0c\xa3\x12\xa6\xd2\xe4\xae;\x00\x00\x00')

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

{'A1': [{'B1': 364524566, 'B2': 43493},
        {'B1': -1074374705, 'B2': 5243},
        {'B1': -734182353, 'B2': 40560}],
 'A2': [-0.7590805851647979, -0.9445433001662695],
 'A3': {'C1': [1667554398, 3049720784],
        'C2': -1958320288977600381,
        'C3': 174,
        'C4': {'D1': 15543889084141715106,
               'D2': [-0.040651265531778336,
                      0.5208341479301453,
                      -0.3081137239933014,
                      -0.6905191540718079,
                      -0.15128277242183685],
               'D3': 9353323031191335820}}}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'pJNIJ\xb6o\x00\x03\x00{\\\xbe5\x97\x826\x19\x85\x0e\x0fC\xb8?\x0b\x84\xb5X'
 b'K_\xa7\xb8\x0f\x0c\xbf\x1a\x85cLU\xf4*Pht\xbeH\xc1\t\nd\xc7\xa7\xad\x9a\xe8'
 b">k\x93:\x9bx\x93\x97\xe2\xe9V\xd2\xcf[\x0c\xc8\xb6\xbf'\xc3;(\x133"
 b'\xf4\xda\x981h\x1f\x07\x85\xa6\x16\x13\xa7\xc4H\xcb?\xed\xcd\x05\x18'
 b'\x82\xfcR"\xd42\xc5\xfd\x83\x8e\x9eY\x08\x15V\xef\xce\x00\x05\x00\x00\x00~z'
 b'ed>\xc2\xe2\x94=\xc4\xd3\x91>\xee\xd2A>\xe3~H>\xac\xb82')

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

{'A1': 46703,
 'A2': {'B1': 'zed',
        'B2': [{'C1': 92,
                'C2': -0.17733576893806458,
                'C3': 13849,
                'C4': 2232291139},
               {'C1': 184,
                'C2': 0.5449936985969543,
                'C3': 22603,
                'C4': 1604827151},
               {'C1': 12,
                'C2': -0.6035978198051453,
                'C3': 19541,
                'C4': 4096413800},
               {'C1': 116,
                'C2': -0.19604887068271637,
                'C3': 2660,
                'C4': 3349654938},
               {'C1': 232,
                'C2': 0.23005381226539612,
                'C3': 39800,
                'C4': 2476204777}],
        'B3': 86,
        'B4': -758162676,
        'B5': -14154,
        'B6': -0.6553227305412292},
 'A3': {'D1': [2887708912807063912, 2235902688394192836],
        'D2': {'E1': 18635,
               'E2': 0.9312768439048205,
               'E3': 584331973,
               'E4': -3,
               'E5': 131}},
 'A4': 10276749290958680014,
 'A5': [0.3806349039077759,
        0.09610665589570999,
        0.4664478600025177,
        0.4443228244781494,
        0.3373427987098694]}

Пример 2

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

(b'pJNIJ\x0e\xd1\x00\x02\x00{;>\xe87\xb2\x81+\x040\x9c\x8e\x91=\xd8\xdd\xb5\xdd'
 b'\x01>Y%\xc0\xb0\xbfia<_1Wy\x1a\xcd\xb7\xbd5\x95\xf0\xa6>s\xb2~MP'
 b'\xbeW\x19\x10\xab\xb4\xb2\xa1%ea[b\xa6\xf0(B\xbe\xa7l\xdc[\x01X\xe8\xd6D\xd4'
 b'2)2\x00<\xfd\xc7\xac\xe4k\x88?\xe9-\x97H\x0304\xeb^\x8cY\xe5\xd0\x15U\xca'
 b'\xed\x16y>\x16\x00\x04\x00\x00\x00}oz>\x17\xe5v>\xac\xe1\xe8>M\xa6'
 b'\xec\xbfX\xc7\x87')

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

{'A1': 3793,
 'A2': {'B1': 'oz',
        'B2': [{'C1': 59,
                'C2': 0.45354992151260376,
                'C3': 33067,
                'C4': 70294670},
               {'C1': 145,
                'C2': 0.1058916226029396,
                'C3': 56577,
                'C4': 1046029760},
               {'C1': 176,
                'C2': -0.911639928817749,
                'C3': 24369,
                'C4': 1467554509},
               {'C1': 183,
                'C2': -0.04433244466781616,
                'C3': 42558,
                'C4': 1941077581},
               {'C1': 80,
                'C2': -0.21005654335021973,
                'C3': 43956,
                'C4': 2996905317}],
        'B3': 97,
        'B4': 1533191920,
        'B5': 10306,
        'B6': -0.3270024061203003},
 'A3': {'D1': [6557620289478644786, 2968435366346337508],
        'D2': {'E1': 27528,
               'E2': 0.7868153006070373,
               'E3': -346125223,
               'E4': -27,
               'E5': 208}},
 'A4': 1537357967449996822,
 'A5': [0.148336261510849,
        0.3376610279083252,
        0.2008320689201355,
        -0.8467945456504822]}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'AWFL\x1f\x00\x00\x00\x03\x00?\x00\x02\x00\x00\x00K\xcf\x9aS=\xf1\x8bl'
 b'\xc1-\x03\xcb\xd6\xbe9\xbd\x0f\xa1\x9c\xb6\xbd\x00\x02\x00\x00\x00M\x00'
 b"O\x00\x00\x00\x02\x00f'\x02\xe2~\\\xa7\x00\x9e\x0e_2\xd9\x00\x00\x003\x00"
 b'\x00\x007\x00\x00\x00;lsQ*\xceR^n\xbdk^\xdf\xfc\xa8@\x8fy\xa8ofw\x01er\x1f'
 b'\x11<6\xbf')

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

{'A1': [{'B1': 9986, 'B2': 57982},
        {'B1': 23719, 'B2': 158},
        {'B1': 3679, 'B2': 13017}],
 'A2': 'ls',
 'A3': 53146,
 'A4': 5998215859854716163,
 'A5': -53,
 'A6': {'C1': -692176451, 'C2': 15, 'C3': 2711402173, 'C4': [81, 42]},
 'A7': {'D1': -50,
        'D2': 1381920445,
        'D3': 7736867486116646777,
        'D4': -22417,
        'D5': 7383371649315180860},
 'A8': [54, 191]}

Пример 2

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

(b'AWFL\x1f\x00\x00\x00\x03\x00?\x00\x02\x00\x00\x00Ka\xd9E\xc9\xdd#y'
 b'-\xb6\x0e\xf9\x14\x1f\xed\x9d\x12\xd7\xa1\xc1\x88\x00\x02\x00\x00\x00M\x00'
 b'O\x00\x00\x00\x02\x00f\xff\xdc\x1c>\xf5#Q\xf4\xca\x1a\xe7\x9f\x00'
 b'\x00\x003\x00\x00\x007\x00\x00\x00;tx\t\t\xe4\xee\xc3\xbcU\xa4^\xf2\xd0'
 b'\x8f0\xbd\xe9\xea\x9d\xc6(\xe0\x81p\x87=$\xb8\xf2')

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

{'A1': [{'B1': 65500, 'B2': 7230},
        {'B1': 62755, 'B2': 20980},
        {'B1': 51738, 'B2': 59295}],
 'A2': 'tx',
 'A3': 25049,
 'A4': 5028793603362502158,
 'A5': -7,
 'A6': {'C1': 337636765, 'C2': 18, 'C3': 3617702280, 'C4': [9, 9]},
 'A7': {'D1': -28,
        'D2': -289162155,
        'D3': -6602573026109112855,
        'D4': -5475,
        'D5': 14278909465121471780},
 'A8': [184, 242]}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LRNZW\x00J\x00\x04\x00\x00\x00S\x00\x00\x00W\x00\x00\x00w\x00\x00\x00'
 b'\x97\xbf\x0b\x8f\x98\xa2\x0e\xbf\x14\x0e\x86\x00\x00\x00\x03\x00'
 b"\xb7\x82\x8b8\xbe'0\x9a\x7f\xbe\xe8\xd2\x89?\\6'>\xf3\x18\xa6?w\x91C?*\xd7"
 b'\x1b\xbff\xdd\xf4\xdd?\xb2\x1d\xaf\x87\\\xa1\xb0\x81cyxm\x17\x1d\xa0#\xdf'
 b'k\xbf\xd0\xfe\xde\r\xde\xa6\xf0\xd8\x9e\x18F\xc3\xbe\xd5\xa8\xa0(\xd9'
 b'\x97\xe9\x8a\xc3\xa3\xe7\x91+\x02\xc0\x90>\x90?\xe1CW6\x18\x18\xfe\x08\x8e`'
 b'\xb90\xca\xddD&\xc7:B\xe8Y\xbd\xcf\xf7\xce!\xb9\x96\xb4\xab\xf0\xbf\xc2j'
 b'\xf2\x93\xdb\xc2\xc0\x99\xfc_^\x1e\x7f\xa3\t`\x92e\x93\x96\xdc\x02&k\xd6X'
 b'\xc0\xa3')

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

{'A1': {'B1': 0.07076546721203303, 'B2': 129},
 'A2': {'C1': 'cyxm',
        'C2': [{'D1': 387817507,
                'D2': -8341,
                'D3': -0.26555587152925764,
                'D4': [15608940050723558824, 11540713291618370467],
                'D5': 231,
                'D6': -111},
               {'D1': 721600656,
                'D2': 16016,
                'D3': 0.539470296528435,
                'D4': [616536547500154180, 2794266152847130063],
                'D5': 247,
                'D6': -50},
               {'D1': 565810868,
                'D2': -21520,
                'D3': -0.14388878078127298,
                'D4': [11095848439777305353, 6958736058806436390],
                'D5': 107,
                'D6': -42}],
        'C3': -0.5451598167419434},
 'A3': 41486,
 'A4': -0.5783466100692749,
 'A5': [88, 192, 163],
 'A6': 9406674636045851263,
 'A7': [-0.4547312557697296,
        0.8602012991905212,
        0.47479742765426636,
        0.9670602679252625,
        0.6673447489738464,
        -0.9018242359161377],
 'A8': 221}

Пример 2

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

(b'LRNZW\x00J\x00\x02\x00\x00\x00S\x00\x00\x00U\x00\x00\x00u\x00\x00\x00'
 b'\x95\xbfj\xfc\x92\xe3\x16?@}\xf0\x00\x00\x00\x02\x00\xb5\x82\xce\xfa'
 b'?O\x10\xd9\xe7>\xd0\x15\xc3\xbf\x18\xda;>F\xce\xb0\xbb\xb5\xe6\x0f?^\x89'
 b'\x1d>\xbf\x15$s?\xd8\xb7\x0e\x1f\xf2\xe3\xfc\xb6gbM\x18\xbeqC\xf4\xbf'
 b"\xe4\x1b\xef\xb7\x92y`t \xd6\xb0\x19\x97'\xf0u\xee\x15\xab\xf5"
 b'\x86\x8b\xc0\xf6\xa7d|\xcf\xbc\x84j?\xe7\xb7\xdcI[\xf7\xc2\xbb\xd0\xec\xcel'
 b'QP\xb4X\xd3\xdf\xa2\xaf\x9b\x92\x9c\x1bx\x91\x05%.\xa1\xce\xbf\xec\x02&\xba'
 b'z\xe2Z_]\xa2t\x84\xd69\x82B&_\x97\xff\x96i\xc7\r\x87\x1f\x81')

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

{'A1': {'B1': 0.38617280120848796, 'B2': 182},
 'A2': {'C1': 'gb',
        'C2': [{'D1': 1293467249,
                'D2': 17396,
                'D3': -0.6284102044481124,
                'D4': [8367924159486306288, 8497753375197531072],
                'D5': 246,
                'D6': -89},
               {'D1': 1685901244,
                'D2': -31638,
                'D3': 0.7411939080045544,
                'D4': [13533577251573026996, 6400705385247511196],
                'D5': 27,
                'D6': 120},
               {'D1': 2433033518,
                'D2': -24114,
                'D3': -0.8752626077831096,
                'D4': [6871827227765782914, 4766602362050996679],
                'D5': 13,
                'D6': -121}],
        'C3': -0.9179164171218872},
 'A3': 58134,
 'A4': 0.7519216537475586,
 'A5': [31, 129],
 'A6': 9425746219949414887,
 'A7': [0.40641602873802185,
        -0.5970799326896667,
        0.19414782524108887,
        -0.005551106762140989,
        0.869279682636261,
        0.3732081651687622],
 'A8': 115}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xf9MDWN.\x17\x07\xa8\x85\xdb\x8e[j\xc6\xbfn\x00\x03\x00\x9e\x00\x00\x00'
 b'd\xb5\x97<avekhjpk\x03\xe0\x9c\xca\x9c\xf1\xcb\x93\x1d\x8f\xf1\x8a'
 b'\xc4^\x9f\xb2C\xa7\\\x88$OP)Gd1\x8a&\xf7\x0fL\xa1\x0e\x1d\n\xc1\xe9\xf9\xc5'
 b'!*t\x84\xa9\xf2\x1e(Cr@\xed\xb2@\xc0\xbe\xfd\x1a\xc7\xbe,_b\xbc\xa7}\x80\xbe'
 b'\xbd\x1a\x0c?ip\x02\x00l\x00\x0b\xbclLaF\x1d?9k\x0f\xe7x\xfe_1\xa3\\'
 b'?\x97\xe9I\xff7\x05\xd2\xfac\xcb\xa7B>)O}\xc2\td\x08p\x12\xdfL)\x86\x00'
 b'\x00\x00\x8e\x00\x00\x00\x96\x00\x00\x00')

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

{'A1': 118959694,
 'A2': -0.17512077784981028,
 'A3': {'B1': {'C1': 'ip',
               'C2': 1282194443,
               'C3': 0.6143551468849182,
               'C4': 27449,
               'C5': 15,
               'C6': 30951},
        'B2': 24574,
        'B3': 0.8618651032447815,
        'B4': -105},
 'A4': [{'D1': 939477481, 'D2': -11771, 'D3': 25594},
        {'D1': 1044555723, 'D2': 20265, 'D3': 49789},
        {'D1': 1879598089, 'D2': -8430, 'D3': 10572}],
 'A5': 0.01851911097764969,
 'A6': 'avekhjpk',
 'A7': {'E1': -8189, 'E2': 51868, 'E3': 10011940803817763228},
 'A8': {'F1': [-8620831677492535612,
               -8488893565818089692,
               728754800632526630,
               -8902444238860850751,
               -1350954255449656663],
        'F2': [-0.375493586063385,
               -0.3888777792453766,
               -0.013816636055707932,
               -0.250958651304245,
               0.5472829937934875]}}

Пример 2

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

(b'\xf9MDW\xbf\xc6;U\x80\xb5\x96\xbf\xa9H\xad\xbfn\x00\x02\x00\x96\x00\x00\x00'
 b'\xf5\xc6\x8b\xbdswixzhfdp\x80\x00\xeb\x1d\xd5%\xa6\xd4\xbdCf\xeb\xc2\xbd5'
 b'\xdbiQ\x80\xae".\xc7\xfc\xc11\x8d\x07c\xbfb\xf7\x14/\x82p\xd4\r\x0b'
 b'\xbdTx\xaa\xefv\x14Q\xe2\xc4\x83dmz\x99\xbd\x86\xff{?\xfeU\xe4\xbd\xa3\xb0??'
 b'\xfc\xfcc?gd\x02\x00l\x00^\x80\xcb9_\x01%?\xecw0\x89\x86\xfe\xa7EK\xe0'
 b'\xbe\xcb\xc0\x9cJd\xb3\x02\xa3)\xbf;\x8eV\x94\xdfg\xc2\x86\x00'
 b'\x00\x00\x8e\x00\x00\x00')

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

{'A1': 1429980863,
 'A2': -0.0571950003025945,
 'A3': {'B1': {'C1': 'gd',
               'C2': 969637982,
               'C3': 0.6445521712303162,
               'C4': 30700,
               'C5': 48,
               'C6': 34441},
        'B2': -22530,
        'B3': -0.4380742609500885,
        'B4': -53},
 'A4': [{'D1': 1682611392, 'D2': 691, 'D3': 10659},
        {'D1': 1452161983, 'D2': -8300, 'D3': 49767}],
 'A5': -0.06825057417154312,
 'A6': 'swixzhfd',
 'A7': {'E1': -32656, 'E2': 60160, 'E3': 7368942136326477085},
 'A8': {'F1': [-9200456173520829717,
               -8272617749085281618,
               -9066004472127331577,
               -6163082919145515920,
               7242849102043838191],
        'F2': [-0.07494053989648819,
               0.9843677282333374,
               -0.11149214208126068,
               0.7487890124320984,
               0.8905789852142334]}}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'THEG\xbfjxs\xd6\x01\xbf\xdcl\x88a*9D\xbf\xed.\xb1\xb7(\xf7\xa0c9\xbf\xe2oS'
 b'\x10\xf0{\xd4\x00\x03\x00\x7f\x18\xe4\xa0\xf6\xc2\x91"\xf6|\xae\xb8\xfc'
 b'\xef J\x00\x03\x00\x00\x00/=\x11\xd4\x94?\xd5\x14\xe66\xf9\xc6\xd04O\x9c'
 b"\xba#\x88dm;\xb6\xdc\x00\x00\x05\x00\x00\x00I?Q\xc8O\xbf\xb0n\x8a\x83'm0:"
 b'\xdb\x14\x07\xed\t\x00\x02\x00\x00\x00g\xbf5\xd8\xa8?\xc9\xe6o\x1a'
 b'\xe6\xe2\x90\x005\x00S\x00k')

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

{'A1': {'B1': 'jxs',
        'B2': 54785,
        'B3': -0.44412431229365645,
        'B4': -0.9119499757141405},
 'A2': 25401,
 'A3': -0.5760894137237025,
 'A4': [{'C1': 8266,
         'C2': {'D1': [63100, 44728, 64751],
                'D2': 0.0356031209230423,
                'D3': 0.3294005905982944}},
        {'C1': -9216,
         'C2': {'D1': [13391, 40122, 9096, 25709, 15286],
                'D2': 0.8194627165794373,
                'D3': -0.06418672277452653}},
        {'C1': -4855,
         'C2': {'D1': [15067, 5127],
                'D2': -0.7103371620178223,
                'D3': 0.202344787727061}}],
 'A5': [24, -28, -96, -10, -62, -111, 34]}

Пример 2

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

(b'THEG\xbfqrtr{\xbf\xb3\x81\x9c.Ei ?\xe9@\xc5a\x026\x82\xde\x88?\xd6\xeb\xfa'
 b'YC\x89\x88\x00\x02\x00kc\xf3\x8f\xe6{[\xb2\x19P{\xfd0s\x05)I\xf6\xe0\x8e\x00'
 b'\x05\x00\x00\x00/>\xd6\x02\x16\xbf\xdf)\x8b\x99\xdbc\x9c\x80es(td\xee'
 b'\x1cf\xd6\x12:\x00\x05\x00\x00\x00M\xbfzrB?\xd2l]\x0f\xee|d\x009\x00W')

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

{'A1': {'B1': 'qrt',
        'B2': 29307,
        'B3': -0.07619644288698568,
        'B4': 0.7891566176128466},
 'A2': -8568,
 'A3': 0.35815294949693355,
 'A4': [{'C1': -8050,
         'C2': {'D1': [6480, 31741, 12403, 1321, 18934],
                'D2': 0.41798466444015503,
                'D3': -0.4869107248792319}},
        {'C1': 4666,
         'C2': {'D1': [32869, 29480, 29796, 60956, 26326],
                'D2': -0.9783059358596802,
                'D3': 0.2878639846403017}}],
 'A5': [99, -13, -113, -26, 123, 91, -78]}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xacLTG3\xd5^\x9e\xb4SeW\x00\x12\x19\x0f\xdf\xca\x1a\x8a\x03\xd1\xf4\xf6'
 b'C!\x0f_\xa5\x89v\xd3\xd7\xbd\xd6\xd5\xdf\x82\xd6\x84\xfau\x1a\xe8'
 b'\xef\x84S\xb06\xe5\xf5Gr\x12:[\xca\x97\x89\x04\x00-\x00\x05\x00\x00\x001'
 b'\x00\x00\x00\x7f]B\xf1v\x8a\xd3\xf5M\xa4\xb1\xb5\x14V\xc8\xd3u2\x0b\xee4'
 b'mM*\x8aLR\x9eBH\xe0M(\x8d\xe3A8\xcb\xdd_\x90}\x140\x88\xb2\xec\x95\xcd'
 b'q\xed\x0ba\t\xfa\xff\x10\xf3\xfc\xf2\xeb\x12J\xe7+\xcb.!\xf7\x7f\x9f\xf0\xe3'
 b'?\xbdE\xb1+;\x00\xdc,')

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

{'A1': 51,
 'A2': -1264689451,
 'A3': 25939,
 'A4': {'B1': 12917,
        'B2': [{'C1': 1832185355, 'C2': 1284123213},
               {'C1': 1212325458, 'C2': -1926738464},
               {'C1': -885505565, 'C2': 2106613725},
               {'C1': -1299697644, 'C2': 1909298668},
               {'C1': 157354989, 'C2': -216989702},
               {'C1': 317453052, 'C2': -886315190}],
        'B3': 0.6231229304621928,
        'B4': 733038013,
        'B5': {'D1': [132, 83, 176, 54],
               'D2': [-2587, 29255, 14866, -13733, -30313],
               'D3': [23935, 61762, 35446, 62931, 42061, 46513, 22036, 54216]},
        'B6': 220,
        'B7': 44},
 'A5': [-552658670,
        59382474,
        1140258001,
        -1520496863,
        -674007415,
        -539633987,
        -91957630,
        -270001547]}

Пример 2

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

(b"\xacLTGuE\xe0\xe4\xc6\x00GU\x00\xe0'\xad\xe7\x1aV'\xd2\xe1[\x8av\xdf\xb1P"
 b'@.\x13\xd1\xc3\x08\x83\x99\xbb\xec\xa2\xe9V~A\xaa_@\x03n$\xa8\xfdj\xf1YX.'
 b'G\x04\x00-\x00\x04\x00\x00\x001\x00\x00\x005\xd9k\xc1v@\x1e\xcfs\xa7\xad'
 b'!=\xff\\\xb4\xdfx\xb5k\x0b\x11\x17\xd7Z\xc3\x91\xbd\xd3L9\xc4\xee\x8b\xc7'
 b'#\x1d\xebD`\xe0C=\xa5KS\x0f\r/g\x1f\xc9\xe5\xaa,\x04\xbeOH\xf6\xbd\xcdK'
 b"B\xab\x08\xec'[@8\xed\xe3?,\xfaD\x9f9\x00h\x0f")

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

{'A1': 117,
 'A2': -958078907,
 'A3': 18176,
 'A4': {'B1': 30943,
        'B2': [{'C1': 285961141, 'C2': -1017456873},
               {'C1': 1288945041, 'C2': -1947286471},
               {'C1': -350411833, 'C2': 1138778180},
               {'C1': 1397466429, 'C2': 1731136783},
               {'C1': -1427781345, 'C2': 1337852972},
               {'C1': -843188664, 'C2': 145441355}],
        'B3': 0.6227074868158957,
        'B4': -1622869460,
        'B5': {'D1': [64, 3, 110, 36],
               'D2': [-600, -3734, 22617, 18222],
               'D3': [55605, 49515, 16502, 53022, 42867, 8621, 65341, 46172]},
        'B6': 104,
        'B7': 15},
 'A5': [-408082464,
        -769173990,
        1988778977,
        1079030239,
        -1009708242,
        -1147567352,
        1458152172,
        1604993406]}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"\x83GUAG{*\xca\x00\x00\x00Q\x12\x0c\x07\x1e\x9e\x85'\xef\xe8\xb4\xb1U"
 b'\x92\x11\x00\x03\x00k\x18q\xa3\x8bc\t\xee\x86\xab\x9b\xb8g\x97:\x8d>\xad<'
 b'm\x8d\xc0gxcglmZ\x81\x80\xa4\xf6U\xa43?\x046\xa4\x00\x02\x009\xbf"\x12'
 b"\xbd\x00\x02\x00=\x00&?\xeax\xf8\xe5\xec\xc9d\xbf'P\xb3\x00\x06\x00\x00\x00"
 b'3\x00\x02\x00\x00\x00A\x97\xa1\x87K\xf2\xdd\x81\xeb\xe4Q\x8c\xcc')

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

{'A1': 1199254218,
 'A2': {'B1': {'C1': {'D1': -21605,
                      'D2': 47207,
                      'D3': -1757770434,
                      'D4': -83,
                      'D5': 0.014499127864837646},
               'C2': 0.8272671213838234},
        'B2': -0.6535751223564148,
        'B3': 'gxcglm',
        'B4': [{'E1': 0.5164587497711182, 'E2': [23169, 32932]},
               {'E1': -0.6330984234809875, 'E2': [63061, 42035]}]},
 'A3': 4620,
 'A4': 513021702304688308,
 'A5': -1319792111,
 'A6': [-1751021749, -220364309, -464417588],
 'A7': 1761368748335951494}

Пример 2

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

(b'\x83GUA\x9d\x9c*\x85\x00\x00\x00i\x89;A\xcd\x81\xdf\x14\xf3uJ)\xcc'
 b'\xe4G\x00\x03\x00\x83\xc0\x0f\x96\x14\x0e\xe8t\x18\xa1\xd2\x95\xeek\xdb'
 b'`\x7f\xc7?E\xf4\xdcifpksjL\x02\xd2:\xd7\xc3\xdd\x80\xfa-\x01\xa7\xa4#\xf2'
 b'\xb6\xbfiz\x02\x00\x02\x009;\x9f_\xa4\x00\x02\x00=?H3\x88\x00\x02\x00'
 b'A>\xe8\x18X\x00\x02\x00E\x00&?\xe8\xcb\x1d"\x08k\x8e?f\xdc\xe7\x00'
 b'\x06\x00\x00\x003\x00\x04\x00\x00\x00I\xc9\xb2qku;\xfe~\xc9\xca\x99\x0c')

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

{'A1': 2644257413,
 'A2': {'B1': {'C1': {'D1': -24110,
                      'D2': 38382,
                      'D3': 1809539199,
                      'D4': -57,
                      'D5': 0.7732675075531006},
               'C2': 0.7747941651062875},
        'B2': 0.9018082022666931,
        'B3': 'ifpksj',
        'B4': [{'E1': -0.9120179414749146, 'E2': [19458, 53818]},
               {'E1': 0.004863696172833443, 'E2': [55235, 56704]},
               {'E1': 0.782036304473877, 'E2': [64045, 423]},
               {'E1': 0.4533107280731201, 'E2': [42019, 62134]}]},
 'A3': -30405,
 'A4': 4741588777820190026,
 'A5': 701293639,
 'A6': [-911052437, 1966866046, -909469428],
 'A7': 13839445192826450968}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'HXUJ\x96\x02\x00\x00\x00c\x00\xbd\x88B\x15\x03\xe5\xd6\xd4?(M-?'
 b'\xb1\x82\x9f\xd7\x99e\x00O\xaao\xbf\x84\x1b\x88\x93\x9d\x80\xd2\xa3\xd1'
 b'\xdb]B\x90\x82C\xe8\xeeNd\r\xd0\xd7\xdfv5\xc3\x85\xb9\xd9\x98=\xd8\x11'
 b'\xfam\xfc\x8d\xab\x8aE\x0f)\x02\x00o\x00\x00\x00\x02\x00\x00\x00q'
 b"\x00\x00\x00\xf8\xff\xdfc04\rWvsF\xfa9\xc6I\xd2\xae\xee\x18Qik\x14'\x9a"
 b'\x87\xfe\xb5\xec?(\xeaP\xd8<\x8f\xd5?')

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

{'A1': 'vs',
 'A2': {'B1': 189,
        'B2': 0.325616124163425,
        'B3': 0.6769585609436035,
        'B4': 177,
        'B5': -1713922174,
        'B6': {'C1': -1466, 'C2': 5843682951132988985},
        'B7': -0.9361924529075623},
 'A3': [{'D1': 11804638987564882820, 'D2': 1113447377, 'D3': 144, 'D4': 130},
        {'D1': 15550944237782493251, 'D2': -1019906337, 'D3': 133, 'D4': 185},
        {'D1': 18189469424568604889, 'D2': 1166715789, 'D3': 15, 'D4': 41}],
 'A4': 'ik',
 'A5': [0.8972160957793869, 0.3368675339185381],
 'A6': -8,
 'A7': [223, 99, 48, 52, 13],
 'A8': 87}

Пример 2

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

(b'HXUJ\x96\x07\x00\x00\x00c\x00\xda\x08d\x0b\xa4\x8d\n\xed?"w\xa9\xbe'
 b'\x99\xca\x81\xcc\xc4j\x00\xb4\xbc\x83<\xd0\xa4y\xe25\xbe$\x06l%\xba\xc4\x83'
 b'\xe3T\x84r&s\xa19\xf2t\xd0x\x94\x9e\x96]\xe3\x171\xac\x1d\xc5\x07\xd3'
 b'\xa0\x95e\xd9\xef\x02\x00t\x00\x00\x00\x02\x00\x00\x00v\x00\x00\x00\xe9'
 b'\x08\xfc\r\xddcm\x9dshcfcfe)v\xc3\xb4\x0cH1\xd4\t\x00bd\x8c>\xbcd"I'
 b'\xe3\xbfp\x04\xa0\xbd`\xb7\xcf?')

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

{'A1': 'shcfcfe',
 'A2': {'B1': 218,
        'B2': 0.9075382427209897,
        'B3': -0.33098703622817993,
        'B4': 153,
        'B5': -993230390,
        'B6': {'C1': 30249, 'C2': 2766582917674179},
        'B7': 0.01608119159936905},
 'A3': [{'D1': 442687802031318224, 'D2': -994433684, 'D3': 131, 'D4': 227},
        {'D1': 17454159346789418068, 'D2': -1804021644, 'D3': 158, 'D4': 150},
        {'D1': 559886354072724317, 'D2': 1704304851, 'D3': 217, 'D4': 239}],
 'A4': 'bd',
 'A5': [-0.6026775329100515, 0.247783749189725],
 'A6': 2281,
 'A7': [252, 13, 221, 99, 109],
 'A8': -99}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xd1XJKJ\x8d@\x89\xce\xdd\xaf5\xcf?\xda\xcd\x7f\x96\x07\x0c\xef\xbf\xa7\xd6'
 b'\x84\x1dQ\x1b\xca\xc6L\x00\x00\x00q\x88M\xeb\x02\x00\x00\x00d\x00'
 b'\x00\x00\x02\x00|\x00\x00\x003\xd1\x1e>\xa0\xc1g\x00B\x7f\xd3\xbf'
 b'\x81s\xb0\xa9I\xca\xd6\x97\x89\xdf\xb5p\x1b0\x88\x05\xaa\x07\xb2\xd7'
 b'q\xee\xa4\xd7qs\x0fY4\x00\x00\x00\xaaO\xcb3\x00u\xef.\x8e{\xec?{\xc7\xbf>'
 b'\xa2\xaa\xb3\xee\xf9\x19\xec?\xa5;\xa6\xbe\xb5\x85\x92\x90\xfb\xd2\x99%')

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

{'A1': 141,
 'A2': 0.24382589655312792,
 'A3': -0.9702184619367771,
 'A4': -10585,
 'A5': {'B1': 7556,
        'B2': 3335134033,
        'B3': {'C1': [12315, 1416, 1962, -10318, -4495, -10332, 29553, 22799],
               'C2': {'D1': 0.1550949066877365,
                      'D2': -0.3046422008474341,
                      'D3': [2846913409, 2547436105],
                      'D4': 1890967433},
               'C3': 20394,
               'C4': 13259}},
 'A6': 3947726961,
 'A7': [{'E1': 0.8900824467379209, 'E2': 0.37456879019737244},
        {'E1': 0.8781709348816842, 'E2': -0.3246738016605377}],
 'A8': [-1869445707, 630838011]}

Пример 2

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

(b'\xd1XJKJ\xef`\x95\xbd\xec2\xd7\xe8\xbf\xfc\xe7\xadW\xad\x01\xda\xbf\x93\x01'
 b'\x898\x94\x85\xaf9L\x00\x00\x00\x89>\xc4t\x02\x00\x00\x00d\x00'
 b'\x00\x00\x02\x00|\x00\x00\x00\xfb_\xf5\xbed\x85\\\xe0\\\xb4\xdc\xbf\x16.b@'
 b'\x0c\xaf\x11\xf2\xe9\xec\x9b.\xed\xfa\x95\x9b\xb5\xfe+\xd4\xa6\x88\xa1\xd9'
 b'W{\xa2\xb34\x00\x00\x00B\xef\x96\x00H~$\xd3(\xd4\xe0\xbf%\xcb\x93\xbe|&C0'
 b'\xd8\xa2\xef?\xa8\x03&?\x9a;S\x1c\xb2\x91\xbb\xb3')

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

{'A1': 239,
 'A2': -0.7762694000090669,
 'A3': -0.4063523632281656,
 'A4': 403,
 'A5': {'B1': 14473,
        'B2': 967804308,
        'B3': {'C1': [-1299,
                      -25707,
                      -331,
                      -11221,
                      -30554,
                      -9823,
                      31575,
                      -19550],
               'C2': {'D1': -0.47924789786338806,
                      'D2': -0.4485084715871237,
                      'D3': [1080176150, 4061245196],
                      'D4': 781970665},
               'C3': -4286,
               'C4': 150}},
 'A6': 1959018121,
 'A7': [{'E1': -0.5258983730199782, 'E2': -0.2886592447757721},
        {'E1': 0.988628477346722, 'E2': 0.6484932899475098}],
 'A8': [475216794, -1279553102]}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xabEMZZ/\x04\x001\x00Q\xca\xfb|\xf5Or\xc7\xfdu\xd2\x91\xa5Q\xe4`\xe2Q'
 b'i\x00\x00\x00\x01\xafccjjcywynhohfuh\x03\x00"\x00\x00\x00\xb1\x01\xf0"c'
 b'\xf8\xee\x9c\x07\x00%\x00\x00\x00H9\xca\xc4\x80\xce\x07\xf6\x02\x00,'
 b'\x00\x00\x00\x00C\x81\x17\xdc#\x1b\xa4\x03\x00.\x00\x00\x00\x07\x8d\xc7'
 b'\xf2\x94\xf4{X\xaaYD\xfc~)B \xd0\xbey\x05')

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

{'A1': 47,
 'A2': [{'B1': 'ccj', 'B2': [586154417, -1662060445]},
        {'B1': 'jcywynh', 'B2': [-993380024, -167260544]},
        {'B1': 'oh', 'B2': [394347264, -1541725220]},
        {'B1': 'fuh', 'B2': [-221803257, 1484518548]}],
 'A3': {'C1': [2096876113, 3346157557, 2446489085, 1625575845], 'C2': 20962},
 'A4': {'D1': 2324465983051553194, 'D2': -16688, 'D3': 1401},
 'A5': 1,
 'A6': 175}

Пример 2

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

(b'\xabEMZZH\x05\x00<\x00A\x9c\xcbb\xdb\x06\xfa:\xff\xf2uw\x1e"\x92$\xe6]'
 b'\x82\x00\x00\x00\x7fZaeaoomqkpgealtdhoqsvqmkouq\x06\x00"\x00\x00\x00\x02\xe5'
 b'6\xce\x0fG\x86\xb5\x02\x00(\x00\x00\x00\xfe\xb6Y\r\x03i\xb4\x11\x07\x00*\x00'
 b'\x00\x00?\xc4\r)Da9\xef\x05\x001\x00\x00\x00T\xb32\x94H%\x1a)\x06\x006\x00'
 b'\x00\x00\xdc\x91\xc9\xef\x95\x19\x98&\xbf\xa3\x96C]J\x8f\r\xa0\xe7\xf6\xab')

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

{'A1': 72,
 'A2': [{'B1': 'aeaoom', 'B2': [-835263230, -1249491185]},
        {'B1': 'qk', 'B2': [223983358, 297036035]},
        {'B1': 'pgealtd', 'B2': [688768063, -281452220]},
        {'B1': 'hoqsv', 'B2': [-1808616620, 689579336]},
        {'B1': 'qmkouq', 'B2': [-272002596, 647502229]}],
 'A3': {'C1': [1657510977, 989464283, 2004218623, 613556766], 'C2': 24038},
 'A4': {'D1': 977081408589046719, 'D2': -6240, 'D3': -21514},
 'A5': 127,
 'A6': 90}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'TFEJ&\x00\x00\x00^^\x14eF\x00d\x00\x84\x00\xb9\x01\xfd\x04\x00\x00'
 b'\x00\x9a\x00\x00\x00E\xfc\xe47s\xa1\xd6F\xed\x18\xf2@6I\x9a\xe7\xbf\xcf\x11'
 b'-\xbf\x1d\x00\x03\x00\x00\x00#\x00\x00\x00&2\x1fC\x0e"K\xd9\xc6\xeb\x80G'
 b'\xb7k\xfd-\xaa\x05\x00<\x00\x00\x00h\x12\xcd9b\xf2\xff\x8b\x0c0+b1'
 b'\x8c\xf3,\xe2Q9\xad\xd7\xda>\t\x04\x00\\\x00\x00\x00F\x99\x88'
 b'\xfb\x8a\xb5\xfeq?}\xafX\x03\xfd\x062*\xb4\xdb*Q\xe9*\x1a\xaf\xbc\x05'
 b'\x00z\x00\x00\x00\x9d\xbf\xc4+L\x16H\x88w}?6\x84')

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

{'A1': {'B1': -0.7375837382929289,
        'B2': -0.676052987575531,
        'B3': {'C1': 937753669, 'C2': -24205},
        'B4': [214, 70, 237]},
 'A2': 1695833694,
 'A3': [{'D1': 18304,
         'D2': {'E1': -73,
                'E2': -1439826581,
                'E3': [12838, 17183, 8718, 55627, 60358],
                'E4': 10088048194023658088},
         'D3': 12},
        {'D1': 14673,
         'D2': {'E1': -83,
                'E2': 155114199,
                'E3': [11056, 12642, 62348, 57900],
                'E4': 8214202378900511046},
         'D3': 63},
        {'D1': 20778,
         'D2': {'E1': -23,
                'E2': -1129375190,
                'E3': [44925, 856, 1789, 10802, 56244],
                'E4': 9820123503889006493},
         'D3': 119}],
 'A4': [-71, 1, -3],
 'A5': [125, 63, 54, 132]}

Пример 2

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

(b"TFEJ'\x00\x00\x00\x83we\xdbG\x00g\x00\x83\x00\xd1K \x04\x00\x00"
 b'\x00\x99\x00\x00\x00\x06)\xb7\xfc\xd4Vj\xa4,\x16\x0cW-\x91M\xdf\xdf?V'
 b'\x03<?\x1d\x00\x04\x00\x00\x00#\x00\x00\x00J\xbe\x93o\xd6\xc5\x91\xd7\x80~"'
 b'b\xf5\xd1\x8c9|\x05\x00=\x00\x00\x00\xfe\x91\xc0\x98\xa6,\xdf\xde'
 b'\x00#\xbe\x11M\xc2\xee\xc3\x07nO\x0fGm\xb1\x8f~t\x05\x00]\x00\x00\x00'
 b'\xf2B\x06\xe4\xc9\x08U\x85\xc5\xcb_\xbf\xbf\xc3\x89\xfb\xad\xbb\xa7s'
 b'\x07\x18\x03\x00}\x00\x00\x00\x82\x05\xf9R\xdfO_\x99\xfd\xb3p\xc6#')

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

{'A1': {'B1': 0.4980043332810602,
        'B2': 0.7344259023666382,
        'B3': {'C1': 4239862022, 'C2': 22228},
        'B4': [106, 164, 44, 22]},
 'A2': -614107261,
 'A3': [{'D1': 25122,
         'D2': {'E1': -11,
                'E2': 2084146385,
                'E3': [48714, 28563, 50646, 55185, 32384],
                'E4': 16059603890265428478},
         'D3': 0},
        {'D1': 18191,
         'D2': {'E1': 109,
                'E2': 1954451377,
                'E3': [48675, 19729, 61122, 1987, 20334],
                'E4': 9607595043271885554},
         'D3': 197},
        {'D1': -20997,
         'D2': {'E1': -69,
                'E2': 403141543,
                'E3': [24523, 49087, 35267],
                'E4': 11051639831178839426},
         'D3': 253}],
 'A4': [-47, 75, 32],
 'A5': [179, 112, 198, 35]}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ORSB\x1f\x06\x00\x00\x00,\x00\x00\x002\xeb2\x00C\x00T\x00\x8e|\xb0'
 b'\x07\x00e\x00\x84\xbd\x8e\xcd?\x8fU]5\xbf\x03\x00\x00\x00\x9d\x00whqyev\x132'
 b'B?\xcfh`\xa8\x8a\x12\x1d1\xff\xdb~K\xd5\x1b\xc2\x82>\xf3YH\\\x84'
 b'\x98\xcd\x9d]\xc03\x9e\x10\xd9/\xa5>\x8d\xb2\x8a\x08\x9a\xc5~\x8b'
 b'8\xab\xc3\xa5x\xe0\xa3\xb7\xa8\xa0\xac\xcc\xbf\xa8\x86\xbb\xdd\\\x84\xe4'
 b'\xbf\xa8\x86\xc3(\x1f\xd9\xe7\xbf\xf4Gk\xed\x16\xa9\xec\xbft\x99*'
 b'\x93i\xaf\xd2\xbfj\x06\xcb\x85\xf5P\xef\xbf\xb64\x12\xb7\xa3\xb4\xe8'
 b'\xbf\xf7\xe6\x8f\x1c\xb3f')

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

{'A1': 'whqyev',
 'A2': 60210,
 'A3': [{'B1': {'C1': 0.7585765719413757, 'C2': 207},
         'B2': 2326290536,
         'B3': 7442,
         'B4': {'D1': 2128346929, 'D2': 54603}},
        {'B1': {'C1': 0.25538715720176697, 'C2': 243},
         'B2': 2220640345,
         'B3': 52632,
         'B4': {'D1': 868244893, 'D2': 4254}},
        {'B1': {'C1': 0.3226306736469269, 'C2': 141},
         'B2': 2584251058,
         'B3': 32453,
         'B4': {'D1': 3282778251, 'D2': 30885}}],
 'A4': 31886,
 'A5': {'E1': -80,
        'E2': [-0.22401817548896386,
               -0.6411575632775639,
               -0.7452541156928492,
               -0.8956408154574533,
               -0.29195632335394994,
               -0.9786326993127663,
               -0.7720507217033148],
        'E3': 132,
        'E4': 3845323730583391933,
        'E5': 191,
        'E6': [59127, 7311, 26291]}}

Пример 2

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

(b'ORSB\x1f\x03\x00\x00\x00,\x00\x00\x00\x1a\x9c/\x00@\x00Q\x00\xb7\xff\xb3'
 b'\x07\x00b\x00(*d(i\xfa=\tH\x15\x03\x00\x00\x00\x9a\x00ijz\xd9*\x0b?\xba'
 b'\x0f\x8a\xdc\xb0}Ct\x9a\xd2\xf0\xca\x00I\xc8a?\xc0\x85\xee\xa8\xbfg\xf2\xa1'
 b'\xceoJ\x1f\x0f\xb6\x90\xdc\xbe\x08\xec\xdc\xbd\x0f\xe4Y\x9c\r\xbaE'
 b'~\x8f\xb8\xb2\x8ci\xea\x9c\xda?\xbc\x9f\x0e\xbe\xc8\x1e\xd8\xbf00'
 b'\x88\x815\xc2\xc6?|0\xa1\xd0\x00\x89\xe7?\xe81N\xf6/\xe5\xd6\xbf\x9a\x0f'
 b'\t\xff}p\xe6?\xd0\xcb\xb1G4\x95\xcf\xbf&M\xdc\xfe\x98!')

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

{'A1': 'ijz',
 'A2': 39962,
 'A3': [{'B1': {'C1': 0.5436225533485413, 'C2': 186},
         'B2': 2967243279,
         'B3': 17277,
         'B4': {'D1': 4040333940, 'D2': 202}},
        {'B1': {'C1': 0.8819623589515686, 'C2': 192},
         'B2': 3215519365,
         'B3': 62055,
         'B4': {'D1': 1248841377, 'D2': 3871}},
        {'B1': {'C1': -0.43079155683517456, 'C2': 8},
         'B2': 264101100,
         'B3': 23012,
         'B4': {'D1': 1169821084, 'D2': 36734}}],
 'A4': -73,
 'A5': {'E1': -77,
        'E2': [0.4158273726232369,
               -0.37687891540781115,
               0.1778017885666272,
               0.7354740214154982,
               -0.3577384858442927,
               0.7012319546852155,
               -0.24674085140904234],
        'E3': 40,
        'E4': 5190748191236580394,
        'E5': 21,
        'E6': [19750, 65244, 8600]}}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'JRHC\xebI\x00\x00\x00\x02\x00\x00\x00\x88\x00\x927\xfb\xf4\xc6\x8123\xe5IV k'
 b']:\x81\x14;\\\xbe\\er\xd1o\x10\xf0KV\xbc\xb0I\x11;\xc2\x07\x11\xf6\x9b^R'
 b"\xa9'\x12\xf6C\xa1\xd9\xf8\xd7\xa0d\r\xb4\xd29\xbf\x7f\x04\x00\x00"
 b"\x00\x0f\x00\x1a\xa2\x05\xd0\x19\xba\x14\xb8A\x0fkOx\xc3\x8b\xa2\x97z9q'"
 b'\x16\x99cF\xc2\xc1Rh\x92\xcdk~\xf1\x9b\x01b\xad\x0e\xd7\x00\x02\x00/\x00'
 b'\x80M\xc3\r\x1f\xaa\xd0\xbf3\x00\x00\x00\xe9:m\xee')

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

{'A1': {'B1': [3689153736283469714,
               -9134886179482220059,
               -3354507323432486124,
               5309951039497048175],
        'B2': 26,
        'B3': [{'C1': 1442, 'C2': 347740624},
               {'C1': 16824, 'C2': 2018470671},
               {'C1': -29757, 'C2': 964335522},
               {'C1': 10097, 'C2': 1180932374},
               {'C1': -15934, 'C2': -846043054},
               {'C1': 32363, 'C2': 1644272625}],
        'B4': {'D1': 3757,
               'D2': 215,
               'D3': [15121, 1986],
               'D4': -0.2603833803561528},
        'B5': {'E1': 1308200388014110225,
               'E2': -10,
               'E3': 965073069617553731,
               'E4': 180,
               'E5': 2143238610}},
 'A2': [15081, -4499]}

Пример 2

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

(b'JRHC\xeb9\x00\x00\x00\x02\x00\x00\x00x\x00%G\x0b\x83?l\xab\xe7Z}\x0f6\xfb'
 b'O\x91o\t\xac\xab\x16\x1d\x12XoS\xde\xe8\xba\xda\xf8\x8f\xeeB\xf8\xa5l\xe6'
 b'%\x1e\xd3g\xaa\x02\x00\x00\x00\x0f\x00\xdf\xe0\xa33\x04\x08m\xb6R-\xd8\xf3c'
 b'\xf9RKla\x9b\xee\xa0\x9d\xf5Q\xdf\xb2\x7f\xbeU\xfdi>\xfb8\xe8\x17I'
 b'\x12\xa5\xa2z\x02\x00\x1f\x00\x90\x08dvE\xaa\xe8?#\x00\x00\x00q\x99u\xbb')

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

{'A1': {'B1': [-1753188609893382363, 8039294750195416410],
        'B2': 223,
        'B3': [{'C1': -23584, 'C2': 1829241907},
               {'C1': 21174, 'C2': 1676924973},
               {'C1': 21241, 'C2': -1688114101},
               {'C1': -24338, 'C2': -548276835},
               {'C1': 32690, 'C2': 1778210238},
               {'C1': -1218, 'C2': 1226303544}],
        'B4': {'D1': 42258,
               'D2': 31394,
               'D3': [44041, 5803],
               'D4': 0.7707850754088827},
        'B5': {'E1': -4978484938126388707,
               'E2': -38,
               'E3': 16603828411901579256,
               'E4': 37,
               'E5': 2858930974}},
 'A2': [-26255, -17547]}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'FUZm\xfeL\x14~\\N\x9b\xafm;u\xedr\x8e\x7f\x01\xce\xd5\xb7\x00\x00\x005oxkhr'
 b'\x9e\x1e\x00Ey\x94H\x91\x02\x15\x00\x03\x00\xc5\x14n\xce:%\x88A \x9aK'
 b'M\xaa\xc2\xab\xcf\x04o\xa0!\x8f\xcf \xd6\xbe\x9c\xdeo\xe9\xde~?\xcf\x02L'
 b'\x03\xe4\xa5\x06\xa2B\x00\x00\x00\x03\x00\x00\x00PB\x9b\r\xff\x0c\x13'
 b"\x08\xa3\xef`\xb1(j\xa5\x95f^_a\x10c\xe0\xf2\xdeS'\xd1\xe4jh\xdc\x00\x00\x00"
 b'\x03\x00\x00\x00w\xabG\xab#e\x9d\xab\x1d\xd9\xc4\xe47\xe0\xa1\xd7\x8d]\xe3S'
 b'.\xb6\x1afB6\xe6\xe1"\xf8\xf7\xcd\x00\x00\x00\x03\x00\x00\x00\x9e,Yn\x9b'
 b'G:^\x8f\xd8TO\xcf\xbc<U\xf4\xb7hi\xca\xe7sq\x06\xc5\x00\x00\x00V\x00\x00\x00'
 b'}\x00\x00\x00\xa4')

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

{'A1': 28158,
 'A2': 19476,
 'A3': 9105238977206369141,
 'A4': -1336849463233292873,
 'A5': {'B1': 2349272952576584655, 'B2': 319650164573675734},
 'A6': 'oxkhr',
 'A7': {'C1': 40478,
        'C2': {'D1': -0.30638453364372253,
               'D2': -371294657,
               'D3': -12542,
               'D4': 76},
        'C3': 31124,
        'C4': 1217462805,
        'C5': [{'E1': [996, -23290, -23998],
                'E2': 4799445216963791011,
                'E3': -4256,
                'E4': [45352, 27301],
                'E5': 149,
                'E6': 26206,
                'E7': 6872792527505907283},
               {'E1': [10193, -7062, 26844],
                'E2': 12342021472349170461,
                'E3': -9788,
                'E4': [58423, 57505],
                'E5': 215,
                'E6': 36189,
                'E7': 16380487629338460726},
               {'E1': [-6431, 8952, -2099],
                'E2': 3195707023790071439,
                'E3': -10156,
                'E4': [20431, 48188],
                'E5': 85,
                'E6': 62647,
                'E7': 7523767747922167493}],
        'C6': [20, 110, -50, 58, 37, -120, 65]}}

Пример 2

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

(b'FUZ\xa4\x03T\xe8\xa8F\xcb\xfe\nLXP\xa6\x1c@\xc9\xf1y\xeb<\x00\x00\x005kaorz'
 b'0\x91\x00E\xa6L\x9f\x1e%G\x00\x03\x00\xc1f\x1c\x8b;\xf32j\xa2\x99\xb7'
 b'\xd3<\xe5\xfb\xe6\xc3\xe4\xae,\x0f}X+>m\xaa<\xba=\xaaN\x15\xb8\x93'
 b'\x9d\xce\xd59\x00\x00\x00\x02\x00\x00\x00P\x8d\x04\xa8\x84\xb7\xcc\x18\xbf'
 b'D\xe5\xc7!\xe8\xdb\xef\x1bV$a\x03\xf0\xd0\x8a\x10\xa3C!\xfb\n\x00\x00\x00'
 b'\x02\x00\x00\x00u\xf3&\x0e\x95d\xc7\xb3\x15@\x8c\x02}\xc5h\x97\x93\xce"4'
 b'Q}\xf5K\xd8\xfa\x9b\x90\xed^\x994\x00\x00\x00\x03\x00\x00\x00\x9ac\xcb\xbfe'
 b'\xd0l\xf8wP\x98<0\x95\xcf\x8a*\x90\x96\xb71\xa1\x02\x0f#\x18\x00\x00\x00'
 b'T\x00\x00\x00y\x00\x00\x00\xa0')

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

{'A1': -23549,
 'A2': 21736,
 'A3': 12125603338696546384,
 'A4': -6477230927981712580,
 'A5': {'B1': 11716598023468743654, 'B2': -4331145437361907669},
 'A6': 'kaorz',
 'A7': {'C1': 12433,
        'C2': {'D1': 0.23209470510482788,
               'D2': -1170363826,
               'D3': 5560,
               'D4': 147},
        'C3': 42572,
        'C4': 2669552967,
        'C5': [{'E1': [-25138, -10951],
                'E2': 10161431947227437247,
                'E3': 17637,
                'E4': [50977, 59611],
                'E5': 239,
                'E6': 6998,
                'E7': 2621380790932082851},
               {'E1': [17185, -1270],
                'E2': 17520707435135218453,
                'E3': 16524,
                'E4': [637, 50536],
                'E5': 151,
                'E6': 37838,
                'E7': 2464684497506654458},
               {'E1': [-25712, -4770, -26316],
                'E2': 7191051674036533367,
                'E3': 20632,
                'E4': [15408, 38351],
                'E5': 138,
                'E6': 10896,
                'E7': 10860203594021282584}],
        'C6': [102, 28, -117, 59, -13, 50, 106]}}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

Структура H:

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

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

Пример 1

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

(b"\x81DVO\xefy4\x00\x00\x00\x82\x0f'\xd4\xee^n\x00\xc5T\x94\xacc\xacF\xd0\xd9n"
 b'\xbc<;\x07\xf7\xe7\xfc>\x07\xe6o\xbe-\xbb\xd4\xb3\xb0\xc2\xe6\x9b{/\xc9?'
 b'80\x00\\\xb4p\x85\x05\x13o\xea\x94x*\xa5.$xi\xbfU\xa6\xea\xb8>\x91D\x00'
 b'\x00\x00I\x00\x00\x00\x0f8\xc9\x8d\x02\x00\x00\x00V\x00\x00\x00=J\x08?\x85\\'
 b'\x17$\x83\xaa|f\x02\x00N\x00X\x00\x00\x00b\x00\xff\xb3\xde \xa6\xfbK\x0f'
 b'\xa6\xa6m\x95\'=\x87u\xfa-Sz\xd3\xd4\x04\xef{\x13\x92\x0b"\xbf>\xc5{`\xa3%'
 b'\xe3?')

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

{'A1': 31215,
 'A2': {'B1': 397848062032097336, 'B2': 3361139394284777235},
 'A3': 3970,
 'A4': {'C1': 1592710183,
        'C2': {'D1': [{'E1': -0.9119894504547119, 'E2': 85},
                      {'E1': 0.36116522550582886, 'E2': 145}],
               'D2': {'F1': 36297, 'F2': [15, 56]},
               'D3': {'G1': 0.5323827862739563,
                      'G2': [-123, 92, 23, 36, -125, -86],
                      'G3': 26236},
               'D4': [1102251224756827135,
                      8468804864513517222,
                      17223124879727078906],
               'D5': 4987,
               'D6': -0.6329890489578247,
               'D7': 0.5983445057337702}},
 'A5': -59,
 'A6': [-27564, 25516, 18092, -9776, -17298, 15164],
 'A7': {'H1': 7, 'H2': 0.4939572513103485, 'H3': 3195004423, 'H4': 3017063213},
 'A8': 0.19676156151174018}

Пример 2

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

(b'\x81DVO+\x824\x00\x00\x00\xc0\xa1\xc0\xba\xb5e\x80\x00\xaa\xd5*\xd4\x81\xc6'
 b',(X\x15\xc7i/\x1d\x10\xd6\r>a\xc9\xef"\xcf\xc7\x0c_b\'\x10\xbeG\x9c\xe1\xbf'
 b'^)\xb3\xfb3\xca\xb7o\xcf\x0b\xf7\xeeF\xdb\xa6\xd4\xbb\xec\x05?'
 b'\xbb\xe9\xe2\x95\xbd\xeb\x13\x92\x14\xbf\x0e!\x13*\xbf\tD\x00\x00\x00'
 b'I\x00\x00\x00N\x00\x00\x00S\x00\x00\x00`\xa2\x8b;\x02\x00\x00\x00'
 b'h\x00\x00\x00\xe9\xd68\xbf5\xae\xaf4\xc8 \x8a\x9c\x04\x00X\x00j\x00\x00\x00'
 b't\x00\x00\xb7\xf6E\xd9\x01\x97)Nc\xc8\x87\xab1\xcf\xaf \xa5y\xa9\xbfP'
 b'\x7frN\xb91"C>0\xa4jTl\xc7\xb4?')

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

{'A1': -32213,
 'A2': {'B1': 8050125183563016542, 'B2': 15323175879878052815},
 'A3': -24128,
 'A4': {'C1': 1706408640,
        'C2': {'D1': [{'E1': 0.523143470287323, 'E2': 187},
                      {'E1': -0.07318670302629471, 'E2': 235},
                      {'E1': -0.5803539156913757, 'E2': 14},
                      {'E1': -0.6643543839454651, 'E2': 9}],
               'D2': {'F1': 15243, 'F2': [96, 162]},
               'D3': {'G1': -0.7220292687416077,
                      'G2': [53, -82, -81, 52, -56, 32],
                      'G3': 40074},
               'D4': [2996866109731682048,
                      12668398889603720014,
                      8250401826478335264],
               'D5': -18098,
               'D6': 0.19056011736392975,
               'D7': 0.08116795597983706}},
 'A5': -86,
 'A6': [10965, -32300, 11462, 22568, -14571, 12137],
 'A7': {'H1': 29, 'H2': 0.13851189613342285, 'H3': 586140001, 'H4': 1594673103},
 'A8': -0.5503271782083454}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'HSA\xcc\x1e\x00\x03\x00\x00\x00i\x00\x00\x00\x05\x00\x00\x00\x81\x00'
 b'\x00\x00\xeb\xb8 \x96\xcb\\\xcaT\x84\x16\xdc\x9f\x8f\x03\xec?\x83/\x01[\xc4:'
 b'>\xe5\xa5\x1e\xb9\x13\xeb\xa1\xbe\xbd\\0\xe996\xd3\x99\xbe\x95\xb6I(\xf3s'
 b"nv?)z\xeab\xc0'!\x18\xbf\x98g\xe4\x8eP\xc1|\x8e<x\x8b\x1cL4\x84\xa7"
 b'\x9e6\x94\xaf\xa9W,\x9avX\xb7\x80.\x08\xe6\xe6G\x13\xe3\xa7Gm\xf32'
 b"\xba\xa2\xa4\xe6\xda\xd2oI\xe4\x04-H\xa5\xe3\x16\xab\x06\x0b\x1f]U'\x15K"
 b'\xf3\x16\xb4\xa4\x8f')

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

{'A1': {'B1': {'C1': 0.8754346964130524,
               'C2': 12163,
               'C3': 985946881,
               'C4': [{'D1': 514188606, 'D2': 185, 'D3': -0.3162465989589691},
                      {'D1': 3912260797, 'D2': 57, 'D3': -0.3004395365715027},
                      {'D1': 675919509, 'D2': 243, 'D3': 0.9626228213310242},
                      {'D1': 1659533865, 'D2': 192, 'D3': -0.5942558646202087},
                      {'D1': 2397333400, 'D2': 80, 'D3': 0.01739347167313099}],
               'C5': 1276939128,
               'C6': [2661778484, 2846856246, 1989815383]},
        'B2': [5181081344150648664,
               13417053890569298707,
               16449802065353811106]},
 'A2': [-1521996540, 111875811, 1432166155, -213183193, -1885031402],
 'A3': 6109797873948342507}

Пример 2

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

(b'HSA\xcc\x1e\x00\x02\x00\x00\x00i\x00\x00\x00\x04\x00\x00\x00y\x00'
 b'\x00\x00O\xbc\xbc\x1b-k\xf2\x8eP\xfe\xd0\x95mY\xbd\xbf\xb6\xe2'
 b'\xcb\xf9\x9a\xf6,l\xca\xa1S\xd4A&\xbf\xf6|\xac\xa5\x8e\xe2\xab=\xbf=\xdb'
 b'\x8d\xbb{\xc9 \x7f?z\xc3\xb2\x8d\xb8\xfa\\`\xbe\xfdC\x11\x9f\xd6Lx,'
 b'\xbff_\x08\xd7\xc4p\xb5\xeb\x0f\x08%p3\xe3\xc29\xfc\x90\xbb|\xf3\xd3\x8a'
 b'*\xc7\\[\x9a\x82\x96\xa8\x8b\x82\x1f&\xb17\xb4\xf6\x91\xcdF\x88R\xb0\xcci'
 b'\x00')

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

{'A1': {'B1': {'C1': -0.11464581401468732,
               'C2': 58038,
               'C3': -157615669,
               'C4': [{'D1': 2714397740, 'D2': 83, 'D3': -0.6494419574737549},
                      {'D1': 2779544822, 'D2': 142, 'D3': -0.7409039735794067},
                      {'D1': 3146636093, 'D2': 123, 'D3': 0.9965940117835999},
                      {'D1': 2377302906, 'D2': 184, 'D3': -0.21910467743873596},
                      {'D1': 2668708861, 'D2': 214, 'D3': -0.6737105846405029}],
               'C5': 3607650150,
               'C6': [3954536644, 1881475087, 969073459]},
        'B2': [3065495539102224636, 10063458855038966983]},
 'A2': [-1322901630, -1846102985, 1384662733, 6933680],
 'A3': -8146330934476751793}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xd4QSX(\xae!?\x06\x00M\x00\x00\x00\xbcy\x00\x00\x00.Qm \xd0\xfb\xbb\xda\xb3'
 b'\xde\xf3\xa3\x83\xach+AJA\xa4\x8178\xea\x86\xce\xe1"\xac\xb3w\xa1\x95'
 b'\xaaZ/\x86\xd7\xd7\x07\x06\x00\x00\x00\x98\x00\x00\x00\x02\xa1]U\x18'
 b'\xce.\xd6n?\xdc6m\x14\xd5\x80\xe5\x87\xb4O\xc2\x97r\x7fwx\xda\xa3^|"\xe3m'
 b'4\x1fp\x97\xa7TR\x1d\xb1\x9e\xf1pk\xdd\xdf\x1b&\x93w\xf7Z\xca#*A\xb10W'
 b'M\x86\xb2\xd0\x19\x02\x00q\x00\x00\x00\xa6t\xed\x03\xe67\xa4\x1c{'
 b'\x8fZ\xde\xc7\xc5\xf3\xde\xbe\xf2\xfcg\xbf\x08:y>\xd5!\x1e\xbeB_\xcf\xbe'
 b'H\re?')

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

{'A1': 0.631563663482666,
 'A2': {'B1': [{'C1': 342701788, 'C2': 32981},
               {'C1': 1337231333, 'C2': 38850},
               {'C1': 2021097330, 'C2': 41946},
               {'C1': 3810688094, 'C2': 13421},
               {'C1': 2811719711, 'C2': 21076},
               {'C1': 4053709085, 'C2': 27504}],
        'B2': 188,
        'B3': {'D1': 5572976601754903498,
               'D2': 433107590,
               'D3': [639360989, 1526167443],
               'D4': -90,
               'D5': 8871145926002208116,
               'D6': 23183,
               'D7': 51166},
        'B4': [-2685275881480564434,
               3127939622600171187,
               -1569443440192566719,
               -6811778359473615226,
               565157249578347157],
        'B5': [-0.4354535639286041,
               -0.9062033891677856,
               0.2433854341506958,
               -0.15442593395709991,
               -0.40502363443374634,
               0.8947339057922363]},
 'A3': -24318,
 'A4': 4570826168342173021}

Пример 2

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

(b'\xd4QSX\x85{p?\x02\x00M\x00\x00\x00\xe9a\x00\x00\x00\x9d\xcd&\xd3c\xfc7v\x83'
 b'\xaaMu\xc3+:?\tx?{\xda\xc7\xa8\xee6\x90\x84\xbb\xe9;>\x96F\x90\x04_\x0b'
 b'\x87\x0e\xa3\x05\x00\x00\x00\x80\x00\x00\x00\xc1\xca\x1b6\x98'
 b'\xcc\x84\x85\x1bo\xafF|\xdcA\xc0#a\xc1\xa2_\xd5\x8e\xa2\xf5\x98\xd6<\xda'
 b'u0v\x07\r\x8b\xdc\x1d\xa4\xd8d\x04M\x02\x00Y\x00\x00\x00jS\xf1\xca?'
 b'\n\xfb\x1b=o\xa6\x9a\x15w\xcdd\xbf\xd3\x927?\xb1(u?\xa40\x9e\xbe!\x0c\x82>')

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

{'A1': 0.9393847584724426,
 'A2': {'B1': [{'C1': 3699132079, 'C2': 49217},
               {'C1': 2730582307, 'C2': 54623}],
        'B2': 233,
        'B3': {'D1': -6620893387387603408,
               'D2': 1292133592,
               'D3': [2566234766, 1977236694],
               'D4': 106,
               'D5': 4403389082123301203,
               'D6': -22929,
               'D7': 5530},
        'B4': [8518554725869079965,
               4556002091525319299,
               -1249529155410757623,
               -7620587644404854730,
               -6697267112944824250],
        'B5': [-0.8937601447105408,
               0.7170841097831726,
               0.9576521515846252,
               -0.3089648485183716,
               0.2539987862110138]},
 'A3': -13631,
 'A4': 8006139567995893275}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x01YWYE\x82\x96\x1b\xae\x92\xbe\x94\x08\x92\x00\x00\x00\x03\x00\x00'
 b'\x00\x98\x00\xcf\x02+\x11\x83\xddN\xb9\xef\xec3?9\x0e<\xbf=\xe5\xc4\xbd\x15'
 b'\x99>?%\x1a\x85\x05\xc9\xc2\x16\x02\x00\x00\x00\x9b\x00\xb97\x11&A\xc0D\x9c'
 b'\xf4f\x8a\xbe\x93\xacd?A\xa6\x7f\xbf\x9a\xc3/\xbe\t\x19<\x86i_\xaah'
 b'\xea@E\x02\xb7\xe8?\x82\xb4D\rq\xb0\xefe\xe9\x14\x835\xdf\x19j,\x97\xd1x\r,'
 b'\xf1<\x17\xdf\xe1\xae\x92\x88\x89u1^\x8d\xd5\x84n\xc5\x1c\xe4\xefF\xb06*'
 b'\xab\x11\xdeX\xb7\x08\x8f\x00jdxjx')

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

{'A1': 618328586052146818,
 'A2': {'B1': 146233566, 'B2': {'C1': 42, 'C2': 4523}},
 'A3': [{'D1': 'jdx',
         'D2': {'E1': -5093890573510966577,
                'E2': [0.7028340697288513,
                       -0.7345920205116272,
                       -0.09614036232233047,
                       0.7445233464241028]},
         'D3': 92609061,
         'D4': -15671,
         'D5': 22},
        {'D1': 'jx',
         'D2': {'E1': -7186407719332399175,
                'E2': [-0.2703167200088501,
                       0.893258273601532,
                       -0.9986305832862854,
                       -0.17164459824562073]},
         'D3': -2042881783,
         'D4': 24425,
         'D5': -86}],
 'A4': 0.7723399498566552,
 'A5': 222606466,
 'A6': [3855948698629419121,
        970756166913759711,
        10569633723768959276,
        9571712018742086024,
        3940727670087402862]}

Пример 2

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

(b'\x01YWYEs\x1ba\xff\xd1~\xc4z\x92\x00\x00\x00\x04\x00\x00\x00\x98\x00\xa9'
 b'\xdb;\x8f\xb1-Q\xf82\\\\?\\\x93\xae>\xb2\xdd}\xbf\xf5!Z\xbf\xe2\xf8\xfc(\xbc'
 b'\x85d\x03\x00\x00\x00\x9c\x00\x1b\x13\x05\xfc\x93S\x9f\x9b\xca3n\xbf'
 b'\x0cI*\xbf\xb9\xdd\x11?\xe6TG?\x80\xb8\xb7ez\xd9\xbe\x8a\xa2_K\x97'
 b'\xca\xeb\xbf\xef(\xb7\xd1+\xdb%T\xc7*\x04\xa0f\x86\xf81\x04\x9bi\xdbH'
 b'"\xb9\xc9\xfc\xa1\x04"\xed\r\xb6\x8d`\xa5\xe6\xc3\x95\xdeR(\xa7\x9e\xc8\xe0%'
 b'\xd4\x06sM\xe2\xe2\x8f\x00pggatli')

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

{'A1': 8846335008460315507,
 'A2': {'B1': -488485517, 'B2': {'C1': 37, 'C2': 1748}},
 'A3': [{'D1': 'pgga',
         'D2': {'E1': -553611038554334295,
                'E2': [0.8607817888259888,
                       0.3409680128097534,
                       -0.9916640520095825,
                       -0.8520806431770325]},
         'D3': 687667426,
         'D4': -31300,
         'D5': 100},
        {'D1': 'tli',
         'D2': {'E1': -7232970581480238309,
                'E2': [-0.9304777383804321,
                       -0.6651771068572998,
                       0.569789469242096,
                       0.7786391973495483]},
         'D3': 1706539136,
         'D4': -9862,
         'D5': -66}],
 'A4': -0.8684803459301105,
 'A5': 3518441711,
 'A6': [11530387981573937963,
        15810338409181382246,
        2451262204284576328,
        14116151916152360429,
        16197370500611235477]}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'aDDG\x93\x00\x00\x00y)\xbfp\x8cjl\xce\\^*\xb29\xcaIM\xbe\xa4\x9b\x95'
 b'\x08\x11\xb1^\xb8=\x84\x1d\x9er(\xb1\x08A\xda\xbdm\xa3\xbb\x1f\xe1\xa9\xc1h'
 b'\no\xa0F\x8f\xac\xf0\xeb(\x89r \x0c\x98r\xb5U.\xd8\xe8\x10^CK\x02\x00H\x00'
 b'\x00\x00\x84\xac\x05\x82\x8cn\r\xb5\xe5\xce\xd1o\x05\x00T\x00\x00\x00'
 b'\xf8\xeeL\x00^\x00\xc4\x96\x0e\xaba\xaf\xba\xa0\x02\x00f\x00\x00\x00'
 b'\xa9\x7f!4\x13\xd0U,_\xd3*\xd0\xf9x\xed\x16\xd8\xcb\xdc\xd3\xad>%X'
 b'\x87\x08\x1b\x8a\xb6\x11S<\x19\xef\xbf1\xe1\xf2J8_j\x00\x00\x00\x0f')

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

{'A1': {'B1': -0.9718305227704189,
        'B2': -7887,
        'B3': 1597524722,
        'B4': {'C1': 11581762225753200324,
               'C2': [{'D1': [24080, 19267], 'D2': 44164},
                      {'D1': [-32251, 28300, -19187, -12571, 28625],
                       'D2': 61176}],
               'C3': 169,
               'C4': [127, 33, 52, 19, -48, 85, 44, 95],
               'C5': -45,
               'C6': {'E1': 42,
                      'E2': -48,
                      'E3': [-7, 120, -19, 22, -40, -53],
                      'E4': 0.33950698375701904,
                      'E5': 37},
               'C7': 453543768},
        'B5': 15},
 'A2': [14874380820717447545,
        5569204763371396700,
        6823253639010428094,
        12765579167207275960,
        2286600927552618760,
        5089189669426538977,
        2338081965408824463,
        16778211357420066828]}

Пример 2

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

(b'aDDG\x93\x00\x00\x00\xe4i\x851\xd3\xad\xd9/\x9c\xa2\xa91\x8e\xd7S\xb3'
 b'\xc2\t\x17\xa6^WFD\x1f\xbd\x149\x81*k\x80J\xee*\x86]\x90aQ\x10\xd0\xe2#'
 b'\x01\x12NE\xcb\x08\xe8v2\xef\x02%C\xc0\x19?\xd2\xc3\xad\x8b_ e\xd4'
 b'\x02\x00H\x00\x00\x00%\x8cO\xa9wj\x1eR!T\x13\xb8\x05\x00T\x00\x00\x00yXL\x00'
 b'^\x00\xe3a\x87\x01\xd4\x81\xd7R\x02\x00f\x00\x00\x00E\xe4w\xf0\xe5/@ '
 b'4\xac\xce]\x0e\xae\x89|\x95\x8b\x10\xbe\xdb;\x8c\xd4\x8f\xaem\x1c\x10D\xbd"'
 b'\x96\xdc?\x1a\xe9-\xc3\xfb\xa8j\x00\x00\x00\xa9')

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

{'A1': {'B1': 0.44666355593676754,
        'B2': -5862,
        'B3': 2835071789,
        'B4': {'C1': 5969382578661581283,
               'C2': [{'D1': [8287, -11163], 'D2': 35877},
                      {'D1': [-22193, 27255, 21022, 21537, -18413],
                       'D2': 22649}],
               'C3': 69,
               'C4': [-28, 119, -16, -27, 47, 64, 32, 52],
               'C5': -84,
               'C6': {'E1': -50,
                      'E2': 93,
                      'E3': [14, -82, -119, 124, -107, -117],
                      'E4': 0.006706006824970245,
                      'E5': -116},
               'C7': 1840156628},
        'B5': 169},
 'A2': [3447978112309357028,
        12921908761574613660,
        4919715706973915586,
        9253536593859624223,
        5864126921170415178,
        4993948832906792976,
        2666956929379076299,
        10064916050012127299]}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GYIH\x1d:vl\x02\x00`\x00d\x00\x00\x00\x03\x00r\x00\x00\x00\x01\xc1'
 b'\xd6K\xb2\xe6\x80bu\x00>\xd8\xfdL\xca\xd5\xeb?\xf6\xa8n\xfe\xae-\xa5\t'
 b'\x02\x00(\x00T\x93\xaf\xb6$_\xdd\xbfx\xc1\xf5*c\xe9)\xf0V\x95\x13\x95'
 b'\xe5\x9c\x04\xd1\xab\x9d\x04\xfc#,\x05\x00>\x00\xa8\x9cu\xf7\x8dd'
 b'\xd2\xbf\xc5K0\x00R\x00\xb9m\xa8Wz\xed\xc4m\x96\xbd\xf2k\xde\xb5\x19\xa7'
 b'\xda\xfa^~\xd4K\xc4\xaf\xcd7\x10\xf41\x16\xa2\x8d>')

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

{'A1': 58,
 'A2': 'vl',
 'A3': [{'B1': [-26302218, 161820078], 'B2': -0.4589320930520462, 'B3': 49528},
        {'B1': [-379376907, -1789464535, -1662675693, -1649684220, 740555780],
         'B2': -0.287387363109199,
         'B3': 19397}],
 'A4': {'C1': 28089,
        'C2': -88,
        'C3': -955442147733177769,
        'C4': -8597,
        'C5': 181},
 'A5': [25, -89, -38],
 'A6': 7097926666186834177,
 'A7': {'D1': -729915654,
        'D2': [75, 196, 175, 205, 55, 16, 244, 49],
        'D3': 0.27662724256515503},
 'A8': 0.8698474410764516}

Пример 2

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

(b'GYIH\x1d~iq\x02\x00X\x00\\\x00\x00\x00\x02\x00j\x00\x00\x00>\x17fp\xb6\x98'
 b'<vl\x000\x9f\x9a\x14\xb0\xf3\xc8?\xb3\xca\xe4\x83\xe5\xdd5\x11?\x99\x9e$'
 b'\x03\x00(\x00\xb2|;0\xd3\xac\xec?\x1f\xff\xaf\xc4e\x1f\x81\xa1'
 b'\xdf\xa6\x02\x00B\x000L\xe4\r9\xea\xda?.\xda4\x00J\x00\x10\xb69\xa5'
 b'n\xe1\x0b\xbe\xb9n4\x08+\xee\x01\xc6\xd7s\xe2g\x15\x18\xf6\xab\xa4:\xb5\xe0'
 b'\x90\x00\xe4>')

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

{'A1': 126,
 'A2': 'iq',
 'A3': [{'B1': [-2082157901, 288742885, 614373695],
         'B2': 0.8960967962301736,
         'B3': 65311},
        {'B1': [526763183, -1495293567],
         'B2': 0.4205458293592441,
         'B3': 55854}],
 'A4': {'C1': 46608,
        'C2': 57,
        'C3': 3778161363304672933,
        'C4': 11016,
        'C5': 238},
 'A5': [1, -58],
 'A6': 8519852504415344446,
 'A7': {'D1': 1742894039,
        'D2': [21, 24, 246, 171, 164, 58, 181, 224],
        'D3': 0.44531679153442383},
 'A8': 0.19493676191381715}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'IWU\xfc\xe7\xd7ubn\x12-\x82\xc7\tu\xe4|=v">\x99\xeb\xbf3\xb8wmqda\xa7'
 b'\xc8\x03\x00\x00\x00R\x00\x00\x00\x02\x00\x82\x00\x00\x00\x12:S\xbf*\n\xf7.o'
 b'\xde\xa6\x977\x87Dv\xed\x80<\x0b\xc2Ba\x92\xae\x80*\xb0\x03\x8d@\xfc\xa9'
 b'\xb7\x06\xe8\xa0\xc7\x18\x0f\x170\xb5\xfc\xfc\x04\x00C\x00\x00\x00g^'
 b'Q\xe3\xc0\xbd1\x80>^\x05\x00G\x00\x00\x00 \xeb\x81d\xae\x051\xbf\x1fJ'
 b'\x06\x00L\x00\x00\x00\x87\x07\xf0e3v\x08\x86')

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

{'A1': 231,
 'A2': 215,
 'A3': {'B1': 'ubn',
        'B2': 18,
        'B3': {'C1': 164069933, 'C2': 58485},
        'B4': {'D1': -0.8624563859065542, 'D2': 47155},
        'B5': 'wmqda',
        'B6': -14169},
 'A4': [{'E1': 13055960673354752232, 'E2': 64764, 'E3': [-62, 66, 97, -110]},
        {'E1': 9237372946858729063, 'E2': 24126, 'E3': [-82, -128, 42, -80, 3]},
        {'E1': 13776798981671742240,
         'E2': 18975,
         'E3': [-115, 64, -4, -87, -73, 6]}],
 'A5': [1710229383, -2046265805],
 'A6': -0.825104832649231,
 'A7': -7519077958737786326,
 'A8': 809663790399653687}

Пример 2

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

(b'IWU\xfc\xcd(ntd8\xf4\xec0o\xfb\xbf\x8c\x9al\x9ep\xd9\xd3\xbf\xe4\xc6rr'
 b'tdv\x81\xee\x03\x00\x00\x00O\x00\x00\x00\x06\x00\x7f\x00\x00\x00\x081-?\x07'
 b'\xa4\xea*\t~\x98\xa9\xb2<\xc43I\xfe\xed-a\x0c\xfb\x8c\xd3"{\x8b"'
 b'\x8e\x1d\x8c\x90\x9e\xdc>\xf9\xc5i\xa2\xc1\x96\x03\x00C\x00\x00\x00\xe5'
 b'\xe4@o0XT\xa2c\xf4\x03\x00F\x00\x00\x00J\xcf\xcf\xf7\x90\xe6t\xbc\t'
 b'\x9d\x06\x00I\x00\x00\x00\xba(\xe4I\x9ewJ\x07\xd6D1\x89\xc9]\xa2\t-'
 b'\xf5a\xfe4\x80\xd8\x8b')

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

{'A1': 205,
 'A2': 40,
 'A3': {'B1': 'ntd',
        'B2': 56,
        'B3': {'C1': 1865477364, 'C2': 49147},
        'B4': {'D1': -0.3101464793311741, 'D2': 50916},
        'B5': 'rrtdv',
        'B6': -4479},
 'A4': [{'E1': 11703102780991118992, 'E2': 38593, 'E3': [97, 12, -5]},
        {'E1': 11697071097236219109, 'E2': 62563, 'E3': [-116, -45, 34]},
        {'E1': 13579732286736158538,
         'E2': 40201,
         'E3': [123, -117, 34, -114, 29, -116]}],
 'A5': [1239689402, 122320798, -1993259818, 161635785, -27134675, -1948745676],
 'A6': 0.6765294075012207,
 'A7': -6226087906999884793,
 'A8': 3309580891541748914}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'LLHS\x00Ss\xbe\xc6\xdb\xa7\xbe\x00\x00\x00\x08\x00\x00\x00a\x95$\xbe\xd9'
 b'^P\xb9[XI\x00i\x06>f\xbf\xc2\xd6\x00\x00\x00\x02\x00\x00\x00w\xd1\xe2\xbf>M+'
 b'\xca\xff\x89\x8d\t\xc4\x00\x06\x00y\x8dL\x81\x7f\x00\x00\x00\x85\xd3\x1f'
 b'\x88"\xe2p\x86w0)\x98\xe5\x92\xbf\xebX\xcc\xd9\x18\xaa\x1c\xa1\x942\xf2@'
 b'r\x06ytR\xc9\x19:\x11\xbf\xc5*\xe4\xc8x\x95 W\x8d\xac\x18+O\xf3'
 b"\xe0\x8c\x88\x0c\x98\x12j\xcbc\xf7#S~?x\x9c'\x8b\x90\xa9\x88vZ\x9b"
 b'\xb2\x88\x15,-\x00\x19\xdew\x0c\xda\xee\xf8\x0bq~bU\x10\x0eD\xe0r\xde4\xcdQu'
 b'>\xdf\x1d\xb8\x10')

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

{'A1': {'B1': [{'C1': {'D1': -0.8545898666537286,
                       'D2': -95,
                       'D3': -108,
                       'D4': 854737010},
                'C2': {'E1': 115,
                       'E2': -0.3883945643901825,
                       'E3': 190,
                       'E4': [6, 121, 116, 82, -55, 25, 58, 17],
                       'E5': 38180,
                       'E6': -0.4245476722717285,
                       'E7': 3109771337}},
               {'C1': {'D1': -0.16537151135086336,
                       'D2': 87,
                       'D3': -115,
                       'D4': 2887265103},
                'C2': {'E1': 6,
                       'E2': 0.22534087300300598,
                       'E3': 214,
                       'E4': [-13, -32],
                       'E5': 53730,
                       'E6': -0.7433649897575378,
                       'E7': 3405744525}}],
        'B2': {'F1': 9,
               'F2': -60,
               'F3': [-29560, 3224, 4714, -13469, -2269, 21374],
               'F4': 36172,
               'F5': 33151},
        'B3': {'G1': 0.9711326956748962,
               'G2': [10056724371484613554,
                      9805792335455968887,
                      926315422489345634,
                      6129414781837434420,
                      14794735163780478992]},
        'B4': 3542059042,
        'B5': -30},
 'A2': 8108299227867178386}

Пример 2

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

(b'LLHS\x00S\x0c>\x0c"u\x1e\x00\x00\x00\x05\x00\x00\x00a\x07\x08?|J\xb0\x91\xe6'
 b'\x1b\x81\x00f\xaa\xbfgJ\xe1%\x00\x00\x00\x03\x00\x00\x00t\x92\x0f?\x03?g'
 b'\xc8r0\x95\xc4\xac\x00\x05\x00w\xf5\xcb\x97+\x00\x00\x00\x81\x9a\x14'
 b'\xd0\xf7\xd0q\xd4bS\x84\xc1\xaeP\xbf\xda\xe9\xf0\x8a\x1a\x1b\x00\xe3'
 b'\xfa\x8d\xd1;\x00h\xd3Qb$\xbf\xe9\x95\x84\x10+\x90R\xb6\x15/(o\xc0'
 b"'\x08\x85\xc5\xb3\xd5 t6\x0c\xf5\xde\xd8=\xb8\xdf\xe4;)\xc6\x90\xfa\xd4\xa1"
 b'QB\xb5\xfb\xd4.\x9a\xfa\xfb,\x102\x99J\x9b\xc5~XZ8h\xb1*\x98\xa340\x8df(,v'
 b'\xbb')

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

{'A1': {'B1': [{'C1': {'D1': -0.4205285404827208,
                       'D2': -29,
                       'D3': -6,
                       'D4': 2379299584},
                'C2': {'E1': 12,
                       'E2': 0.13685019314289093,
                       'E3': 30,
                       'E4': [104, -45, 81, 98, 36],
                       'E5': 1800,
                       'E6': 0.9855146408081055,
                       'E7': 2447776641}},
               {'C1': {'D1': -0.7995014491866732,
                       'D2': -74,
                       'D3': 21,
                       'D4': 791179200},
                'C2': {'E1': 170,
                       'E2': -0.9034863114356995,
                       'E3': 37,
                       'E4': [39, 8, -123],
                       'E5': 37391,
                       'E6': 0.5126861929893494,
                       'E7': 3362926741}}],
        'B2': {'F1': -60,
               'F2': -84,
               'F3': [-14925, -10976, 29750, 3317, -8488],
               'F4': 62923,
               'F5': 38699},
        'B3': {'G1': 0.09027078747749329,
               'G2': [4263156848268714321,
                      4807025066021419771,
                      3175093371259307390,
                      6366463045541730467,
                      3760661158754547387]},
        'B4': 2585055479,
        'B5': -48},
 'A2': 8202288932197609040}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ECTM\x1c\x00\xfc\xbc\xb5 J\xa4\x8c\xdcc\xd6?\x03\x00\xa8\x00pL\xeb'
 b'\xde\xf5\xab\xdc\xbft\xcdo\x1f\xe7\xf49\x16\x11Qo?>\x8b\xab\xbe\x0c\x9c\xb5'
 b'4\x03\xc1\xcd\xf3\xea\xe8\xc4\x98\xe8\xf5T_\\\xde\x8c\xa1\xf7\x18g\x9f`>\r'
 b'\xcfd"\xf7\xf7>\x12\xda\xe9^\r\x9a\t\x04\xb1\x15\x01\xa6\x1c\x06'
 b'\x00\x00\x00A\x00\xd9\x8a\x8aj\xa4\xbf\xbb\xf9{\xc8\x91\x91\xbd \x90'
 b'\xb4\xe6\x00\xe6b\n[x\x02\x00\x00\x00f\x00!\x84\x7fz8\xf7\x07E(@v#\xf7\xc0'
 b'\xbd\xb2C!%5\xe0\xfc/\x85\x93PyG\x92\xed@\x06\x00\x00\x00\x83\x00d'
 b'\xc4\xc7\x0bnM\x00\x00\x00j\x00\x00\x00\x8f\x00\x00\x00')

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

{'A1': 3049061376,
 'A2': {'B1': 0.3498450635389947,
        'B2': [{'C1': {'D1': 4670,
                       'D2': 218,
                       'D3': 2584567529,
                       'D4': [9, 4, 177, 21, 1, 166, 28],
                       'D5': [6391, 40807, 15968, 53005, 8804, 63479]},
                'C2': [217, 138, 138],
                'C3': 42090},
               {'C1': {'D1': -28216,
                       'D2': 145,
                       'D3': 3029344445,
                       'D4': [230, 0, 230, 98, 10, 91, 120],
                       'D5': [48063, 31737]},
                'C2': [33, 132, 127],
                'C3': 14458},
               {'C1': {'D1': 9505,
                       'D2': 53,
                       'D3': 2234514656,
                       'D4': [147, 80, 121, 71, 146, 237, 64],
                       'D5': [2039, 10309, 30272, 63267, 48576, 17330]},
                'C2': [100, 196, 199],
                'C3': 28171}]},
 'A3': -0.4479956318802527,
 'A4': 1601580416008965492,
 'A5': 0.9348307251930237,
 'A6': -0.3350467085838318,
 'A7': 17567909940955552780,
 'A8': [-5910, -26428, -2584, 24404, -8612, -24180]}

Пример 2

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

(b'ECTM\x1cP\xcfDwh\xd8\r\x14\xb2\xd5\xe6?\x03\x00\xa2\x00\\\x91\x84\xbf=@\xe4'
 b'?;\xe4\\r\x18\x1b}\xc8\xcdvC\xbd\xf2:F?X\x8d\xf2O\xb1\xfa\x0eHm}\x91'
 b'q\xe4\xeb\xad\xe9\xdc\x8e\xf7_\xccC\x13\xc9}\x1e\x17U/\x037)\xe8\x05\xe8'
 b'Wh\xa9?\xf0\xd1G\x7fg\xbb\x9f\x06\x00\x00\x00A\x00\xc9\x7fs\x07p\x00\xfd'
 b'\xab\xd5i\xdcSj\xb8\xa5t\xed\x89\x7f\xf3\x82H%\x02\x00\x00\x00f\x00\xe2\x1c'
 b'dp\xae\xdb\xc5\xcb\xf8\x16\xb7T\x92\xb5\xe8\xff\xd9I5??b*\xfd\xf3\x03'
 b'\x00\x00\x00\x83\x00Y\x1d\x90.\xd5M\x00\x00\x00j\x00\x00\x00\x89\x00'
 b'\x00\x00')

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

{'A1': 2000998224,
 'A2': {'B1': 0.7135858909303012,
        'B2': [{'C1': {'D1': 1512,
                       'D2': 232,
                       'D3': 1068066903,
                       'D4': [240, 209, 71, 127, 103, 187, 159],
                       'D5': [17356, 51475, 7805, 21783, 815, 10551]},
                'C2': [201, 127, 115],
                'C3': 28679},
               {'C1': {'D1': -9111,
                       'D2': 83,
                       'D3': 1957017706,
                       'D4': [237, 137, 127, 243, 130, 72, 37],
                       'D5': [64768, 54699]},
                'C2': [226, 28, 100],
                'C3': 44656},
               {'C1': {'D1': -28076,
                       'D2': 181,
                       'D3': 1239023592,
                       'D4': [53, 63, 63, 98, 42, 253, 243],
                       'D5': [50651, 63691, 46870]},
                'C2': [89, 29, 144],
                'C3': 54574}]},
 'A3': 0.6328419437964317,
 'A4': 14446732971486274619,
 'A5': -0.04772071912884712,
 'A6': 0.7743369340896606,
 'A7': 5192363059862211928,
 'A8': [32109, 29073, -5148, -5715, -28964, 24567]}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KQBQZ\xaa\xa5y\xac\x00\x00\x00j\xa2\x9d\xcf^0O9\xef~\x16b\xb6\x00\x02\x00'
 b'q\x9d\xa7\x93\xf0\xe7\xfe.\xbdq\xebcxd\x97\xf0\xbf\x0c3\xc4\xecg~\x1b'
 b'gz\xef\x10\xb6n\xa5\x00\x03\x00\x00\x00\x1e\xa2\xdf?\x8d?#\x17\\\xcb\xf8\x02'
 b'\xf7\xe5\xbf\xd4\x81m\xfcd\x00\x02\x00\x00\x00$\x00\x02\x00\x00\x00('
 b'>\xcd\x0f\xb2h\xc8\xc0\xcb(\tm\x00Z\x0b\xce\x81\xf2)\x16i\x95')

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

{'A1': -1431995988,
 'A2': {'B1': 109,
        'B2': {'C1': [{'D1': 2019858416,
                       'D2': -0.5476648807525635,
                       'D3': -5017,
                       'D4': [126, 27, 103, 122, 239, 16, 182, 110],
                       'D5': -91,
                       'D6': [-22637, -3865, -466]},
                      {'D1': -1562427507,
                       'D2': 0.6370751857757568,
                       'D3': -13320,
                       'D4': [2, 247, 229, 191, 212, 129, 109, 252],
                       'D5': 100,
                       'D6': [-17039, -5277]}],
               'C2': 0.40051037073135376,
               'C3': 1757987019,
               'C4': 10249},
        'B3': 198083058},
 'A3': 2728251230,
 'A4': 3481064737756046006,
 'A5': [10518, 27029],
 'A6': -99}

Пример 2

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

(b'KQBQZ.\xeb\xc99\x00\x00\x00lAW\x9ec*Is\xb5\x96\x9b\xb2O\x00\x02\x00sG \xcd'
 b'\xaf\x13\xf5\xdeBpw\xeaF\x13\x19o\xbd\xa7>?!\xeb_7\xb1\xc7\xf6\xf8N\x80\xccz'
 b'e\x00\x03\x00\x00\x00\x1e\xb9\xfc\xd0\xa5\xbd\xf4\xbb\xd9\xdcf\x06\x1a\x11'
 b'\r\xb2D/\xde\xf4\x00\x03\x00\x00\x00$\x00\x02\x00\x00\x00*?>\xa5\xfd\x02\xb0'
 b'\xde\xcd\xe8\xd0\x88\x00\\,\x81}9-\xab\xaa4')

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

{'A1': 787204409,
 'A2': {'B1': 136,
        'B2': {'C1': [{'D1': 426753447,
                       'D2': 0.18665282428264618,
                       'D3': 24375,
                       'D4': [177, 199, 246, 248, 78, 128, 204, 122],
                       'D5': 101,
                       'D6': [8397, -20717, -2594]},
                      {'D1': -1174613851,
                       'D2': -0.11949891597032547,
                       'D3': -9114,
                       'D4': [6, 26, 17, 13, 178, 68, 47, 222],
                       'D5': -12,
                       'D6': [17008, 30698, 17939]}],
               'C2': 0.7447202801704407,
               'C3': 45145805,
               'C4': -5936},
        'B3': 746683705},
 'A3': 1096261219,
 'A4': 3047093846645912143,
 'A5': [11691, 43572],
 'A6': 71}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b':SLB\xad\x00]\x00\x00\x00z\xa6\xa0\x06\xbd\xe6\xe9I\xa3\xfe\xa9L\xd6\xfe'
 b'U\x13m\x88\x06\xacNL5`&\xa5\x9a\xd0\xd7\xd4\xf9\xe6\x85\xe8\x00\x00\x00\x0f'
 b'\x07w\\\x15\x1b\x1d\xb94r\xeb\xba\xf8\xcb\x9cz\xac\x87na\xfc\x9d\xcd\xa6\xf3'
 b'\xbc\x99\xb7\x18\xdfaR\xe4U\x00\x00\x004\xcf(\xfb\x84\x00,\x00Q\x00\x00\x00'
 b'\x02\x00Y\xfb\xdcE\xe9Y[7\x0cD<\xac\xe7\x91U=!\xdb\xff\xf4G\x99\x83\xc7)-'
 b'\x8fz\x03(0\xc7Z\xd5d\x00\x03\x00\x00\x00t\x11\x0e\x02\x9a')

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

{'A1': -83,
 'A2': {'B1': [{'C1': {'D1': 16638911266998013142,
                       'D2': -27978899,
                       'D3': [34822,
                              44110,
                              19509,
                              24614,
                              42394,
                              53463,
                              54521,
                              59013],
                       'D4': 232},
                'C2': 125262869},
               {'C1': {'D1': 1953921448266152696,
                       'D2': -878937428,
                       'D3': [34670,
                              25084,
                              40397,
                              42739,
                              48281,
                              46872,
                              57185,
                              21220],
                       'D4': 85},
                'C2': -819397756}],
        'B2': {'E1': 18148457466925102860, 'E2': 68},
        'B3': 0.02110651321709156,
        'B4': [21821, 8667]},
 'A3': {'F1': 690851706,
        'F2': 808,
        'F3': 12487,
        'F4': 23253,
        'F5': 100,
        'F6': [65524, 18329, 33735],
        'F7': 286130842},
 'A4': 2795505341}

Пример 2

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

(b':SLB^\x00]\x00\x00\x00zM\xc3\xa3\xd3<\xbe\x04\xfd\xfbA\np*\xfd\xa5f\xc3'
 b'\x94\x86\x11\xb3\xd7\xd0\x0c\xfa\xaa\x06\xe9\x8d\x15\xcf\xe2\xc7'
 b'\x00\x00\x00\x0f\xa1\xc2\xc0\xc8-J=h<L\xcd]\x17\xd1$\xcb\r\x1a\xa2\xb0'
 b';O\xc7$\x84\xcb\x14\x87gE\x8d\x9a\xea\x00\x00\x004\x99\xfc}T\x00,\x00'
 b'Q\x00\x00\x00\x02\x00Y\x1c\x07\x99\x1f\xddbB\x01\xaa>\x9f\xc4\x04[A\xab*'
 b'^\x85\xbc\x99\xde\x96&qk\x0ebn,\xed\xff\xfa\r\x00\x03\x00\x00\x00tn\x03~.')

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

{'A1': 94,
 'A2': {'B1': [{'C1': {'D1': 4376941376739281520,
                       'D2': 721266022,
                       'D3': [50068,
                              34321,
                              46039,
                              53260,
                              64170,
                              1769,
                              36117,
                              53218],
                       'D4': 199},
                'C2': -1581072184},
               {'C1': {'D1': 3263488397880905053,
                       'D2': 399582411,
                       'D3': [3354,
                              41648,
                              15183,
                              50980,
                              33995,
                              5255,
                              26437,
                              36250],
                       'D4': 234},
                'C2': -1711506092}],
        'B2': {'E1': 2019751320036196865, 'E2': -86},
        'B3': 0.31204235553741455,
        'B4': [23361, 43818]},
 'A3': {'F1': 644967182,
        'F2': 25198,
        'F3': 11501,
        'F4': -6,
        'F5': 13,
        'F6': [24197, 48281, 56982],
        'F7': 1845722670},
 'A4': 1304667091}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xd6GWVQc\xec1\xd9\x08\xbd\r\xe1\x00\x00\x00\x02\x00\x00\x00\xa5Q\xc2\x1e'
 b'\xef\x0b\xa6\xa1\x9a@\x8e\xd8\x84\xae\x91\x03\xb2\x97-\x8c $\x82\xd9'
 b'\x90\x0b u(\x04r\n\x03\xa2\x16\xdc`\xe4\x02\xbd\xe1P\xce}\xa5\xe6\x8e\n'
 b'\xfd\xdcb!\x02\xc6\xab\xb7\x8c?\xe9g\xd6Vkt\x92\x00A\xf6jn\x9c%T\xa8R\x8b'
 b"\xe2\xeb\xce\xcf\x95\xf2\xdf\x80 \x10\x0cD\x00\xc7O\xd0%'\xaf\xe8q\x81i\xb9"
 b'\x9e \xdcBn\x10\x9d\xbf\xe7h=\x0e3\xac\xd0\x00s\xa8Q\x15\x8b\xa4\x9f\x06'
 b'~`\xbc\xb8\xd6\xc2>\xc3}zx\xc5=\xa4@\xfaN\xc2\x97\x7f\x03\x00M\x00\x7f')

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

{'A1': 99,
 'A2': 3962689800,
 'A3': {'B1': 189,
        'B2': 3553,
        'B3': [{'C1': 0.7939254463086789,
                'C2': {'D1': -26,
                       'D2': 10235272226133836486,
                       'D3': [171, 183, 140]},
                'C3': -160797028,
                'C4': [2689959949934717902,
                       14958128779122184204,
                       4900135540187539375]},
               {'C1': -0.731474426019668,
                'C2': {'D1': -24,
                       'D2': 8178934644224351298,
                       'D3': [110, 16, 157]},
                'C3': -1471081077,
                'C4': [11862207083375802582,
                       13996839635607143741,
                       11835735036908764931]}],
        'B4': [1371676399,
               195469722,
               1083103364,
               2928739250,
               2536344608,
               612555152,
               186676520,
               74582531],
        'B5': -6766979081377235487,
        'B6': 20686},
 'A4': 32165}

Пример 2

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

(b'\xd6GWVQ\xcctk@\xc0\x1f\x88,\x00\x00\x00\x02\x00\x00\x00\xa5Y\x9d\x84'
 b'}\xb5\xc5]\xe0Lw\xfd\xfd\x0e\x11YP"8\x11\x19\x98\x80f\xbdu\xab\x15\x9b\xbbwz'
 b'\xb8\x10c_\xccQD\xaa\x8f\xd3\xd5\xa0\xdc_0\xd4\xfe\xddh\x93\x10\xcc\xe0]'
 b'U?\xd2\xd7\xea\xc5v@\xd0\x00A\xdcf\xf2I\x84\xa9\xeb\x82\xdaj\xd1\xf2\xbf'
 b'$+\xb4\xa3\x0b\xe8\xe5\x08\xb9\x19\xae\xe0\xf5\xb1\xf1Ht\x15\xfb\xdd\xbc]/2'
 b'\x06$\x85?\xcf\xadH\x8fb\x11\xd8\x00s\xecu4\xb4 7#\xa3\xebf\x82\xd6\x9f[\x17'
 b"\xef\xbd\xbdk\x92\x16]\x9c\xbf'\x9e\xfbD\x00M\x00\x7f")

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

{'A1': -52,
 'A2': 1953185984,
 'A3': {'B1': 31,
        'B2': -30676,
        'B3': [{'C1': 0.2944285324420095,
                'C2': {'D1': 95,
                       'D2': 3518717435778896076,
                       'D3': [224, 93, 85]},
                'C3': -597233079,
                'C4': [9559430631313297906,
                       13773181615235393765,
                       628561861884097009]},
               {'C1': 0.2474756908524245,
                'C2': {'D1': 72, 'D2': 8364868812677132082, 'D3': [6, 36, 133]},
                'C3': -327863116,
                'C4': [2321363319868785366,
                       11482797993359141778,
                       1611616586485922628]}],
        'B4': [1503495293,
               3049610720,
               1282932221,
               236018000,
               574099737,
               2558551741,
               1974146459,
               3145169592],
        'B5': 1180892858442623631,
        'B6': 54229},
 'A4': 41180}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TIFG?\xd2\xda\x93\x82\xd6J8\x00\x00\x002\x00\x00\x00>\x00\x00\x00J'
 b'\x00\x00\x00V\x00|\xdd\x94\xc0 \xf5\x8e=\xe1\xe0\xe6\x13\xdfp\xe6\xe7\x88D|'
 b'e\xacvkqvnt>\x91\x1fC}\x13firgif\xbe\xf7\xa6\xdcA_espyjv?o\x9e|%\xd5yhzynk'
 b'\xbc\x8b\xd5\xfa\r\xa2~"@\xcd\x03v\xb9\xb1Gh\xf0MW\xb2\xbf+\xa5M?a+\xff'
 b'>f\x96\x0c\x00\x00\x00b\x00\x03\x00p')

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

{'A1': 0.2945908334451448,
 'A2': [{'B1': 'vkqvnt', 'B2': 0.2834416329860687, 'B3': 32019},
        {'B1': 'firgif', 'B2': -0.4836949110031128, 'B3': 16735},
        {'B1': 'espyjv', 'B2': 0.9360120296478271, 'B3': 9685},
        {'B1': 'yhzynk', 'B2': -0.017069805413484573, 'B3': 3490}],
 'A3': {'C1': {'D1': 2116174029, 'D2': [3, 118], 'D3': -5066189589781325902},
        'C2': [-0.6704910397529602, 0.8795775771141052, 0.22518175840377808]},
 'A4': -2480146246983074335,
 'A5': -7962,
 'A6': 1431987343556363388,
 'A7': 101,
 'A8': 172}

Пример 2

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

(b'TIFG\xbf\xe5\xdf\xf1\xc03\x1f>\x00\x00\x002\x00\x00\x00>\x00\x00\x00J'
 b'\x00\x00\x00V\x00x7]\x8d\xef\xb5"\x8e\xa4\xa0\xb4s\xbe\x96\xab\xc5\x07EQ'
 b'\xb7\x1eofjwkq\xbfa\x10\xe2}\xe1mhgfym>\xef\xcaI\x99\x06bcwisw'
 b'\xbe\xd6\x11\xc5\xc76cvleae>\xa0\x89\xf3\xac\xfcN\xc6\x95U\xd8\x9aq[}b'
 b'\x8c\xc7" >\xdf\xa2\x1c?>\x97\xc0\x00\x00\x00b\x00\x02\x00p')

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

{'A1': -0.6835869554424574,
 'A2': [{'B1': 'ofjwkq', 'B2': -0.8791638612747192, 'B3': 32225},
        {'B1': 'mhgfym', 'B2': 0.4683401882648468, 'B3': 39174},
        {'B1': 'bcwisw', 'B2': -0.4181043207645416, 'B3': 50998},
        {'B1': 'cvleae', 'B2': 0.31355246901512146, 'B3': 44284}],
 'A3': {'C1': {'D1': 1321637205, 'D2': [-40, -102], 'D3': 8168260211388654112},
        'C2': [0.43678367137908936, 0.7445030212402344]},
 'A4': 3989500905595768484,
 'A5': -24396,
 'A6': 8340269224425899345,
 'A7': 183,
 'A8': 30}