ИКБО-18-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'JVB\x9f\x03\xbb\xe7\xd1\xfbm\x80F\xafE\xa5\xa1\x86\x9f\t\xacWbM\xd0'
 b'\xd6\x06\xca\xc1\xab\xa9\x18e\x0c\xd7\xc6S\x84y$\x01[\xd5\xd7\xbc'
 b';\xbc\xb8\xaa\xe1zfjkpzesetflsoa\x00J\x00\x00\x00\x02\x00\x00\x00[\x8b?'
 b'\xe5\xcf\xe2\xd4|\xd6:\x1a\x96JO\xed\x19\x12h\xbe\xb4\\\x8b\xbeH\x1e\x18')

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

{'A1': {'B1': -6988535592414122624,
        'B2': [{'C1': 18095, 'C2': 17829},
               {'C1': -24186, 'C2': -24823},
               {'C1': -21417, 'C2': 25165},
               {'C1': -12074, 'C2': 1738},
               {'C1': -15957, 'C2': -22248},
               {'C1': 25868, 'C2': -10298},
               {'C1': 21380, 'C2': 31012}],
        'B3': 22795735,
        'B4': 3158031544},
 'A2': -86,
 'A3': -31,
 'A4': 'zfjkpzes',
 'A5': 'etflsoa',
 'A6': {'D1': 139,
        'D2': 0.681626715674333,
        'D3': 6806,
        'D4': 1246752025,
        'D5': 4712},
 'A7': [-0.3522685468196869, -0.1954272985458374]}

Пример 2

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

(b'JVB\xdd\x99V\x9f\x97\x18\x00g\xf8{\x7f35\xf6=\x1a\x83\x7f7\xac\xc9\xd1S\x08R'
 b'Gn\x85\x9fn\xb1B)\xf55q\x02\xb0I\x1d]\xa0NN\x8a\x8covmlwobtbxmfzhx'
 b'\x00J\x00\x00\x00\x04\x00\x00\x00[w?\xc3\x8d\xba0<\xcb\xa0@\x99\x00\x16\n'
 b'a\x1c\t\xbf\x13BJ?\\^?\xbf&EM\xbf\x06\xf0\x01')

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

{'A1': {'B1': -2478854876456026009,
        'B2': [{'C1': -1925, 'C2': 32563},
               {'C1': 13814, 'C2': 15642},
               {'C1': -31873, 'C2': 14252},
               {'C1': -13871, 'C2': 21256},
               {'C1': 21063, 'C2': 28293},
               {'C1': -24722, 'C2': -20158},
               {'C1': 10741, 'C2': 13681}],
        'B3': 45107485,
        'B4': 1570786894},
 'A2': -118,
 'A3': -116,
 'A4': 'ovmlwobt',
 'A5': 'bxmfzhx',
 'A6': {'D1': 119,
        'D2': 0.15276267390580944,
        'D3': 16537,
        'D4': 1444449,
        'D5': 7177},
 'A7': [-0.5752302408218384,
        0.8608130812644958,
        -0.6494949460029602,
        -0.5270996689796448]}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BVX\xab\x00\x03\x00\x00\x00os\x00\xb7\xf43\xa4\x1f\xf3\x01e\xab\xea\x12\xef'
 b'\xcb\xbd4\x01wt%?\xe7\xa4[\xd5bp\xf4\x8b\xdf\xa6\xcb\xb9N.([\xd5+\x9e\x1d'
 b'\x10\x00\x02\x00\x00\x00\x87\xa9\xba\xde{=tK\xc5a\xf3?\xe3m\xebO\t\x02'
 b'4\xb9\xa0\xc0\xb8T\x83\x7f#v\x11\xeai\xf6e\x00\x02\x00\x00\x00\x8f\x1bc\xbf'
 b'\xe1D%\x02\xb9.\x82?>\x12v\xbf\xde>\xa1%\x7f\x9b\xc8?\xc5-L\xf6+e8\xbf'
 b'\xd3\xfc;\x19\x11\xcd\\\x81\xb5\xe5\xc0\x1d\x18uk\xa0j\xea\x0c\xa8'
 b'\xe2\x03\x1a')

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

{'A1': [-0.4725726000019077, 0.16544496555324328, -0.31226994941899533],
 'A2': 115,
 'A3': 183,
 'A4': {'B1': 17596588626194556331,
        'B2': [{'C1': 16866807212787630455,
                'C2': 29733,
                'C3': 0.7388133208910674,
                'C4': -29729,
                'C5': [2798369102, 774396885, 731782416],
                'C6': [-2118785600, 488142187]},
               {'C1': 12230332358971378629,
                'C2': 25075,
                'C3': 0.6071678680091908,
                'C4': -18016,
                'C5': [3233305731, 2133030417, 3932812901],
                'C6': [-1603606004, -1461583078]}],
        'B3': 7011},
 'A5': {'D1': -0.5395684292975178, 'D2': 0.7424691915512085}}

Пример 2

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

(b'BVX\xab\x00\x04\x00\x00\x00o<u\x12\xb9\xa9\xa1\x9et\xd5\xe2\xbe\xa5}\x84'
 b'\xd0\x04\x01\xac\xd1\x12\xd5\xbf\xe8Kn\x98\x17\xd6\xc0*\xb6\x11\xe8\xec'
 b'\xec\xd4\x1e\xbc\x1f\x14\xb9\x14l\x00\x02\x00\x00\x00\x8f\xbe\xc4\x1d\x06v'
 b'\x1e\x8bWf\xd8\xbf\xea;\xc5"\xd5\t\xf8\xc5\x84\xe1\x00\x94\x18\xca1U 9'
 b'\xa6\xde\r\x00\x02\x00\x00\x00\x97\xbc\xbb\xbf\xd9{\xfe9\xfe\x00\xe0\xbf'
 b'a\xd7\x9e?\xd3\x02\xf0\xa61\xca\x04\xbf\xe0\x1e\xd4|\x7f\x12\x86\xbfh`\xeaD'
 b'\xb3\x06\x00\xbf\xd3\xec\x11\x0bo\xb0\x00\xd6\x9f\xc6\xf0\xe8'
 b'\x90\xfa\x1c\x93\\3\x86\xcc\xf1(\xaa')

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

{'A1': [0.29705444555216354,
        -0.5037634307451107,
        -0.00297590022600569,
        -0.3112833606417098],
 'A2': 60,
 'A3': 29970,
 'A4': {'B1': 13378401870017847998,
        'B2': [{'C1': 11924833417302224081,
                'C2': 4821,
                'C3': -0.7592080088204156,
                'C4': 10934,
                'C5': [300477676, 3558784031, 347673708],
                'C6': [-694171920, -393151972]},
               {'C1': 13746143876230318935,
                'C2': 26328,
                'C3': -0.8197961502376634,
                'C4': -14972,
                'C5': [3774911512, 3392230688, 967237133],
                'C6': [-1822674042, -856610646]}],
        'B3': -17221},
 'A5': {'D1': -0.3981929365472876, 'D2': -0.882196307182312}}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'OXFbhvphcu\x00\x84?\xea\xa1\x03%\x05C\xc2\x15=\xe4\x83\xba\xe9\xd9#'
 b'\xf8\xd0i\xc2\x82z\xc3\x9c\x1a\xf4c\x94\xd78\xd8\xf4\x1b\x80\xb9\x1af\x113&'
 b'&\xd4|\x85\x06\x90S\x89<\xfd\xc4\x8e\x95\xd3a\xa3\xa0NW\xc2\x93\xc6\xfd\x08'
 b'\x9d\x9d\xae\xd4\x97\x9e7>\x8b)\xe9\x96\x01O\x00o\n\xbb)|\xd1\x87\xa87'
 b'\xce]\xd1\xdc\x88\x94x\x1a\xab\x19\xcb\xac=\xb4\xb3\xc7[\x9ev.\x9f\xfb\xe0)'
 b'\x00\x05\x00Pa\xb4\x00\xb1\xbd\xe2\x01Z/\x8aV\x1a\xd8)\x00\x14\x00\x1e\x00('
 b'\x002\x00<\x00F\x00x\x00\x02\x00\x00\x00\x80 \x06%B\x02p\xe6!;#3\xaeX\x15'
 b'\xa2\xa3')

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

{'A1': 'bhvphcu',
 'A2': {'B1': -0.11035414040088654,
        'B2': 797595162,
        'B3': 55337,
        'B4': [{'C1': 21, 'C2': 4459834369814111224, 'C3': 208},
               {'C1': 105, 'C2': 14015899970886628451, 'C3': 148},
               {'C1': -41, 'C2': 4096292260054375014, 'C3': 17},
               {'C1': 51, 'C2': 2749118253829099603, 'C3': 137},
               {'C1': 60, 'C2': 18285897161178719136, 'C3': 78},
               {'C1': 87, 'C2': 14020768855008058798, 'C3': 212}],
        'B5': {'D1': -1610883031,
               'D2': [10925230487809681814,
                      94294594119477628,
                      15098221233421799900,
                      9841623141646453676,
                      4446376400938497582]},
        'B6': [25012, 177],
        'B7': [537273666, 40953377, 992162734, 1477812899]},
 'A3': 0.8321548197801507}

Пример 2

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

(b'OXFqbppmkv\x00~\xbf\xd9`2u\xee\xbc\xec\x18\xdf\x93\xdf\x1a\x86o?'
 b'\xbb\xc0\x1bZ$\xd6K\x9c\x17\xb1\x15\x08\xachig\xa7\xb8\x82\xd9M\xa8\xe9\xd5'
 b'qe\x11\xc3\x9036eK\x9b\xb8\xb2\x06\xcdb"\xca\xd9C\xc8\xb1x\x8f\x9f'
 b'\x85|\x97\xc2w\x0c@X\xf2Z\x0b\xf4\xf6\xb3\xf6\xd2\xd5"\xb1\x9a_\xe0\xc7\r'
 b'B\xca\xae\xdemy\t\xe4\xb2\xbd\x1a\\\xf9\x84\xcc\x04\x00\x04\x00P\xcf\xf1V!'
 b'\x03\x83?M\x9139#63\xf6\x02\x00\x14\x00\x1e\x00(\x002\x00<\x00F\x00p\x00\x03'
 b'\x00\x00\x00xI5\xfe\xb7?\xe0L9\x9di\xf6`X\x81\x07\x99')

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

{'A1': 'qbppmkv',
 'A2': {'B1': 0.802996814250946,
        'B2': 958608947,
        'B3': 62978,
        'B4': [{'C1': 24, 'C2': 16110465597051977659, 'C3': 192},
               {'C1': 27, 'C2': 6495552182804787477, 'C3': 8},
               {'C1': -84, 'C2': 7523658622551906637, 'C3': 168},
               {'C1': -23, 'C2': 15380185329416811318, 'C3': 101},
               {'C1': 75, 'C2': 11220914213878899402, 'C3': 217},
               {'C1': 67, 'C2': 14461472436715355287, 'C3': 194}],
        'B5': {'D1': -108737532,
               'D2': [8578302141001239540,
                      17776823539540865434,
                      6908740688155422430,
                      7888347100172065372]},
        'B6': [53233, 22049, 899],
        'B7': [1228275383, 1071664185, -1654000032, 1484851097]},
 'A3': -0.39649640576222}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'MCHIY\x00\x00\x00\x05\x00\x00\x00-\xfa#\x12l\x1f\x84zG\x0e\xdf]\xd0NIm'
 b'0\x00\x00\x00w\x00\x04\x00\x00\x00\x88\x00\x00\x00\x8c\x86\x03zkjyr\xaaL'
 b'j\xca\xf7\xd9d\x98X\xf8\x00\x00\x00\x02\x00\x00\x002=\xab\xbb\xc3'
 b'\x11\x0e\x81~\xb8s\xe5\x00\x00\x00\x02\x00\x00\x00E\x9d\xb0\xc2\xe7\x17'
 b'U\x17\x80\x93\xed\xdd\x00\x00\x00\x02\x00\x00\x00X\xe0\x004\x00G\x00'
 b'ZH\xac\xa8*)\x85!V|\xe1d\xec\xe0\xc6\x9f\x00\x03\x00\x00\x00k\x00q'
 b'\xd9\xbe\xaf\xa4\xc6?\xd3\xdc\x81\xb5\x98\x97\x18\xbczG\xf6|N\xe1'
 b'\xe1\x96\x0e\x12\xea\xe3\xbb\x9c\xf2\xc7$a\xaa\xff\xf6\x1a\xb1\x0f\xfeZ')

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

{'A1': 'zkjyr',
 'A2': 18024270389261400647,
 'A3': 1071678385585483056,
 'A4': {'B1': 2402244758751469766,
        'B2': -97,
        'B3': [{'C1': 7695235426383583480, 'C2': [170, 76], 'C3': 61},
               {'C1': -4390712212369935387, 'C2': [171, 187], 'C3': 157},
               {'C1': -1794872367054066211, 'C2': [176, 194], 'C3': 224}],
        'B4': {'D1': 18604, 'D2': -1473631867}},
 'A5': [217, 190, 175, 164],
 'A6': {'E1': -58,
        'E2': 0.31033365949621006,
        'E3': -17286,
        'E4': 5185468699202655758,
        'E5': 317383611,
        'E6': -100,
        'E7': 17493991279443310106,
        'E8': -1324351910},
 'A7': 34307}

Пример 2

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

(b'MCHIY\x00\x00\x00\x02\x00\x00\x00-\xf0>\x1b\xb1\xa9!\xd5\x81\x16\xb9\xa0'
 b'R\xc2\xf5\xb2u\x00\x00\x00t\x00\x03\x00\x00\x00\x85\x00\x00\x00\x88\xd1xbhS'
 b'\x8f\xef\xd2\x8b\xbbuLOm\x00\x00\x00\x02\x00\x00\x00/\xff\xa8f\xb8\xc3T>'
 b'\xe5\xad`\r\x00\x00\x00\x02\x00\x00\x00B\x86\xc0\xdeq\r\xd0:m\xc89z\x00'
 b'\x00\x00\x02\x00\x00\x00UM\x001\x00D\x00W\x1b6\x89\xe9\xb7\xfb'
 b'\x9c\xa5\xdf\xd9\xef0\xf6\xc8\xe2\x00\x03\x00\x00\x00h\x00n\x84]\xa7'
 b'\xf3?\xbf?\x8e\xc9\x83\xdb\xd0\xf2\x89\x1d\xeb\x81\\g\xee\rk\xb0\xf3/F6'
 b'(D\xc2c\xa1\xc8f\xd6NF|4')

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

{'A1': 'bh',
 'A2': 17311304467519493505,
 'A3': 1637516216844530293,
 'A4': {'B1': -7159069905521674552,
        'B2': -30,
        'B3': [{'C1': -1165715716292456595, 'C2': [83, 143], 'C3': 255},
               {'C1': -5133166521154183155, 'C2': [168, 102], 'C3': 134},
               {'C1': 8146396250351614330, 'C2': [192, 222], 'C3': 77}],
        'B4': {'D1': 6966, 'D2': -1981171717}},
 'A5': [132, 93, 167],
 'A6': {'E1': -13,
        'E2': 0.12206356448937972,
        'E3': -3447,
        'E4': 2155959080507542891,
        'E5': -1326239930,
        'E6': 54,
        'E7': 2901657793105258198,
        'E8': 1313242164},
 'A7': 53624}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KPZS\x03\x00\x15\x00\x00\x00]\xde0=m\x00\x83\x81T&?mxz\xa1)\xba\xb1'
 b'\xec$\xeb\x11\x85=\xdd\xf5\x9bBu\xac5\xb1`\x8b\x18\t\xdc\xc05\xf6B\xde'
 b'\xaf\t\xd7j3\xd8\x03\x00\x00\x00\x18\x00\x00\x00\xdd\xf1\xf8\x14hF\xac\xacU4'
 b'\xe9\x11\x04\x00\x00\x00\x1e\x00\x00\x00\xd2E\xd01\xb3\xc7\ro\x90\x9b'
 b'K\x83\x04\x00\x00\x00&\x00\x00\x00\xa1Hi\x03\x00\x00\x00.\x00\x00'
 b'\x00j\x00\x00\x00\xb2\xe6\xb5\xd4\xa3\xac\xd5\xbfQv')

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

{'A1': 83,
 'A2': 'mxz',
 'A3': 0.043180812150239944,
 'A4': {'B1': [{'C1': [-36, -64, 53],
                'C2': 3705010080070910710,
                'C3': 216,
                'C4': [10657, 45498, 9452]},
               {'C1': [-35, -15, -8],
                'C2': -1642593763970357228,
                'C3': 17,
                'C4': [4587, 15749, 62941, 17051]},
               {'C1': [-46, 69, -48],
                'C2': 5448106980881707825,
                'C3': 131,
                'C4': [44149, 45365, 35680, 2328]}],
        'B2': {'D1': 161, 'D2': 26952},
        'B3': 59058,
        'B4': 8525806494034416821},
 'A5': 131,
 'A6': 0.649726927280426}

Пример 2

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

(b'KPZ0\x05\x00\x15\x00\x00\x00\xad\xfb\xb9\xbe\x9b\x00I\xbd\xfec?zshia<b'
 b'\xf01\xaf\x19\xe6\xdb\xab\x0c8T}\xbb\x86\xd4<N^n\xa5o\xc3A.\xea\x0c\xb1-@'
 b'\xbd\xf7\xea\x17#\x0f\x8f\xb9s\x9f\x94`\xa4\xa1N\xa3\x87\xfa\t\xf3j\xd3,('
 b'U\xb6\xb2\x96\x06\x00\x00\x00\x1a\x00\x00\x00\xf76\xce\xab\xa8^\xc2\x8e'
 b'f\xe7\x91\x91\x06\x00\x00\x00&\x00\x00\x00{\xf1\xd2\x9d^\x80\xee\xde'
 b'S\x9c\xcc\x0f\x07\x00\x00\x002\x00\x00\x00\xb7Y\xe6\xca\x91\x98\xf3P'
 b'\xed\x11\x94]\x04\x00\x00\x00@\x00\x00\x00\xadp \x04\x00\x00\x00H'
 b'\x00\x00\x00\x98\x00\x00\x00\xfa\x16\x8a\x94\x17xD\xfadz')

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

{'A1': 48,
 'A2': 'zshia',
 'A3': -0.3632482588291168,
 'A4': {'B1': [{'C1': [-121, -6, 9],
                'C2': -5569170258157933837,
                'C3': 150,
                'C4': [25148, 12784, 6575, 56294, 3243, 21560]},
               {'C1': [-9, 54, -50],
                'C2': -7933259455257466709,
                'C3': 145,
                'C4': [47997, 54406, 20028, 28254, 28581, 16835]},
               {'C1': [123, -15, -46],
                'C2': -3702992576656154979,
                'C3': 15,
                'C4': [59950, 45324, 16429, 63421, 6122, 3875, 47503]},
               {'C1': [-73, 89, -26],
                'C2': -7777174149552107062,
                'C3': 93,
                'C4': [40819, 24724, 41380, 41806]}],
        'B2': {'D1': 173, 'D2': 8304},
        'B3': 5882,
        'B4': 8819449142277805194},
 'A5': 73,
 'A6': 0.8906057476997375}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'IFM%9Jjrxwum\x00{\x00\x81\x00\x87\x00\x8d\x00\x93\x00\x99\x00\x9f\xbf\xd5'
 b'G$\xaeq\xd1\xbc\x07\x04\xef\x8d\xc2r\x0e\xf9\t\xd5\xfdsc\xf9\xdaw`u'
 b'\x8d\xea\xe8\xa5\xe8\xbf\xeaDo]\x9a7\xe0\x00\x00\x00\x02\x00\xa5\xbf'
 b'\x96\xc3\xe0\xb3L\xec\x80\x18:\xb1\xca?\xe3\xd5\xa7\xe0iK(?\xde_\xca\x0b'
 b'\x14/\x80?\xef\x1e\x98]\xb7\xa2\xc2\xbf\xea\xa0s\xab\x89\x15\x8a\xbf'
 b'\xd6V!\x87\xb5\xa7\xd4\xe1>\xbd\x92\xfdm\xb5\xbe\xe8\xff\xe6\x9dV>g\xdd\xdb'
 b'\xd2\x9f\xbf\x17<\xac\xb1\x02\xbfQ\xc1\xbb5\xba\xbe\xcd\xa6\x8b \x89'
 b'>\x85\r\xcd\x9bej')

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

{'A1': {'B1': 9529,
        'B2': 74,
        'B3': 'jrxwum',
        'B4': [{'C1': 225, 'C2': 0.3702620565891266, 'C3': 109},
               {'C1': 181, 'C2': -0.4550773501396179, 'C3': 157},
               {'C1': 86, 'C2': 0.22643224895000458, 'C3': 210},
               {'C1': 159, 'C2': -0.5907695293426514, 'C3': 177},
               {'C1': 2, 'C2': -0.8193623423576355, 'C3': 53},
               {'C1': 186, 'C2': -0.4016612470149994, 'C3': 32},
               {'C1': 137, 'C2': 0.2598709166049957, 'C3': 155}],
        'B5': {'D1': -0.33246724162679775,
               'D2': 505792450304020217,
               'D3': 165018995,
               'D4': 7204029285210099178,
               'D5': -5979}},
 'A2': -24,
 'A3': -0.820853884522645,
 'A4': 'ej',
 'A5': -0.022231589263566054,
 'A6': 406499786,
 'A7': [0.619831026366545,
        0.47459651071471143,
        0.9724847631851719,
        -0.8320864057829322,
        -0.34900701764001707]}

Пример 2

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

(b'IFM{\x01\x8aqpywxh\x00{\x00\x81\x00\x87\x00\x8d\x00\x93\x00\x99\x00\x9f?\xef'
 b'J\xbf\xb3mR\x1a:\x9c\xa6\xc3\xc2\xd2\xd6r\x08\x8e++V\x97\xcb\xf5i\xf3'
 b'\xa5\x0f\xa2\x99!\xbf\xd8\xc8i\x94\xe5^\xa8\x00\x00\x00\x02\x00\xa5\xbf'
 b'\xd9\x16iEK{\xe8{x\xa1\xdf?\xc8\xce@\x04\x87\x030?\xdf\xa1\xe9\x01gJ\xec?'
 b'\xce\xee\xcbH\xd7^\xb8\xbf\xe1.o2\xe5\x8e\xae?\xca\x84\x91\xaa!\xe7\xd8\x8d'
 b'\xbe!\xd8J\x93\xeb>\xa4\xcfm\x17S\xbe\x86tv\xa4\x05>\x90\xed_\x03\xb6'
 b'\xbfY\x9c]>v\xbfew\xdc\xd7\xff?}L \x08rs')

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

{'A1': {'B1': 31489,
        'B2': -118,
        'B3': 'qpywxh',
        'B4': [{'C1': 141, 'C2': -0.15805163979530334, 'C3': 147},
               {'C1': 235, 'C2': 0.321895033121109, 'C3': 23},
               {'C1': 83, 'C2': -0.26260727643966675, 'C3': 164},
               {'C1': 5, 'C2': 0.2830609977245331, 'C3': 3},
               {'C1': 182, 'C2': -0.8500421643257141, 'C3': 62},
               {'C1': 118, 'C2': -0.8963601589202881, 'C3': 215},
               {'C1': 255, 'C2': 0.9894428253173828, 'C3': 8}],
        'B5': {'D1': 0.9778746132311114,
               'D2': 4223433910284113522,
               'D3': 143534891,
               'D4': 6239680063650112783,
               'D5': -23911}},
 'A2': 33,
 'A3': -0.387232203870989,
 'A4': 'rs',
 'A5': -0.39199287192417254,
 'A6': 2071503327,
 'A7': [0.19379425259651262,
        0.49425721299227976,
        0.24166241699889723,
        -0.5369182581020675,
        0.2071706848835777]}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'SKLE\x12eyF\x9c\xcb\xb9T\x00\x02\x00\x00\x00afv\xd7\x9b+\xce\xd0\x00\x03\x00'
 b'\x00\x00eyp/$W\x80v\x00\x02\x00\x00\x00k\xbdcV\xaf\xbe\xbc\xaf\xda'
 b'\xbf)\x05\xdf?`}L?\x04\x06\xae?@Zp?U\xacR\x9d)+\xf1\xa5\xbcr\x16'
 b'\x10-\x17\x93v\xecR\x90sX\xbd$\x8f?)*(\xca\xcc\n\xff\xd4x\xec'
 b'\xae\x03\x94\x80\xd2\xb2\x9f')

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

{'A1': [{'B1': 'ey',
         'B2': {'C1': 18076, 'C2': 203, 'C3': -18092},
         'B3': [-13620, 2815]},
        {'B1': 'fv',
         'B2': {'C1': 55195, 'C2': 43, 'C3': -12592},
         'B3': [-11144, -4946, 916]},
        {'B1': 'yp',
         'B2': {'C1': 12068, 'C2': 87, 'C3': -32650},
         'B3': [-32558, -19809]}],
 'A2': -0.05550258979201317,
 'A3': [-0.36852914094924927,
        -0.6602458357810974,
        0.8769118785858154,
        0.5157269239425659,
        0.7513799667358398,
        0.8346606492996216],
 'A4': {'D1': 157, 'D2': [2966730473687094800, 3249227795151360115]},
 'A5': 6394307243594557992}

Пример 2

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

(b'SKLE\x12ho$\xf3\x97\xa80\x00\x03\x00\x00\x00asq1\xfb#Z\x9f\x00\x02\x00'
 b'\x00\x00gol\x86*\x1a\xdel\x00\x02\x00\x00\x00k\xbe\xae\x8f\xd4?\x13J`'
 b'\xbf{\x1e\x15\xbe\xe9\r\xf0?2]\xcd>W\x8a<\xbfp\xd5X\xe3\x14E\x8e'
 b'\xe7\xb1z\xfcI\xf2\xb7\xe06\xc1\xcc\x0c\xcc\xcf\xda\xf7\xc8\xbc*\xec'
 b'\xf9F\xea\x9cX 6<\x16L\xec\xfc$\xfc\xcd')

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

{'A1': [{'B1': 'ho',
         'B2': {'C1': 9459, 'C2': 151, 'C3': -22480},
         'B3': [18154, -25512, 8246]},
        {'B1': 'sq',
         'B2': {'C1': 12795, 'C2': 35, 'C3': 23199},
         'B3': [15382, 19692]},
        {'B1': 'ol',
         'B2': {'C1': 34346, 'C2': 26, 'C3': -8596},
         'B3': [-988, -819]}],
 'A2': -0.34094107151031494,
 'A3': [0.5753536224365234,
        -0.9809277653694153,
        -0.4551844596862793,
        0.6967437863349915,
        0.21048825979232788,
        -0.9407553672790527],
 'A4': {'D1': 227, 'D2': [1460730779917810761, -957049870008709940]},
 'A5': -3469188121413096199}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LLSJ\x9c?\xc9\xc3U\x85<\x02 \xc4\xb1\xafs\x02m\xfba\xd9*J\xff\xc7\xd5\xc4'
 b'\xbeK7\xc8a\x10\xcb\xfd\xf7\x9d7\xf0\x86\xbd\xb2?[\x94\xe1\x11\xe1$\x98\x13'
 b'x\x94\rV\x9c\xa9!\xf9|\x8c\xcc<vevtmvalpz{\x88\x00\x00\x00\\\x00\x00\x00w'
 b'\x00\x00\x00\x92f\xd6^\x86\x92\xc7\x8b\x95$1\r\x8a #\x19\x94\x9a\x84\xc0\xf6'
 b"I-<\xe2\xd7\xe3uK'q\xc2T\xd2}3\xa2\x81f\xf9U@\x99\x1b\xddT\x9d\xe8k"
 b'\xee\x8b$\x97\ns\xe4$\x88\x9f<h\x19j\xf3\x12\x8eu\xd1\x00\x04\xb9w\x90'
 b'\xdc\xe5\x1e\xed\x8e\xe4\xb1{%\xab\xb4\xb5\x94')

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

{'A1': 156,
 'A2': {'B1': 0.2012736225660925,
        'B2': -15183,
        'B3': 2943550061,
        'B4': {'C1': -5,
               'C2': 7050713193232455108,
               'C3': -4734629249488466947,
               'C4': 17842478804904030783},
        'B5': 6599146820912584723,
        'B6': 2022968662},
 'A3': -7158152777308517316,
 'A4': 'vevt',
 'A5': 'mvalpz',
 'A6': 31624,
 'A7': [{'D1': 146,
         'D2': -57,
         'D3': 35733,
         'D4': [9265, 3466, 8227, 6548, -25980, -16138],
         'D5': 73,
         'D6': 11580,
         'D7': 16345783465476059586},
        {'D1': 84,
         'D2': -46,
         'D3': 32051,
         'D4': [-23935, 26361, 21824, -26341, -8876, -25112],
         'D5': 107,
         'D6': 61067,
         'D7': 2636587599713831071},
        {'D1': 60,
         'D2': 104,
         'D3': 6506,
         'D4': [-3310, -29067, -12032, 1209, 30608, -8987],
         'D5': 30,
         'D6': 60814,
         'D7': 16479087913250108820}],
 'A8': 1725324934}

Пример 2

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

(b'LLSJ\x1d\xbf\xd3W\x03\x92\xa0\x06(h\xc5`\x12\x89\x02\xe8\xc7\x1f\xf3\x18'
 b'\xfd[S\x01&\xefl\x04\x048\xcb\xde\x9f\x8f\x073\xa0\x7f\xddG\xc8eV,\xc7c8@'
 b'8J\xe5\xa1g<0\xbc\xa1\xa0C\xf6xjdrfysidd\xcfu\x00\x00\x00\\\x00\x00\x00w'
 b'\x00\x00\x00\x92\xa5g0*1~\xe3\xbd\xe8\x06O\xd5\xab \x97\x00r\xc4\x81\x0b'
 b'c\xe1\xf8\x06\xcf\xe7Bd\xc1\xcc\xab\xa8\x97}:\x8a+2O\x01!\xfe\xfa\x0b'
 b'\x82\xa2{(\x99\xf8{ \x12\xc0K\xf1\x9c\xa8\x1d_\xa4\xee\x19\xd6'
 b"\x1b\xeb\xbb\x04\x9eY\x9bG\x06X\xa4\xef'\x86O\xa1ER\xf3\x01\xa3")

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

{'A1': 29,
 'A2': {'B1': -0.3021859104047473,
        'B2': 26821,
        'B3': 1611827458,
        'B4': {'C1': -24,
               'C2': 14348454226481074945,
               'C3': 2805579857381608414,
               'C4': 11497416292017626439},
        'B5': 14440042530557081664,
        'B6': 944432545},
 'A3': 7438874271232836598,
 'A4': 'xjdr',
 'A5': 'fysidd',
 'A6': -12427,
 'A7': [{'D1': 49,
         'D2': 126,
         'D3': 58301,
         'D4': [-6138, 20437, -21728, -26880, 29380, -32501],
         'D5': 99,
         'D6': 57848,
         'D7': 490865156750953643},
        {'D1': 168,
         'D2': -105,
         'D3': 32058,
         'D4': [-30165, 12879, 289, -262, 2946, -23941],
         'D5': 40,
         'D6': 39416,
         'D7': 8872111883037023400},
        {'D1': 29,
         'D2': 95,
         'D3': 42222,
         'D4': [6614, 7147, -17660, -24999, -25785, 1624],
         'D5': 164,
         'D6': 61223,
         'D7': 9678131443358957987}],
 'A8': 2775003178}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'NTU\x02\x00\x00\x00\x15\x00\x00\x00\x8b/\x10\x9a\x8b\x00\x00\x00!'
 b'\xb2\xf4Z\xbb?p\x00\xc2\xbf\x1e=\xd9?\xa2\xe3-w\xb6\xe8\xe0\xbfr\x04\x80'
 b'\xeb\xb3\n\xee?\x103\x86\xa8C*\xb6\xbfz\xce\x11\x18&P\xe0\xbfX\xfc\xb8'
 b'!\x94h\xe3?\x88\xd2\x01\xd2t\x9b\xc2\xbfp`\x01E\t\xac\xc0\xbf\x02\x00\x00'
 b'\x00\x19\x00;\x02\x00\x00\x00)\x00\x83\x02\x00\x00\x009\x00\xbf\x02\x00'
 b'\x00\x00I\x00`\xf9&&-rJg\x19>\x9c\xb0\x17\x8ak\xd9\x9f\x03\x00u\x00\x00\x00N'
 b'\xc3\x0b\x7f\xe2{\x95\xbf\x04\x00\x00\x00Y\x00\xc1\x9f\x87\x9d/\xcc\x85'
 b'\xb3\xad\xc0\xca\xd6\xf2bG\xca{\x00\x00\x00')

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

{'A1': [23284, 16315],
 'A2': 2584752011,
 'A3': {'B1': 2131477326,
        'B2': -1080722462,
        'B3': [{'C1': [0.3943554756770089, -0.5284073188514535], 'C2': 59},
               {'C1': [0.9388064956293773, -0.08658240188942679], 'C2': -125},
               {'C1': [-0.509783789645055, 0.6065159472126522], 'C2': -65},
               {'C1': [-0.14536915067914813, -0.130250128454239], 'C2': 96}],
        'B4': [-24639, -25209, -13265, -19579],
        'B5': 14575727514133119149,
        'B6': {'D1': 6503,
               'D2': 397450302,
               'D3': 2681826186,
               'D4': [9977, 11558, 19058]}},
 'A4': 45601}

Пример 2

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

(b'NTU\x03\x00\x00\x00\x15\x00\x00\x00/\xf1$>x\x00\x00\x00*\xed\xb3\x86\x93'
 b'\x8b\x99*\x00\xf8\xab|\x1a\xc3\xa0?\xf0\xa0\rz\xaf8\xc2?\x00\xcc\xa0\x85{'
 b'\xba\xaa?\x08\xff\xfd\x99\x8b-\xdc?\x92t\xb12U\x1d\xe0\xbfxv\xc2./g\xe0?\x02'
 b'\x00\x00\x00\x1b\x00^\x02\x00\x00\x00+\x00\xe9\x02\x00\x00\x00;\x00u\xb0@=\t'
 b'yV\x8e\xd4\xe0\x08\xb8\x8dML\xec\xd61Z\x04\x00`\x00\x00\x00\xa5i\xa6\xb4'
 b'\xb7\x1bQ\xc7\x03\x00\x00\x00K\x00\x84\xbe_\x9c/]\x1c\xeb`\xb7\x15^\xdf\x8b'
 b'\xd1\x08h\x00\x00\x00')

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

{'A1': [34483, 35731, 10905],
 'A2': 1042608431,
 'A3': {'B1': 3030804901,
        'B2': -950985801,
        'B3': [{'C1': [0.03273852130767807, 0.14235490283613883], 'C2': 94},
               {'C1': [0.05220399862482594, 0.4402798656301319], 'C2': -23},
               {'C1': [-0.5035806646443624, 0.5125957406305153], 'C2': 117}],
        'B4': [-16764, -25505, 23855, -5348],
        'B5': 635442813908399968,
        'B6': {'D1': 2272,
               'D2': 1280150968,
               'D3': 1513215724,
               'D4': [16560, 2365, 22137, -11122]}},
 'A4': 60714}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"XXIR\x1bO\x00\x00\x00?\xfe\x8d\xc2I\xa8'g\xcdi\x08\x00b\x00\x7f\xd7IG\xc2"
 b'\xbe\x04"\x1a\xcd=\x04\x00r\x00)\xfe,dcn\x99\\)\xbf\x8a\xa7\x7f?'
 b'\xc0\xf7F\xa9\xd6\xe9\x0b?\xabn\xdcp\x84\x1fP\xafV\xad\xee\xb4R\xc0\xe4?'
 b'\x18\xb7\xe3\x03\x00\x00\x00)\x00\x02\x00\x00\x00,\x00\x00\x0046h4\x00i\xd0'
 b'9 \xa9+o|\x0c\xc9x\xce\x06\xc8q\xc2\xa4\x1c&y\x9a\xf0b\xdb')

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

{'A1': {'B1': 'dcn',
        'B2': [-0.6615691781044006, 0.9986501932144165],
        'B3': 52,
        'B4': 26678,
        'B5': {'C1': 2840000448,
               'C2': 0.5465368032455444,
               'C3': 12632631608463879851,
               'C4': 0.6484769376597039,
               'C5': 46872,
               'C6': -29}},
 'A2': -449,
 'A3': [{'D1': 7623863164232909453,
         'D2': [-12183, 8249, 11177, 31855, -14068, -12680, -14330, -15759],
         'D3': -10369,
         'D4': 73},
        {'D1': 4453244339950109255,
         'D2': [7332, 31014, -3942, -9374],
         'D3': -471,
         'D4': 44}]}

Пример 2

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

(b'XXIR\x1bQ\x00\x00\x00\xf5d\x94^L\x12\xe6r\x13\xca\x02\x00d\x00J\xc4M\xe8/'
 b'\xd3\ni*\x9f\xf4\x08\x00h\x00\x84\xf5\xcfambam<\x1c\x918\xa3\xe4'
 b'\xd2\xbe\xb0\xd9%p\xd5)Q?%<)\xa6\xadp"\x8e.\xea\xe7\x14\x1aA\xe0\xbf\xdf*'
 b'!\x05\x00\x00\x00)\x00\x02\x00\x00\x00.\x00\x00\x00\x16K,6\x00\r\xc2\x8f\x03'
 b'\x9eb\xd4\x96Ps\xee;\xb1w\xc4\x88\xb7\xd5\x84\xde')

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

{'A1': {'B1': 'ambam',
        'B2': [6.919397856108844e-05, -0.4119006097316742],
        'B3': 22,
        'B4': 11339,
        'B5': {'C1': 1881528752,
               'C2': 0.8170445561408997,
               'C3': 10241872393713302565,
               'C4': -0.5079470070189183,
               'C5': 10975,
               'C6': 33}},
 'A2': 25845,
 'A3': [{'D1': 14561108352693984916,
         'D2': [-15859, 911],
         'D3': -15286,
         'D4': 77},
        {'D1': 17626854097192955880,
         'D2': [25246, -26924, 29520, 15342, 30641, -30524, -10825, -8572],
         'D3': -2684,
         'D4': 207}]}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"XZEQ\x11X\x1e\x92\x90\xe2\xbe\xd47\x00\x8e\xe1\x05D\x04\x1f'\xbb_\x9c"
 b'B\xe9q\xb1\xf2\x1c\x89\xfc\xb0\xe2\xf1\xb6,-\xe3\xe7\x8a\x9b\xd3\xf0'
 b'\x8f\xfd:\x8fJ\xc7\xe5\n\xce\xdf:\x04\x96v\xf2u\x17=\x92\xab\x01\xbeB\x95'
 b'6\x1e\x81v\x9f\xcc\xa3\xa2\x1e\xe8\x00~\x90\x00\x00\x00\x13\x90\xcd\x7f'
 b'\x98\xe8M\xed\xd7\xcf\x05\xe3q\x95\xd7\xb3\xe6\x10\xb3\xda!N\xc0\x98'
 b'\xf1\xafN\x00\x00\x00%?\xde\x0fN\xb0\xdc\xc38\xbf\xe7\xf5\xder\xa4\xfe \xbf'
 b'\xe5\xaf\x9e?\xeeC\xac\xb8\xe3@!\x00\x02\x00\x00\x007\xbe\xbb\x99'
 b't\x00\x03\x00s\x00\x03\x00\x00\x00\x8b?\xd7\x08\x8f9-\xcc\xb4N?\xe1!\xeb'
 b'-$\xf0t')

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

{'A1': 6349673675616080951,
 'A2': {'B1': 33,
        'B2': [{'C1': [76969714, 1964457362, 2869018178, 2503351937],
                'C2': 30367,
                'C3': 14745807858566200976,
                'C4': {'D1': 7975,
                       'D2': 13501682019078353394,
                       'D3': 2056452541523277356}},
               {'C1': [2429386648, 3897421271, 3473269617, 2513941478],
                'C2': 4275,
                'C3': 15717930763606404942,
                'C4': {'D1': 11747,
                       'D2': 16684319104123796794,
                       'D3': 10325284882243051322}}],
        'B3': -0.3664051294326782,
        'B4': [0.4696842887088226, -0.7487632979536478, -0.6776877640387418],
        'B5': [-72, -29, 64],
        'B6': 0.35989742835881633,
        'B7': 78,
        'B8': 0.535390461132478},
 'A3': 3775218692}

Пример 2

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

(b'XZEQ\x11nV\x9c\xbb\xb5\x14\t\x01\x00\x86\xa8]b\x06Q\xc9\x9cR\xa4'
 b'\xcd\x9bX\x113h\x84\x1c\x03YW\xa0,\x81\xf3|\xe2\x0bh\x9byK\x9a\x103\x03\x92W'
 b'\xbb\x0f\xf44(Kv\xb6\xd3\xbd\x83\xc2i\xca\xb5Us\xaa\xba\x8fNQ\xcb^'
 b'\x84\xf3\x9d\xc8\x93\x00\x00\x00\x13\xdd\xcc<b\xa6\xb03\x8eU\xd0\x11'
 b'{\x8fM\xd1d\xd4\x12\xa4\xe4R\xdc\x9a\x90\xb9\xf2\x00\x00\x00%\xbf\xe2y9t'
 b'S\xcd\x14\xbf\xec\xb8\xd9\xa6\xedD\x983M,\x8b\x00\x02\x00\x00\x007?l('
 b'\x83\x00\x02\x00s\x00\x03\x00\x00\x00\x83?\xc7\x17(w\xf7\xa8H\xde'
 b'?\xe0\x10\x7f\x9e\xa9%\xa4')

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

{'A1': 7950714522179995905,
 'A2': {'B1': -117,
        'B2': [{'C1': [875055990, 3067329923, 3261713077, 1433643706],
                'C2': 36686,
                'C3': 5893908462460323987,
                'C4': {'D1': 20937,
                       'D2': 11264246820988522803,
                       'D3': 7531175277579706412}},
               {'C1': [3721149538, 2796565390, 1439699323, 2404241764],
                'C2': 54290,
                'C3': 11881712824349669874,
                'C4': {'D1': 33267,
                       'D2': 8998767549352594330,
                       'D3': 1167280655491076084}}],
        'B3': 0.9224931597709656,
        'B4': [-0.577297904207088, -0.8975647220887764],
        'B5': [51, 77, 44],
        'B6': 0.1803942285326363,
        'B7': 222,
        'B8': 0.502013978847732},
 'A3': 2824692230}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LLF#qmhk;2\xad(\xc8\x15W%\r\x007\xe9\x04\x01\x99\x12sB)\x01\x834\xdc\xf6'
 b'\xf7J\xefUh\x11\xea=\x03\x00\x00\x00\x02\x00\x00\x00j\x86/\x0f\xbf\xa3k\xd5'
 b'4n\x12`\x91\x1cV\xb6]\xd2`=\xac\x96\xa1\x9f\x90\xdb\x00\x00\x00\x03\x00\x00'
 b'\x00n+\xcb{?\xef\xfd2\rg\xb8F\xee\x9c#!\xd7\xe8\xa7cn\x00\x00\x00z\xe4\xbe'
 b'SsC\x020\xfe}\xcf\x97m:\xa5\x7f$BA\xd5S\x08Z\xe0]G\xbf\xe0OH\t'
 b'\xfa\xbd\x12\x00\x03\x00\x00\x00t\xcc\xaf\x86\xf3G')

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

{'A1': 'qmhk',
 'A2': 993176872,
 'A3': 51221,
 'A4': 22309,
 'A5': 3328,
 'A6': 4028755746569220930,
 'A7': {'B1': 41,
        'B2': [{'C1': 108988939627875055,
                'C2': 1432883690,
                'C3': 15619,
                'C4': [58558, 21363],
                'C5': 134,
                'C6': 12047,
                'C7': -0.03793207421316391},
               {'C1': -7990416297603997635,
                'C2': 2895552927,
                'C3': 37083,
                'C4': [17154, 12542, 32207],
                'C5': 43,
                'C6': 52091,
                'C7': 0.9996576558894581}],
        'B3': 17193656105656952675,
        'B4': 110},
 'A8': {'D1': 66,
        'D2': 4743789077854182727,
        'D3': -0.5096779055510601,
        'D4': [38765, 15013, 32548],
        'D5': -52,
        'D6': -1350110393}}

Пример 2

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

(b'LLF#kukm\x83oy\x8d\xff\xb4\r\x9br\xabJw\xb0\xd8\xfe\x0f\xe7\xa1\xde\x1c@wic'
 b'\x8bG\x19(h\xd4\xe2\xc2^\x00\x00\x00\x03\x00\x00\x00j&0\xb1?\xb3\x19\xff'
 b'ce\x94 \r\xa6\n"N\x94\xa5e\x07U\x1aS\x8f\xf3\x00\x00\x00\x03\x00\x00'
 b'\x00p \x91\xc9\xbf\xedq\x0f\x9d\\\xa1\x1e\xabG\xf9\x9a\xc9L\xe7o\x7f\x00\x00'
 b"\x00z\x92\x0b\xac\xd5\xe3e\xaeWg\xaa)H\x9f\xfdZyZ\xe3\xfda\x8c'Z\xf19\xbf"
 b'\xd7\xc5H\xf3 \xcc\x80\x00\x02\x00\x00\x00v\xec\x98BL\xde')

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

{'A1': 'kukm',
 'A2': 2205120909,
 'A3': 65460,
 'A4': 3483,
 'A5': 29355,
 'A6': 5365951927057115041,
 'A7': {'B1': 222,
        'B2': [{'C1': 2035758326096807705,
                'C2': 677958882,
                'C3': 49758,
                'C4': [37387, 44245, 58213],
                'C5': 38,
                'C6': 12465,
                'C7': 0.07461544205359916},
               {'C1': 983484711090562405,
                'C2': 123017811,
                'C3': 36851,
                'C4': [44631, 26538, 10568],
                'C5': 32,
                'C6': 37321,
                'C7': -0.9200513909791288}],
        'B3': 12342107747029673839,
        'B4': 127},
 'A8': {'D1': 90,
        'D2': -2018349803408527047,
        'D3': -0.3714163183496524,
        'D4': [40957, 23161],
        'D5': -20,
        'D6': -1740485410}}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'{DAMC\xa5\x91\xbfx\xc0\x0c\xcb\xf2\xc2\xad\xb5Ek\x00\x00\x00\x02\x00D?7\xe5>'
 b'\xd8\xd6t84\xdf3\x1bd\x94\xd8\x03\xb7\x04\xd4\t\x1e\xdbm\xb2B\xe7\x17\x82'
 b'\xdd\x13\xf2`\xf2\xcf\x19to\xae\xc7\x86\xd6+8\x0cjpeils\xaf\xd2\x8cv\x13\x99'
 b'\x0f\x1d7/?\x07oQ?O\xee,\xbfD7\xee\x00\x07\x00*\x00\x00\x00\x03\x00\x00\x001'
 b'\xb5\xba\xbeq\xbe\xd0)\xef?\x01jmbcsd\xaf\x95oy\xb9A\xe1\x08\x0f\x92>\xe1'
 b'l[\xbfQ\xb1\xf6\xbe\xf5\xc7\xc5\x00\x07\x007\x00\x00\x00\x03\x00\x00'
 b'\x00>\xbe\xdd\xb8\xfa\xbeR\x96\xf3\xceU')

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

{'A1': -23151,
 'A2': -0.9716804027557373,
 'A3': 203,
 'A4': 4072844725,
 'A5': 17771,
 'A6': [{'B1': 'jpeils',
         'B2': -20526,
         'B3': 10121298760666265391,
         'B4': {'C1': 0.5290423035621643,
                'C2': 0.8122279644012451,
                'C3': -0.766478419303894,
                'C4': [212, 9, 30, 219, 109, 178, 66],
                'C5': [-6377, -32035, 5106],
                'C6': -1246052751,
                'C7': -0.4065699279308319,
                'C8': 16129}},
        {'B1': 'jmbcsd',
         'B2': -20587,
         'B3': 8032655102991404946,
         'B4': {'C1': 0.4402798116207123,
                'C2': -0.8191217184066772,
                'C3': -0.4800397455692291,
                'C4': [96, 242, 207, 25, 116, 111, 174],
                'C5': [-14458, -10709, 14348],
                'C6': -1092765446,
                'C7': -0.20565395057201385,
                'C8': 52821}}],
 'A7': 0.7183417081832886,
 'A8': {'D1': -10026,
        'D2': 1949840607,
        'D3': [51, 27, 100, -108, -40, 3, -73, 4]}}

Пример 2

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

(b'{DAMCr/\xbf;/\x1fZ\xb0\x88\xcb\x81#\xb9\x00\x00\x00\x02\x00;>V\xc9\x19'
 b'i\x95pl;\x02\xe7\xa2\x0b_2F\xe3\xd4\xccG\x83\x87\xf5\xa6\x11\x08\x89\xdc'
 b'O-\x10\xf8o\xbd\xdcfxdgic_\xa7\xaeO\xc3S\x01\xee\xb9\xd4\xbf#\xf5M?\x1eq*?'
 b',\xf9\xa7\x00\x05\x00*\x00\x00\x00\x02\x00\x00\x00/\xe2\n9\x84?t\xe9\x9f\x89'
 b'\xd8rxwasx\x8e\x04.\x87\xaf\x81\xddw\x03S>\x80\x8e\xe1\xbfl\x83q\xbfx\xb8'
 b'K\x00\x02\x003\x00\x00\x00\x03\x00\x00\x005\x1f\xd0\xfdm=v,\xbe\x90L')

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

{'A1': 29231,
 'A2': -0.7311877608299255,
 'A3': 90,
 'A4': 2961755009,
 'A5': 9145,
 'A6': [{'B1': 'fxdgic',
         'B2': 24487,
         'B3': 12560472647041726932,
         'B4': {'C1': -0.6404617428779602,
                'C2': 0.6189142465591431,
                'C3': 0.67568439245224,
                'C4': [204, 71, 131, 135, 245],
                'C5': [-23023, 2185],
                'C6': -502646396,
                'C7': 0.9566897749900818,
                'C8': 35288}},
        {'B1': 'rxwasx',
         'B2': -29180,
         'B3': 3352841419901829971,
         'B4': {'C1': 0.25109007954597473,
                'C2': -0.9238806366920471,
                'C3': -0.9715620875358582,
                'C4': [220, 79],
                'C5': [11536, -1937, -16932],
                'C6': 533790061,
                'C7': 0.06010126322507858,
                'C8': 36940}}],
 'A7': 0.20975150167942047,
 'A8': {'D1': 27029,
        'D2': 1886141186,
        'D3': [-25, -94, 11, 95, 50, 70, -29, -44]}}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'EGYK\xaf\x00\x00\x00P\x00\xaazbfmgu\xbfH\xb0\x1a_e6D!\x17E\xb95f\xc2'
 b"\xc5\xa7\x9a\xa6\xe9g'\xee\xc6FHx\xab\xc2\xcaX\xc2\xb2u\x83\x9f4\xc7i"
 b'\x17)s\x8a\xdb\x12Zn\xf1\xd4\xf5\xb6\xa2\xcei\xf5\xf2}\xc4qftdm\x006\x14\xbf'
 b')T\xb7\x80\xb0?\xc4\xc5\xe3\xc3W!P[\x87L\xc8\xa1\xb2\xf1\xafN\xd9\xfc'
 b'+\xc5\xf2\xb1\xae?\xd9F\xcb\xcb\xe2\x83\x98?\xe4\x0e\xb2\xe2qMV\x00\x00\x00'
 b'\x05\x00K\xbf\x95p;.\trX\xddv\xca\xf8d\x82\x8b:?"\x8f/$\xff]\x94T'
 b'\x08<\x88\xc9\xfc\xed\xc1Wo\xb3\x1e=\x00\x00\x00\x07\x00\x00\x00\x87')

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

{'A1': {'B1': {'C1': -949414103,
               'C2': 115,
               'C3': 10005611176751387893,
               'C4': 13160308015623208388},
        'B2': {'D1': 20,
               'D2': {'E1': -0.6614488959312439,
                      'E2': 32944,
                      'E3': 0.16228911436179283,
                      'E4': 6595324603897409967,
                      'E5': 1322908715,
                      'E6': -973950546}},
        'B3': 0.39494604979159353,
        'B4': 0.6267942831713451,
        'B5': 'qftdm'},
 'A2': {'F1': 7741,
        'F2': [{'G1': 49045, 'G2': 28731, 'G3': 46},
               {'G1': 2418, 'G2': 22749, 'G3': 118},
               {'G1': 51960, 'G2': 25730, 'G3': 139},
               {'G1': 14911, 'G2': 8847, 'G3': 47},
               {'G1': 9471, 'G2': 23956, 'G3': 84},
               {'G1': 2108, 'G2': -30519, 'G3': 252},
               {'G1': 60865, 'G2': 22383, 'G3': 179}]},
 'A3': 'zbfmgu',
 'A4': -0.7839370965957642,
 'A5': 1600468548,
 'A6': 555173305,
 'A7': [53, 102, -62, -59, -89],
 'A8': [2594629991, 669959750, 1215867842, 3394814642, 1971560244]}

Пример 2

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

(b'EGYK\xaf\x00\x00\x00P\x00\x9bbszxcb\xbf\x0b\x02R)\xca\xe6h\xb7\xa1\x83'
 b'5\xd7d|\xab\x16\xa1\x18\xcc\xa5\xec\xda\xd9\x0f6\x07a\xa9\x9dTY\x02J(|=\xc5~'
 b'\x88\xab\x16-\xf6~.GV6\xc8\x14\x01\x9f\x1d\xb2\xaf\xf7\x90ljzgj\x006\xff\xbf'
 b'ty\x81\x13~\xbf\xe9\xc1?\x8c\xee\xf7\x1e\xde\xa2L\xa8\xff)\xe2i\xe6\x1c\x90'
 b'\xa2*l3\x12?\xe1\x88\xab\x10\xb1\xfa\x84?\x83\xe4\xcd\x8d\xddv'
 b'\x80\x00\x00\x00\x05\x00K\xbci\x0b\xd8b\xeb\x1b\x15T\xdd\xf8\xd1U4@\tl'
 b'\xd1\xce\x11G\x17\x00\x00\x00\x04\x00\x00\x00\x87')

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

{'A1': {'B1': {'C1': -981563221,
               'C2': 22,
               'C3': 3311973313208006344,
               'C4': 1441608305636013968},
        'B2': {'D1': -1,
               'D2': {'E1': -0.9549790024757385,
                      'E2': 4990,
                      'E3': -0.8048398735624891,
                      'E4': -2404274962343271831,
                      'E5': -434335582,
                      'E6': 711734034}},
        'B3': 0.5479331327513397,
        'B4': 0.00971375073612113,
        'B5': 'ljzgj'},
 'A2': {'F1': 18199,
        'F2': [{'G1': 48233, 'G2': 3032, 'G3': 98},
               {'G1': 60187, 'G2': 5460, 'G3': 221},
               {'G1': 63697, 'G2': 21812, 'G3': 64},
               {'G1': 2412, 'G2': -11826, 'G3': 17}]},
 'A3': 'bszxcb',
 'A4': -0.5430041551589966,
 'A5': 701163112,
 'A6': -1214151883,
 'A7': [-41, 100, 124, -85, 22],
 'A8': [2702757029, 3973765391, 906453417, 2639550722, 1244167229]}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'FBE/"\xb0\xbe\xa7\x0b#*\xed\xc6\xc1C\xbf2\x00\x00\x00L\x00\x00\x00*\x98]\xcd'
 b'\xb7\x9e?\x19\x05\x00\x00\x00f\x00\xb8\xfe\xd7\x9a]\x7f\x00`\xd8\x82'
 b'\xd32\xdf\xb8\x9d\xfd\x9a0\xf2\xe2\xe4\x9cg\xf8D\x96W\x0f\x88\xe8\xbfwln'
 b'crn\x87#\xe5zH(\xa8\xc92Z\x1c\x80\xce\x0c\xe3(\x08\xd7\xe4\xbfzavsd'
 b'z\x93\xc0\xd9O\x1a3\xf6\x1a\x11Y\x99C\xa5;\x0c\xc4\xd9e39\xb5\x89\xda'
 b'\x9aX\xdaT\r\x16}\x88BI\x86\\\xd0\xe5\x00\x9a\xc3E')

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

{'A1': 17089510268976672802,
 'A2': -0.764675498008728,
 'A3': [{'B1': -39995169,
         'B2': 12442,
         'B3': {'C1': -7438,
                'C2': {'D1': -28,
                       'D2': 156,
                       'D3': 103,
                       'D4': -0.7666088782008549}},
         'B4': 'wlncrn',
         'B5': 135},
        {'B1': 1216013603,
         'B2': 43048,
         'B3': {'C1': 13001,
                'C2': {'D1': 90,
                       'D2': 28,
                       'D3': 128,
                       'D4': -0.6512490080425779}},
         'B4': 'zavsdz',
         'B5': 147}],
 'A4': 38954,
 'A5': {'E1': 52573,
        'E2': [40631, 6463],
        'E3': [1232568147384457664,
               -2755063621728626343,
               6384655706736898917,
               5278931784053904602,
               5027030937721920646],
        'E4': -1697120584,
        'E5': 3662414787817537373}}

Пример 2

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

(b'FBE/?\xc3-\x0f\x89\x0fEt\xb0;\x84\xbe2\x00\x00\x00L\x00\x00\x00V\xf9PM'
 b'\x89\xd4\xc3_\x04\x00\x00\x00f\x00`\xc0\xe0\xe4?XX\xf5\xe8e\x16/E/\xcb\xeb1U'
 b'e7\x7f\x08\xbb\x00\n\x80}T\xb2\xd3?mtxwsq\x05\xa7\xc2XC\x1e\xac5\xda'
 b'\x84\xb0G4\x13\xb6\x82\x1a\x88\xe3\xbfampgro8\xea\x97\x8c\x07\x8c\x86'
 b'\xbc&$\x15\x8df\xc3\x99\x83]\xfe\xba\x85\xe6\xdc\xc2%S\xff\x97\xbc,])\xa8$')

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

{'A1': 8378119763132269375,
 'A2': -0.258267879486084,
 'A3': [{'B1': -339005627,
         'B2': 21809,
         'B3': {'C1': 14181,
                'C2': {'D1': 127,
                       'D2': 8,
                       'D3': 187,
                       'D4': 0.30775940185426975}},
         'B4': 'mtxwsq',
         'B5': 5},
        {'B1': 1129890471,
         'B2': 44062,
         'B3': {'C1': -9675,
                'C2': {'D1': -124,
                       'D2': 176,
                       'D3': 71,
                       'D4': -0.6103642037347528}},
         'B4': 'ampgro',
         'B5': 56}],
 'A4': 63830,
 'A5': {'E1': 19792,
        'E2': [54409, 24515],
        'E3': [2791253805043062762,
               6738398531994588452,
               5991409133302430462,
               2641406661612050431],
        'E4': -455032736,
        'E5': 3393011420493273151}}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'DRCW\x15)\x0f\r\x05\xe3\x97\xf4\xfa0\x86\x00cA\xcd\r\xd6\xfb\xe4\x07'
 b'a?\xc3\xf8\x8b-x\xb6\xfeb\xa6f\xb0Q\xa6 \xeb\x16\xea\xa2\xe1~\xec\xf7'
 b'\xdd\xeca\xb2n\xc4\xc6\xb4\xd3\xb1E\x80\xd5{\x0e;]\x8b\x92s.\xc8\xc9O'
 b'\x90[\xbe\xe5\x9f\xad<4\xc1l\xba\xf8da\x8b\xc83\xf8\xd7\xee\xdb\xed\xd1\xfb'
 b'\x87\xc9S\x1d\xcb\x06X\xa5\xa7@-\xec\xa5\xea\x06_\xac1\x87\x8e'
 b'\x02\x00\x00\x00\x98\x00\xdam\xcdB\x92\xc5<\xb3Q9\x06h\xaa\xf4,\x84f\xd1'
 b'3\xe8;\x91m\x1bt\x9b\xf9r\xf4h\xbbS\xb2G')

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

{'A1': -363498668612055255,
 'A2': 48,
 'A3': {'B1': {'C1': {'D1': [-2902, -31700, -11930],
                      'D2': 11201608330579273779,
                      'D3': 1760850681},
               'C2': 99},
        'B2': [{'E1': 6991808716795137345,
                'E2': [63, -61],
                'E3': 11989425217667435512,
                'E4': 102,
                'E5': 547770800,
                'E6': 2733250283},
               {'E1': -5592928824126046495,
                'E2': [110, -60],
                'E3': 8923179273529046214,
                'E4': 14,
                'E5': -1836360389,
                'E6': 3385339507}],
        'B3': {'F1': -1101295537, 'F2': -5013419855069732891},
        'B4': 248,
        'B5': [24932, -14197, -1997, -4393, -4645, -1071, -13945, 7507]},
 'A4': 17018329655680698059,
 'A5': -8176511982069421403,
 'A6': [21435, 18354],
 'A7': 12915415063368396250,
 'A8': 1745238353}

Пример 2

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

(b'DRCW\x15\xdc\xc9\x02r\xfe{G\xa37\x86\x008\xf4\x14\xab\xc5\x885\x99'
 b'\x7f\xd8G\xf2\x85\naR\x01p\xa8\x0f[\xd4L\x86\x19w\xa4\xb47\xc9j\x91\x12P6)'
 b'q\x17\nq\xee\xf1D\n=\x97\xd6BVo\x9d\x0er\xae\x89\xb1\x13\xec5\xa6t\x0bt\xe9'
 b'h\xca\xd3\xfe\xe0 \xa2]\r0s\x9d\xd0\n\xfc\x94\x8aM\xbe\xe7\xc2\x16W\x8e'
 b'\xe5\x1c5N\xff\x9c\x159u\xe6\x91#\x03\x00\x00\x00\x98\x00\nF\x96\x01\xe0\x02'
 b'\xac\xb0\x18r\x89\x0f\xbd|\x0b|\x9f\xb2\xa2\xe5\x88\x1eO\xb0\x99\x0c'
 b'\xfa\xa7\x98B\xdb\xa9H\xb4\xba\x00')

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

{'A1': -6681235189416146468,
 'A2': 55,
 'A3': {'B1': {'C1': {'D1': [31933, 31755, -19809],
                      'D2': 907950653753058722,
                      'D3': 1117300730},
               'C2': 56},
        'B2': [{'E1': 9194438975801726196,
                'E2': [-40, 71],
                'E3': 12137202449090512370,
                'E4': 15,
                'E5': -2041785253,
                'E6': 3030677273},
               {'E1': 2969649044976748855,
                'E2': [113, 23],
                'E3': 10897877964539457802,
                'E4': 214,
                'E5': -1653647806,
                'E6': 2309911054}],
        'B3': {'F1': 904663985, 'F2': -3185618434527628122},
        'B4': 254,
        'B5': [8416, 23970, 12301, -25229, 2768, -27396, 19850, -6210]},
 'A4': 5635442280985204418,
 'A5': 2563083054093802751,
 'A6': [43483, 46152, 186],
 'A7': 12730553407792104970,
 'A8': 260665880}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CWG\xb7\x00i\x84\xfd\x00\x02\x00\x00\x00\x956\x14\x00\x06\x00\x99'
 b'\xa4W\x15\x14<\xa0\xc0\xe0\x1f\x92v?\xb2\xa5\x04\xa8\x17\x7f\x10?'
 b'\xdc\xf3\x95\xf0\x0e\x02\\?\xd3\x1d\xb5\xda(t\xa4\xbf\xe1\x91I\x1a/i\x94\xbf'
 b'\x9f\xe9\xab\xdes\x9b@?\xe7\x12\x87\xf7y\xa8T\xbf\xe6\xb6\x86\xe3'
 b'\x96\x88\xa2?\xe6\xfc\xe0\xfb\x99\x150\xe5\x89?\xd3\xea\x10_\xc3a'
 b'\xa8\x00\x15\xa2\xc8\xf9\xf1&,\x9a\x87P}\xd5\x8c\xec\x8fk\xd3\x95P\xd1\x1f8'
 b'#\x08\xa6D\x03\x1d}i\x0c)w\x14iQ\x9e\x0fE\xfa$\xdby\x00\x85\x00\x8d0M\xc3'
 b'\xbe\x07\xd3\xa6&Ym:;')

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

{'A1': {'B1': {'C1': 6274943906438242335,
               'C2': 37494,
               'C3': [0.07283047775080953,
                      0.4523672909054193,
                      0.29868837646956536,
                      -0.5489850531987934,
                      -0.031164823009841358,
                      0.7210120995998843,
                      -0.7097811169699251,
                      0.7183689989111937],
               'C4': -6775,
               'C5': 0.31116113044620386},
        'B2': -23864,
        'B3': -436525715865251715,
        'B4': -3058809946157902512,
        'B5': -3377919472384457725},
 'A2': 34045,
 'A3': [{'D1': [7549, 26892, 10615], 'D2': 5225},
        {'D1': [20894, 3909, -1500], 'D2': -9351}],
 'A4': 13844,
 'A5': [12365, 50110, 2003, 42534, 22893, 14907],
 'A6': -92}

Пример 2

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

(b'CWG\xb7\x00i\x1e\xb4\x00\x02\x00\x00\x00\x95}\x13\x00\x05\x00\x99Nok\x14'
 b"WO\xf7/\xe6\xb5c\xbf\xdd\xc4\xb5\xd7u[\x88\xbf\xd4\x90\x0f'q\xbbL\xbf"
 b'\xd6\xd8\xbf\x83\xb6\x8d ?\xe4cm\xc7\xa9\x10T?\xe3\xfa\xf9\xe5\x8c<"?'
 b"\xeb\x9e6\xf9Y\x88\xf4\xbf\xdd'A\xe9_\xef\xdc?\xeav\x14\xc44?\x18\x96"
 b'2\xbf\xed\xf1\xed\x13\xd0\xabb\x00\x15q\xb8Y\x12\xa17\x9f: 0\xda/\xc4'
 b'T\xabc\xc1\x0663\t\x99\xef\xb5wF9u\xe1\xff[Vf\xd7?<\x17Gq\x1er'
 b'\xb0\x00\x85\x00\x8d\xf2\x9e\x0c\xaa\x0c\x10T\xd9\x9dG')

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

{'A1': {'B1': {'C1': 8028533125954351078,
               'C2': 46435,
               'C3': [-0.4651312450491152,
                      -0.3212926755140202,
                      -0.3569792543659833,
                      0.6371373080842297,
                      0.6243867381434749,
                      0.8630633230316378,
                      -0.4555210856485681,
                      0.8269141990767563],
               'C4': -27086,
               'C5': -0.9357819926275222},
        'B2': 29112,
        'B3': 6418369679223038000,
        'B4': -2724743381604122362,
        'B5': 3905475858616645446},
 'A2': 7860,
 'A3': [{'D1': [14709, -7681, 23382], 'D2': 26327},
        {'D1': [16188, 5959, 28958], 'D2': 29360}],
 'A4': 32019,
 'A5': [62110, 3242, 3088, 21721, 40263],
 'A6': 78}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'XIKTNo\x00\x00\x00.8\x00>\xa4\x81\x1e\xfa\xf9\x11^?/s\xcc\x11\xa6F\x03'
 b'\x00}\x00&\x07kA\x13\xb9g\xd8\xccr\xb4/H4S\x1b\x8b\x81\x02\x00\x00'
 b'\x00\x80\x00\x00\x004\xf9@N?5\xb4VO`\x84\x03\x00\x88\x00\x92\x92\xf0VzH+\xe6'
 b'\xcc\xb0\x81\x18x\x9a2\xbdK\x95\x02\x00\x00\x00\x8b\x00\x00\x00\xd1D'
 b'\x88\xd8\xbe\xb2m\x93\x00\xad\x00\x00\x00\x02\xb3\x86\x19n\x98}\x1b\xe4'
 b"?\xbb\xe3\x9e>vwj'\x82\xb7UC\xa7\xfb\x07pwg\x0cV\x96\x84\xba2\x0e\x82\xc5"
 b'\x0e\x9a\xdb\xad\x8aL\x03\x86\xf6\xa4nxtw\xdat\xcc&\xc4\xc7a\xaf\xdb\x06'
 b'.:M\x90\xa5\xae\x8b\xbb\xad\xe2\xc8\x1f\xad\xb4\x02\x00\xab\x00')

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

{'A1': {'B1': 45826, 'B2': 0.6283557870054188, 'B3': 0.31033119559288025},
 'A2': -423758772511426514,
 'A3': [{'C1': 0.8674617409706116,
         'C2': 298611503,
         'C3': -90,
         'C4': 70,
         'C5': 'vwj',
         'C6': 1097533222,
         'C7': {'D1': 47379,
                'D2': 3767313540362066023,
                'D3': 6995,
                'D4': 33163,
                'D5': [1438089767, 133932867],
                'D6': 52}},
        {'C1': 0.8056789040565491,
         'C2': 1331082293,
         'C3': 96,
         'C4': -124,
         'C5': 'pwg',
         'C6': 1458606738,
         'C7': {'D1': 18554,
                'D2': 11130673424342246955,
                'D3': -17102,
                'D4': 38219,
                'D5': [-2070522356, -2112998726],
                'D6': 209}}],
 'A4': -0.42291462421417236,
 'A5': 28082,
 'A6': {'E1': [197, 14, 154, 219, 173, 138],
        'E2': -158989492,
        'E3': 28324,
        'E4': 3665261688,
        'E5': -1004090252,
        'E6': -609263161},
 'A7': {'F1': -1517269702,
        'F2': 12474910368742476718,
        'F3': 180,
        'F4': [6, 46]}}

Пример 2

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

(b'XIKTNo\x00\x00\x00\x06\xc7y_\xfdb\xa5\xc0\xeb\xb6\xed\xbek\xcf\x85\xf8Ai\x02'
 b'\x00}\x00\xa5\xf4M\xbb\xbfo\xfd\xfa\x19:\xfc\x9f\xe0\xf0\x90\x12@'
 b'\xe9\x03\x00\x00\x00\x7f\x00\x00\x00\x97\xae\x9a2\xbf\xe2\x88'
 b'\x88\xb9\x9c\xd2\x05\x00\x8b\x007\x1b\xdd\x08\x11|\xcc&8\xac\x93\x86'
 b'\xa9De\xac\xd9\x1e\x03\x00\x00\x00\x90\x00\x00\x00H\xd7\xe7,?\x1d'
 b'\x0b\x9c\x00\xb6\x00\x00\x0016 \xad>\xf47%\xe8?Z(\xf7\xbeyj\xd0\xc1\x03>\xa1'
 b'hT \x08\x9d\xb3\xddobaeip\xd0\x1a\xabYP\xbe\xde\xc5\x96\x10\xe2\x9fm\x1c-'
 b'\x1fW\xe3\xfd\xf2Th\xb9\xa6\x97\xd1\xa8\xda\xaeb\x87_\xb4Q\xdb'
 b'\x19\xda\xe9\xc6R(\x1f\x1f\x00\x83\x14\x8a.\x8a[\x02\x00\xb4\x00')

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

{'A1': {'B1': 13873, 'B2': 0.7545432825476475, 'B3': -0.4827297329902649},
 'A2': -4565133806902065402,
 'A3': [{'C1': -0.4642861783504486,
         'C2': 4169518955,
         'C3': 65,
         'C4': 105,
         'C5': 'yj',
         'C6': 3142448293,
         'C7': {'D1': 28607,
                'D2': 17357048869541247741,
                'D3': 4752,
                'D4': 59712,
                'D5': [1040433616, 542402721, -575431416],
                'D6': 151}},
        {'C1': -0.6976727247238159,
         'C2': 3112732898,
         'C3': -100,
         'C4': -46,
         'C5': 'obaei',
         'C6': 148708151,
         'C7': {'D1': 31761,
                'D2': 4947633634450876108,
                'D3': -21403,
                'D4': 7897,
                'D5': [-1424306064, -557952935, -502229307],
                'D6': 72}}],
 'A4': 0.6754125952720642,
 'A5': 2845,
 'A6': {'E1': [159, 109, 28, 45, 31, 87],
        'E2': 1425210851,
        'E3': 47464,
        'E4': 2832308134,
        'E5': -2023575846,
        'E6': -615402401},
 'A7': {'F1': 676513513, 'F2': 9957047646864547615, 'F3': 91, 'F4': [25, -38]}}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'MIS\xf3\xa3\xc4\x9c\x00M\x00\x00\x00\x03\x00`\xbf\xb9\xfd\x8eJ\r\xd4@\x00'
 b'\x00\x00f\xe0\'\xae\x9b\xca\xad2\xb5k\xa9X\x9a\xc1\xd5"\xdb\xbfI<s\x97'
 b'\xd4)\x1a\\m\xf6\xbf\rW8AF\xde\x10\xd9\xa1\x86\xc0\xea/rw\xcf)>\x0c\xef\xe7'
 b'\x00\xc4\x00+\x006\x00\x03\x00\x00\x00A\xbf\xd0X\xb2\x87\x16\x8e\x14'
 b"\x12'\x07 \x80\xe7\xe1\xe8\x8c\xc2\xebD\xca\x9fn\x06O\xda\xde?-\x9d\xde?"
 b'\x02\xf7C\xfe\x08_\xd1')

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

{'A1': {'B1': -207371108,
        'B2': {'C1': -60,
               'C2': [{'D1': -0.7860786318778992,
                       'D2': -105,
                       'D3': 3559463516,
                       'D4': 28150},
                      {'D1': -0.5521121025085449,
                       'D2': 65,
                       'D3': 1188958425,
                       'D4': 41350}],
               'C3': [3236573042, 2010065214, 217048832],
               'C4': -0.25541365806768224}},
 'A2': [4647, 1824, 32999],
 'A3': -0.10152520473441573,
 'A4': {'E1': -31,
        'E2': [-1689761444443545746, 454822735465258462, 4540463245739712465]},
 'A5': 16152070572731085493,
 'A6': 7757829254822568667}

Пример 2

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

(b'MIS:\xc9\xfcR\x00U\x00\x00\x00\x05\x00h?\xe6\xdf\xd5U\xeb\xb8\n\x00'
 b'\x00\x00r\x14\xbe\x05Nx\xa2p+y\x8c\x03\x84\xa7]\x9e\xdc>R0\xfb\xd9'
 b'\xc1\xc7\x8a\xa1\xc0\x02\xbfz;\x1d\x92\xe6\xe8y\x1a\xad\xf7\\\x02\x12'
 b'*\xc4\xa1l\x88\x13\x1cl\xbf\xc8.hl\x1c\xf2\xc2\x0e\x1d\x00+\x006\x00\x05'
 b'\x00\x00\x00A\xbf\xe1\xfe\xbf\xfaA\x12\xcc}!\xac@\xca6Vz\xcd\xf4\xe2\xf1'
 b'3@N\xbevE[\xd10)\xeb\xab\xd3\x18\x05\xa5\x1a\x97\xb3:\xabq\xe7')

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

{'A1': {'B1': 986315858,
        'B2': {'C1': 29,
               'C2': [{'D1': 0.20526497066020966,
                       'D2': -39,
                       'D3': 3251079841,
                       'D4': 49154},
                      {'D1': -0.977464497089386,
                       'D2': -110,
                       'D3': 3873995034,
                       'D4': 44535}],
               'C3': [1543639594, 3298913416, 320629951, 3358484588, 485671438],
               'C4': -0.5623474014069756}},
 'A2': [32033, 44096, 51766, 22138, 52724],
 'A3': 0.7148234060421157,
 'A4': {'E1': -30,
        'E2': [-1066437979809626789,
               -3373150028723709947,
               -6549755912017710617]},
 'A5': 1494637960923082795,
 'A6': 8758379243607269084}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YLTT\x1e&kS\xcb\x02\x00\x00\x00?\x00\x00\x00hou\xa2\xf9M\x00\x00\x00\x05\x00'
 b'\x00\x00\x84\x00\x00\x00\x97\\\xc8\xe5\xeb)\xa5,\xd1\x16\xad\x03\xef2Z*\x04J'
 b'\xe0\xb6a\x12w\xcaZ\x16\x86\xde\xc8#\x001\x00\\\xd7\x1d<M9v6\r*\x17\xf2+'
 b"\xbf\x9cE\xeb\x82\xcf'\xeb?\x82?\x1c\\B\xf1\xaeZ\x052L\xa1\xbe\x84\xfb"
 b':?\xd8X4\xbf\x0e\xd2\xb3>\x98l\xec\xbe\x18\xda\xfc\xbe&\xf8\x18\xbf\x05\x00'
 b'C\x00\x00\x00S5CZsY\x93\xbd\xdd\xd1\xd59\x92h\xfe\x97~\x9bB\xee\xaa\xf4<%'
 b'\xcarO\x92E.\xdc\xd7m-\xe0\xd0\xf4W\x8f\x04')

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

{'A1': 3411241766,
 'A2': [{'B1': 92,
         'B2': 200,
         'B3': -1523979291,
         'B4': 2903953708,
         'B5': 1513287427},
        {'B1': 42,
         'B2': 4,
         'B3': 1639374922,
         'B4': 1523218194,
         'B5': 3370026518}],
 'A3': 'hou',
 'A4': -1630,
 'A5': {'C1': -1087639017,
        'C2': {'D1': 0.8486096913349459, 'D2': 130, 'D3': 1113332799},
        'C3': 89829105,
        'C4': [-0.3150344491004944,
               0.7304003238677979,
               -0.7044806480407715,
               0.3512119650840759,
               -0.46176600456237793,
               -0.4938514232635498,
               -0.5975364446640015],
        'C5': [-10404, 15389, 14669, 13942, 10765]},
 'A6': [-4786383626994240173,
        -7494437752653098531,
        2683288492984933246,
        -2892385984336399670,
        328578006809324909],
 'A7': -105}

Пример 2

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

(b'YLTT\x1eoW\xb5\xf5\x02\x00\x00\x00?\x00\x00\x00tpm\x89\x17I\x00'
 b'\x00\x00\x07\x00\x00\x00\x80\x00\x00\x00x.\xdd\x18\x9cV\x08\xab\x0b\xfe'
 b'\x83\x14\xec\xe2Q\xcbJh\xbc\x9f\xb3\xffAMiJ\x18\xdfv#\x001\x00j\xe80\xe2G'
 b'\x15\xaf\xbc\x1a\xe4^\xd1\x94]\xd2.\xed?\x19\x08\xd9\x9e7E\x84'
 b'\x1b\xc3\xe5\x90\r?m\xdac?c\x88\xd1\xbei\xd7\x93>\xb2\xef\xae\xbe\xd3\xff'
 b'\xcf\xbe_\x87M?\x03\x00C\x00\x00\x00%\xebOQD\x80\t\xa7\xab\xdb\x06K'
 b'\x9f\xe2\xf5\x02\xe0\xdc)\x82\x995\xd8\xd4,\tQ\x1a\xb2\xab\x07~|.\xa7\x13'
 b'\xff\x07\xe7\x8f\xd2@:\x14@\xf3\xd0\x7f\x95\x00C\xc4\x06g#\xcd')

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

{'A1': 4122302319,
 'A2': [{'B1': 46,
         'B2': 221,
         'B3': 139893784,
         'B4': 2214464427,
         'B5': 1373826068},
        {'B1': -53,
         'B2': 74,
         'B3': -1281377176,
         'B4': 1766670847,
         'B5': 1994332234}],
 'A3': 'tpm',
 'A4': 6025,
 'A5': {'C1': -468009809,
        'C2': {'D1': 0.9119655444870138, 'D2': 25, 'D3': 933157128},
        'C3': -1021606843,
        'C4': [0.5529921650886536,
               0.8900516629219055,
               -0.4092436730861664,
               0.28875282406806946,
               -0.34167248010635376,
               -0.40624865889549255,
               0.8028468489646912],
        'C5': [-6038, -7632, 5447]},
 'A6': [-6410451563674866907,
        213325731156384683,
        -3109676609269277472,
        9081415955049941292,
        -8077478614537916804,
        9210128694515482834,
        -3664972392989261675],
 'A7': 120}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'QJO\xbe=\x00\x02\x00\x00\x00+?\xd3\n\xe0\x8b1\xa1 G\xc9\x84,\x04v\xf3"\x00'
 b'\x13\x00\x17/\x1c\xa4\xcb\xfb/7\xa4\x00\x1f\x00#\x0e\x84\x05\x00\x00'
 b'\x00\x02\x00\x1b\xbf\x13\xc2\x82e#Ki?\xe3\xf7\x7fjx[ \xa1KSV\xe2\xb9\x1f\xa9'
 b'?\xef?\xb3\xe35\xcb\x86\xabky\xcc\xc7\x18d=\xbbj\xb8h6\xc4\x97\x83'
 b"\xcf\x05\xbe\x00\x00\x00\x02\x00'\x04\xc1\xb3\xf5\x80\xa9\xa8\x95?\xebT"
 b'\xe1\xdf2K\x9a,\xb6Ze\xad\xf2\xc2\x15\xbf\xdfR\x1a\xc7f\xb0\x9c\xec\x91\x04'
 b'\xf1\rS EH\x9cC\xbe\x9d\x02\x94_')

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

{'A1': -16835,
 'A2': [{'B1': 14,
         'B2': 33797,
         'B3': [{'C1': 71, 'C2': -55, 'C3': 33836},
                {'C1': 4, 'C2': 118, 'C3': 62242}],
         'B4': -1089224062,
         'B5': {'D1': [25891, 19305],
                'D2': 0.6239621238226825,
                'D3': 41291,
                'D4': 1398203065,
                'D5': 8105,
                'D6': 0.9765262067506775,
                'D7': [2875947468, 3340264509, 3144333416, 918853507]}},
        {'B1': 207,
         'B2': 1470,
         'B3': [{'C1': 47, 'C2': 28, 'C3': 42187},
                {'C1': 251, 'C2': 47, 'C3': 14244}],
         'B4': 79803381,
         'B5': {'D1': [-32599, -22379],
                'D2': 0.8541116103464106,
                'D3': 11446,
                'D4': 1516613106,
                'D5': -15851,
                'D6': -0.4893862674023326,
                'D7': [3968926961, 223551557, 1218200510, 2634191967]}}],
 'A3': 0.2975388869586073}

Пример 2

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

(b'QJO\xc3\x1e\x00\x02\x00\x00\x007?\xeb\x1f#b?mX\x89\xe7\x1d\x86\x11\xac{g\x05'
 b'\xe0\x1a\xd9\x00\x13\x00\x17\x00\x1b\xbc\xe4\xc1\xf89frmU(\x19?\x00%\x00'
 b')\x00-iR\xa0\x00\x00\x00\x03\x00\x1fi\x921\\+G\x90\x1f\xbf\xe4Y\x92'
 b'\xb3\xe0\x9e,#\xc0\x7f\x90\xed\xf1A\xd4\xbf\xe3o\xa88V\xd1\\\x9c\xe1E\x1e'
 b'\n\x0cCv*\xe3\xaa\xda\x89\xb8\xe8\xe8\xb6_\x9b\x00\x00\x00\x03\x001W\xb0X'
 b'\xb5\x01\x12\xa2\x8e\xbf\xe4xQ\xc2Of\xccss\xba\xe5W\xfaN\x93?\xdf\x89'
 b'\xec^\xcfXL\xf5\x17\xad(7\xeb \xdc\x93~17\xe9\xeb.\xc1')

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

{'A1': -15586,
 'A2': [{'B1': 105,
         'B2': 21152,
         'B3': [{'C1': 137, 'C2': -25, 'C3': 7558},
                {'C1': 17, 'C2': -84, 'C3': 31591},
                {'C1': 5, 'C2': -32, 'C3': 6873}],
         'B4': 1771188572,
         'B5': {'D1': [11079, -28641],
                'D2': -0.6359342110853894,
                'D3': 9152,
                'D4': 2140204529,
                'D5': 16852,
                'D6': -0.6073800182698892,
                'D7': [2632008990, 168575862, 719563482, 2310596840]}},
        {'B1': 182,
         'B2': 24475,
         'B3': [{'C1': 188, 'C2': -28, 'C3': 49656},
                {'C1': 57, 'C2': 102, 'C3': 29293},
                {'C1': 85, 'C2': 40, 'C3': 6463}],
         'B4': 1471174837,
         'B5': {'D1': [274, -23922],
                'D2': -0.6396874232406957,
                'D3': 29555,
                'D4': 3135592442,
                'D5': 20115,
                'D6': 0.49279317148955637,
                'D7': [4111969576, 938156252, 2474520887, 3924504257]}}],
 'A3': 0.8475510519887548}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'DAOQvmcxmjo\x00\x07\x00rcsijblz\x00\x03\x00y\x00\x03\x00|,}\xcfa\xe4\xe2'
 b'4X\xa9M+u\x83\x94\xaa\xb7\xb5\x9d0\x1e\x03\xb0\x0fV?\xe2\x90Q\xbd\xae'
 b'\x9c\xe2\x1e\xe96Qy\x12\xda\x9b*\xa6\xeb\xa2\x93\xf1\xcf\xeb\xf6\x98'
 b'\xb5@\x12\x92\xd6\x1b\xac\xedu^_{\xb3\x85fb9\xa9=+\xafU\xf3\x8a"\xa6::'
 b'\xfe\x8f\xbfL\x97\xbd\xed\x18\x15m\x94\x99"\xba\x0bI?\xb4\xfei\x0bf"\x90'
 b'?\xdfr\rm \xa0\x10\xbf\xc2\xa9\xea\xffm\xac\xb8')

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

{'A1': [{'B1': 'vmcxmjo', 'B2': [-19, 24, 21, 109, -108, -103, 34]},
        {'B1': 'csijblz', 'B2': [-70, 11, 73]}],
 'A2': {'C1': [0.08200699356360475, 0.4913362088868789, -0.14581048462000523],
        'C2': 746442593,
        'C3': 228,
        'C4': 3795081385,
        'C5': 1294693763},
 'A3': 2494216117,
 'A4': 40240,
 'A5': 7683,
 'A6': -80,
 'A7': {'D1': 3926,
        'D2': 0.5801171021202232,
        'D3': [2227371214262950555,
               3073402879226269675,
               -677592457125112293,
               -5985999281516203131,
               7377522538624823125,
               -897867078370132337],
        'D4': -0.7991903424263}}

Пример 2

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

(b'DAOQzzaqahf\x00\x07\x00rpegctrl\x00\x03\x00y\x00\x03\x00|\x91\xf2'
 b'\xedb\xfd\xa4R\xe0T\xea)\xf8\x98\xe9\x1b\xcfT\x8b\x89\x06UX.~?\xe7:\xfd\xb73'
 b'\xa9*l\xfe\xba\xa9-M\xd2d\xbc"\xf8q\xe0s(\xff\xc2G\x1f\xd6>\x1fj\xcc\xa9\\'
 b'\xbd\xb1\xd2\x0c\xbc:\xd1\x0fV\xad\x06\xfcJKN\xd7p\x94\xd6a\xe6O>\xd4\xb68]`'
 b'a\xd6*\xf9\x95\xbe:\xf3\xbf\xce\x1f(\xff\x10\xb5P?\xe5\xd8\x1e|\xdf\xac\x10'
 b'?\xed8\xab\x8b\xd4j\xa6')

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

{'A1': [{'B1': 'zzaqahf', 'B2': [93, 96, 97, -42, 42, -7, -107]},
        {'B1': 'pegctrl', 'B2': [-66, 58, -13]}],
 'A2': {'C1': [-0.23532593206747743, 0.6826317252101735, 0.9131677371072626],
        'C2': -1846350494,
        'C3': 253,
        'C4': 2756894804,
        'C5': -366348136},
 'A3': 3910913876,
 'A4': 35721,
 'A5': 1621,
 'A6': 88,
 'A7': {'D1': 11902,
        'D2': 0.7259510591659695,
        'D3': [7853920035953037924,
               -4890073077390300929,
               -4447551101979366708,
               -6242906412011439046,
               -3382389493985424821,
               5681133239505380943],
        'D4': 0.4154527187347412}}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xc6PBET\x03\n_{\xbf\xe6\x92NA\x03\xbf\xac\x00\x15\x00p\x95\x98(\x92dusgmap'
 b'fh#73rT+\xe2\x0cB\xea\xaeisWgW\xcc-\xd8\x01\xb6\x07VE\r_\xd2\x1c\x1aV'
 b'gG\xcc\xef\xc6\xb1\xf6\x8b_\xaa~3\xb4c\xb7G-\xabA}u\x1c\xf1owZ\xf9\xec'
 b'\tEw\xbb}\x16Gf\xc7}\x1d\xa8\xcd]\x01\xae]\xdf\x8d\xdb\xca\xcf\x81\x84'
 b'\xf9\xf7\xd9\x1e\x98r\xdd\x1a?\xd3\xf8Z\xf1Gs\xac')

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

{'A1': 51011451,
 'A2': -0.7053595800225501,
 'A3': {'B1': -107,
        'B2': 2552795748,
        'B3': 'usgmapfh',
        'B4': 590820210,
        'B5': [{'C1': 84, 'C2': 736234562},
               {'C1': 234, 'C2': 2926146391},
               {'C1': 103, 'C2': 1472998872},
               {'C1': 1, 'C2': 3053934149},
               {'C1': 13, 'C2': 1607605274}],
        'B6': 22119,
        'B7': 1204613062,
        'B8': {'D1': 45558,
               'D2': 10042933153069556663,
               'D3': 1194175297,
               'D4': 2104827121,
               'D5': [111, 119, 90, 249, 236, 9, 69],
               'D6': [30651, 32022, 18278],
               'D7': -4072065877235924562,
               'D8': 1574931931}},
 'A4': {'E1': 14614041723969984798,
        'E2': -1737302758,
        'E3': 0.3120334011307999}}

Пример 2

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

(b'\xc6PBET\xc1\x18\xa0\xa2\xbf\xad\xe2\xc56<\x08\xe0\x00\x15\x00p_\xees'
 b'\xec\x17cunzojsh$:v\x97\x869\x8c\x1b\xd1\x84\xc8\x11RSUk\xb2\xc1'
 b'\xe0\x1b\x1b\xc6\xc2\xcf\xd6Z\x85\xba\xd4\xd6\x11\x1a\x12(\x12\x0f\x1cO'
 b'W\x11Pv\xbc\x8a\xb7\tx\x9f/U\xcbU\x0c*\xfaw\xab\xd1\xda\x9a\xb7,\ta:\xd8'
 b'\xa4\x95\x15\xe2\xf4\xe4d\x84\x1c]\xc2d\x06D\xd4\xfb1\x96\t\x18\xd1\xd1q\x1d'
 b'\xbf\xd4\r\xed\xaeM\xfe\x88')

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

{'A1': -1055350622,
 'A2': -0.05837074553530086,
 'A3': {'B1': 95,
        'B2': 4000574487,
        'B3': 'cunzojsh',
        'B4': 607811223,
        'B5': [{'C1': 134, 'C2': 965483473},
               {'C1': 132, 'C2': 3356578387},
               {'C1': 85, 'C2': 1806877152},
               {'C1': 27, 'C2': 466010831},
               {'C1': 214, 'C2': 1518713556}],
        'B6': 54801,
        'B7': 437397522,
        'B8': {'D1': 3868,
               'D2': 5717057289257257655,
               'D3': 158900015,
               'D4': 1439388940,
               'D5': [42, 250, 119, 171, 209, 218, 154],
               'D6': [46892, 2401, 15064],
               'D7': -6587334815444081532,
               'D8': 475906660}},
 'A4': {'E1': 451720037977688344, 'E2': -774803171, 'E3': -0.31335012456836653}}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'vWBFl\x00\xf7tJ\xbf\x02\x00\x96\x00\x00\x00\x0b\x9e\x9c\xf9\x18\xe2\xf6\xe1'
 b'\x87\\\t\x8ei\xd3\n\xda@\x07$\xa6\xd4J\x8c\x10\x00\x00\x00\x13'
 b'\x00\x00\x00\x16\x00\x00\x00\x19\x00\x00\x00\x1c\x00\x00\x00@i\x0b\xe7\xca'
 b'\xff\xac?d\xc0I\xef\x963\xed?\x05\x96\x13"\xd6\xf3-\x03<\x03\x00\x1f\x00'
 b'\xc1,I\x05\xab\xed\xc5.\x931L\xd0\xa9\xc5\xed\x97AU\x14\xa3M,\xea\xbd\xb1ghL'
 b'\xbe\xd8~\x95%\x00\x00\x00\x92\x0e\x03\x00`\x00\x00\x00>\x9cXW,j\xbf\xe2'
 b'\x14\xbev"\xf6\xa7yh*7\xa0Z\xcd\xd8l\x13\xb8?\xb0]\xb5Ou\xf2\xb9\xbf')

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

{'A1': {'B1': -0.11434230953454971,
        'B2': -7674458403155449935,
        'B3': {'C1': 35914,
               'C2': [{'D1': -25077, 'D2': 156},
                      {'D1': 6393, 'D2': 226},
                      {'D1': -7690, 'D2': 135},
                      {'D1': 2396, 'D2': 142},
                      {'D1': -11415, 'D2': 10}],
               'C3': 0.05663904257171959,
               'C4': 0.9125475572200341,
               'C5': 229107257086023173,
               'C6': 60,
               'C7': [16602, 9223, 54438],
               'C8': 3370361214940556481},
        'B4': 3730,
        'B5': [-800312941, -1746025047, -1558948543],
        'B6': -25538,
        'B7': [13696821678488442712, 3975104492826141302]},
 'A2': -0.7908472418785095,
 'A3': [0.09404640477201065, -0.10135586925513596]}

Пример 2

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

(b"vWBFp\x00\xcb>y\xbf\x03\x00\x9a\x00\x00\x00A\xb4q\xcb\xa4c\xa0\x1a'5\xfc\xe8"
 b'\xd0\\u\xf2\xf1\xacB\xfd\xaa\xc6\xffp\x82I\x93\x10\x00\x00\x00\x13'
 b'\x00\x00\x00\x16\x00\x00\x00\x19\x00\x00\x00\x1c\x00\x00\x00\xd6'
 b'7\xcc\xa1\xf0\xd8\xe3?\xc0q\x87\xb7-T\xbe\xbf3\xad\xa7~\x0e\xba\xaeZ*'
 b'\x05\x00\x1f\x00\x9d\xe9\x14\x04\x9c\\\xbb\xb1\xb3\x8c?X>\x06\x92\x10'
 b'|\xda\x94_u\x19G\xbf\x95\x0e\xae]:fK\x17)\x00\x00\x00\x97i\x03\x00'
 b'd\x00\x00\x00}\xc4\x14\xb6E.\xb83fFe\x1e.\xee\xcc\xb6\x8a\xc7\x9a\x01'
 b'\x0c\x0e\x91~\xe9\xbft\xc4\x96h\xe6\xde\xd2?\x84\xdaVW\xc9V\xe1\xbf')

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

{'A1': {'B1': -0.7777321934700012,
        'B2': 1678547686991466133,
        'B3': {'C1': 37705,
               'C2': [{'D1': -19391, 'D2': 113},
                      {'D1': -23349, 'D2': 99},
                      {'D1': 6816, 'D2': 39},
                      {'D1': -971, 'D2': 232},
                      {'D1': 23760, 'D2': 117}],
               'C3': 0.6202319297897201,
               'C4': -0.11847196322145859,
               'C5': 6534364680778394931,
               'C6': 42,
               'C7': [61938, 17068, 43773, 65478, 33392],
               'C8': -5639812283198281315},
        'B4': 27031,
        'B5': [1480559795, 278005310, 1603590780],
        'B6': -15235,
        'B7': [5072798896422762004, 14378505751619313253]},
 'A2': -0.9736143946647644,
 'A3': [-0.7967000269273286, 0.2948547383667297, -0.5418440538258698]}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'AFUpismynaja&\x9fo\xbf\x90^)\xf1\xd9C\xde\xbf\xd9\xda\x05?r\xcdH\xe0'
 b'\x10\xd0\xcaJQ6L\xac1\xa5\xa7c\xe2V(\xb3T\x98\xef?)\x8bwCM\xaf\xb7G'
 b'\xd9\xa7l\xef\x85\x03\x00\x00\x00|\x00\x00\x00\xcb\xba&\xba\xdf\xa7\xbc'
 b'\x1b\x1d\xba\xb7\x19Ja\x9d2\x02\x00\x00\x00\x88\x00\x00\x00\xde@>W\x1a\xa1c'
 b'\x02\x00\x90\x00m\xc45?\xbe\x06\x03\x00\x98\x00\x00\x00\xcf\xab\xae\xff'
 b'\x9a/\x8f\xd4\xdbz}\xbbM\xfbf\x18"\x85\xcf!\xb2\xde\xc05\x07\xddK>(\x1f\xbd>'
 b's\x16\xb2')

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

{'A1': {'B1': 'pismynaj',
        'B2': {'C1': 97,
               'C2': -0.936022162437439,
               'C3': -0.47289131689965647,
               'C4': 0.5228706002235413,
               'C5': -532099726,
               'C6': 12415357995528671248,
               'C7': 1671931185,
               'C8': 0.9873450755282784},
        'B3': 1131907881,
        'B4': [{'D1': 17252348824202489677,
                'D2': 133,
                'D3': [-728813670, -1149404453, 409402189],
                'D4': -17717,
                'D5': -1478510042,
                'D6': 188},
               {'D1': 11340426811012685083,
                'D2': 50,
                'D3': [567248162, 901832370],
                'D4': 16606,
                'D5': -1592109250,
                'D6': 99}],
        'B5': [0.19908533990383148, 0.36937832832336426],
        'B6': 0.7100284695625305},
 'A2': 1726,
 'A3': [115, 22, 178],
 'A4': 4289637327}

Пример 2

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

(b'AFUssthzamh\xb7\x9e\xbee?N\xd4\xb3\xcb\xafi\xea\xbfTv\xea>BHw\x90'
 b'\xe1q\xe1\x1b\t\xe5i5$z\xb6<\xda\xa6\xf6\xb9]Z\xe1? W\x0e\xd9'
 b'\x1b\xa0\x04\x11nr\x9db\xf4\x03\x00\x00\x00|\x00\x00\x00O\x0c\x87'
 b'\xc6\xd2\x89\xdb\x0b\xb6@\t\x93\xaf\xd3\xcc\x02\x02\x00\x00\x00\x88\x00\x00'
 b'\x00\x97\xa6\xe0\x16\xba\xd8\xba\x02\x00\x90\x003\x13\xf6\xbe4\x0f\x03\x00'
 b'\x98\x00\x00\x00\xbf\xc5\x08n\x08\x1c\x9f6\x8c\xcff\xd6\xdc)\x95\xef'
 b'\x81X\x9d\xf6r>8\xe6G\x07G?B\xde\xc4\xbeii\x99')

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

{'A1': {'B1': 'ssthzamh',
        'B2': {'C1': 183,
               'C2': 0.8974398374557495,
               'C3': -0.8254012087405813,
               'C4': 0.45793402194976807,
               'C5': -1871230910,
               'C6': 3848859183850025441,
               'C7': 1018591780,
               'C8': 0.5422810203646933},
        'B3': 3641595680,
        'B4': [{'D1': 7105961604117995547,
                'D2': 244,
                'D3': [916397064, -697905268, -275437092],
                'D4': 3151,
                'D5': -1982675321,
                'D6': 219},
               {'D1': 14759333449873536523,
                'D2': 2,
                'D3': [-157460351, -432521614],
                'D4': -22889,
                'D5': -658893088,
                'D6': 186}],
        'B5': [0.7774547934532166, -0.3845081925392151],
        'B6': -0.4806152284145355},
 'A2': 3892,
 'A3': [105, 105, 153],
 'A4': 1846068671}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'GZYJ\x03\x00\x00\x00\x10\x00\x00\x00T\x00\x00\x00kcax}X\x0b\x81\xb2\xe7\xbf?'
 b'\xfe\xbd\x9b?\x0b\xec)6-\x17\xd5C\xcfj\xd8{~!k\x06\xce\xa9\xf9W'
 b'\x14\xd8\xc8\xdb*_\xfb\x9e\xf5\xd1+\x17i\xf8\x9d\xea\xe9\x00t\x13'
 b'\x00\xc8\x16a\x14k\xa5\x98_\x8b\xa7\xd1\xd2\x82\x07\xe6\x13\x00\x04\x1f'
 b'\x00\x02\x00$\x00C\\\x02\x020\xc9\x82\t\xf4\x03\x00<\x00\xbc\xc39G\x8dA'
 b']\x14\xc4HT?')

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

{'A1': 'kca',
 'A2': {'B1': 3859251922,
        'B2': {'C1': -0.7405400487513552, 'C2': 2612919871},
        'B3': 4,
        'B4': {'D1': 703335231, 'D2': 54},
        'B5': [{'E1': 8924000100063450925, 'E2': 107684222},
               {'E1': -2609598402174277170, 'E2': 2667274026}],
        'B6': {'F1': 23619,
               'F2': [2, 2, 48, -55, -126, 9, -12],
               'F3': [-1540802367246839307,
                      6995998973818568937,
                      -3339547355972801772],
               'F4': 1467401128633811900},
        'B7': 0.829235315322876}}

Пример 2

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

(b'GZYJ\x03\x00\x00\x00\x10\x00\x00\x00l\x00\x00\x00vnl\xa0A:\xc3>f\xc8?i'
 b'\xc3\xd5\xc3\x0c\x9bu\x08Q=\x16\xc9\xefI\xe8\xf2\xfd\xe9\xfd\xe1\r'
 b'\x19\x08k\xdb]\x16\xe1\x1d\xff7\x15o\x97\x9a\xba\xe8\xcd\xd8\xbac\x81"\x9d$'
 b'\x06A\xbbP\xdf\xfbT\x1a\x83\xfc\x12\xf0.U.\x08B\xb631D\x89R\xd3\xf6\xded\xc9'
 b'f\xdb-[3\x017k\xce\xd4)R\x13\x00\x0e\x1f\x00\x02\x00$\x00\x13\x84\xdc'
 b'\t\xf5r\xe6\xed\xe8\x06\x00<\x00\xa8\xf0\x85\xc0\xde;y\x83\x9f\xfbD?')

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

{'A1': 'vnl',
 'A2': {'B1': 1378473166,
        'B2': {'C1': 0.19062027485462085, 'C2': 3285566313},
        'B3': 14,
        'B4': {'D1': 141925132, 'D2': 81},
        'B5': [{'E1': -147800433496615363, 'E2': 232914409},
               {'E1': 2153026689228802073, 'E2': 1863661567}],
        'B6': {'F1': 33811,
               'F2': [-36, 9, -11, 114, -26, -19, -24],
               'F3': [7186294534307486359,
                      5817314838319014529,
                      -1147577315013362721,
                      3545377726392063278,
                      -3934775022726248124,
                      7725645005862067046],
               'F4': 9473669119049330856},
        'B7': 0.7694644331932068}}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'USFy\x16\x00+\x00;\x00K\x00[\x00k\x00{\x00xsaqTE\xe8.\xb3\x03'
 b'\x04\x00\x12\x00=\x18)\xd0\x1e\xc3\xe6\xf4c\x17r\x1d\x87\x07w\x9c'
 b'\x11\xf2\x88f\xbf\x8f\r\xee\xc8$\xb0Z\xc0\x19\xaf\xbcx\x8b6\x8a\xaaR6J'
 b'\xcb/2\xb9[\xf5\xd6\xff\x9d \xc1\xbe\xea0\x93\x10\x97Z[\x0b\xa76+\x93'
 b'\xef\x04E\xcd\xa2<\x12~3\x84\x9a\x13~\xc2\xd9\x93\x14/\x0e\xd7\xb6\x90}\x05'
 b'\x0e\x08\xbd\x0b\x0e\x05\xe7e\xa9\x9b\x13\xc1Z\xb9?9R\xb04')

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

{'A1': 121,
 'A2': {'B1': 84,
        'B2': {'C1': 69, 'C2': 62074600, 'C3': 'xsaq', 'C4': 61},
        'B3': [10520, 7888, -6461, 25588, 29207]},
 'A3': [{'D1': 34589,
         'D2': 7,
         'D3': 119,
         'D4': [-1997401700, 227524454, -1339766546]},
        {'D1': 49242,
         'D2': 25,
         'D3': -81,
         'D4': [915110076, 911387274, 841993034]},
        {'D1': 23481,
         'D2': -11,
         'D3': -42,
         'D4': [-1054827009, -1825510722, 1532663568]},
        {'D1': 42763,
         'D2': 54,
         'D3': 43,
         'D4': [1157951379, 305963725, -1702612098]},
        {'D1': 32275,
         'D2': -62,
         'D3': -39,
         'D4': [237966483, 2106635991, -1123545595]},
        {'D1': 3595,
         'D2': 5,
         'D3': -25,
         'D4': [328968549, 1069112001, 883970617]}]}

Пример 2

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

(b'USF\xd6\x15\x00*\x00:\x00J\x00Z\x00j\x00z\x00qgs\xc52\xd1/]H\x03'
 b'\x00\x12\x00n\x13\x83\x97|:2\x1ac\x8b\xb4\xc2b\xa8\xcb\x13\xc2'
 b'\x92\xbd\x96\xee\x94\xf8\xaa\x9c%8\xbfT\x83*\xfb\xe5\xb9\xdd\x05\x94'
 b'\xb5\xb4S;\xe91p\xc8(\xd5\x90&\x9f!\x97\x9b\x8e\xdf>\xc23\xc1Mj\x8a\xff\xe6c'
 b'k\xe1\xea\x85[@\xa6\xa7\xdeO\x07+G6\n\xc1!\xebN\x8b[iO\xfd\xab\x03\xfa\x89'
 b'\xb7P\xedc\xbd8\xc6\xa3\x99\xf8\xf2\n\x80=')

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

{'A1': 214,
 'A2': {'B1': -59,
        'B2': {'C1': 50, 'C2': 1214066641, 'C3': 'qgs', 'C4': 110},
        'B3': [-31981, 31895, 12858, 25370, -19317]},
 'A3': [{'D1': 25282,
         'D2': -88,
         'D3': -53,
         'D4': [-1114455533, -124457322, 941989034]},
        {'D1': 21695,
         'D2': -125,
         'D3': 42,
         'D4': [-575019525, -1263168507, 837368659]},
        {'D1': 51312,
         'D2': 40,
         'D3': -43,
         'D4': [564078224, -544302185, -1053572546]},
        {'D1': 27213,
         'D2': -118,
         'D3': -1,
         'D4': [-513055770, 1079739882, 1339991974]},
        {'D1': 11015,
         'D2': 71,
         'D3': 54,
         'D4': [-350109430, 1767607118, 61603151]},
        {'D1': 35322,
         'D2': -73,
         'D3': 80,
         'D4': [951935981, -124148794, 1031801586]}]}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'NYYJ?\xc9J\x9f\x14\xea\xd98\xbf\xea\x87\x0f\xad\xd4\\\x86\x00\x02\x00&'
 b'\x91\xb5\x00\x00\x00\x92)\xb09\xd9\x08\xfb\xe1\xa9kn\xf7\xec\xa6+'
 b'\x93?\xee\x9c/\xc7;\x08@q\x11\x9bK\xc2\x1e\x0eM\nuL\x8a\x00\xbf\xae'
 b'\xc6\x94\x7f\xaa\x0e\x00X\x8d\xc7\x0e(\xd3\x00\xbe\x00\x00\x00(\x00\x00'
 b'\x00=\x97\x17\x17\x04\xe6z\xc7\xab\xa0\xd5)I\xcc4\x9d\x1eZO6\xa4\xaf}'
 b'\xb6\x0e\x8a1\x921z\x8e\xb9ZZS\xa4\x98\x06\xbb\nR?\xe0\xf5\x129\xb3\xf5046'
 b'3\xe7\xc5\x00\xa7\xb8\x00\x02\x00\x00\x00RG.\x00Z\xb1?\xe8\x0bP\x94\x95\xa9'
 b'\x1c')

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

{'A1': 0.19758976479870127,
 'A2': -0.8289869685276166,
 'A3': 'kn',
 'A4': 37301,
 'A5': {'B1': [{'C1': [247, 236, 166, 43, 147],
                'C2': 0.9565657511923362,
                'C3': 8147463950571540045},
               {'C1': [10, 117, 76, 138, 0],
                'C2': -0.06010879572297867,
                'C3': 6380975110682247358}],
        'B2': 18222,
        'B3': {'D1': [10887195934005577643,
                      11589214613043191070,
                      6507480067520443918,
                      9957900992300104026],
               'D2': 6508726859335404114,
               'D3': 0.5299159171114862,
               'D4': 3762251609250244536},
        'B4': 177,
        'B5': 0.7513811971705624},
 'A6': 3003964555777532329}

Пример 2

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

(b'NYYJ\xbf\xb1F\xf4\x84\xb1\xa9\xf0?\xe9\xc8\x0c\x14O^\x1c\x00\x02\x00&'
 b'<\x91\x00\x00\x00\x927\\/Dpu\x901df\xa6\xb1\x8c(C?\xe2\x0e\xb0\x9dk\x10'
 b'v\x15e\x11\xc8\xf45\xbc\xd1/[M\x04\xbe?\xe2\xd4\x0b\xfd"z\xe2`\xc0\xb5Ndr'
 b'oA\x00\x00\x00(\x00\x00\x00=\x12\x8ep\x04db\xeb\x8eE?\xbc\xb5\x94\x0e'
 b'\xa5\xcaX\xe7\x14\x05\xe0\x9e\x1f\x92\x81:[\xc4I\xd8\xdd!&\xef\x8d\xc0(\xa1'
 b'\x91\xec\xbf\xc4R,\xc6\xe1\nxk\x88<\x99li\xcb2\x00\x02\x00\x00\x00R'
 b'\x9f\x15\x00Zk?\xea\xc2\xc9j\xde\xd5\x1e')

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

{'A1': -0.06748893966292946,
 'A2': 0.8056698223762768,
 'A3': 'df',
 'A4': 15505,
 'A5': {'B1': [{'C1': [166, 177, 140, 40, 67],
                'C2': 0.5642932009291275,
                'C3': 1541658002232556753},
               {'C1': [47, 91, 77, 4, 190],
                'C2': 0.5883846229588381,
                'C3': 6971771571466825537}],
        'B2': -24811,
        'B3': {'D1': [1337129303542000526,
                      4989914400208889290,
                      6406111010433671058,
                      9311856078152588577],
               'D2': 2805616949330022892,
               'D3': -0.15875777922527212,
               'D4': 7748509788537473842},
        'B4': 107,
        'B5': 0.8362776839555044},
 'A6': 3989115340934451249}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'UYD\xb0T\x8b\x9c\xa0\x13\x0b4u\x08\xd61\xda\r\xa2>\x1c\x0c\x00\x00\x00'
 b'b\x00\x08\x00\x00\x00\x8c\x90\xfaz\xca\x15\xb8\xb6E\x19y\xa2\x1a\x9c'
 b'\x18\xc0r\xf7J\xa4\xa0l\xc6T\xff\x88\x03\xe9\xed/\x00\x81W\xde\xdb_\x04^'
 b'M\x93\x81;\xad\xc2a\xb3_/Bo\xb2\x89\xc9\xe5\x03Z\xcfZ\x82\x07\xeav\x10\xd0Ry'
 b'\xc2\x92\x00\x06\x00\x00\x00$\x148\x00\x02\x00\x00\x00<\xc6\x11\x00\x02'
 b'\x00\x00\x00D?C\x00\x05\x00\x00\x00L\xee\x18\xb7\x00\x00\x00\x02\x00'
 b'\x00\x00`\x8eR\xa1D\xd9\xf2\x02\xc7\xd6')

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

{'A1': 6092135132276929653,
 'A2': 148255194,
 'A3': 3490,
 'A4': 15900,
 'A5': {'B1': 12,
        'B2': {'C1': [{'D1': [-1196014311,
                              2040666780,
                              415265527,
                              1252302956,
                              -967508088,
                              65662255],
                       'D2': 5176},
                      {'D1': [8476638, -614529954], 'D2': 50705},
                      {'D1': [1301512507, -1379769933], 'D2': 16195},
                      {'D1': [1596932719,
                              -1299592731,
                              56282970,
                              -2113410442,
                              282088057],
                       'D2': 60952}],
               'C2': -73,
               'C3': [194, 146],
               'C4': -114},
        'B3': [82, -95, 68, -39, -14, 2, -57, -42],
        'B4': 144,
        'B5': -92616171}}

Пример 2

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

(b"UYD\xb0\xb2\xc5Z\xc9\xb2\xc5\xbaT'N\x1a\x0b\xc9-\x8f\x82\x1d\x00\x00\x00"
 b'c\x00\x06\x00\x00\x00\x8dU\x1b\x8fC\x03\x83\x96\xf4\xc9i\x94\x127'
 b'\xcc\xde;\x1a5\x07\x84;.g\x80\xc6\xa6\x9f\xd2*\xf2\x035\xe3\x10\x87\x1a\xe7'
 b'\x113\x85\xe3\xa6\x11\x1769he\x82\xcdb\xf4\xa8\xbb\xd2\x113\xefQZ\xddH\x1e* '
 b'\xc1\\\x11\x00\x05\x00\x00\x00$C#\x00\x02\x00\x00\x008\x9bp\x00'
 b'\x02\x00\x00\x00@Z0\x00\x06\x00\x00\x00H\xc5x\x1d\x00\x00\x00\x03'
 b'\x00\x00\x00`+\x91\x11\x8a[\xb8\x9a')

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

{'A1': -5564941942212150700,
 'A2': 659429899,
 'A3': -14035,
 'A4': 36738,
 'A5': {'B1': 29,
        'B2': {'C1': [{'D1': [-2087258935,
                              1771311671,
                              -857851110,
                              889685051,
                              778535110],
                       'D2': 17187},
                      {'D1': [-1499475414, -234670621], 'D2': 39792},
                      {'D1': [277289703, 288589283], 'D2': 23088},
                      {'D1': [-1508829386,
                              963143042,
                              -849152856,
                              -1143860941,
                              -279880995,
                              1209936416],
                       'D2': 50552}],
               'C2': 29,
               'C3': [193, 92, 17],
               'C4': 43},
        'B3': [-111, 17, -118, 91, -72, -102],
        'B4': 85,
        'B5': 462373635}}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KQDZ\xec\xcfF\x8b\xda!\xad\xbc2\xc9\xcd>\xaf\xdd6I\x02\x00[\x00'
 b'\x00\x00\xec\xac2\x90S\xb2l#~\xa5\xfb\xa27x\x94\xe4\xddq\xbd\x9b\xf4\xd0'
 b'\xbf\x02\x00_\x00\x00\x00\x95,DK\xc5>\xbf8\x15qu\xac{\xe1"\x8f\x02\x00;\x00L'
 b'\x18\x93\x9c=/$\x9d6\xb7\xb1\xbd\x02\x00K\x00?\x00O\x00\x95\xbd')

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

{'A1': -4851184001084895252,
 'A2': 5275647758253803826,
 'A3': {'B1': [{'C1': -8132690055787089643, 'C2': [16069, 14527]},
               {'C1': -4777836284470874307, 'C2': [6220, -25453]}],
        'B2': -20,
        'B3': {'D1': 1401959084, 'D2': [27826, 32291, -1115, 14242]},
        'B4': -27528},
 'A4': -0.2649297094389722,
 'A5': [149, 189],
 'A6': 1262759061}

Пример 2

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

(b'KQDZ\x8a\xfdsf\x86p*\xa0(\x9c;\xfe\x88O\x0c\xe8\x02\x00g\x00\x00\x00j\xf5'
 b"\xf4\xf1/'J\xd14\xe9v\x91\xddpJz\xc7\xcb\x11\x86\xb2\xef\xbf\x02\x00k"
 b'\x00\x00\x00#\xe94{S(C\x1f(\xa4h\xe4\x07\x8ef\x0b\x88z\xc9\xb5\xe1'
 b'\xe5\x05\x00;\x00V#\xc4J\xe3\x8a.b\xb6\x94B\x9b\x06#Y\x082\xd9\x05\x00Q\x00E'
 b'\x00[\x00<\xa2')

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

{'A1': -6905583356072428150,
 'A2': -1725917107390276568,
 'A3': {'B1': [{'C1': -1882023292315366554,
                'C2': [10323, 8003, -23512, -7064, -29177]},
               {'C1': -2796163239710909630,
                'C2': [9046, 19140, -29981, 25134, -27466]}],
        'B2': 106,
        'B3': {'D1': 804386037, 'D2': [18983, 13521, 30441, -8815]},
        'B4': 19056},
 'A4': -0.9905424449518556,
 'A5': [60, 162],
 'A6': 2067065123}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'0EFKD\x02\x00X\x00\x00\x00hM\xd9\xfc\xa09eyrwal\xaaQ\xdb\x80\x01\x137?\xd6'
 b'*~5c\x9f\xa9#$\xaa\xa3\xbb\xfc\xf6\xbb\xfe\xf6\x00\x9b#\xf4\xe2\x80\xddT'
 b'\xd4T\xdf\xa6\xfe\x92 \xbf\xe2{\x84G\xdf\x89\xb0\xf1\x81[\xaf\xa1CX6\x99'
 b'\xe1\x01C4\x7f"\xf1\xb5D\x00\x00\x00N\x00\x00\x00')

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

{'A1': [{'B1': -30241, 'B2': 6360104873303863728},
        {'B1': -26314, 'B2': -5336446153724329503}],
 'A2': -52867736,
 'A3': 14752,
 'A4': {'C1': 'eyrwal',
        'C2': 2161856938,
        'C3': 0.7151337265968323,
        'C4': -42,
        'C5': [1664450090, 606316959, -54811734, -151077898],
        'C6': 0},
 'A5': {'D1': -487316581,
        'D2': [128, 221],
        'D3': -548088748,
        'D4': 166,
        'D5': -0.627242922782898,
        'D6': 1199864802}}

Пример 2

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

(b'0EFKD\x02\x00X\x00\x00\x00T\x89\xc9`\xd3\xb2faobvu\x15\xe3\xa0\x0c0'
 b'ug\xbf\xa6*\xc6\xe0\x91\x9f\xb1sG0(6\xecj\xd0>\xc0"\x02\x02)\xd16\x8d\x9f'
 b'\xd6\x02\xaaP\x9f\x0f0?\xe9\xb8\xd9\x94\xecx\x96e\x19\xe6%\x16nJ\x85\x94'
 b'\xca2\x86\x7f00p\x18D\x00\x00\x00N\x00\x00\x00')

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

{'A1': [{'B1': 30956, 'B2': 5363248558274864534},
        {'B1': -27515, 'B2': 1760960439157928650}],
 'A2': 1623820628,
 'A3': -19757,
 'A4': {'C1': 'faobvu',
        'C2': 211870485,
        'C3': -0.9041318893432617,
        'C4': -90,
        'C5': [-1847540182, 1198764447, -331995088, -1069625238],
        'C6': 34},
 'A5': {'D1': -785841662,
        'D2': [54, 141],
        'D3': -1442654561,
        'D4': 80,
        'D5': 0.6877383589744568,
        'D6': -1797670679}}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'PWJK\xbe\xae\xafw?\xea\xa5\x11\x97P\x91d\x00t.$|\x03\x0c\xd3mvfv\xec\x1bUW'
 b'h\xd2\x938julf\x86-\xfd\x08\x0c\x17\xbfRlzof \x08\x97E\x8d\x05\xc4Rrxwz'
 b'>O\x03c.\xc4\xb1Mraot\xc0\x0f\x03\x87\xfb\xbb\xc8\x94kxgu^z\xdb\x17'
 b'\x1d?\xe8$\xc5\x9b-\x8cF1\x06\x17?\xd4\x00\xc6\xd2U\x00\x00\x00~?;'
 b'\xb3\xde\xbf`\xf2\xc6\xbfL\x80\xa9\n\xef\\:\xf0\xdd\x18\x04>?\x1f\xce\xcd?'
 b'#3\x99\tj\x84yL\x117x\x00\x03\x00\x00\x00r\x0c\xd7}\x88\xce\x18\xea!')

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

{'A1': -0.3411824405193329,
 'A2': 0.8326499896398158,
 'A3': [{'B1': 32701831532711123, 'B2': 'mvfv'},
        {'B1': 17013285851231327032, 'B2': 'julf'},
        {'B1': 9668662186038771538, 'B2': 'lzof'},
        {'B1': 2308261134001882194, 'B2': 'rxwz'},
        {'B1': 4489811078032961869, 'B2': 'raot'},
        {'B1': 13839284062511679636, 'B2': 'kxgu'}],
 'A4': 94,
 'A5': 122,
 'A6': 219,
 'A7': {'C1': 5917,
        'C2': 0.754488757211569,
        'C3': 49,
        'C4': 438889668470559317},
 'A8': {'D1': 2799,
        'D2': 23610,
        'D3': 4041021444,
        'D4': 62,
        'D5': [0.624249279499054, 0.6375060677528381],
        'D6': 678500350374786936,
        'D7': [0.7332133054733276, -0.8787044286727905, -0.798838198184967],
        'D8': 925346274974689825}}

Пример 2

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

(b"PWJK\xbf.\xb0L\xbf\xdc\x1b'n\xb3m\xa8\x94\xa8r\x1e\x89v`\xf4nyugD0\x0f\x0c"
 b'\xb4\xca\xa5msoaz|a\xe2\xf1\xda\xb8\xfa\x08ymne\xf7x\x18\xcf\xc4V\xdf\xce'
 b'sepm7U`%\xb6\xd2\x11\xd9qstf\x898\xe9\xdb\xfb\xa0\x91\xb1wfjyE2\x85\xc6'
 b'(\xbf\xe8!\xb9\xc5G:\x8c\x9a5\x87\xf6\x81.Y\x95n\x00\x00\x00z?N\xf4R\xbf\x0e'
 b"F\xfb\x04i1ZY\x93\xc9\x19'\xbet\xda\xa8\xbfw\x0e\xda\xc5R\xf2\xb2A\xf50m\x00"
 b'\x02\x00\x00\x00r<\x12\x95\xe3\xce\x1bF\xe1')

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

{'A1': -0.6823775768280029,
 'A2': -0.4391573506415747,
 'A3': [{'B1': 10711937189181546740, 'B2': 'nyug'},
        {'B1': 4913443740708414829, 'B2': 'soaz'},
        {'B1': 8962694261828549128, 'B2': 'ymne'},
        {'B1': 17832030005204803534, 'B2': 'sepm'},
        {'B1': 3987198760203719129, 'B2': 'qstf'},
        {'B1': 9887910112920637873, 'B2': 'wfjy'}],
 'A4': 69,
 'A5': 50,
 'A6': 133,
 'A7': {'C1': -14808,
        'C2': -0.754116902646119,
        'C3': 154,
        'C4': 3857322640554956142},
 'A8': {'D1': 1129,
        'D2': 12634,
        'D3': 1502857497,
        'D4': 39,
        'D5': [-0.23911535739898682, -0.965070366859436],
        'D6': -4228050252722786195,
        'D7': [0.8084155321121216, -0.5557705760002136],
        'D8': 4328686997504476897}}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'WKSS\xcd\x00)\x10\x00\x04\x00q\x00\x04\x00\x81\x00\x02\x00\x00\x00\x85J='
 b'\x81\xf7\xd8\xeb\x06\xcb\x06\xbbvb\xd0\x00\x00\x00\x02\x00\x87\xbf\x04I'
 b'@\xdd\xf8\xf0\xb1\x848me\xa4\xb9\xd3H?\xe2\x1e\xfbG\x8b\x9b\x80[\xb9\xee'
 b'\x13\x16\xe1\x9eF\xbf\xe8\xc3\xe3\x83\xf62\xa2\x9b\xf4v\xe2\x96R&[?\xe10'
 b':\x0b\xb0(>\xbf\xe6\x0e\xc7UJ\xc4S?\xe2\xf0\xecrP\xba\xbc\x00\x00\x00'
 b'1\x00\x00\x00A\x00\x00\x00Q\x00\x00\x00aaetyxhZ\xa0\x96\x9b')

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

{'A1': {'B1': -0.5167427062988281, 'B2': -570888015},
 'A2': 16,
 'A3': [{'C1': -2076676763, 'C2': 2763641672, 'C3': 0.5662819287652923},
        {'C1': 1538911763, 'C2': 383884870, 'C3': -0.7739121987702513},
        {'C1': -1678477598, 'C2': 2521966171, 'C3': 0.5371370533259847},
        {'C1': -1075441977, 'C2': 1430963283, 'C3': 0.5919096214982669}],
 'A4': 'aety',
 'A5': 'xh',
 'A6': {'D1': 5349574833882203851,
        'D2': 6,
        'D3': -1149869360,
        'D4': [23200, 38555]}}

Пример 2

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

(b'WKSS\xcd\x00)F\x00\x03\x00a\x00\x06\x00m\x00\x02\x00\x00\x00s=\xf8'
 b']\xb2\xda\xd6\xf9\xc5\xa3\x14E\x01\xbc\x00\x00\x00\x02\x00u?;\x1a\x9d7\xe2j'
 b'\xae\xa5\x0eb\x8c\x8c\xdfs8?\xe6\x9d\x11]U\xb1\xac\xf4\x84?\xe4[\x8eO'
 b'&?\xe8\xc9J&\x9b\x1a\x08\xe6\xfe\xf4\xa3\x1e\xcd\x9c\xcf\xbf\xeb\\'
 b'\xa4\xb5\xdc\xe4\x18\x00\x00\x001\x00\x00\x00A\x00\x00\x00Qnaisbak'
 b'g\xe1\xf0\xeex')

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

{'A1': {'B1': 0.7308748364448547, 'B2': 937585326},
 'A2': 70,
 'A3': [{'C1': -1525783924, 'C2': 2363454264, 'C3': 0.7066733191436945},
        {'C1': -192659484, 'C2': 1536053030, 'C3': 0.774571490671236},
        {'C1': -419498845, 'C2': 516791503, 'C3': -0.8550590087899108}],
 'A4': 'naisba',
 'A5': 'kg',
 'A6': {'D1': 4465422053294930373,
        'D2': -93,
        'D3': 340066748,
        'D4': [57840, 61048]}}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CNCJ\x0f]A\xfd\xed\xc0b\xa1\xc6\xdaJ\x9e\x13\x00\x06\x00\x00\x00V\x00'
 b'\x02\x00\\\xd9\xb7\xe1J\x00\x02\x00\x00\x00^\x00\x04\x00`\x8e\x8e6'
 b'o\x00\x05\x00\x00\x00d\x00\x03\x00iT6\xc5[\xb1\x11\xdb\x05\xf3\x8c\x92\xeda'
 b'\xa2\xa3-\xe8\xa3\x1a\xc5\xb2\xde\xe4[\xb4X@\x9e\xc94\x88<\xfcpy\xc2\xdb'
 b'F\xf02\xbb\x14V\x13l^\xc9\x0f\xa7\xf5%\x01\x83')

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

{'A1': 15,
 'A2': {'B1': 6719931316590256582,
        'B2': {'C1': [{'D1': 3662323219,
                       'D2': [60, -4, 112, 121, -62, -37],
                       'D3': [70, 240]},
                      {'D1': 3652706634,
                       'D2': [50, -69],
                       'D3': [20, 86, 19, 108]},
                      {'D1': 2391684719,
                       'D2': [94, -55, 15, -89, -11],
                       'D3': [37, 1, 131]}],
               'C2': 21558,
               'C3': 197,
               'C4': [91, 177, 17, 219, 5, 243],
               'C5': -29550,
               'C6': -1341612392246107366},
        'B3': 3316834020},
 'A3': 6608003587824497800}

Пример 2

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

(b"CNCJ':\x80\x9fzn\xa72^\xac\xb4\x1ef\x00\x06\x00\x00\x00V\x00\x02\x00\\j"
 b'\xa9\x05\xab\x00\x04\x00\x00\x00^\x00\x02\x00b\xd3M\xd7a\x00\x04\x00'
 b'\x00\x00d\x00\x02\x00h\xde\x05\xb1\xc50\x01\xa5\xa4#\xb8\x8e\x8b7'
 b'\xa7\x9c\xb8\t\x8b5\x1e\xbf8;\x98zR5`\xfc0\r\xa5mQ=\x18t \x83\x1e[\xbfaF\xaa'
 b'\x0e\x9a7\x84[]')

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

{'A1': 39,
 'A2': {'B1': 4215544599410061918,
        'B2': {'C1': [{'D1': 2897485414,
                       'D2': [-91, 109, 81, 61, 24, 116],
                       'D3': [32, 131]},
                      {'D1': 1789461931,
                       'D2': [30, 91, -65, 97],
                       'D3': [70, 170]},
                      {'D1': 3545093985,
                       'D2': [14, -102, 55, -124],
                       'D3': [91, 93]}],
               'C2': -8699,
               'C3': 177,
               'C4': [197, 48, 1, 165, 164, 35],
               'C5': -18290,
               'C6': -8415073087174112459},
        'B3': 515848251},
 'A3': 10987184630137630733}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b"PXRRV\xde\x97\xb6$\x8f'r\xb3\x00\x00\x00\x8a\x7f\xae\xd2\xeb~[a\t\xed\xeau"
 b'\xbe\xe2\xa0d\xfaO\xfa\x8b\xa0\x99\xed\x14\x8a\xea\\!\x0f"Y\xd3L`\x1e!'
 b'(@\xbe\x15p\x12\xf3\xe3\x00\x00\x00\x03\x00\x00\x00\x1bz\xbd\xefY'
 b'\x8c\xc8\xa7\xd6JV\x83\x02>\xfc\x0c\t\xbf@\xf9\x8e/"%\xd7\xd4\xc0\xdd\x84'
 b'\x9a\xed\xf6\xc2\xe4\xabj\x80"\x1c?\x1a\xbd\xb2>\r\x8bY4\x02\x03\x08JF'
 b'\xd6\x95\xa9@\xbf\xe2\xbe\x8e\xad\x97\xbdh\x00\x00\x00\x02\x00x\xd5J'
 b'\xeb\x00\x00\x009\x00D\x00^x\x00|<,\xb07-\xc8\x87\x1f\xbb')

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

{'A1': -8553,
 'A2': -1239118041,
 'A3': 29363,
 'A4': {'B1': 213,
        'B2': 19179,
        'B3': {'C1': 18,
               'C2': 62435,
               'C3': [{'D1': 8484467926529363962, 'D2': 35744},
                      {'D1': -7355200029556203249, 'D2': 8793},
                      {'D1': -3221093950955175746, 'D2': 5488}]},
        'B4': [{'E1': 2059267929,
                'E2': 10144542699464065794,
                'E3': 0.4922793209552765,
                'E4': -0.7538079023361206,
                'E5': [47, 34, 37, -41, -44],
                'E6': -64},
               {'E1': 3716455149,
                'E2': 17781025703689462300,
                'E3': 0.6044570207595825,
                'E4': 0.13822688162326813,
                'E5': [52, 2, 3, 8, 74],
                'E6': 70}],
        'B5': 120,
        'B6': {'F1': -0.5857613935931285, 'F2': [-10603, -22208]},
        'B7': 60,
        'B8': 3220134403347259323},
 'A5': 2142163691,
 'A6': 2119917833,
 'A7': 60906}

Пример 2

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

(b'PXRRV\x82\xad\xb1\x0eR\xe8",\x00\x00\x00\x8c\x08\x8cU\xee\xaa\x88\x0f'
 b'X\xbd\xb9{=\x08\xb0\xf8\xc22\xd2HM{\xfc\xefzT\xb8\xcd\xc3\xd6\x8d\xd8'
 b'kg\x8e\xe0Gq\x07\xa5\xec.wl\x00\x00\x00\x03\x00\x00\x00\x1bh+\\\x8bmk]\x9f'
 b'\xbe\xbeI\xd5?s\xc0\xac>\x19?j\x19=\x04\xb7>E\xea\x87F!\xee\x9c5j}\xb8'
 b'NW\xbf\x0e\x9b\xec>c\x91\xf7\n7\x14 $\xcfNx,\xf5/\xd9\xbf\xe2'
 b'\xce\x9a\xf6\x0f\xb9j\x00\x00\x00\x03\x00x1:\xe8\x00\x00\x009\x00D\x00^E'
 b'\x00~\x9c\x88G\\l\x0f\x9d(\x12')

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

{'A1': -32083,
 'A2': -1324461336,
 'A3': 8748,
 'A4': {'B1': 49,
        'B2': 15080,
        'B3': {'C1': 46,
               'C2': 30572,
               'C3': [{'D1': 8880263596425229010, 'D2': 18509},
                      {'D1': 8934279069482667459, 'D2': 54925},
                      {'D1': -2852072075663281913, 'D2': 42476}]},
        'B4': [{'E1': 1747672203,
                'E2': 7884498513323510229,
                'E3': 0.9521586894989014,
                'E4': 0.14965596795082092,
                'E5': [25, 61, 4, -73, 62],
                'E6': 69},
               {'E1': 3934733857,
                'E2': 17193676208885747287,
                'E3': -0.5570666790008545,
                'E4': 0.2222364991903305,
                'E5': [10, 55, 20, 32, 36],
                'E6': -49}],
        'B5': 69,
        'B6': {'F1': -0.5877203756224791, 'F2': [20088, 11509, 12249]},
        'B7': 156,
        'B8': -8626824942016714734},
 'A5': 143414766,
 'A6': -1433923752,
 'A7': 48569}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

Структура H:

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

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

Пример 1

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

(b'WDAAn{\x00\x00\x00\xa5\x00\x01]\xd4\xb0!\x88\xcc\xf3\x86?99\xf5B\x18:~'
 b'\xdc*\xf0\x087#\xa5?e\xf7\x9b\x03\x7f\xf9 \x9eCH#t\xce\xac\x16\xaf'
 b'\xbe\xafe\x18kr\xa4\xaa\xa8zE\xa8\x0b\x02\x008\x00\x00\x00:\x00^a\xa4P<\x16 '
 b'C\x99\x19NL\x16\x03>2WZ\xcc\xbd\xb4\xa8s\n\xbeF\xe8\x06\xa9\xbei'
 b"\xa2\xcf\x03>\x8e!'\xba=\x96U\xcf+\xbf-E\xafP?=\x00\x00\x00S\x00\x00\x00X"
 b'\x00\x00\x00]\x00\x00\x00b\x00\x00\x00g\x00\x00\x00l\x00\x00\x00q'
 b'\x00\x00\x00v\x00\x00\x00\x93\xf9sT\xe7,\xeb\x81\xf6\x18\xdb\xb2\xdde\x96DR')

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

{'A1': {'B1': {'C1': 195577210,
               'C2': 'kr',
               'C3': {'D1': -92, 'D2': -22358},
               'C4': 1352950110,
               'C5': 5692,
               'C6': {'E1': 17184, 'E2': 6553}},
        'B2': [{'F1': 78, 'F2': 0.12801474332809448},
               {'F1': 50, 'F2': -0.09978168457746506},
               {'F1': -76, 'F2': -0.13520681858062744},
               {'F1': 70, 'F2': -0.33013081550598145},
               {'F1': 105, 'F2': 0.12872174382209778},
               {'F1': -114, 'F2': 0.09089494496583939},
               {'F1': -106, 'F2': -0.6711323857307434},
               {'F1': 45, 'F2': 0.815174400806427}],
        'B3': [147, 249, 115, 84, 231, 44]},
 'A2': {'G1': 235, 'G2': 10837311838586730113, 'G3': 68, 'G4': 82},
 'A3': [23809, -20268, -30687, -3124],
 'A4': 960053126,
 'A5': {'H1': 0.0005808317218907177, 'H2': 126, 'H3': 4586110514826848988},
 'A6': -7052362692545480859,
 'A7': 12616461408836732995,
 'A8': 409317310}

Пример 2

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

(b'WDAAn{\x00\x00\x00\xa5\x00wD\xa4\xa9\x01.\xa2\xd1\xc5\xaf&\x99\xd5\xdb\xf7>Z'
 b'0\x95\xd0m\xb9z\x1b\xf8w\x96\xb2\x03\x82\x10\xfeNx\xe0\xf3~\xe6\x00MG'
 b'\x08\x18\xe0\xe8rd\xb4\xe4\xa3\xfc{\xd5z\x02\x008\x00\x00\x00:\x00\x07\x81@'
 b'\x18\t \x9b\xbb\x1a*a\x82\x12\xcf\xbe\x17\xa2\x8a\x1e?\x86\xb7!J>\x98\xc0'
 b'c\x96=4Sq\xac\xbe\x890\x88q\xbf\xfe@\xd6u\xbf\xfcw\x003\xbe=\x00\x00\x00S'
 b'\x00\x00\x00X\x00\x00\x00]\x00\x00\x00b\x00\x00\x00g\x00\x00\x00l'
 b'\x00\x00\x00q\x00\x00\x00v\x00\x00\x00\xd9\x00b\x1e+\xe9\xfe4%'
 b'\xaa\x07\x97\x19\xf7\xad\xe5\x7f')

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

{'A1': {'B1': {'C1': 2060811260,
               'C2': 'rd',
               'C3': {'D1': -76, 'D2': -23580},
               'C4': 406880519,
               'C5': 8201,
               'C6': {'E1': -17509, 'E2': 10778}},
        'B2': [{'F1': 97, 'F2': -0.4044380784034729},
               {'F1': 23, 'F2': 0.6193028688430786},
               {'F1': -122, 'F2': 0.1973942369222641},
               {'F1': -104, 'F2': 0.07343244552612305},
               {'F1': 52, 'F2': -0.33680209517478943},
               {'F1': -119, 'F2': -0.9434843063354492},
               {'F1': -2, 'F2': -0.9603004455566406},
               {'F1': -4, 'F2': -0.17480646073818207}],
        'B3': [217, 0, 98, 30, 43, 233]},
 'A2': {'G1': 254, 'G2': 12535516224268412212, 'G3': -27, 'G4': 127},
 'A3': [17527, -22108, 11777, -11870],
 'A4': -1725517883,
 'A5': {'H1': 0.48409906029701233, 'H2': 90, 'H3': -568725991102311120},
 'A6': 5692005129636714103,
 'A7': 5137763739871993976,
 'A8': 3907000328}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'KUJO=G.uM\xc3\xda\xfe\x82\x85\xb2\x84\xa1|?P\xbb\xf4\xd3\xd3\xce\xb8\xbf\x02'
 b'\x00\x00\x00~\x00\xaeXU\xe9\xbep\xef?\x02\x00\x00\x00\x82\x00\xc0'
 b'\xbb]\xbf\x03[\x8a\x00\xbf\xec\xd4\xe0RE\xdaH\x90\xe4\xbf\xc9\x89\xf28n\x98'
 b'\x9f`N\xda\xf83\x1a\xb0o\xc0>\x90\r\xcf\xbf\x92\xbcv\xbf\xcdQ:\xbf\x96'
 b'\xff4?"#\x1bZ\\\x81\xb1\xce\xf0\xaa\x80\xe3{\xbf\x0e\xb9\xf5x\xf3\xae\xc5'
 b'8\xa0\x1f/\x89@\xdd\x814Rj5\xa9&')

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

{'A1': 71,
 'A2': {'B1': 46,
        'B2': {'C1': -5582912131952325259,
               'C2': 0.9868395328521729,
               'C3': [{'D1': -0.0969059364767706, 'D2': [33245, 21044]},
                      {'D1': 0.9825129086773552, 'D2': [13674, 9897]}],
               'C4': -0.8661460876464844,
               'C5': 3,
               'C6': -0.5021111369132996,
               'C7': 54508},
        'B3': {'E1': -0.6426128638364297,
               'E2': [201, 137, 242, 56, 110, 152, 159, 96],
               'E3': 871946830,
               'E4': 26,
               'E5': -0.24260142387435968},
        'B4': [-0.9638148546218872, -0.7278106808662415, 0.7070249319076538],
        'B5': 8994,
        'B6': 23067,
        'B7': -827227812},
 'A3': -5111937988200191248,
 'A4': 2935191797,
 'A5': 14533,
 'A6': 2301566880,
 'A7': 64}

Пример 2

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

(b'KUJO=Z\x95\xa4\x00\xf6\xf9@G\xab\xd8\xbc\xbd\xd9\xbc\x10]\xfd\xa5\xb1'
 b'\x1f\xec?\x02\x00\x00\x00~\x00 \x19)\xbb#\xdf\xc3\xbf\x02\x00\x00'
 b'\x00\x82\x00NJ\x98\xbeZ<\xf9F=\x8e_0\x0f\xc4?r\xa1\xec\xbfJgD\xc4\xdd>'
 b'\xf5\x81O\x1d\x91\xa1<\xb8\xe28m\xa3\xf6\xd0?\xd5\x0f\x85\xbe\xb9\x07\xfb>I'
 b'X\t\xbf!\x1bl\xcb\x01\xea\xf5\xe5\xe9\x8c\xb9\xb8HfT\xcd0|^t\x9d^N\xd9\xb8'
 b'$\x9f%d\t\xbfD.\xdd*')

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

{'A1': 90,
 'A2': {'B1': -107,
        'B2': {'C1': -2834093196102467420,
               'C2': -0.026579730212688446,
               'C3': [{'D1': 0.8788688890444138, 'D2': [25637, 48905]},
                      {'D1': -0.1552471794004271, 'D2': [11844, 10973]}],
               'C4': -0.29744189977645874,
               'C5': 90,
               'C6': 0.048577532172203064,
               'C7': 24462},
        'B3': {'E1': -0.8947077985216989,
               'E2': [74, 103, 68, 196, 221, 62, 245, 129],
               'E3': 2710641999,
               'E4': 60,
               'E5': 0.26505361238700287},
        'B4': [-0.25988641381263733, 0.4902932941913605, -0.5365033745765686],
        'B5': 6945,
        'B6': 52076,
        'B7': -436868607},
 'A3': -3651180935367783191,
 'A4': 1952349232,
 'A5': 24221,
 'A6': 616094030,
 'A7': -97}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'UZCefvnfglu\xc0\xcewK\xf6\xe1\xb9\xbf\x07df\xf4aq\x03\x00\x00\x008\x00\x00'
 b'\x00X!\x15\x0e\x88\x8e\x9a\x89\xe1^\xec\x9c\xce\xdf\x96\xef?G\x00Ol\x924'
 b'\xe1y,?g@\x025?\x17\xb8\xb9\xf8>R\xb6\x9c!\xc5\xa8\x10\xee?0D\xf6C\x93'
 b'\xb7\xed\xbf\x90\xd1S\xf4\xd0\x08\xd8\xbf\x0c\xb6|\xb6\x87.\xd1?Ji\x81y\x8f'
 b'\x1e\x1d')

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

{'A1': 'efvnfglu',
 'A2': -0.10110415785293991,
 'A3': 4100350983,
 'A4': 29025,
 'A5': [{'B1': 0.673734724521637, 'B2': 103},
        {'B1': 0.7070655822753906, 'B2': 23},
        {'B1': 0.4857919216156006, 'B2': 82}],
 'A6': 88,
 'A7': {'C1': 16251690667301803297,
        'C2': 0.9871672664079474,
        'C3': {'D1': [0.9395336008282331,
                      -0.9286590888388044,
                      -0.37553809986209163,
                      0.2684649736500837],
               'D2': [26954, 31105, 7823],
               'D3': 29},
        'C4': 882011215}}

Пример 2

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

(b'UZCbzwnjcmx\xb8\x9d\x8bi\xfeF\xc9?\x02\\\xfap\x9f\xd3\x04\x00\x00'
 b'\x008\x00\x00\x00:\x0e\x84\x1a8\x15^9\xb5\xac\xd4eP\xcf\x8f\xe2?L\x00'
 b'\xe1\x99z\x81<\xa5c\xbe\xb1\x9d\x97b>\xe1\x95\x8bu\xbf\xf8DEW?AHc\x8d\x89'
 b'\xedx\xdc\xbf\xac\x07@\xff\xb73\xe1?\xa2\x94\xcb\xe7lw\xea?\x04eLI6f\xda\xbf'
 b'\x10WC\x05I\xde\xda')

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

{'A1': 'bzwnjcmx',
 'A2': 0.19747905877669125,
 'A3': 1895455746,
 'A4': 54175,
 'A5': [{'B1': -0.22231000661849976, 'B2': -79},
        {'B1': 0.2212814837694168, 'B2': -31},
        {'B1': -0.959161102771759, 'B2': -8},
        {'B1': 0.8409006595611572, 'B2': 65}],
 'A6': 58,
 'A7': {'C1': 13058572039766049806,
        'C2': 0.5800549097317762,
        'C3': {'D1': [-0.4448808520588057,
                      0.5375633225778436,
                      0.8270782973528592,
                      -0.41248852880524134],
               'D2': [22288, 1347, 56905],
               'D3': 218},
        'C4': 2172295649}}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'fILE\x83 P\xd6\xf9\xed\x02\x00?\x00\xf7\xefx\xab\x06\xe1\x9fi\xbc\x0fP?\xab;'
 b'\x88k\x8b\xb4r>:\x06\x00\x00\x00e\x00\x00\x00k\x00\x00\x00\x03\x00\x00\x00}'
 b'\x00\x03\xe3\xcc\x84yh"\xbf\x89~\xda\xce"\x1f\xf6U D\xa4s\xf2\x8c\x03'
 b"\x005\x00\x00\x00(\xeb\xef\xc6\xb1'P\x95\xc7\xe8e\x1f^\x07\x008\x00\x00\x00"
 b'1wrbavx\xa8;7\xea\x046zX\xe8\xa7$t\xc0\xc4\x18\xd7\xe4\xbf\xd4\xb7i'
 b'\xdd\xa4\xc5')

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

{'A1': {'B1': 8323,
        'B2': -302393776,
        'B3': [{'C1': 4909018109406531290,
                'C2': -1930267740,
                'C3': [3, -29, -52],
                'C4': 40},
               {'C1': 14381489116494098411,
                'C2': 1579116008,
                'C3': [-124, 121, 104, 34, -65, -119, 126],
                'C4': 49}],
        'B4': 7611049314042310647,
        'B5': 0.8127400875091553},
 'A2': 4499857488594090923,
 'A3': 58,
 'A4': 'wrbavx',
 'A5': {'D1': 3929488296,
        'D2': [13828, 22650, -22552],
        'D3': -0.6512569277580309},
 'A6': [-18476, -8855, -14940]}

Пример 2

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

(b'fILE\x91WY\xd1i\xf3\x02\x00;\x00@\x1d\x99\x82\xce\xa4Fz{\x1fB\xbf\xde%'
 b'\r\x18\x9e7\xe1\xb4\xd6\x03\x00\x00\x00a\x00\x00\x00d\x00\x00\x00\x04'
 b'\x00\x00\x00v\x00\xd6\xa7\xfbr\x81\xfe`\x80\xd1\xa2k\x84\x91\xd5\x9d'
 b'\xe4\xf83\x03\x005\x00\x00\x00%\xf1\xd0\x11\x17S\x0b\xd3\x82\xb3\xfe'
 b'\xf0\xa8\x03\x008\x00\x00\x00\xccrme\xf8i\x0f\xf9bV\\\x13\xab\xbc\x88\x9f'
 b'0Shc\xe0\xbf\x1a\xb6\x1c\xa4\x90\x9b\xea\xdf')

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

{'A1': {'B1': 22417,
        'B2': -211168935,
        'B3': [{'C1': 15389226999529701472,
                'C2': 871949469,
                'C3': [-42, -89, -5],
                'C4': 37},
               {'C1': 9426890896513814769,
                'C2': -1460601165,
                'C3': [114, -127, -2],
                'C4': 204}],
        'B4': 8810910927858244928,
        'B5': -0.7582928538322449},
 'A2': 13033759948734801374,
 'A3': -42,
 'A4': 'rme',
 'A5': {'D1': 4178536952,
        'D2': [22114, 4956, -17237],
        'D3': -0.5121347069552806},
 'A6': [-18918, -23524, -25712, -8214]}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BLP\x05\x00-\x00\x00\x00~\x00\x02\x00\x00\x00\x92\x00\x00\x003\x10ap\x94'
 b'\x8e\r\x04\xee\xbc\xf2\x9d\x10\xfc-\xae\xaf\x00\xd0\xffP2\xb5u\xbf\xfavur'
 b'si\x08\x00\xcd\xe9O/\xb7\xc7\x85\xfci?\x8bHYh\x02\x00\x00\x002\x00'
 b'\x00\x00\xd6\x97\x84>\x10(\x03\x9e\x15\xec\xb2\xbf\x1c\xd7\xfc\xc9n\x14'
 b'\xfdt^V\x14?\x98\xe2\x80f\x02\x00\x00\x00V\x00\x00\x00]\xd8\xe4\xbe\x88\x14'
 b';\xe3)x\xee\xbf:\x00^\x00,\r\x02\x00\x00\x00z\x00\x00\x00\xc1O\xb8_'
 b'\x18\xd4\x98\xb0\xd9\xad\xd8\x9a')

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

{'A1': 'vursi',
 'A2': {'B1': 44,
        'B2': 13,
        'B3': [{'C1': 0.9140093922615051,
                'C2': 1750681739,
                'C3': [-372441080, -944296113],
                'C4': 0.2589709162712097,
                'C5': -0.0739148627064028},
               {'C1': 0.5794428586959839,
                'C2': 1719722648,
                'C3': [-906176740, 1962742894],
                'C4': -0.44696322083473206,
                'C5': -0.9521684110738002}],
        'B4': -5721590125423996991,
        'B5': 44505},
 'A3': [216, 154],
 'A4': 292046319040663603,
 'A5': {'D1': -18,
        'D2': [62140, 4253, 11772, 44974],
        'D3': -0.00529975561947893},
 'A6': -6}

Пример 2

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

(b'BLP\x03\x00-\x00\x00\x00|\x00\x04\x00\x00\x00\x90\x00\x00\x00\xa95\xac\xb3n'
 b'u\x07\xe0\xc7\n\xd1;s,9|\x11TAD;j\xf7\xe4?\xc4ezc{}\x07\xeeR|O\x03'
 b'\xa3\xd0\n\xbf#\x96\x03\xbf\x02\x00\x00\x000\x00\x00\x00!\xc4h\xbfz\xc7`A'
 b'\xc7\x1b\xe1\xbf"\xda\x1e\xc7\xa2\xfeX\xc3\xff\xfb\xd2\xbeA\xfd1\t'
 b'\x02\x00\x00\x00T\x00\x00\x00\x93\xbb"\xbe$F\xd4\xccjW\xe1?8\x00\\\x00'
 b'\x86\xeb\x02\x00\x00\x00x\x00\x00\x00\xe6\x0b\x04n<\xc9\xec\xc7|?\xd4Oj&')

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

{'A1': 'ezc',
 'A2': {'B1': -122,
        'B2': -21,
        'B3': [{'C1': -0.5422460436820984,
                'C2': -1090283997,
                'C3': [-301499013, 55540818],
                'C4': -0.9092426896095276,
                'C5': -0.5346409108080785},
               {'C1': -0.4120788276195526,
                'C2': 154271041,
                'C3': [-954279390, -1017577822],
                'C4': -0.15891866385936737,
                'C5': 0.5419210434503765}],
        'B4': -4040633504277197850,
        'B5': 16252},
 'A3': [212, 79, 106, 38],
 'A4': -2303743566055459415,
 'A5': {'D1': -57, 'D2': [53514, 29499, 14636, 4476], 'D3': 0.6552020223189552},
 'A6': -60}