ИНБО-08-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'IDR\xfb\x00\x00\x00\x02\x00\x00\x00\x95\x00\x02\x00\x00\x00\x99\x00\x00'
 b'\x00\x9bgM[\x94B%\xe1\x01\x8cds-Zp\xcdB\xc5\xfa\x06\x97\xf2\xee\xb3HjY'
 b'\xc2\n\x8f\x88\x93\xa5\x97\x00\x00\x00\x07\x00\x00\x00&\x00\x00\x00-0'
 b'\xd9\x7f\x1d\x8d\x0c\xb3\xaa$w5\x89t\xab/\xc0\x00?\x10\xa8x\x85\x94\xe8\xc5'
 b'\x99\xa6\xf1\xf7\xb7\x14\xda\xb4\xe9U\xb4\x1c\x1b/\xfc\x88\xc3\xe7/\x00'
 b'\x00\x00\x08\x00\x00\x00]\x00\x00\x00e\xd6N|2\xa6k\r\x8a\xad\x7f\n_\xb0'
 b'\xb8\x1aB\x00w]V\xbf\xb3t\xb23\xb1\x00K\x00\x83zv\x8a8s\x90\x11\xeauZ\xaa'
 b'\xacr\x98]\xd2zBt\xf2\xc4\x86\xcd\xe3\xf7\xa0\x04\xde')

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

{'A1': [{'B1': 2627627772078141376,
         'B2': {'C1': {'D1': 1214929346,
                       'D2': 10,
                       'D3': 143,
                       'D4': 34963,
                       'D5': -23145,
                       'D6': [-59, -6, 6, -105, -14, -18, -77]},
                'C2': 12505,
                'C3': 32541,
                'C4': -1928547414},
         'B3': 1200341815818503577},
        {'B1': 12501722496706812482,
         'B2': {'C1': {'D1': 1437867035,
                       'D2': 47,
                       'D3': 252,
                       'D4': 35011,
                       'D5': -6353,
                       'D6': [-90, -15, -9, -73, 20, -38, -76, -23]},
                'C2': -10674,
                'C3': 31794,
                'C4': -1502933622},
         'B3': 6725773871002301361}],
 'A2': 'zv',
 'A3': {'E1': 138,
        'E2': [947097617,
               3933559466,
               2893191261,
               3531227764,
               4072965837,
               3824656388],
        'E3': 222},
 'A4': [7443706451436364033, 10116337301609041218]}

Пример 2

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

(b'IDR\xfb\x00\x00\x00\x02\x00\x00\x00\x90\x00\x02\x00\x00\x00\x94\x00\x00'
 b'\x00\x969\xa4"\x90\xf5\xed\x14[?_(\x12\xa37\xf1d\xd9~\x03!\x99\r'
 b'\xd8\x89n\x1a\xed\xbf\x8d\x1b7!\x00\x00\x00\x06\x00\x00\x00&\x00\x00'
 b'\x00,\x0bL\xf3\xfcSs\xfe\xd8\xf4\xea\xb0D\xbbr\x89\xc6\x00>\xc4^\xc4\x80'
 b"<\xac\xf7:D\xc9Cn\x08\xe8\xb1\xd5\t'\xed\xdb\xb4\x8d\x00\x00\x00\x04\x00\x00"
 b'\x00\\\x00\x00\x00`,\xdc8\xb1O<Y\x96K\x0f\xc9\x12\x042\x8d1\x00r'
 b'v\xfe\xad\xee\xe0Y\xd2\xbb\x00J\x00~ew\xc3dZ\x8dS\x10Y!`\xdd|\xdda\x02'
 b'\xe2%~\x12S\xae5"oI\x1c>')

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

{'A1': [{'B1': 17648111899053820358,
         'B2': {'C1': {'D1': 3632885274,
                       'D2': 237,
                       'D3': 191,
                       'D4': 36123,
                       'D5': 14113,
                       'D6': [-39, 126, 3, 33, -103, 13]},
                'C2': 2892,
                'C3': 62460,
                'C4': 1400110808},
         'B3': -4296780939412048070},
        {'B1': 5408762756712271153,
         'B2': {'C1': {'D1': 149467605,
                       'D2': 9,
                       'D3': 39,
                       'D4': 60891,
                       'D5': -19315,
                       'D6': [68, -55, 67, 110]},
                'C2': 11484,
                'C3': 14513,
                'C4': 1329355158},
         'B3': 8574481982037807803}],
 'A2': 'ew',
 'A3': {'E1': 195,
        'E2': [1683656019,
               274276704,
               3715947873,
               48375166,
               307473973,
               577718556],
        'E3': 62},
 'A4': [4153482762339030107, 4566412607689847140]}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'JUW\xd2udurqkiv\xee\xd5\xcb\xd7co\x99\x0e\xae4am\xb7\x116\xc8v)\x0c2'
 b'\xf6\xbe\xf2\xc48\xb7Mwv|{u\x96`\xac.9\x9dUe\xe1?lE\x1d\xaaj\rC\xd1\x02\x00'
 b'\x00\x00\x87\x00\x00\x00\xc2\rap\x99\x8e\x10\xb15Fi\x1fD\x86\xb7Uq\x9b'
 b'X\xdex\xea\xf3\xaf \x1b\xc4xk\xd1\xe7?\x89\x8a\xd5c\tPL\xed\x02\x00'
 b'\x00\x00\x8b\x00\x00\x00\xb9}\xdeWL\x15\xdeb\xb0\x13\xea7\x8f\x00'
 b'\x00\x00\x98\xf0\xbcs\xe3\xe1\xa1z(\x96\xeb\xceB\x90\x82M3\xa1r}\xa9\xdd'
 b'\xec\x00\xf0\x8bo')

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

{'A1': 'udurqkiv',
 'A2': 3620460014,
 'A3': 28515,
 'A4': 1276609283645902489,
 'A5': -4686503334415775690,
 'A6': [{'B1': -15118,
         'B2': {'C1': 8465496772822546232,
                'C2': 24726,
                'C3': 0.5436199255722918,
                'C4': 15078910729138292076,
                'C5': [-17168, -7309]},
         'B3': -62,
         'B4': 2574278925,
         'B5': 900796558,
         'B6': 26950,
         'B7': 31},
        {'B1': -31164,
         'B2': {'C1': 16895498474226800055,
                'C2': -20493,
                'C3': 0.7443139418327043,
                'C4': 17099129886478797449,
                'C5': [-24095, 10362]},
         'B3': -71,
         'B4': 1280827005,
         'B5': 2959269397,
         'B6': 59923,
         'B7': 55}],
 'A7': {'D1': 3696754425248803734,
        'D2': 2843570849,
        'D3': -35,
        'D4': [236, 35824],
        'D5': 111},
 'A8': -104}

Пример 2

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

(b'JUW\xd2pwycnbcw=\xef\x12vK\xebkjF\xcc\x02\xa9\xf6\xe5\ts\xa1\xe2\x83m~4e\x19'
 b"')MG\x84\xdf\x9f\xc9\xbd\xbf\xa4j\xc9\x01\xdc\xa2\xed?\x88\x8c\xfb?\x8a2"
 b'k\x91\x02\x00\x00\x00\x87\x00\x00\x00#\xa9k\xac,7\x19\xc2\xfd\xbd'
 b'\x1f\xf2\xb9X\xb9\x15x\x13\xe1\xc8\xf7U\xb3\xe2\xb0\x99\xc2\xfe\xd1\xdc'
 b'\xdc\xbfi\x97\x86\xd9%\x1fM\xf3\x02\x00\x00\x00\x8b\x00\x00\x00H\xcf'
 b'\xb9\x07m\xd9\xc2\x13-/\xa3F\x8f\x00\x00\x00\xab\x05\x17dq\xbe\nbJS'
 b'f\xb8\xfc\x12\xd1\xe7\x85o\x84\xf8\x1a\xb2s\x05\xb8\xe7\xaf')

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

{'A1': 'pwycnbcw',
 'A2': 1980952381,
 'A3': 60235,
 'A4': -1876126365271037333,
 'A5': 3782581150248170249,
 'A6': [{'B1': 6501,
         'B2': {'C1': 14528576682145425703,
                'C2': -16451,
                'C3': 0.9261302981279482,
                'C4': 10478524527367916680,
                'C5': [5893, 29028]},
         'B3': 35,
         'B4': 749497257,
         'B5': 4257356087,
         'B6': 8125,
         'B7': 242},
        {'B1': 22713,
         'B2': {'C1': 6194640681491240377,
                'C2': -7501,
                'C3': -0.4509778011219181,
                'C4': 17531703171846936425,
                'C5': [2750, 19042]},
         'B3': 72,
         'B4': 1829222863,
         'B5': 756269785,
         'B6': 41775,
         'B7': 70}],
 'A7': {'D1': 9648910606144136787,
        'D2': 452494447,
        'D3': -78,
        'D4': [1395, 59320],
        'D5': 175},
 'A8': -85}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GHP\xb5\x83\xf1G\xe6\xfc\x1b\x84T=\x87\xc1\xe9o\xcc\x89\x00\x00\x00K\xb4'
 b'\x15\xa0<\xbf\xd5\x84\xfa\xb6\xc5.\x08\xdd\xc8\xd4\xf9cB[WzY\\G\xfa'
 b'\xb6\xd6M\xfa{`4\ra<\x1c\x80\xdc\x1ay\x19\xb1G\xbb\xde\xd4\xc5F\xaf'
 b'\xb3~\x00mhcf\xe8\xea\xdf\x8d)en\xbdVb@+q\xf9\xd8\xd8R\x88\xb3\xfb\x9f'
 b'd\xe0\xf8\xe5\xfe\x91\x99\xca\xaa?\xf0"r\x1d\xcf\x93\xb3\x0f\xce\xa9'
 b'\x1f\n3\x19\xe5\x9c7\xca\xf4\x00\nTS\xbd\x93\xd6\xfe\xcc\x01r\x9bCH\xe7'
 b'C\xe8\x00\x00\x00\x02\x00C')

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

{'A1': 131,
 'A2': {'B1': 4048021244, 'B2': 27},
 'A3': -124,
 'A4': 6070157139680152713,
 'A5': {'C1': 'mhcf',
        'C2': [{'D1': 232, 'D2': 234, 'D3': 223, 'D4': -8274971314019212736},
               {'D1': 43, 'D2': 113, 'D3': 249, 'D4': -2821414419458973852},
               {'D1': 224, 'D2': 248, 'D3': 229, 'D4': -103132220734050270},
               {'D1': 114, 'D2': 29, 'D3': 207, 'D4': -7803876349027874253},
               {'D1': 25, 'D2': 229, 'D3': 156, 'D4': 4020293898392064957},
               {'D1': 147, 'D2': 214, 'D3': 254, 'D4': -3746587403821193405}],
        'C3': -24,
        'C4': [-556481210, -1347191296]},
 'A6': -1273651140,
 'A7': -0.33624141548781994,
 'A8': [3720926457,
        1665293143,
        2052676679,
        4206286413,
        4202389556,
        224476188,
        2161908345,
        431048635]}

Пример 2

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

(b'GHP\xb53\xcf\x9fy\x00\x93\x836H\xe6\x84\xa6\xa7\xe6\x9d\x00\x00\x00O\xb5'
 b'\xfa\x81\xdc?\xc55n\xf8\x9d\xe7\x90aj{\x8b\xdc\xa5\x83\xe1\x9d'
 b'\x86\xb5\x1a\xcd\xae#\x02\xe9\xba\x9b\x15\xedy\xa1z\xbb\xa7*\x97\xed'
 b'\xd0\xe2\x9e\xe1\xee\xf5v\xc4\xc0\xd0s\xa3\x1a\x99\xcchlgr+~\xa1\xba\xef'
 b'O\xc1\xb2V\x07\xbb$n\x19\xf9m6u\xfe\x85\x1a\xfe\xa4\xa7\x1f\\\x8eh\xc9'
 b'\x00\xcb8\xd7q~\xb2\x16\n\x92\x89zd$\xabU,\xc3\x1b\xb4\xb7\xb7\xf3\xb8'
 b'\xc4\xa1\x1a\xccH\x964\x957q\xe1UtU\x00\x00\x00\x03\x00C')

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

{'A1': 51,
 'A2': {'B1': 3483334912, 'B2': 147},
 'A3': -125,
 'A4': 3911629733777368733,
 'A5': {'C1': 'hlgr',
        'C2': [{'D1': 43, 'D2': 126, 'D3': 161, 'D4': -4976671369881843781},
               {'D1': 36, 'D2': 110, 'D3': 25, 'D4': -473662505394824450},
               {'D1': 164, 'D2': 167, 'D3': 31, 'D4': 6669383310693316823},
               {'D1': 113, 'D2': 126, 'D3': 178, 'D4': 1588242937763079339},
               {'D1': 85, 'D2': 44, 'D3': 195, 'D4': 1996422535527842977},
               {'D1': 26, 'D2': 204, 'D3': 72, 'D4': -7623304203865074316}],
        'C3': 85,
        'C4': [-504433290, -993996685, -1558537780]},
 'A6': -1241873956,
 'A7': 0.16569316043370153,
 'A8': [1634368395,
        3701834721,
        2642851098,
        3450741506,
        3921320725,
        3984171386,
        3148294807,
        3989889694]}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xe0MCX\x16\x00\x00\x00b\x00\x03\x00\x00\x00q\x00\xb7r\x8b>\x8e\x14\xc5\x0f'
 b'\x819\xe2\xb6\xa2\xe3\xe9HW\xd8)\xc8R\x7fU+\xc8\xa7+\xfc\x0c\xf1\x9d\xea'
 b'@1\xf5_\xa4{L\xd4\x18\x9e-\x89\xd1xkz\x1c\x80\x1d\x08r\x8eb\x91'
 b'\xd1\xcb\xd3\x16\xfdz\xbe+\x82\x8e\x16\xbe\xc6Mm\x01\x81S,M\xcd\x19>\x8d'
 b'G\x00u\xf6\x03\x00\x00\x00J\x00\xb0\xd65\x9c\x9c\xe6#!@\xcf')

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

{'A1': {'B1': 4037,
        'B2': 14721,
        'B3': [{'C1': -30,
                'C2': [-74, -94, -29, -23, 72, 87, -40],
                'C3': -14295},
               {'C1': 82, 'C2': [127, 85, 43, -56, -89, 43, -4], 'C3': -3828},
               {'C1': -99,
                'C2': [-22, 64, 49, -11, 95, -92, 123],
                'C3': -11188},
               {'C1': 24,
                'C2': [-98, 45, -119, -47, 120, 107, 122],
                'C3': -32740}],
        'B4': 14686679712314558493},
 'A2': {'D1': 63093,
        'D2': [10268818197465339603, 6017092146111626774, 20140021206830380],
        'D3': -80,
        'D4': 2627483094,
        'D5': 9190},
 'A3': [33, 64, -49],
 'A4': 0.27235957980155945,
 'A5': 5262}

Пример 2

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

(b'\xe0MCX\x16\x00\x00\x00b\x00\x03\x00\x00\x00q\x00\xfbk_?f\xfc\xfe\xe3'
 b'\x9a\xfa\x10#\xc7\xdd\xfeM\x1b\xa5/\xf2/H\x07\xefl&=\xf9\xbf\xaa\xfe\xc7'
 b'\xe3>\x19\xff\xf5\xc4y\xc1\x91\xbeU\xdf\xdc\xf2\xb1\xb7\x8e\xfb\xbe\xd9'
 b'\x9a\x1aZ\xc6\xd7l\xd7\xb3x\xd8\xdf\xc8j\x08\xb2\rZ(\xd9Q>K1\x9dyR\xca\xe4'
 b'j$\xa7<\x03\x00\x00\x00J\x00\xfdh\xec\xee\x9c\xb3\xdbw\x0c\x0b')

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

{'A1': {'B1': 58366,
        'B2': -1382,
        'B3': [{'C1': 16, 'C2': [35, -57, -35, -2, 77, 27, -91], 'C3': -3537},
               {'C1': 47, 'C2': [72, 7, -17, 108, 38, 61, -7], 'C3': -21825},
               {'C1': -2, 'C2': [-57, -29, 62, 25, -1, -11, -60], 'C3': -16007},
               {'C1': -111,
                'C2': [-66, 85, -33, -36, -14, -79, -73],
                'C3': -1138}],
        'B4': 7842955366384720318},
 'A2': {'D1': 15527,
        'D2': [606517963569804247, 5421860994527399346, 2624161290514963761],
        'D3': -3,
        'D4': 2632903784,
        'D5': 56243},
 'A3': [119, 12, 11],
 'A4': 0.8727414011955261,
 'A5': 64614}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LIXL\xdf\x00\x00\x00\x03\x00;\x98\x04|\xe0\xca\r\x98[zloq\x00\x00\x00I\xd1'
 b'\x1f\xdbK\xab0\x88\xbf\x00\x00\x00\x03\x00S\x96[\x10\xcf\xe8\xef\xd3'
 b'\x84\x176\xc5\xd1A\xa6\x92\x9c\x87q\x00\x00\x002\x00\x00\x005\x00\x00\x008l'
 b'k\xbd\xfc\x7f\xf0\x13\x97\x00\x02\x00G\xbf\x13\x04\xd4\xbf1\xfc\x0b\xbe'
 b'\xd5s\xdf')

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

{'A1': [{'B1': 14021, 'B2': -47},
        {'B1': 16806, 'B2': -110},
        {'B1': 40071, 'B2': 113}],
 'A2': 2550430944,
 'A3': -905078693,
 'A4': 'zloq',
 'A5': {'C1': {'D1': -1107525648, 'D2': 5015, 'D3': [108, 107]},
        'C2': 3508525899,
        'C3': 2872084671,
        'C4': [-0.5742924213409424, -0.6952521204948425, -0.4168996512889862]},
 'A6': 10834271813722166148,
 'A7': 23}

Пример 2

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

(b'LIXL\xdf\x00\x00\x00\x02\x008\xff\x1b\xfdcN\x9a\xf2\xaazvpq\x00\x00\x00GG'
 b'\xc52J\xfc\xaeSa\x00\x00\x00\x02\x00Q\xf6\xbd\x02?\xe7\xdap\xa6Ot$'
 b'\x85\x11\xc0\\\x00\x00\x002\x00\x00\x005\xa0\x82-\x07\x8c\xe1\x8a|F\xddF\xfc'
 b'\xe5\x00\x07\x00@>\xa5s0\xbfVH4')

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

{'A1': [{'B1': 29732, 'B2': -123}, {'B1': 4544, 'B2': 92}],
 'A2': 4280024419,
 'A3': 1318777514,
 'A4': 'zvpq',
 'A5': {'C1': {'D1': 2085018950,
               'D2': 64741,
               'D3': [160, 130, 45, 7, 140, 225, 138]},
        'C2': 1204105802,
        'C3': 4239283041,
        'C4': [0.32314443588256836, -0.8370392322540283]},
 'A6': 17779369377424634022,
 'A7': 79}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x03NQN\x00\x03\x00\x00\x00#\x00\x00\x00\x02\x00\x9e\x81\xad~v\xb5{\xb0\xba'
 b'\x00\x00\x00\x03\x00\xa6\x1b\x00\x00\x00\xacsra\xb3|\xeb\xe3f\xf1'
 b'\xb1\xb9=\x01\xcaM\xce+\xc5\xe7\xf1Ksq\xbf\xbc\xfc\x12<\x11$0?\xb2'
 b'l\x1d\xe2\x9a\xd6\x00\x02\x19\xbe\x83\x00\x00\x00\x05\x00&B\xe6\xa4\x8f'
 b'\xa3\xab\x92\xe6\xeeB\x91\xf8S\xb9\xe7L@\xd1\xd9\x9cVk\xa8\x9e\xe8\xc6w\xe8'
 b'Ym\x9aI\xaf4\x94-\xbf\xe3\xee)\x8dy\\\x16?\xe0\x12\x9e\x94\x84W\x8a'
 b'?\xf6\x89\xc5\x00\x00\x00\x06\x00`\xf2d\xd3\xa6=\xc7\x0c\x97;+iC\x00\x00'
 b'\x00:\x00\x00\x00x{\xf6h_\x8a\xe9?\xe9E\xc8\xc6\x8cp\x12\xc6S\x89\xca'
 b'\x18\xb15d\x17')

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

{'A1': {'B1': 'sra',
        'B2': [{'C1': -0.11322130171278455,
                'C2': 0.07196223051399642,
                'C3': 35241603,
                'C4': [-1283658781,
                       1727115705,
                       1023527501,
                       -835992089,
                       -246713487],
                'C5': 4820721387979903718,
                'C6': 3997340152},
               {'C1': -0.6228225482144605,
                'C2': 0.5022728825303926,
                'C3': 1073121733,
                'C4': [1404692300,
                       1087494556,
                       1449896094,
                       -389646360,
                       1500355145,
                       -1355508691],
                'C5': 17466317965804113047,
                'C6': 992700739}],
        'B3': 9344263850179670202},
 'A2': [31734, 26719, 35561],
 'A3': 27,
 'A4': {'D1': 0.7897685888196995, 'D2': -58, 'D3': 6019564584358470679}}

Пример 2

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

(b'\x03NQN\x00\x05\x00\x00\x00#\x00\x00\x00\x02\x00\x8c\xe5\x1b\xf0\xfb'
 b's1\xa0\x86\x00\x00\x00\x02\x00\x94\xcf\x00\x00\x00\x98kiatwk=\xe9\xd1'
 b'/\xf9\xbb\xeb$P\x03z?\xee\x9f<\xe5\x9eN\xc6?\xe6\xc6)k\xfb>\n\xc8\x12/9'
 b'\x00\x00\x00\x03\x00(e;\\\x12\xe3\xeb\xef\xb8\x1bG1\xcenN\x9cz\xee\xa2'
 b'3\xc0\xf8\x8f\xb9Q\xbf\xdf\x10v\x86\xaeY\xc0?\xe5\xb2\x891\xdc\xadB=\xbc'
 b'\xebp\x00\x00\x00\x03\x00Z\xc1\x8c\xe6\x99z\xb7\xb8\x93o\x01\xb5:'
 b'\x00\x00\x004\x00\x00\x00f\n&\x9e\xc3\xbf\xcdD<\xf7"T\xd0\x17\xd4\xd9R'
 b'\xd0~0\xa7\xdd')

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

{'A1': {'B1': 'kiatw',
        'B2': [{'C1': 0.9569382176145715,
                'C2': 0.7116896733295459,
                'C3': 3356634937,
                'C4': [1799219665, 804895723, 609223546],
                'C5': 7294525257659707320,
                'C6': 457650638},
               {'C1': -0.4853798213238427,
                'C2': 0.6780439351909211,
                'C3': 1035791216,
                'C4': [1850645626, -291359808, -124798639],
                'C5': 13946775692922828947,
                'C6': 1862382906}],
        'B3': 16509053821816774790},
 'A2': [2598, 40643],
 'A3': -49,
 'A4': {'D1': -0.22864496295065928, 'D2': 23, 'D3': 15337381061410727901}}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'DMPPbmp\xcdS\x00\x00\x00\n\t\x11?\xffOq\xdc\xe6p_l\xff\x02\x00t\x00\xdc\xb6='
 b'\xc73\xa2\xd1?N\xebAU\xd7r\xcc\xf2X\x91\xad\xaa\xd4\x02\x00\x84\x00\xc0\xff'
 b'\xae\xc4L\xc1\xda\xbf\xc1\xa3\r\xbe\x8d\xcd\xd4\xdcJ!O\x81\xc5\xb1\x07\x1bB,'
 b'\xd3\xf6\xe6J\x00\x00\x00\xadv0I\x1b\xf8o&,\x90\x9dybs.A\xac\x16\xb7R:'
 b'\x02\x00\x00\x00Q\x00\x00\x00\x88\t\x16w\xebH\xe2\xbf^`\xacy\r\x03\xe7\xbf'
 b"\xa0\x1cPb[e\xd0?&VS'\x01X\xe2?")

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

{'A1': 'bmp',
 'A2': {'B1': -51,
        'B2': {'C1': {'D1': -59, 'D2': 177, 'D3': 742529799, 'D4': 211},
               'C2': {'E1': 2769705091931862701,
                      'E2': 44,
                      'E3': -25200,
                      'E4': 25209,
                      'E5': 4202622710297210483,
                      'E6': [-10, -26]}},
        'B3': 0.5665441751480103},
 'A3': 7809084415726931967,
 'A4': [{'F1': -1,
         'F2': [-0.5714013410472925, -0.7191226364548233],
         'F3': 0.2755250402177418,
         'F4': 17495484921601452878,
         'F5': -1431465640},
        {'F1': -44,
         'F2': [0.25618633843300564, 0.573242737586672],
         'F3': -0.4180480881441291,
         'F4': 15912569392069452737,
         'F5': -2125520566}]}

Пример 2

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

(b'DMPPwkq`S\x00\x00\x00\x1a\xcfa\xbfK\xb18\x91@\xa6H\xad\xff\x02\x00t\x00R(m'
 b'\xe5\xbc\x12\xe9\xbfp\xd4>1\xbb\xccpB\xda\x1bN\x07t\x02\x00\x84\x00\xe8\x11'
 b't\xba\x94Z\xe2?\x9a3?\x9bB/\xff\xd8z\xe6\xe6h\xc5\xc9$W\x96\xb33\xba\xa0J'
 b'\x00\x00\x00\xffj7:Y\x08\x1b\x96\xa8O^\x15/[\x1b\x80V\xa2\xb3)$'
 b'\x02\x00\x00\x00Q\x00\x00\x00\xa0\xabG\xe9\x8c\x9b\xec?\\\xd6/\xb6'
 b'\xebK\xd9\xbf\x98\x83\x0e;\xc9>\xd4\xbff\x8eq\xa0\xbe\xe2\xe4?')

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

{'A1': 'wkq',
 'A2': {'B1': 96,
        'B2': {'C1': {'D1': -59, 'D2': 201, 'D3': 3012974372, 'D4': 51},
               'C2': {'E1': -7630495964327351553,
                      'E2': 168,
                      'E3': 24143,
                      'E4': 12053,
                      'E5': 2605811369227852635,
                      'E6': [-70, -96]}},
        'B3': -0.8820663690567017},
 'A3': -5960331310580321973,
 'A4': [{'F1': -1,
         'F2': [0.8939880901574391, -0.3952588347595787],
         'F3': -0.7835373383507067,
         'F4': 4787551508251989104,
         'F5': 122559450},
        {'F1': 116,
         'F2': [-0.3163321568227331, 0.6526787885345129],
         'F3': 0.5735572473209318,
         'F4': 15636268394372608922,
         'F5': 1759962746}]}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'VJK\xdd\xdb\xea\x93\xf4Pm\x1a\x03\x00c\x00\x00\x00\xf0\x04\xb8W^\xc0\xd0'
 b'\xbf\x02\x00\x00\x00f\x00\x89\xd2\x03\x00h\x00\x00\x00\x9a\xe1\x02?n'
 b'~\xcb>\x94\xe0\x03?\x89\x83\x9f\xbe\x10\xeam\xa3\x15u\xce?\x04\x00t\x00\x00'
 b'\x00\xf5\x86(?3\x03t\xbf\xfc\xf6@\xbf\xfdfe\xbf\x04n\xd1M\x0e\xd0\xde'
 b'\xbf\xb8Z\x9f"\x86\xb4tmfjo\x7fM\x05\xbfL.\xd4\xbe\xbdD+?Z\xe2?<'
 b'\xf3\xde\x19\xbf\xe9\x9bF>\x83K\x99=')

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

{'A1': {'B1': -1813324835,
        'B2': 443371764,
        'B3': 'tmf',
        'B4': -0.2617412430409578},
 'A2': 'jo',
 'A3': -11639,
 'A4': [{'C1': [-0.520713746547699, -0.41441571712493896, 0.6690176129341125],
         'C2': [0.5112549066543579,
                0.39744895696640015,
                0.5151455402374268,
                -0.31155040860176086],
         'C3': 0.23794813613842836},
        {'C1': [0.011711681261658669,
                -0.6010581851005554,
                0.19395412504673004,
                0.07485105842351913],
         'C2': [0.658309280872345,
                -0.953173816204071,
                -0.7537686824798584,
                -0.8961027264595032],
         'C3': -0.48144872283384665}],
 'A5': 184,
 'A6': {'D1': 90, 'D2': 8863},
 'A7': 46214}

Пример 2

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

(b'VJK} oj\x93\x9c\x9d\xbc\x03\x00c\x00\x00\x00N+\xb9]\xcd0\xea?\x02\x00\x00'
 b'\x00f\x00\x0b\x05\x03\x00h\x00\x00\x00\x92D\x1e?\x7f\x1a\xfe\xbeP\x85v\xbfk'
 b'\x9c+?0\x96]\x8e\xb2d\xe3\xbf\x02\x00t\x00\x00\x00\xf1\x89\xdb\xbe,\xa9\xc4'
 b'>V7\x94\xbe\xf9\x8b3\xbe\x84n\x10\x85(y\xe4\xbf\xd6\xff\xf7a4\xa7dwsys'
 b'\xb1\xc0:?c\x93\xb8\xbc\xc8&a?F\x11\x9b:`;9?')

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

{'A1': {'B1': 1785667709,
        'B2': -1130521453,
        'B3': 'dws',
        'B4': 0.8184573011907135},
 'A2': 'ys',
 'A3': 1291,
 'A4': [{'C1': [0.7295027375221252, -0.022531216964125633, 0.8794980049133301],
         'C2': [0.6182337999343872,
                -0.49629589915275574,
                -0.9629716873168945,
                0.670355498790741],
         'C3': -0.606042173440704},
        {'C1': [0.0011830709408968687, 0.7235622406005859],
         'C2': [-0.4287867844104767,
                0.3841031789779663,
                -0.2894846796989441,
                -0.17533864080905914],
         'C3': -0.6397898291501893}],
 'A5': 214,
 'A6': {'D1': 255, 'D2': 25079},
 'A7': 42804}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TBUR\x003vntql\x00\x00\x00S\x15\xefV\xe6\xe1\xdb/@\x85A=o\xf1\xcf\x06Fw'
 b"\xbf'ei<\xa1*\xbc\x9f\xa1r\xbe'\x0e\x9c\xbfb7WYx\x00\x00\x00\x02\x00\x1d\x86"
 b'FJ\xe8\x02t\xb9D\xfb4\xf7\xe3\xeeA\xa7\xe1\xa4\xbe\xd3\xeb\x8a3\xcf\xa4\xde'
 b'\x1f!*\xd9\xbf(W\xd8\x00\x00\x00\x06\x00;\xc0\xdd\xee\x84')

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

{'A1': {'B1': 22904,
        'B2': [{'C1': [6, 70, 119],
                'C2': -0.6538911461830139,
                'C3': 0.019673697650432587},
               {'C1': [-97, -95, 114],
                'C2': -0.163141667842865,
                'C3': -0.883656919002533}]},
 'A2': 'vntql',
 'A3': {'D1': 3726582058,
        'D2': 217,
        'D3': -0.657590389251709,
        'D4': [2252753640,
               41204036,
               4214552547,
               3997280225,
               2763969515,
               2318651300],
        'D5': 3235769988},
 'A4': 5615,
 'A5': 6261940663412098369,
 'A6': 0.05858021602034569}

Пример 2

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

(b'TBUR\x003aprbk\x00\x00\x00K\x90\xe4t\x97t\xd8\xff\xc4 V\xbd\xcaCj\xc4\xf5G'
 b'\xbf`\x87\xdf>\xe8;3\x00\x08\xb0\xbf\x02\xffU\xbf\x10\xf5\xbc/'
 b'\x1b\x00\x00\x00\x02\x00\x1dAm)}#0zs\xf6\xf7:\x10\xa1\x11\xeb\xf4\x11'
 b"\xed\xa7\x83\xdf>\xdbo\x95\x00\x00\x00\x04\x00;'sy1")

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

{'A1': {'B1': 12059,
        'B2': [{'C1': [-60, -11, 71],
                'C2': -0.8770732283592224,
                'C3': 0.4535766541957855},
               {'C1': [0, 8, -80],
                'C2': -0.5117085576057434,
                'C3': -0.5662496089935303}]},
 'A2': 'aprbk',
 'A3': {'D1': 300787587,
        'D2': 223,
        'D3': 0.4285856783390045,
        'D4': [1097673085, 590379635, 4143397392, 2702306292],
        'D5': 661879089},
 'A4': -28444,
 'A5': 8401312105235750998,
 'A6': -0.09876139461994171}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YORA\x00\x04\x00\x8bX\xde=o7\xe72\xef\xc7\xbf~\xcd\x87?\xc3\xc7\xb7\x93G\xb3'
 b'\x90\x18\xdf[\xd8\xb6\n\x8d\x1b*\x86?:\x9b\xa1\xb9\xd3\x946\xc8q\xcf\xfc\x0f'
 b'dy~s\x883w\xf4\x0b\xc5ral\xbf}\xe6!\xf8\x94\xd19Mb\xdc\xeb\x07?\x12[\x17cc'
 b'>\x07d\xf4\xf4\x1e\xf2"\xd89Ma\xf7\xbe\xfe\xc1xbg>\x83\x96Z\xc33\xcf"+'
 b'#\xad!\xe6\xbe\xa1\xe7\xf3xe\xbe\x80R\x00\xa1F\x01\x89+\x92\xd7f\x19\xbc'
 b'\xf4+>\x00?\x00R\x00e\x00x')

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

{'A1': [{'B1': 'al',
         'B2': -0.9917927384376526,
         'B3': -8,
         'B4': -7723328881429779705,
         'B5': 0.5717024207115173},
        {'B1': 'cc',
         'B2': 0.1322210431098938,
         'B3': -12,
         'B4': 2229883077571469815,
         'B5': -0.4975697994232178},
        {'B1': 'bg',
         'B2': 0.2570064663887024,
         'B3': -61,
         'B4': 3733240184790917606,
         'B5': -0.31622275710105896},
        {'B1': 'xe',
         'B2': -0.2506256103515625,
         'B3': -95,
         'B4': 5044463877871855129,
         'B5': -0.029805775731801987}],
 'A2': 22750,
 'A3': 61,
 'A4': {'C1': {'D1': 28471,
               'D2': -6350,
               'D3': 61383,
               'D4': -0.9953235983848572,
               'D5': 0.15453238192949614,
               'D6': 24,
               'D7': [-8357, -10058, 2701, 6954, -31169, 15003]},
        'C2': 161,
        'C3': 3117650998,
        'C4': 51313,
        'C5': [53244, 3940, 31102, 29576, 13175, 62475, 50546]}}

Пример 2

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

(b'YORA\x00\x04\x00\x8b\xc7B\x89\xc2\xaa \x05\xf1#?l\x88Z?\xe4\x90'
 b'\xa2\x19\xe5\xea\xba\x0b\x8f\x00\x1f\x80\xeb\xc1\x12z\x9d\xd5'
 b'\xc6\x01\xf6\xfa\xb7\xaf \x0c\xc9\xfc,\x19\xffg\xf7\x8b\xcc\xfd\xad\x13'
 b'\x07[-nc\xbe\xe0\xd0\xb1\xde\nB\x9d\xb0\xdb\nn\xf4\xbe\xc0\xba\xa3bt'
 b'\xbdGT\x89XG\xaa$\xe9m\xe9\xe5\x8c?Cw\x90cl>\xb6h\xa3#\x06]\xdfN'
 b'\x97q\x89\x80>X\x95\xaftv>\xfcb\xfa\xad\x82\x02 \xdc\xc3\x1b\xcf\x9b?'
 b'\x1e\x9b\x0c\x00?\x00R\x00e\x00x')

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

{'A1': [{'B1': 'nc',
         'B2': -0.4390921890735626,
         'B3': -34,
         'B4': 739326671756881652,
         'B5': -0.3764239251613617},
        {'B1': 'bt',
         'B2': -0.048664603382349014,
         'B3': 88,
         'B4': 5163980507723720076,
         'B5': 0.7635431289672852},
        {'B1': 'cl',
         'B2': 0.3562670648097992,
         'B3': 35,
         'B4': 458768265702902144,
         'B5': 0.21150849759578705},
        {'B1': 'tv',
         'B2': 0.4929426312446594,
         'B3': -83,
         'B4': -9078657766287224933,
         'B5': 0.6195533275604248}],
 'A2': -14526,
 'A3': 137,
 'A4': {'C1': {'D1': -15702,
               'D2': 8197,
               'D3': 61731,
               'D4': 0.9239555597305298,
               'D5': 0.6426554208586233,
               'D6': 11,
               'D7': [-28928, 8064, -5183, 4730, -25131, -14847]},
        'C2': 246,
        'C3': 4206341920,
        'C4': 3273,
        'C5': [64556, 6655, 26615, 35788, 64941, 4871, 23341]}}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xd2SWC\xea\xd1I\xdb\xfd?%\x1c(?\xe8\x80\xc7\xf8\x8bv2mrfmkj]>W%>'
 b'\x00\x00\x00\x02\x00>\x00V\xd4\xbf)>\xe2\x00\x00\x00\x02\x00v\x00'
 b'\x8e\x9a\xbf\xf2\xd2\x8a\xe0:@\xf7\xf1\xa3/\x89[\xb6m\x89x\xd6S8\x9e\xd3'
 b'\xba\xb8>\xf4\xce\xe9\xbd\xc5\x81\xe7\x0bi\x85\xdd\xbf\x05>?\x90\xdf'
 b'\xbfS\x01\xd8?\xd5\xa6{\xe1I\xdd\xa0\x00\x00\x00\x02\x00\x00\x00N'
 b'\x16w\xf8\xfbH\xb2J\x00GK\xa3\xb7\xac,\xb5\x1b=\xa1?r\xdf\x17\xber'
 b'\x8c&\xd3\xf2\x8e\xc6>p\xb4ok\xd2?2\xa2y\xbf\xd94D7wr\xb8\x00\x00\x00\x02'
 b'\x00\x00\x00\x86.\xa0')

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

{'A1': {'B1': 60113, 'B2': 73},
 'A2': 56317,
 'A3': 0.644960880279541,
 'A4': 0.7657203535451969,
 'A5': 'mrfmkj',
 'A6': [{'C1': 93,
         'C2': 0.21010300517082214,
         'C3': [17411812851340176777, 8707238432215382712],
         'C4': {'D1': 191464925,
                'D2': -0.5204810500144958,
                'D3': -28449,
                'D4': -0.824246883392334,
                'D5': 0.3382863712390307,
                'D6': [0.47814109921455383, -0.0964391753077507],
                'D7': 5751}},
        {'C1': 212,
         'C2': -0.6611157655715942,
         'C3': [17941013471143413579, 11797087056937303457],
         'C4': {'D1': 3555888838,
                'D2': 0.23506329953670502,
                'D3': 27602,
                'D4': 0.6977916359901428,
                'D5': -0.39381509224567024,
                'D6': [0.9487165808677673, -0.23686274886131287],
                'D7': 11936}}],
 'A7': 154,
 'A8': [3220361866, 3761914103]}

Пример 2

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

(b'\xd2SWC\xe1\xc6-\x9f\xc4?\x02\x80\xea\xbf\xe1 \xd7\xa8U;\xb8vdgrkk\x11'
 b'>\x98\xb8n\x00\x00\x00\x02\x00>\x00V\xd0?F!\xc6\x00\x00\x00\x02\x00v\x00'
 b'\x8e.V\xeb\x99\xd8\xc6l\n@ |jX?J\x93i\xad6\xdc\x87\xe3\xb4\xe4\xc1\xbe\xe1'
 b'\x1e\x17\xbfRY\xe7l\xde\x97\x94?}\xa4VH\xa5\xbe\xac\x04{\xbf\xef\xb76'
 b'\x81&1\x8c\x00\x00\x00\x02\x00\x00\x00Nq\x96\xc8\x03{:>\xd3\x96[\x90W'
 b'\xe1\x92 \x91I\xa2>\xc4$\x17\xbe\xd2\xe7\xa0\x8c%\x8d\xac\xbf Q{\x9f\xea'
 b'>\x02\xe9\x9b?\xd2i\xd0\xa0\xc5] \x00\x00\x00\x02\x00\x00\x00\x86E6')

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

{'A1': {'B1': 57798, 'B2': 45},
 'A2': 40900,
 'A3': 0.5097795724868774,
 'A4': -0.5352590835335524,
 'A5': 'vdgrkk',
 'A6': [{'C1': 17,
         'C2': 0.29828208684921265,
         'C3': [2340862833577333609, 12481405893502887105],
         'C4': {'D1': 1826527124,
                'D2': 0.9907888174057007,
                'D3': 18597,
                'D4': -0.3359716832637787,
                'D5': -0.9911148569531618,
                'D6': [-0.4396826922893524, -0.8216843008995056],
                'D7': 29078}},
        {'C1': 208,
         'C2': 0.773952841758728,
         'C3': [14412498722608092763, 10401029882163317154],
         'C4': {'D1': 2351271340,
                'D2': -0.6262432932853699,
                'D3': -24598,
                'D4': 0.12784425914287567,
                'D5': 0.2877084322003203,
                'D6': [0.3830878436565399, -0.4119234085083008],
                'D7': 17718}}],
 'A7': 46,
 'A8': [1458280920, 3328969280]}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'QTS\xb2\x02\x00\x00\x00B\x00\x00\x00\x06\x00\x86\x00\x00\x00\xac\xe3#\x82\rC'
 b'\x9a%\xc5,\x98\x94U\x9a\xee\xf5\x1c\x06\x05\x87\x19\x82\xd2L\xe4g\x86V\xcc\n'
 b"\xdbX\x06\xb2\xc4%'\xc9\xf6y\xd3\xb7\xfb\r\x00\xd2e\x92\r+\xcdr\x14\x89"
 b'\xcf\x1fn\x94!\xd3\xf9\x91\x93\xe8\xdeA\xcf\x02\x00>\x00\x00\x00q'
 b'\xa5\xce\xf3\x9b\x9c\x1c\x93\xf4j\xe7\xbe\x95\x0f\xb2\xe1;\x19(\xc8a'
 b'\xc3\xae\x0c6\xeer\xf9\x02\x00@\x00\x00\x00\x15\xbc`\xcf\xdb\xafTW\x01hznhue')

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

{'A1': [{'B1': 13,
         'B2': 7935289256110640427,
         'B3': 8596,
         'B4': {'C1': 63955,
                'C2': -555183215,
                'C3': 65,
                'C4': -49,
                'C5': [0, -46],
                'C6': -23183},
         'B5': {'D1': -50, 'D2': 480025587, 'D3': -2925}},
        {'B1': 106,
         'B2': 1818295029456027367,
         'B3': -14296,
         'B4': {'C1': 50017,
                'C2': -298447698,
                'C3': 114,
                'C4': -7,
                'C5': [101, -110],
                'C6': -17387},
         'B5': {'D1': 96, 'D2': 1420811215, 'D3': 343}}],
 'A2': 'hznhue',
 'A3': [2709551851113800620,
        -725472797604172603,
        5535629938142807580,
        6402723167978547172,
        8788432892834656774],
 'A4': 234600403}

Пример 2

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

(b'QTS\xb2\x02\x00\x00\x00B\x00\x00\x00\x05\x00\x86\x00\x00\x00\xc4\xbc'
 b'\x8a\xce\x10]u\xbe\xbc\xc5?V*\x074\x87\xc5\xb5q\xdc\xec\xb3\x11\xfd\xb0.'
 b'\x9d\x84\x86\x86W\x816\x96t;\x17\xbc\xc1\x8e\x99\x9f\xf4\x07u\xccKhE\xd1'
 b'\xed\xd6\xe0\xa3j8pPm\xfaF\\\x8e\xb9\x80\xb7\xa1\x02\x00>\x00\x00\x003'
 b'\x8b\xf2\xebz7\xe4\xf7\xb6ZT\xb5\xca\x19Q"\xdd\xa1\x19\x91\x7f\xc3\'\x95\xea'
 b'\x9d\xe8`\x02\x00@\x00\x00\x00\xe6!\x9a\\\xfc\xddg\xfa9bibva')

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

{'A1': [{'B1': 69,
         'B2': 8086330383028121041,
         'B3': 27984,
         'B4': {'C1': 18170,
                'C2': -2135323044,
                'C3': 183,
                'C4': -95,
                'C5': [117, -52],
                'C6': -29901},
         'B5': {'D1': -14, 'D2': -466126101, 'D3': -18697}},
        {'B1': 90,
         'B2': -6783227732029688492,
         'B3': -28391,
         'B4': {'C1': 50047,
                'C2': -1645570777,
                'C3': 232,
                'C4': 96,
                'C5': [75, 104],
                'C6': 8678},
         'B5': {'D1': -102, 'D2': 1742601308, 'D3': 14842}}],
 'A2': 'bibva',
 'A3': [-4722766307462038332,
        -8704324301383285316,
        -211189877617609275,
        -9126678207534387536,
        -8160034241850862026],
 'A4': 133472153}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xd5MDVZ\x0f^\xae@?\x17\x18E\xe9^\xff\x82)\x1fL\xf9>\xbaZ\x128\xd7B\x0b9Mg'
 b'\x9dv^+\xeb\xed\xfe\xa0\xf7\xbe6\x9a\xaaa\xf1\xeeS\x13\xcc\x90\xb2\xde\xb6V'
 b'j\xe66\xe1G?r>R\x00\x00\x00\x05\x00^)\xb5\x00\x86\x00\x00\x00\x02\x00'
 b'\x94?\x10\x14a\xd7\x00\x00\x00\x02\x00\x00\x00\x96?\xe5\x015\xd9`'
 b'\x9d\x1e\xbfA\xd8\x85\x82S\xf0\x00?\xe0A\xea\x8e\xa8\x97\xd2?\xa5\xb9 \xb0s'
 b'\xef\x80?\xe2\xbcw\r\xb9\x0fx\xf9\xb32a\x00\x82T\x17J\xa0\xde\xf6\xf5\x8e'
 b'_Yy\x02\x8a#')

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

{'A1': [{'B1': 1107514149339338821,
         'B2': 16816158993148759289,
         'B3': 0.3639684319496155},
        {'B1': 4095815002090203037,
         'B2': 8529303036596494583,
         'B3': -0.1783243715763092},
        {'B1': 7057684131648147634,
         'B2': 16048109339310219591,
         'B3': 0.9462634325027466}],
 'A2': [0.6563977475788396,
        -0.000544610204684215,
        0.5080464159298066,
        0.04242803720441568,
        0.5855059879327049],
 'A3': 10677,
 'A4': {'C1': {'D1': -105696671, 'D2': 36684205985423094, 'D3': -2674},
        'C2': [95, 89],
        'C3': 1058018401,
        'C4': 215,
        'C5': [30978, -30173]}}

Пример 2

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

(b'\xd5MDVZd\xc0\x14\x7f+\xb4\xa0\t?oA\x93q\xbdN\xd6?!\x08\xa0\x94\xcb+'
 b"\xba\xd2>\xcf>k3R\x0e'n\xf3F>Pn\xe4\xb1\xa6\x8cP\xa4\xb7\x95\xf0<\xc8\xbf"
 b'\x97[\xb9\x98\xd4\xbf:\n#\x00\x00\x00\x02\x00^\x17P\x00n\x00\x00\x00\x02\x00'
 b'|Ws\x04\x17\xe9\x00\x00\x00\x04\x00\x00\x00~\xbf\xe2.\xe6\xb4D'
 b'\x9c\xe2\xbf\xac\x04R\xd79N\xa0;\x1b\xa1\xfb\xb2\xf7E\xe4\xef\xbe'
 b'\x15\xa1\xea\xc4\xachN\xa0\xd9\xc6\x12\x88\x0ew')

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

{'A1': [{'B1': 7259825135747899401,
         'B2': 4570944248328572630,
         'B3': 0.6290378570556641},
        {'B1': -7725032654432710850,
         'B2': 7724608006615135046,
         'B3': 0.20354801416397095},
        {'B1': -5645670804873570832,
         'B2': 4379961294417664212,
         'B3': -0.7267171740531921}],
 'A2': [-0.5682252426967376, -0.05472048642391525],
 'A3': 5968,
 'A4': {'C1': {'D1': 991666683, 'D2': -5550891166133774943, 'D3': -5436},
        'C2': [-84, 104],
        'C3': 1467155479,
        'C4': 233,
        'C5': [20128, -9786, 4744, 3703]}}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\x90XJS\x00\x00\x00-\x1f\x9c\x00\x00\x00\x02\x00[\x00\x02\x00\x00'
 b'\x00c\x00\x04\x00g\x15\x8c\xca\x7fP\xd9\x83}\xdd\xd8\xf3\xae\xe5{\xc9c\xc8<'
 b'\x88\x00\x1a\x89C\x01\xb6*\xe7&ddd\xb4\xc2\xea\xf8\xd7\xad\x17\x0f38\xa5'
 b'yE\xbd\x8d\xda\x8bz\xd00\x11l\xf2\x1e>\xaf\xc3\xbb/>|.\xd6\xe0\x00'
 b'\x00\x00Q\x00\x00\x00V\x02\xeda\xbe\x93:vz')

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

{'A1': {'B1': {'C1': {'D1': {'E1': 21, 'E2': 36042},
                      'D2': 9174071599729334515,
                      'D3': -5844128836550640504},
               'C2': 137,
               'C3': 17153,
               'C4': 3056264998,
               'C5': 'ddd',
               'C6': [-5421512646909421809,
                      3690881834909797850,
                      -8396169650409508322]},
        'B2': 8092},
 'A2': [{'F1': 0.34329017996788025, 'F2': 47},
        {'F1': 0.24627241492271423, 'F2': 224}],
 'A3': [749, 25022],
 'A4': [-109, 58, 118, 122]}

Пример 2

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

(b'\x90XJS\x00\x00\x00-\xde\xaa\x00\x00\x00\x03\x00`\x00\x04\x00\x00'
 b'\x00l\x00\x03\x00t\x82*=\x1fS\x8eVuFR\xfe\xef\xb2\x1fe4\xfd%\xd5\x00\x1a\xf1'
 b'\xdb\xc1\x85\x9b;Putm\x85E\x8czb\xd9\xa3p\xb0"2e\xf91Cu\xa2\x97!g\r.\x94'
 b'\xc3\xbf2F\x7fa?a\x12\xb5O?x\x9a\xe8\xaa\x00\x00\x00Q\x00\x00\x00V'
 b"\x00\x00\x00[\xf1\xca\x17\xda\x03'\xd8\xeb\x1dG\x92")

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

{'A1': {'B1': {'C1': {'D1': {'E1': 130, 'E2': 10813},
                      'D2': 2257304340228625150,
                      'D3': -1174842033249114667},
               'C2': 241,
               'C3': 56257,
               'C4': 2241542992,
               'C5': 'utm',
               'C6': [-8843507835999771792,
                      -5754981960272231563,
                      -6730874391595412285]},
        'B2': 57002},
 'A2': [{'F1': -0.6963881850242615, 'F2': 97},
        {'F1': 0.8791916966438293, 'F2': 79},
        {'F1': 0.9711136817932129, 'F2': 170}],
 'A3': [-3638, 6106, 807, -10005],
 'A4': [29, 71, -110]}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'OPPOb\xe0\x98\xac3*\xb0]1\xd6\xb2\x86mi\x8f\xe6\x92[J\x00\x05\x00\x00\x00'
 b'T?\xd3\xec\x89\xcc\x93\xb9\x90\xcd"\xf8\xbc\xca\xc0\xce\xb6\xee\x00\x00'
 b'\x00h\r;3\xa0+\xcd\xf0\x05\xac\x00\xa2\x89w\xcf\xe9{[\xa7\xf9\xb2B\xca'
 b'\x88/\x9d\x1cZ4\xec \x0e\r\x05\xe5\x00\x00\x00@\x00\x00\x00D\x00\x00\x00H'
 b'\x00\x00\x00L\x00\x00\x00P\xfd\xe0\x9c9\x85\xbe\x8e\x92\x87\xf1\xde X-\xd1n'
 b'ZP\xc4x\x83\xffJ\xec\x9a\x13\x83\x93\xaa\x015+\xfd\xcan\xc7\xd0\x95\xe9\xed'
 b'e\xe2\xc4\xcc')

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

{'A1': {'B1': 57496,
        'B2': 172,
        'B3': [51, 42, -80, 93, 49, -42, -78],
        'B4': 9686514440313396042,
        'B5': [{'C1': 59771, 'C2': [91, 167]},
               {'C1': 63922, 'C2': [66, 202]},
               {'C1': 34863, 'C2': [157, 28]},
               {'C1': 23092, 'C2': [236, 32]},
               {'C1': 3597, 'C2': [5, 229]}],
        'B6': 0.311312150747562,
        'B7': -51},
 'A2': 2519971570517980910,
 'A3': {'D1': 4259355705,
        'D2': [-2051109230, -2014192096, 1479397742],
        'D3': 6507917483440032492,
        'D4': 39443,
        'D5': 9481108562708790730,
        'D6': 28359,
        'D7': -3416567536464771892},
 'A4': 3387,
 'A5': 866134989,
 'A6': 61445,
 'A7': [44032, 41609, 30671]}

Пример 2

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

(b'OPPObt\x92\xd6\x9e\xfa\x91\xff<\t?=\xb1\xc6%Unj\xb3\x00\x02\x00\x00\x00'
 b'H?\xcamMl\x8e-\x00g\xa2\xc3p\xa0\x93J\xc5n\x00\x00\x00Pd~\xf0\xd1u\x08'
 b'\xe4\x94\\\xa5\x8c\x19\xa7\x99)\x19@\x13i\xa05;\x00\x00\x00@\x00\x00\x00D'
 b'\xebs"\xb9\x97\xf0N\xa2\\\xc3,9\x9b\xe3\x8a\xec\x1e\x01\xf4N\xe2\xd5fC'
 b'\xfd\x12\xe4-W3/\xb6+Rj\xbd\xa1\xfa\xf0n^\xd1\x7f{')

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

{'A1': {'B1': 29842,
        'B2': 214,
        'B3': [-98, -6, -111, -1, 60, 9, 63],
        'B4': 4445552170840779443,
        'B5': [{'C1': 10521, 'C2': [64, 19]}, {'C1': 27040, 'C2': [53, 59]}],
        'B6': 0.20646064568095568,
        'B7': 103},
 'A2': -6718402384138418834,
 'A3': {'D1': 3950191289,
        'D2': [-1745858910, 1556294713, -1679586580],
        'D3': 2162277915764811331,
        'D4': 64786,
        'D5': 16441893691954965330,
        'D6': 27325,
        'D7': -6774838332597633157},
 'A4': 25726,
 'A5': 4040258824,
 'A6': 58516,
 'A7': [23717, 35865, 42905]}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LLH\xd1\x90\xf4\xe7I\xa1\x95F\\\x00\x03\x00(\xbfL\x86\x12\x00\x02\x00\x00'
 b'\x00\x97>\xf9\xa5\x9f$\xed\x97\xf3\xf1\xb1\xfc\xb6\xd1\xc1\xbf\xb0$\xe3'
 b'\x06\x1a\xe0\xe0\xbf\xd4;\xa3\r|\xe0\x1c\xbf\xdd\x92\xd4\xf6t2(\xe5\x17\xa8]'
 b'\xea\xcc\xde)\xa5\x0ew6\xcc\xa8\x90\x96M\x8dKB\x16?Gv_\xe0s\x00'
 b'\x00\x00\x05\x00\x00\x00@\xbc\x00\x00\x00E>\xe4\xeb\xcfj-5i\xd3a\x16x'
 b'\xf9\\;\xb6\xba\x11\xdf\xa6\x9f\x91\x15\xd1>\xa6\xd7\x96\xd3\xe3\x00\x00'
 b'\x00\x04\x00\x00\x00l\xba\x00\x00\x00p={=\x89\x00d\x00\x8f')

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

{'A1': 209,
 'A2': -8001516334500985252,
 'A3': [-0.06306284808204365, -0.3161399490086312, -0.4620869070793412],
 'A4': -0.798920750617981,
 'A5': [{'B1': {'C1': 3437111717,
                'C2': 1042362091388835405,
                'C3': -1924447722,
                'C4': 0.7791499495506287,
                'C5': -8077,
                'C6': [229, 23, 168, 93, 234],
                'C7': -68},
         'B2': 0.447111576795578},
        {'B1': {'C1': 3546355320,
                'C2': -478441804416295002,
                'C3': -1617881647,
                'C4': 0.3258635401725769,
                'C5': -11293,
                'C6': [106, 45, 53, 105],
                'C7': -70},
         'B2': 0.06133798137307167}],
 'A6': {'D1': 0.4875917136669159, 'D2': 619550707},
 'A7': -15,
 'A8': [-79, -4, -74, -47, -63]}

Пример 2

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

(b'LLH^Z\xe4U\n\xb46\xaa\xab\x00\x02\x00(\xbf`\x12F\x00\x02\x00\x00\x00\x8e?1'
 b'r\x8aP\x11o\xdd!\xf0\r6\xcd\x1b?\xd3\xdc\x91\x00\x15_\xf4\xbf\xc3h\x8c'
 b't\x9c}P\xfcAA$\xd0*!<\xf3\xf9}\x083\x80\x89\xb2\xf9>\xef\xa8\xe1?y\xb1'
 b'\xc3U\xf7\x00\x00\x00\x05\x00\x00\x008O\x00\x00\x00=\xbf\x10\x9b\x03\x9f=?3'
 b'\x10\xbf\x1f"\xd4\xa3\xde\xc3R\x9e\x19;\xc7q\xba\xbf-)M\x8a\xc6\x00\x00\x00'
 b'\x03\x00\x00\x00d\xd9\x00\x00\x00g\xbfH\xc6E\x00\\\x00\x86')

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

{'A1': 94,
 'A2': 6549453262565059243,
 'A3': [0.31033730514673086, -0.15162807172689918],
 'A4': -0.8752788305282593,
 'A5': [{'B1': {'C1': 706821363,
                'C2': -469209768883801351,
                'C3': 1055893729,
                'C4': 0.9753686785697937,
                'C5': 22007,
                'C6': [252, 65, 65, 36, 208],
                'C7': 79},
         'B2': -0.5648652911186218},
        {'B1': {'C1': 856735519,
                'C2': 2509811069507247641,
                'C3': 1002926522,
                'C4': -0.6764114499092102,
                'C5': -30010,
                'C6': [159, 61, 63],
                'C7': -39},
         'B2': -0.7842753529548645}],
 'A6': {'D1': 0.693153977394104, 'D2': 1343320029},
 'A7': 33,
 'A8': [-16, 13, 54, -51, 27]}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'IYIZ\x02\xd2\xb8\x00\x00\x00z\x00\x8b/h\xc8\xea\x1a\xc1\xc1\x97\xf0\xed?'
 b'\xce\x1f\xeb\x9e\r\xe6\xd8\njm}\xe0v\x9f:*\x07?E\xd9\xb6?aok>\xc7\x87F>9\xbe'
 b'\x1b?\x07\\\x8a>\x126ApiZ\r\x19\\\xc7\x9d\xfc\x97p\xb7\x8d\xf59"\xd0\x89\xeb'
 b'\xc9\x1e\xf8\xbb5$\x83\xbe\x8d\xe9\x00P\x9e\r\x8dI;\xed>\xbeA\x12\xe3\xa0'
 b'\xd9\x18\xe810-8/\x1d\x96\x81>\xc7,\x00\x02\x00\x00\x00A\x00C\x00N\x00Y\x00d'
 b'\x00o\xe6\xfd\x02\xff\xbfg=t?(\xfb4\xc9A\x896')

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

{'A1': 210,
 'A2': -72,
 'A3': {'B1': 'pi',
        'B2': [{'C1': 23053, 'C2': 25, 'C3': 6685485880052856717},
               {'C1': -2759, 'C2': 34, 'C3': 15026800880738941749},
               {'C1': 9347, 'C2': -66, 'C3': 10225704775170493769},
               {'C1': 15341, 'C2': 62, 'C3': 13709259509557958888},
               {'C1': 12592, 'C2': 45, 'C3': 4048487122280040236}],
        'B3': -26},
 'A4': {'D1': [-3, 2, -1],
        'D2': -0.9032814502716064,
        'D3': 0.6600830554962158,
        'D4': 3376515382},
 'A5': 12136,
 'A6': 14477413371614851309,
 'A7': 0.23534913270468993,
 'A8': {'E1': 2666,
        'E2': 7889708922305128967,
        'E3': [0.7728532552719116,
               0.8806063532829285,
               0.3897039294242859,
               0.18138925731182098,
               0.528755784034729],
        'E4': 0.14278508722782135}}

Пример 2

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

(b'IYIZ\x02dQ\x00\x00\x00z\x00\x8b\xeb\xc1\xe7z4L\xca\xb5_\x17?\xd6o\xe6\xe1'
 b'\xc9q\xac\x9d\xaa\xe9\x12\x99\x81\x91Q_\x8e?-<\x96\xbe\xe7\x91h\xbe\xd1\x05'
 b'\x92\xbf|C%\xbfs\xa6\xfc>;\t\xc7ac\t\xe0\x87\xde\x0ew\xee\xcfi\xfb/\xf4\xd0'
 b'n\x9f""\x85R\x05\x90\xa6\xed\xc3\x99#+G\xc7!\xf8(M\xf0\\\xe1\xc9'
 b'\x13\xc2\x15\xf0\xd6\x1b\x0b\x01\x83A\x14\xd6 |\xe1\x93B\xb3\x00\x02'
 b'\x00\x00\x00A\x00C\x00N\x00Y\x00d\x00o\xb4\x02\x1c\x0f\xbeb\xcb\xeb??'
 b'\x1d\x03,\xe3\xfe\xc2')

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

{'A1': 100,
 'A2': 81,
 'A3': {'B1': 'ac',
        'B2': [{'C1': 2528, 'C2': -121, 'C3': 16000858393659702063},
               {'C1': -2864, 'C2': 110, 'C3': 11466765557240795302},
               {'C1': -4669, 'C2': -103, 'C3': 2534198135920011341},
               {'C1': -4004, 'C2': -31, 'C3': 14489137825671682827},
               {'C1': 387, 'C2': 65, 'C3': 1501423246507197107}],
        'B3': -76},
 'A4': {'D1': [2, 28, 15],
        'D2': -0.22148101031780243,
        'D3': 0.7465364336967468,
        'D4': 753139394},
 'A5': -5183,
 'A6': 16679701674343096087,
 'A7': 0.35057994889737176,
 'A8': {'E1': -25174,
        'E2': 16794654742185861006,
        'E3': [0.6767057180404663,
               -0.45228123664855957,
               -0.40824562311172485,
               -0.9853995442390442,
               -0.9517667293548584],
        'E4': 0.1826544851064682}}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'HWK\xffB\xed\xf3g\x02\x00\x00\x00\x18\x00psxo\xa2\xe2Cm\x82\x00hojjpemm'
 b'W<\xae\xc26\xc9\xc9\x92\xd0\x1fa\xff\xd8yxm\x9d\xb02\xa3ZH\x88\xcf'
 b'\xba\xeeU\xef\xbf}\xf2\x02Hh}\x9e\xbf3\xa1\xbbj\xdb\xd4S\xa0dfwcahl'
 b'\xb4t\x89;5\x83\x10GwS\x9d\xd8/\xf3\xd0\xc9\xddRdeB\xae0P\x86\x9dBc'
 b'\xe8\xbf\x83\x89\xf5\xb8r\xcau\xfe+b\\-\xe7\xcc\xd6r\xf1B\x19\xaf\xbd\xac'
 b'\xdek\xc6\xd0\x88]\xdd\x10I\x1a\xb5\xd0K\xc1>_G#\xe3\xe5\xcb\xee\xf0\xbb'
 b'\to|\x94\x9e[>')

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

{'A1': 4092412671,
 'A2': 103,
 'A3': [{'B1': 'hojjpem',
         'B2': 2923190125,
         'B3': 3385407170,
         'B4': 146,
         'B5': {'C1': 4284555216,
                'C2': -6687088306498799144,
                'C3': 90,
                'C4': -0.9792398117681467,
                'C5': -4639132679306808707},
         'B6': -6893932565720489677},
        {'B1': 'dfwcahl',
         'B2': 998864052,
         'B3': 1192264501,
         'B4': 119,
         'B5': {'C1': 802725203,
                'C2': 4784340486222106867,
                'C3': -82,
                'C4': -0.7621167256024872,
                'C5': -110960021722527357},
         'B6': 8275026658610405931}],
 'A4': 'psxo',
 'A5': 1833165474,
 'A6': {'D1': [241, 66, 25, 175],
        'D2': -67,
        'D3': 15951055885479698092,
        'D4': -1256568560,
        'D5': 0.3775315284729004,
        'D6': 17361037801778530143,
        'D7': 4493359413812201915}}

Пример 2

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

(b"HWK\x18Q\x12\xa6\xa3\x02\x00\x00\x00\x18\x00hjcx\xc1\x85\xda'\x82\x00yefg"
 b'alw\xb1\xd02\xe4\t\x95\xb3\x13\xf5\xa7Y\x12PM\xeb\xbf\x88\x01\xa4\xc3\xa1'
 b'\xbcn\x8cb7"\x18\xe8?\'\x9e\x1b\x1dU@TRq\xd6WtW\xbep\tvgyypaf\xc5\x16\xea%'
 b'I5\x03\xb9\xbaP\xf3\x91u@\x97\xf5\x05w\xf8\xecx\x87\x88\x1f\x13\xb3\xbaB'
 b'\xe9?\xad\x9f\xb1\xd5ex\x17\xc8\xd5C\xffI\x1a\x02\x0f\xc8N\xbbu\xc4\x1a\x87'
 b' :\x17\xe5\xf5\x9e\xee\x07\x96\xb8\xb5\xed\xd8\x80\xbc\xe1\xa5\x92\xe9['
 b'\xc1\xfc\x1d\x04C\xd1\x88v\tn\xdc')

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

{'A1': 2786218264,
 'A2': 163,
 'A3': [{'B1': 'yefgalw',
         'B2': 3828535473,
         'B3': 330536201,
         'B4': 245,
         'B5': {'C1': 1343379879,
                'C2': -6790403486648374451,
                'C3': -68,
                'C4': 0.7529460031258972,
                'C5': 5932437343458532903},
         'B6': 680252826556290673},
        {'B1': 'vgyypaf',
         'B2': 636098245,
         'B3': 3103995209,
         'B4': 186,
         'B5': {'C1': 1972499280,
                'C2': 8713612569139844928,
                'C3': -121,
                'C4': 0.7893956658890469,
                'C5': -4028618962887401555},
         'B6': -4031000829539433515}],
 'A4': 'hjcx',
 'A5': 668632513,
 'A6': {'D1': [78, 187, 117, 196],
        'D2': 26,
        'D3': 17194450791633133703,
        'D4': -1246194169,
        'D5': -0.015728438273072243,
        'D6': 2160814521735882209,
        'D7': 15883643340488524548}}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b"INF2\xf4\xa9\xa0\xc4\x8e\xaa\x0e\x0f\x13\xbf-\xc5\xe8'\xda\xbf2W]b"
 b'\x0f\xc9\xec\xbf8B~:\xde\\\xcdU\x97 >\xb1\xda\xbdw\xa0u\x97\xa1\xa5'
 b'(\xcb2\xc9\xd4\xddW\xbe\xef52XH\xb6\xd3\xfd\xb6t\xe4xZ-\xcfW\x0bV$\xc3'
 b'h\x93\x00\x02\x00\x00\x00b\xbf\xef\xa4\xee]\r\xc0\x8c\x00\x00\x00~\xab\xf4zq'
 b'\xe1\xb1uN\xeb\x97\xc5\xff\xef\x13\xdc\xc4\x94\xe1\xae\x9e\x0b\xfe\xd6\x0b'
 b'jD\xfa\xc8\x89\xf9\xbf\x18\xfe\x9d6\xac\x1b\xa1N\x00dW&OAQ\x1c\x94'
 b'\xe9\xfa]\xed+tQ\x8e\xe4\x10WuT\xcb\xe5#X\xee')

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

{'A1': {'B1': [{'C1': 3671746104171342350,
                'C2': 3859,
                'C3': -0.6788010597229004},
               {'C1': 2871817935337120271,
                'C2': 51692,
                'C3': -0.7197645902633667},
               {'C1': 4241929936003604542,
                'C2': 45530,
                'C3': -0.06045575812458992},
               {'C1': -7520548308105639468,
                'C2': 56663,
                'C3': -0.46720272302627563}],
        'B2': 6361535495271773412,
        'B3': 2019175887,
        'B4': 1460360740},
 'A2': -15512,
 'A3': 147,
 'A4': 'zq',
 'A5': -0.9888831918197112,
 'A6': {'D1': -0.5976350903511047,
        'D2': 917248929,
        'D3': 78,
        'D4': {'E1': [16262908711232062975,
                      17227355736491798174,
                      864363523017603784],
               'E2': -30215},
        'D5': 6279793872367031529,
        'D6': {'F1': 250,
               'F2': [93, -19, 43, 116, 81],
               'F3': -8150371457817064475,
               'F4': 9048},
        'D7': -18},
 'A7': -21516}

Пример 2

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

(b'INF\x0fV\xaa\xf7\xa1\x02\xe0\xe2\xfb\xcb\xbf\n1S(\xbd\x18\xb1\xf9/\x1e'
 b'\xe7\xd0C>r.\x0f\x90\xde(")\x7f\x98%t\xf2>\xe5\x15-\xd9\x91\xc1'
 b'\xb9\xc1\x90\x91m\x87\xf1\xbf\x03\xc4\xf93\xa8;\xc2lR\x9b\xd0Z'
 b'\xf0\xa5\x82\x08\xfb\xb8\xc6\xa7\xd0\x81\x00\x02\x00\x00\x00b?\xc0R\xfa'
 b'\x18E9 \x00\x00\x00~?-cn\xcd\xf5\xbc\x15q~z\xa7V\x08\xa35c~b\xc3\xd19\x19O'
 b'\x90\xd4=\x18i\x8d\xbf>?*A^\xa3\x17\x96\x00d\x07\x9f\xa7qi\xcd6\thj8e\xf7ut'
 b'\x04\x1b\xc2\x0fo;e\xe1\xef\xb0')

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

{'A1': {'B1': [{'C1': 1105258739100999906,
                'C2': 64459,
                'C3': -0.5398151278495789},
               {'C1': 2935529684784324327,
                'C2': 53315,
                'C3': 0.23650382459163666},
               {'C1': -8007918960227936219,
                'C2': 29938,
                'C3': 0.4474271833896637},
               {'C1': -2769219292295556755,
                'C2': 34801,
                'C3': -0.5147243142127991}],
        'B2': 3722290798248762320,
        'B3': 1525720450,
        'B4': 150714566},
 'A2': -22576,
 'A3': 129,
 'A4': 'cn',
 'A5': 0.12753225503042476,
 'A6': {'D1': -0.7431513071060181,
        'D2': 1096721175,
        'D3': -106,
        'D4': {'E1': [14840974947353787047,
                      6199384336773309123,
                      15076109057122385176],
               'E2': 27021},
        'D5': 549341785110689289,
        'D6': {'F1': 104,
               'F2': [106, 56, 101, -9, 117],
               'F3': 8359837328603036517,
               'F4': -7697},
        'D7': -80},
 'A7': 16173}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

Поле Описание
1 uint64
2 Структура D
3 uint8
4 uint16
5 int16
6 int16

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

Структура H:

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

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

Пример 1

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

(b'MRBIo\\\xf9/\x00c\x00f\x00i\x00l\x00o\x00r\x8a\x9a\xbe\x81\x00\x7fu\x93'
 b'N\xd9\x93Q\x10\x97\xd0I\xcf\r\xbe\xdb\xcc\xcf\xbfU\xb2\xd2\xbfjy;\xbf+'
 b'\xee\xf7\xbem\xa5\xe1\xbd~\r\xc2\xbf\x0e\xc9\xd8\xbeWm7?\x10\x92$1\x00'
 b'\x00\x00\x03\x00\x00\x00\xa5\x18\xb5\xe5\x9a\xd65\x89d\xa0\x05P\xe0s'
 b'\xb8\xfe\xc7\xfa\xd1e\rL\xbf\xbd$+\xf1lW\xc4\xfa\x01\x90\x13\x97Z\x89\xd6'
 b'\xcb\x87\xca5x\x06\x0b\xf3]g\xac!\xefw\xc5D\xbe\xf2=\xfd\xdc\x91\xbe\xe4'
 b'\xbf\xc2&Y\x03~\x05\xd8\x00\x05\x00\x00\x00u\x05k\xf1\x98\xbf\xf3\xb1HQ\xd3')

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

{'A1': 28508,
 'A2': 63791,
 'A3': [{'B1': 250, 'B2': 53605},
        {'B1': 13, 'B2': 19647},
        {'B1': 189, 'B2': 9259},
        {'B1': 241, 'B2': 27735},
        {'B1': 196, 'B2': 64001},
        {'B1': 144, 'B2': 5015}],
 'A4': -1969570175,
 'A5': {'C1': 17536286513051957189,
        'C2': {'D1': 68,
               'D2': {'E1': -0.47312918305397034,
                      'E2': 3700539108,
                      'E3': -0.14179527922173807,
                      'E4': [23177, -10549, -30774, 13688, 1547]}},
        'C3': 5,
        'C4': 27633,
        'C5': -26433,
        'C6': -3151},
 'A6': 1972588249,
 'A7': {'F1': {'G1': -7831460032799977715,
               'G2': [-0.42929694056510925,
                      -0.8347598314285278,
                      -0.9159123301506042,
                      -0.6716150641441345,
                      -0.23207809031009674,
                      -0.06202483922243118,
                      -0.557767391204834,
                      -0.2103775590658188],
               'G3': 0.5647299289703369,
               'G4': 49,
               'G5': [72, 81, 211],
               'G6': 1780581680876456292,
               'G7': -1610264352},
        'F2': {'H1': 29624, 'H2': 254},
        'F3': 199}}

Пример 2

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

(b'MRBI\xdc\xc3\x9b\xb9\x00c\x00f\x00i\x00l\x00o\x00r\xf25\xdb\xec\x00\x81\xf4p'
 b'J\xd2\xd7B;\x88Y\xb5\x85\xf3\xbf<\x8ef\xbe\xf5!\x06<\xb9\xa1\xba\xbe\xbe'
 b'#\x9b\xbe\xac\x1a\xaa\xbf-\x03$>\xdd\x1c\x0b>h{2\xbfY,W\xd8\x00'
 b'\x00\x00\x03\x00\x00\x00\xa7\x93|To\x0e:K\xb4\n\xd1i#C\xd9\x96\xc8\xda'
 b'\xed\xa3\xdeOMW\xcd\x8bdw\x85\x88\xc3)\xc0 \x0f\xcf\xdd0G\xbf )'
 b'\xc6\xdd\xc7\x94b\xa9\xbb\xfa\xa56v\x87\xfa#\xbf5\xe6\x81m\xa2\xea\x8e?\xd0'
 b'+\xd8\x9e\xb0\xfa\xe0\x00\x06\x00\x00\x00ul\x8fi^\xdc\xad>c\xc9\x9f')

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

{'A1': 56515,
 'A2': 39865,
 'A3': [{'B1': 218, 'B2': 60835},
        {'B1': 222, 'B2': 20301},
        {'B1': 87, 'B2': 52619},
        {'B1': 100, 'B2': 30597},
        {'B1': 136, 'B2': 49961},
        {'B1': 192, 'B2': 8207}],
 'A4': -231351316,
 'A5': {'C1': 12230644800544999418,
        'C2': {'D1': 35,
               'D2': {'E1': -0.710548460483551,
                      'E2': 1839393422,
                      'E3': 0.25267615792465214,
                      'E4': [-12323, 12359, -16608, 10694, -8761, -27550]}},
        'C3': 108,
        'C4': 36713,
        'C5': 24284,
        'C6': -21186},
 'A6': -193967406,
 'A7': {'F1': {'G1': -2935718550285482509,
               'G2': [-0.7365478277206421,
                      -0.4787675738334656,
                      0.02266012504696846,
                      -0.37136539816856384,
                      -0.3361409306526184,
                      -0.6758291721343994,
                      0.43185457587242126,
                      0.22703245282173157],
               'G3': -0.8483328223228455,
               'G4': -40,
               'G5': [99, 201, 159],
               'G6': -7819282017065219148,
               'G7': 181496099},
        'F2': {'H1': 17369, 'H2': 150},
        'F3': 200}}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xcbDBEZ\xa2A\x1d\xe7\xd8kZ\x8e7vx\xfbgqYmgxxy\xa9\xbe\xe52OY\xd6'
 b'\xd6\xe4\xbf\xd4\xbb\x17\xec\x8f\xb5 \x00\x00\x002\x00\x00\x00X>DoH\x81\xe0'
 b'\x88\x19\xfe\x91W\xd62\xeb?\xd2.\x8dF\x7f\x9a\x00?\x88m\x92\xfd\x8e\x87\x00'
 b'\xbf\xdd4\xf9\xf7Z\x95\xf0?\xe0\x80\xd6\x17x\xd0\xec\x12cH1\x00\x02\x00>'
 b'\xbf\xda\xe0J\xfbD|\xd8?\xef\x84V[x~\xfe\xbf\xe7\xd8\xda8\xbf\xe6\xea'
 b'\xbf\xa4x\xc4\xc2\xa2.\x80\xbf\xe8\x1d\xcb\xd0/<B\x00\x03\x00@8]`\xcb')

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

{'A1': -6755085084473468274,
 'A2': [{'B1': 55, 'B2': 'vx'},
        {'B1': -5, 'B2': 'gq'},
        {'B1': 89, 'B2': 'mg'},
        {'B1': 120, 'B2': 'xy'}],
 'A3': -87,
 'A4': -4691288120445446428,
 'A5': -0.32391927816100186,
 'A6': {'C1': 0.19183075428009033, 'C2': 9358629670902388694},
 'A7': {'D1': 0.5157270868717467,
        'D2': 308496433,
        'D3': {'E1': [50, -21],
               'E2': [-0.41993975198597644,
                      0.9849044596230383,
                      -0.7452212437048875,
                      -0.039983891257262094,
                      -0.7536372247794889]},
        'D4': [0.2840912998639453, 0.011927746165216302, -0.45635842471742105],
        'D5': 14429,
        'D6': 24779}}

Пример 2

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

(b'\xcbDBEZR\xf6\xcf\xa1fR\x0e\xefZwb\xf2sq\xbebp\xb4cd\xf5S:\xdd\x9a&3'
 b'\xf8/?\xef\xd2m\xdd\x18\xfb\x92\x00\x00\x002\x00\x00\x00X>\x16\xb2\n R'
 b'Hj\xb9\xfe7?L3\xbf\xe7\xb9\xc29\xc39\x00\xbf\xea\xe8\x83\\\xa2\xcaV'
 b'\xbf\xef\x80\xe5\xfa\xb9\xc5\x88\xbf\xda2\x8c\x7f\xf0\xcex\x13\x9e\x15d'
 b'\x00\x02\x00>\xbf\xe3\xb7*\t\xb7=\xf8?\x82\xb5\xcd\xeb\xcf\xc5\x80'
 b'\xbf\xed\x1fQ\xd0\xce\x956?\xe1@1"\xfcMH?\xd1\x97\xe0\xd6\xcf\x97\xb8'
 b'\x00\x03\x00@^\x86\xc5\x85')

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

{'A1': 5978193847494250223,
 'A2': [{'B1': 90, 'B2': 'wb'},
        {'B1': -14, 'B2': 'sq'},
        {'B1': -66, 'B2': 'bp'},
        {'B1': -76, 'B2': 'cd'}],
 'A3': -11,
 'A4': 5997349507932878895,
 'A5': 0.9944371527015952,
 'A6': {'C1': 0.1471635401248932, 'C2': 2329003580528146239},
 'A7': {'D1': -0.4093352555675902,
        'D2': 329127268,
        'D3': {'E1': [76, 51],
               'E2': [-0.6161089124452124,
                      0.009135826834582472,
                      -0.9100731924305936,
                      0.5390859301864248,
                      0.2748949144137174]},
        'D4': [-0.7414256218123967, -0.8408829507155342, -0.9844846627221822],
        'D5': 24198,
        'D6': -14971}}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'GHCC\x98\x00\xa5\xbeF?\xa5\x84\xdf\x98\xccG\x03\xa2\x9e\x81Td\x88\xc9v)%\xdb'
 b'\x9a\xde\x89\xb6\x85\x9b>\x05\x00\x9f\x03\x00\x00\x00\n\x00\x05\x00\x10\x00'
 b'\x19\x0c\x8e\xdd\xc6\xff\x93\x9b\x86\x17H\xe2\xa6p\x84\xea\xc5\x18z\xb2'
 b'\x02\x00\x00\x000\x00\x02\x004\x00i.\xa9\x8a\x18\xec\x99\x08i2\xc50\xa2\xe7'
 b'S\xe9\xd4\x13C9-\x04-]c\xa6\x03\x00\x00\x00N\x00\x04\x00T\x00\xa1\xdd'
 b'\x0e\xba\xc0\xc2HPR\xe5\xdfE\xf5O\xaf`\x08M\x18\x1c\x9b\xce\xf2\xd6VC'
 b'\x1b\xd8\x03\x00\x00\x00r\x00\x05\x00x\x00\xa0\x14\xe8\xb8\xd8\x8f\xa4?'
 b'*\x1a\x00\x00\x008\x00\x00\x00\\\x00\x00\x00\x82\x00\x00\x002\x9e+Bf\x99\xe9'
 b'?')

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

{'A1': {'B1': 0.04015996224556173,
        'B2': 42,
        'B3': {'C1': [{'D1': [37, 219, 154, 222, 137, 182, 133, 155],
                       'D2': -1627388610,
                       'D3': [-31579, -26401, 18380],
                       'D4': [41475, 33182, 25684, 51592, 10614]},
                      {'D1': [134, 23, 72, 226, 166, 112, 132, 234],
                       'D2': -1300621115,
                       'D3': [3097, -8818],
                       'D4': [65478, 39827]},
                      {'D1': [83, 233, 212, 19, 67, 57, 45, 4],
                       'D2': -1503437523,
                       'D3': [11881, -30039, -5096],
                       'D4': [2201, 12905, 12485, 59298]},
                      {'D1': [8, 77, 24, 28, 155, 206, 242, 214],
                       'D2': -669301930,
                       'D3': [-8799, -17906, -15680],
                       'D4': [20552, 58706, 17887, 20469, 24751]}],
               'C2': 0.7999755184545789}},
 'A2': 0.7763465046882629}

Пример 2

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

(b'GHCC\x94\x00\xae\x864?\xf7!~\xe1\xa0\xf8\x9c\x12\x17\xf3\xef\x15\xa7\x1b'
 b'\x9c\xe3\x04A\xd2\xbf<\xcb}\x07\xc6\xbep\xec\x03\x00\x00\x00\n\x00'
 b'\x05\x00\x10\x00\x0cA\xc8z\xe3\xd9G\xe8c\xe3\xdd\xa7r\xb5\xebC\x98Ff\x96'
 b'\x02\x00\x00\x000\x00\x02\x004\x00\x1b4\xa7\x0b\x9d\xe9%O\xe8Lp-\x84y'
 b'p\xac[\xd1\xea\xa6U\x17\xf71\x02\x00\x00\x00N\x00\x04\x00R\x009\xf3\x8eP'
 b'\x8b\x16G\xba\x02S\xc5T\x91\x10\x8b\x9e\x82\x03\x07\xe0F:\x0f\xd8'
 b'\xbbV\x03\x00\x00\x00p\x00\x04\x00v\x00\x84\x84\xb0;\xa6\xe1\xeb\xbf'
 b'\xce\x1a\x00\x00\x008\x00\x00\x00Z\x00\x00\x00~\x00\x00\x00\xd8\xbc\\'
 b'Q\x00\x15\xec?')

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

{'A1': {'B1': -0.8712950864611604,
        'B2': -50,
        'B3': {'C1': [{'D1': [4, 65, 210, 191, 60, 203, 125, 7],
                       'D2': -328155450,
                       'D3': [8695, -7810, -1888],
                       'D4': [4764, 62231, 5615, 7079, 58268]},
                      {'D1': [99, 227, 221, 167, 114, 181, 235, 67],
                       'D2': -1771682152,
                       'D3': [16652, 31432],
                       'D4': [55779, 59463]},
                      {'D1': [132, 121, 112, 172, 91, 209, 234, 166],
                       'D2': 838276949,
                       'D3': [13339, 2983],
                       'D4': [59805, 20261, 19688, 11632]},
                      {'D1': [139, 158, 130, 3, 7, 224, 70, 58],
                       'D2': 1455151119,
                       'D3': [-3271, 20622, 5771],
                       'D4': [47687, 21250, 21701, 4241]}],
               'C2': 0.8775636281115125}},
 'A2': 0.7051800489425659}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'RMKCk}\xe7\x07\x1d\x00\x00\x00 \x00\x00\x00\x07\x00\x00\x00#\x00LFS\x00\xeea'
 b'\x00\xc0\x17q5\xcern>;\x14\x11\x83\x82m\xd7\xcfm\xd6Y\xc1\xff\xb3\xaf'
 b'Q\xc5\xa0\xf0\x19\xe5\x9f\xac\xed\x19\xd0\xf8N;?Ps1\xbf;\xeb\x1b?d'
 b'\xa72\xbf\xa8\xa3|\xbfX%\x05\x00?\x00\x00\x00$p\xac\x13y\xbf\xfe#\xcd'
 b'\xd7-\x8a\x14Cv\xca\x8b\xcf\xdb\xbc\xea\xc60B\xfa!')

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

{'A1': 132611435,
 'A2': [{'B1': 192, 'B2': 28951}, {'B1': 53, 'B2': 29390}],
 'A3': [{'C1': 110, 'C2': [62, 59, 20]},
        {'C1': 17, 'C2': [-125, -126, 109]},
        {'C1': -41, 'C2': [-49, 109, -42]},
        {'C1': 89, 'C2': [-63, -1, -77]},
        {'C1': -81, 'C2': [81, -59, -96]},
        {'C1': -16, 'C2': [25, -27, -97]},
        {'C1': -84, 'C2': [-19, 25, -48]}],
 'A4': 17996,
 'A5': {'D1': 9560,
        'D2': [0.7316737174987793,
               -0.6931657791137695,
               0.6090580821037292,
               -0.697866678237915,
               -0.9868721961975098],
        'D3': [36, 112],
        'D4': -0.9729564189910889},
 'A6': 238,
 'A7': {'E1': 254,
        'E2': -13021,
        'E3': 344600023,
        'E4': 67,
        'E5': 14333476416325929590,
        'E6': 570049072}}

Пример 2

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

(b'RMKC9Y\xb6t\x1d\x00\x00\x00 \x00\x00\x00\x05\x00\x00\x00#\x00\x8fVK\x00\x1aY'
 b'\x00{\xe9Z\xa4\xfe\x1fB\xdf\x98\x84d\xf3\x8co\xb5\xdc\x9fWK\x86@\xca\xedgX=2'
 b'\x8ak\xbf\xabz\x17?\x8aY\\\xbf\xd4N:\xbf\x92\xc6\xee>\xa9Q\x05\x007'
 b'\x00\x00\x007\xa7T\xf9\x1c>$\xfd\xb1;\xcd\xa9\xd0O\x8f\xc3U:B\xc4K'
 b'\xcc\x12\t\xe8\xa6')

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

{'A1': 1958107449,
 'A2': [{'B1': 123, 'B2': 23273}, {'B1': 164, 'B2': 8190}],
 'A3': [{'C1': 66, 'C2': [-33, -104, -124]},
        {'C1': 100, 'C2': [-13, -116, 111]},
        {'C1': -75, 'C2': [-36, -97, 87]},
        {'C1': 75, 'C2': [-122, 64, -54]},
        {'C1': -19, 'C2': [103, 88, 61]}],
 'A4': 22159,
 'A5': {'D1': 20905,
        'D2': [-0.9200774431228638,
               0.5917155146598816,
               -0.8607412576675415,
               -0.7277653217315674,
               0.4663587212562561],
        'D3': [55, 167],
        'D4': 0.1532948613166809},
 'A6': 26,
 'A7': {'E1': 36,
        'E2': -19971,
        'E3': 3500789051,
        'E4': 79,
        'E5': 14721075595716182927,
        'E6': -1494742766}}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'NGW\x86z\x94\xa4\xe1O\xde#\x88\xf4A\x92`\x81\xac\x89\x90si\xcc;\n\x16\x0b2'
 b'\xda\xbf\xe8\x8d\x89\x08 \r|?!({\x0c)\x91\x02\x00\x94\x00\x00\x00\xe2\xf1'
 b'\xc5\xefNh\x8c\xb1\xfe\x9b\xe4\xb2\n\xe6\xe6?\x02\x00\x96\x00\x00\x00'
 b'9\xfe\xe5\xbd\x16\xb8\x8c\xb1I.\x03\x00\x9a\x00\x00\x00n\x86(\xf8'
 b'\x03\x02\x92Q0\x9aAQ]#\xc6?\x02\x00\x9d\x00\x00\x00G\xac\x12?T6\x80\x18h|'
 b'\x04\x00\xa1\x00\x00\x00\xf7(Y8K\x93\xbc\x11\xf2eQd\xed\x00\xe8\xbf\x02\x00'
 b'\xa5\x00\x00\x00\x9c]\xa2YFg(?\xb4\xc2e\x03V\x06\xfc-\xc4S\xeb?Q')

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

{'A1': -8636815225697037190,
 'A2': 10415045284941939188,
 'A3': 'si',
 'A4': -0.4093044009431963,
 'A5': 143232488,
 'A6': [{'B1': 0.9845752716064453,
         'B2': {'C1': 10273, 'C2': -1859580805, 'C3': [-100, 93]},
         'B3': {'D1': -5653028744017350174,
                'D2': 0.7155812734607705,
                'D3': [22946, 26438]}},
        {'B1': -0.1123012974858284,
         'B2': {'C1': 47126, 'C2': 776581516, 'C3': [40, 63, -76]},
         'B3': {'D1': 5877762679743481454,
                'D2': 0.17295423953619737,
                'D3': [26050, 22019]}},
        {'B1': 0.572941243648529,
         'B2': {'C1': 13908, 'C2': 2087196800, 'C3': [6, -4, 45, -60]},
         'B3': {'D1': 1278058345543575799,
                'D2': -0.7501131972632591,
                'D3': [-5293, 20799]}}]}

Пример 2

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

(b'NGW\x86\x82\xde\x11\x06|z\x13\x89\xd5\x83C\x06\x13\xaaV\xa2af\x88\x14'
 b'\xd3}\xd6\x8f\xd4?\x05\xf0\x96P\xc1\x1b\xd8>w\x19z-$\xc1\x02\x00\x94\x00'
 b'\x00\x00\xfd\xed\x8eb\xbfL\xbfB\xd8\xf7\xc1(\x98b\xe7\xbf\x02\x00'
 b'\x96\x00\x00\x00\xc2\xf36<\x85\xdf\x9f\xfa\xdb\xeb\x03\x00\x9a\x00\x00\x00'
 b'\xe2e\x03*\xf6Ie\xbf\xc0\xbd\xf6\xc5\xc2\xf8\xa0\xbf\x02\x00\x9d\x00'
 b'\x00\x00\x1f\xd6|>@9wA\x1f\x9f\x04\x00\xa1\x00\x00\x00\x8e\xeb~\xb1\x0f\xe2'
 b'N\xcb`\x8e25\xf8\t\xcd?\x02\x00\xa5\x00\x00\x00T5:\x90\x0b\x0el\xdf'
 b'\xe9\x9b\xa7@\xb0\x08~\xdf}\xc0P\xc4\x1f')

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

{'A1': -8569370992859554174,
 'A2': 11697724080827630549,
 'A3': 'af',
 'A4': 0.32127916610290486,
 'A5': 1352069125,
 'A6': [{'B1': 0.4220867455005646,
         'B2': {'C1': 6519, 'C2': -1054593670, 'C3': [84, 53]},
         'B3': {'D1': 4809647311930977789,
                'D2': -0.7307854457901568,
                'D3': [-28614, 3595]}},
        {'B1': 0.011166514828801155,
         'B2': {'C1': 57221, 'C2': -337904993, 'C3': [108, -33, -23]},
         'B3': {'D1': -4655233318201891358,
                'D2': -0.033147894540316525,
                'D3': [-22629, -20416]}},
        {'B1': 0.24691055715084076,
         'B2': {'C1': 14656, 'C2': -1625341577, 'C3': [8, 126, -33, 125]},
         'B3': {'D1': -3796848878796477554,
                'D2': 0.22686674687894293,
                'D3': [20672, 8132]}}]}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'KQJG\xdc\xd7\x99K\x0c\xdb\x05\xec7\xbfb\xff\xf2\xef\x9e\x0c\x83&O\xd6'
 b'\x95\x0cy)\xd3\\\xc8\xf0\xa6\xa5\xab\xfd\r\x02\xe3l{A\x0chF\xc4@ImT\x84\x1b'
 b'\xa70_\x8c\x08\x98\x8f\xf4\xfc\x00\x00\x00\x03\x00\x00\x00~,v?\x91|D\xcd'
 b'\xdd\x98\x9e\xb6\xfd\x07\xbfZ3e\xfbHf=4Q\xdc?%OF\xbc\x10\xb5\xb2\xf1rL'
 b'Un\x9cf\x00\x00\x00\x02\x00\x00\x00\x84\xdb\xf0\xb7\xec\x82\xee2\x15'
 b'\x12\xf0\xce+Y\x84\x08\x0e\x01\xfa\xe6\xce\xaapr\xa1')

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

{'A1': -36,
 'A2': 15535530908177525815,
 'A3': -0.8867179155349731,
 'A4': 61342,
 'A5': {'B1': {'C1': [{'D1': 901606474748595321, 'D2': 10707},
                      {'D1': 6685858245366250765, 'D2': 739},
                      {'D1': 7816913099776508992, 'D2': 18797},
                      {'D1': 6090023000996809736, 'D2': -26481}],
               'C2': -2820,
               'C3': [-12757, 22916, 2062],
               'C4': {'E1': [745947025,
                             2084883933,
                             2560538365,
                             129980979,
                             1710966886],
                      'E2': 0.04402337968349457,
                      'E3': 0.6457408666610718}},
        'B2': -0.008832382038235664,
        'B3': -244167595,
        'B4': 28316,
        'B5': 102,
        'B6': [33220302, 2859496097],
        'B7': 3689986028,
        'B8': 33518},
 'A6': 840241904}

Пример 2

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

(b'KQJGS\xec\xad\xa25c\x9e\r;\xbe\xf6\xf6\xcc\xc3*.\x88\xd9\x0e\xf1'
 b'\xf9j\x15\x1a\xf3\xd2\xcc\xf1\xa4)\xaa?\x8c\x89\xae9\xe1<\xc4a\xc5]\r\xe7'
 b'\xc6?\xac{\xf5\xec\xba\xb1\x98\x03@\xe89\x00\x00\x00\x04\x00\x00\x00'
 b'~\xd2\xcf[\xaf\x0c"9\xe0q\xf0\x8f\xf5}\nk\xf9\xb47\x9b)\xbf\x12\xb9'
 b'o\xbf\x1b\xc4\xcb?tR\xed2\x0b\xaeC\x9d\xee\xae\x00\x00\x00\x04'
 b'\x00\x00\x00\x86\xd4\xc0\xf26?\x13\xe8.\xed%\x1bcY\xbe\xfb\xebHV\x18\x87'
 b'\xb6E\x8a\x0c\xe0;\xea\xac\xbeCW\xf70\xfa')

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

{'A1': 83,
 'A2': 17054465714110205243,
 'A3': -0.4823516607284546,
 'A4': 49962,
 'A5': {'B1': {'C1': [{'D1': 3353168580789758485, 'D2': 6899},
                      {'D1': 15189781330589794188, 'D2': -30290},
                      {'D1': 4170681544073370893, 'D2': -6202},
                      {'D1': 4588178416552554904, 'D2': 832}],
               'C2': -6087,
               'C3': [7011, 22974, -1045, 18518],
               'C4': {'E1': [3536804783,
                             203569632,
                             1911590901,
                             2097835001,
                             3023543081],
                      'E2': -0.5731419920921326,
                      'E3': -0.6084715723991394}},
        'B2': 0.9543903470039368,
        'B3': 839626307,
        'B4': 40430,
        'B5': 174,
        'B6': [411547205, 2316099643, 3937189443, 1475817722],
        'B7': 3569414710,
        'B8': 16147},
 'A6': 3895389477}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'ASKIDn\xc7sjyy\xe6\xd6g\xc6\xd9\xd6\xfe\x01l\xb3\xdf\xce\x97Me\xbe\xcf'
 b'Y\x14=S\xf0A\x0e)\t-\x92\xb1\x86f\x08\x05\xf5N\x92v\xde\x9e\xf7;(]z\xc3'
 b'\xcc/\xcf\xec\x1ee\x8a\xa2\x0f\xac7\x8b_\x9a\xfdjoxfi$\x10+\x89'
 b'\xb8\x8a\xa1\xab\xa5\x1b\xd4\x01\x00Z\xf0?HB\x97,\x0cA\xac%\xbe\xe1q')

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

{'A1': {'B1': 28359,
        'B2': 'sjyy',
        'B3': {'C1': 59094, 'C2': 1741085142, 'C3': 4261506227}},
 'A2': -8242,
 'A3': [{'D1': 10902482143130752061, 'D2': 21488},
        {'D1': 4687729381535297926, 'D2': 26120},
        {'D1': 429335730450243319, 'D2': 15144},
        {'D1': 6735911474428898334, 'D2': 25994}],
 'A4': -6769002360353088771,
 'A5': 'joxfi',
 'A6': [605039497, 3096093099, 2770064385],
 'A7': {'E1': -16, 'E2': 0.7822660803794861, 'E3': [11276, 16812, 9662, -7823]}}

Пример 2

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

(b'ASKID\xf6Bfpsw2(N\xf1\x84\xac\xc8\x95\xa78\xffa\xfc\xec\xeeK\xe8'
 b'\xfc\xe0U\x9c\xb9\xfb\xcf\xba\x99$S\x85TLIUI\x1b\x189\xfaC"#\xe3Q\xd1B'
 b'\x8f\xa9\xc7\x88~\xba\x87G\xf0\xd2\x82~\xa8\xeeBvwyjnD\xd5\xf0\xb9"m(\x07'
 b'M\x8f\x04\xee\x00ZR<\xcd\x88\xc3|w\xf2\xde\x0c{_\x00')

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

{'A1': {'B1': 63042,
        'B2': 'fpsw',
        'B3': {'C1': 12840, 'C2': 1324450988, 'C3': 3365250872}},
 'A2': -159,
 'A3': [{'D1': 18225203801860399189, 'D2': 40121},
        {'D1': 18144926590601233748, 'D2': 19529},
        {'D1': 6145472957389620002, 'D2': 9187},
        {'D1': 5895566572000872574, 'D2': 47751}],
 'A4': 5183874629016022594,
 'A5': 'vwyjn',
 'A6': [1154871481, 577579015, 1301218542],
 'A7': {'E1': 82,
        'E2': 0.025089627131819725,
        'E3': [31863, -3362, 3195, 24320]}}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZOWYF\x00\x00\x00\xbeo>\xbc\xd1\xd9\x1a\x89\x07\x00\x00\x00X\x00\x00\x00(+~?'
 b'l\x00\x00\x00\xa1]s\xbfT\x10\xa7\xd8UP7\xc87\xfe\xbf\xc0/\xd4UO*\x1a\xeb{'
 b'ha_\x15\xda\xa7\xa0T`\xee\xe7\t]\x0f\x04\x00\x00\x00&\x00x\x8a\xbd\x19'
 b'\xcc3\xc9\xffkucw\xecam\x1bf\xdf\x1dD\xcf\xff\xa4gh\xed\xa0K\x19\xec\x87\x13'
 b'\x8clF?\x03\x00f\x00\x00\x00\xb6\xc4\xdf\xbd\x9d\x93u>\x14\x9a\x08\xbf,#'
 b'B\xbe\xa2\x1aX\xbf\x03')

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

{'A1': {'B1': [{'C1': 55463, 'C2': 20565, 'C3': -29898697},
               {'C1': 49343, 'C2': 54319, 'C3': 438980437},
               {'C1': 31723, 'C2': 24936, 'C3': -1478879905},
               {'C1': 21664, 'C2': 61024, 'C3': 257755623}],
        'B2': -15424172020888968,
        'B3': 'kucw'},
 'A2': 3158208446,
 'A3': 2300238289,
 'A4': [25068, 7021, -8346, 17437, -49, 26532, -4760],
 'A5': 0.9928460121154785,
 'A6': {'D1': 0.7750937938690186,
        'D2': [19360, -5095, 4999],
        'D3': [-0.10926191508769989,
               0.2398209124803543,
               -0.5336010456085205,
               -0.1895872950553894,
               -0.8441563844680786],
        'D4': 3},
 'A7': -0.9506474137306213,
 'A8': 4180}

Пример 2

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

(b'ZOWY6\x00\x00\x00\xda\xd5\x0e\xe2W\xb4\xccv\x02\x00\x00\x00H\x00\x00\x00'
 b'\x9e\x14\x84>R\x00\x00\x00\xa77j\xbf\x05\x89\x99\x91\x1fF\x05\xb7'
 b'\xef\x83\x8f\xaa\xb0\xfc\xd9\x1d\xe5\xd8\x02\x00\x00\x00&\x00GT\xc7w'
 b'\xc0\xa6\x84\xc8lqrw\xf7\xc6\xf7]\xf6^\x07\xff^\xe7\xa4h\x86>\x03\x00'
 b'L\x00\x00\x00\xc9\xda(\xbe\xd6\x16M>\xe9\xc9|?\xe3\x14~?\x82\xd3\x8c\xbe7')

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

{'A1': {'B1': [{'C1': 37273, 'C2': 17951, 'C3': -2081442043},
               {'C1': 43663, 'C2': 64688, 'C3': -656073255}],
        'B2': -3997887223624674233,
        'B3': 'lqrw'},
 'A2': 3792623066,
 'A3': 1993126999,
 'A4': [-14601, 24055],
 'A5': 0.25796979665756226,
 'A6': {'D1': 0.2625170946121216,
        'D2': [24310, -249, -6306],
        'D3': [-0.1648970991373062,
               0.20028242468833923,
               0.9874559044837952,
               0.992506206035614,
               -0.27505117654800415],
        'D4': 55},
 'A7': -0.914911687374115,
 'A8': -30459}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x9bJSU\x00&\xea\xe1>4\xe3\x88{k*\xbe\x94\xf8\xd4\xc8\xdam\x99\xca'
 b'\x1a\xe2\xc4e"\x0f1bt\xbaNm)?\x8f1Cp\xfb\x00\x02\x00\x1f\x9d\x82\xbb?\xd5'
 b'(\xaaA\xee.\xec\xee\x99u\xbf\xe5\x8b_\x9e\xe1\xa0\x08\x96\xac\xd4'
 b'?\xdb\xe0\x8a6\x81M\x94\x0f\xb1\xcc\x15"\x12\x0b\x0c\\\x00!')

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

{'A1': {'B1': -113,
        'B2': 826503419,
        'B3': 'bt',
        'B4': [{'C1': [157, 130, 187], 'C2': 0.33060699881092037},
               {'C1': [238, 153, 117], 'C2': -0.6732633689071017},
               {'C1': [150, 172, 212], 'C2': 0.43557982752573676}],
        'B5': 1130909372584692492,
        'B6': 92,
        'B7': {'D1': -17842, 'D2': [109, 41, 63]}},
 'A2': 16924877271511628651,
 'A3': 717133048,
 'A4': -3113998978060248350,
 'A5': 3294962191,
 'A6': 49}

Пример 2

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

(b'\x9bJSU\x00&d\xe1\xfd\x1c)Y\xc17E\xd2\x81\x97g\xb0.`\xd7\x0eM\xd97\xcc'
 b'u)\xa1xj\xf7v\x80\x90\x13\xde\xe5r\x14\x96\x00\x02\x00\x1f\xd9i\xd9\xbf\xea'
 b'\xad\xa1#\xa6\x0bb\xfa\\\x91\xbf\xac\x0c.\x15jK\x80\xc2b\xc1\xbf\xe8\xd6\xff'
 b'\xeb\xe2\xce"\x9bd}\xbbg"\xfc+\x03\x00!')

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

{'A1': {'B1': -34,
        'B2': -445508458,
        'B3': 'xj',
        'B4': [{'C1': [217, 105, 217], 'C2': -0.8336950012456834},
               {'C1': [250, 92, 145], 'C2': -0.054780426134263926},
               {'C1': [194, 98, 193], 'C2': -0.7762450797221769}],
        'B5': 11197212817392598059,
        'B6': 3,
        'B7': {'D1': -2186, 'D2': [128, 144, 19]}},
 'A2': 7269369570947350839,
 'A3': 1171423639,
 'A4': 7471522775267429849,
 'A5': 936146217,
 'A6': 161}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TNA\xdaobozpai\x85\x9b\xe3\xe8\x87/\x10h\x1am\x0b1[h\x9c\xffm\ne~ '
 b"\x1c8\xdc\xc4l\xf6h\xd0[\xc4\xb2C\xf3'\x9b\x93rl\xf4\xf5\xad0\xc4\xf2"
 b'\xff\x11\x1fU\x00\x00\x00\xae\xed\x82A8\x01-\x80\x98\xe3\x1d\xab\x96'
 b'\x99\xaa|\xb2\xad\r2\xb9Z?\x00\xee#\x03\x00I\x00\x00\x00\xbc9\xef\x19\xcb'
 b'Ps\x80^\xa6\xd1e\x9d\x9a\x95*\xfcK\xc8\r')

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

{'A1': 'obozpai',
 'A2': [{'B1': -25723,
         'B2': 59619,
         'B3': 1745891207,
         'B4': -28032756796920550,
         'B5': 2669},
        {'B1': 32357,
         'B2': 7200,
         'B3': 1824840760,
         'B4': -917693342629730058,
         'B5': 39719}],
 'A3': 4100747923,
 'A4': 2238851907918540277,
 'A5': {'C1': {'D1': 1099099566, 'D2': [56, 1, 45, -128, -104, -29]},
        'C2': 9198,
        'C3': [2576788253, 2914155690, 1522086413],
        'C4': [435108284, -2139926325, 1708238430, 714447517, 231230460]}}

Пример 2

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

(b'TNA\xdaweogwed7\n\xbc\xc3T\x1a;;4\x9e\x0f\xbe\x8e\xdeJU\xca\xb5j\x840'
 b'\xdb&9\xb4\xc0\x8f\xa2\x17\x87\xdd@o\x12\xcf\x1e\xb1\x96\xa9t\x14r\xf7\xf6Q'
 b'\xe9\xfc\xd9Y\x00\x00\x00\xa5\xc6\x0e`\xdf\x15\xaa\xda\x1b\x1c{\xf7\x0b'
 b'\x13y\xcae\x1b\xc6\xa5\xdf\x8b\xe3\xdc!\x80?\x00\xba\x19\x04\x00I'
 b'\x00\x00\x00>\x9e\xad\xf6\xbc\x91#\x81\xaa\xb6g\xf7"f)\x84!\xaaCY')

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

{'A1': 'weogwed',
 'A2': [{'B1': 2615,
         'B2': 50108,
         'B3': 993729108,
         'B4': 6145969346155879988,
         'B5': 46538},
        {'B1': -31638,
         'B2': 56112,
         'B3': -1061930714,
         'B4': 1328351735296008847,
         'B5': 7887}],
 'A3': 1957271217,
 'A4': -2739057935103069676,
 'A5': {'C1': {'D1': 1611581093, 'D2': [-33, 21, -86, -38, 27, 28]},
        'C2': 6586,
        'C3': [319551355, 459655801, 2346689990, 2149702883],
        'C4': [-156393922, -2128375364, -144197974, -2077661662, 1497606689]}}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xa7WSRBe\x00\x00\x00v\x00\x00\x00\x9a\xf5\xc0&\xe5=C\xc2\x18\x91\xfc'
 b'\x86\xb3\xe6\xcd(k.7\x98%\xdb?F\xc0/\x02\x00\x00\x00\x14\x00\x00\x00\xcc'
 b'\xf6\xdf;\xbf9:\x14v\x85R\xba\xba\xf9\xe5\xbf\xab\xb2,\x02\x00\x00\x00/\x00'
 b"\x00\x00v\xc7!\x9f\xe7\xc3'\xceNS{\xdc\xd12\xe4?\x93X\x19\x02\x00\x00"
 b"\x00J\x00\x00\x00\xc6\xfeW?nycoqy\xbf\x18\x003\x00N\x00\xb6'qp)\xb1"
 b'\xa6\xb9\xb5O\xe4\x00\x1a\x96;\xa8\x85\xf8\x10\xa7\x83\xe8\xb0$pr\xab\xc7o^'
 b'\xc2?\x02\xf5\xbct\x8c\xcb>v\xdd4\xbf\xc6\xbbU\xbf=\xed\xb1>')

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

{'A1': {'B1': 0.8437312841415405,
        'B2': 'nycoqy',
        'B3': 191,
        'B4': [{'C1': 3454448518,
                'C2': 0.42416959179688485,
                'C3': -16314,
                'C4': 47,
                'C5': [6338, -879]},
               {'C1': 339360191,
                'C2': -0.6867345465763453,
                'C3': -19797,
                'C4': 44,
                'C5': [-2356, 15327]},
               {'C1': 3458712551,
                'C2': 0.6312035852703077,
                'C3': 22675,
                'C4': 25,
                'C5': [-14474, -24799]}]},
 'A2': {'D1': 1886463926,
        'D2': [3114709289, 14962613, 2822477338],
        'D3': 2643868633407748229,
        'D4': 0.14350697755334663,
        'D5': 2,
        'D6': -17163,
        'D7': [0.397555947303772,
               -0.706504225730896,
               -0.834896445274353,
               0.3475131094455719]},
 'A3': -2662,
 'A4': 0.11189031600952148,
 'A5': 67}

Пример 2

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

(b'\xa7WSRBe\x00\x00\x00v\x00\x00\x00\x88~\xa2\x87\x93;\x8c\xd1\xbb8\xb2'
 b'\x1a\xfe\xd6\x12P\x86\xdbX\xb5.\xd8?\xb1bt\x02\x00\x00\x00\x14'
 b'\x00\x00\x00\xfc./i\xce\x9d\xe0=\xce?/\xf5\x9cF\xe3?\xf0\xd0\xf0\x02\x00'
 b'\x00\x00/\x00\x00\x00\xe0(\x15\xf4\x9b\x81~\xf8\x00\xfa\xa6\x1eaY'
 b'\x8c\xbf\xf4\xbb\x03\x02\x00\x00\x00J\x00\x00\x00\x98\x84\xe4>wfiwtg#'
 b'\x18\x003\x00N\x00\xfe6\xf3\xc0\xe4_8\x94\x96\xdc\xf1\x195n\xbf\xa7t:\xf6.WL'
 b'\x8d\xdb\x02\xf3)\xa8\xed\\\xe6\xbf\n\xf9\xc5\x99\xd6z?Z\x99\xa8'
 b'\xbe\x7f\x92@?<Z\xc4\xbe')

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

{'A1': {'B1': 0.44632411003112793,
        'B2': 'wfiwtg',
        'B3': 35,
        'B4': [{'C1': 316079642,
                'C2': 0.37785085370533,
                'C3': 25265,
                'C4': 116,
                'C5': [-17455, -19912]},
               {'C1': 1038130638,
                'C2': 0.6023697651635247,
                'C3': -12048,
                'C4': 240,
                'C5': [12028, 26927]},
               {'C1': 4169040283,
                'C2': -0.013842352626736165,
                'C3': -17420,
                'C4': 3,
                'C5': [10464, -3051]}]},
 'A2': {'D1': 3237164798,
        'D2': [2486722532, 435281046, 2814340661],
        'D3': -2626359070353376652,
        'D4': -0.6988437923861002,
        'D5': 10,
        'D6': -14855,
        'D7': [0.9798370003700256,
               -0.32929497957229614,
               0.7522353529930115,
               -0.38350093364715576]},
 'A3': 32392,
 'A4': 0.004502252675592899,
 'A5': -116}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xf2HEE\x06\x00\x00\x00\x10\x00\x00\x00\xad\x00\x00\x00afaozt\xc0$'
 b'\x00\xe4\x88\xe3X\xe8\xa7GuA\xd1y\xa4\n8\x07\xa1k\xfeU\xd4W\xc9i'
 b'\xc8\xc9\xa1m\xd5\x00\xa0\x06\xa7\xe3\xd2.\xec\xb1{\x97\x05\x00\x00\x00'
 b'\x16\x00\x00\x00\x02\x00\x00\x00>\x00\x00\x00T\x8ce\x06~\xff\xb2\xcd'
 b"$\x04\xa8\xf3w=\xec\xecR\x08\xcd\xa1?\xe5\xf3\xf3\x0b\xfc\xd6u\x1e\x13\xe3'"
 b'w\xd1\xaa_\x11\x89\x9f\x99\xd4:\xba\x13\x8b;x\xc1\xa5\xcc\xaf\xa7'
 b'\xd4\x1c\xf7\xa9YY\x07\x00\x00\x00P\x00\x00\x00\x02\x00\x00\x00\x88\x00'
 b'\x00\x00\x89\xb1<\xbf\x9d\xecq\xf7\xb3\xbf\x85\x1f(=?\xfc[\xa2>@\x00\x00'
 b'\x00\x8a\x00\x00\x00\x80q-P\x94\xeb\xbb?\x9a\x00')

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

{'A1': 'afaozt',
 'A2': {'B1': [{'C1': [-1704362281879460672,
                       766871776213157799,
                       6328777927578158904,
                       60074711681886665,
                       -5626070351195208032],
                'C2': [123, -105]},
               {'C1': [-3624553833341547436,
                       -1374656200856566748,
                       -868098241692104622,
                       2874162008739478539,
                       -7377026956897103497,
                       -4505785958666716460,
                       -6199454662380237659],
                'C2': [89, 89]}],
        'B2': 0.10906340558489624,
        'B3': {'D1': -0.7370839715003967,
               'D2': 157,
               'D3': 2891176544199733740,
               'D4': 16189,
               'D5': 0.31710803508758545}}}

Пример 2

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

(b'\xf2HEE\x03\x00\x00\x00\x10\x00\x00\x00\x9a\x00\x00\x00gbmS\x19\xdd\xc8q'
 b'\x98\x9a=n"t\xcb\xa3\xd0\xd1{K\xa2\x0e\xffu\x14\xaa#[\x04m,\x9c'
 b'\x9c\xdf\xa3\xa4\xff\x04\x00\x00\x00\x13\x00\x00\x00\x02\x00\x00'
 b'\x003\x00\x00\x00^a\x13h3\x1a[\xf5w\xfbQK_\xadx#\xe6G/\x03:*\xc5\xfd\xa8vT'
 b'1\xcc\xfe\xf2\xafJ\x06\\1L\x97\xd6[\xa2\xe0p\xf6\x9b\xd7\xf9\xf2D\x91\x06'
 b'\x00\x00\x00E\x00\x00\x00\x02\x00\x00\x00u\x00\x00\x00\xff\x85\x0c>\xc5'
 b'L\xf9?\x1e$H\xbc\xb2\xb4\x93\x02D\x19?5\x00\x00\x00w\x00\x00\x00\x90i'
 b'\xf9\x18#\xa6\xc6?\x87\x00')

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

{'A1': 'gbm',
 'A2': {'B1': [{'C1': [4439027997195704659,
                       8922141738709295726,
                       2569889034391167563,
                       -6638415131146648485],
                'C2': [-92, -1]},
               {'C1': [-766990503444782754,
                       2555983413329918839,
                       -160675783051884570,
                       -5768268019753781592,
                       6617643055968945738,
                       -938481982475542366],
                'C2': [68, -111]}],
        'B2': 0.1769451019234336,
        'B3': {'D1': 0.13722990453243256,
               'D2': 197,
               'D3': -5567495719373244084,
               'D4': 37812,
               'D5': 0.5986939668655396}}}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'JKY\xbf\xd9\xc0D;\xdel\xe4\xbf\xc2dlIh\x06 \x00\x00\x00\x03\x00r\x00\x00\x00'
 b'\x80\x00\x00\x00\x8fV\xaf\xfeM\x9f\xf4\xa0\x86\xb7\x07x\xf8\x81\xf9\x9a'
 b'P\xb4\xbf\xac\x16\xa7\x012\xb6\xbe\x18RI\x02\xfe\x0e\xf8{\x84\xac'
 b"\xe2\x19u\x92\xb9'\x17\x9fXi\x11\xa5\x08\xcd\xe3\xad\xb6\x07L\xf6"
 b"\xec\x99\x08?#ad?\x0f'l\xe0\xcd\xd0Q\x82UN\x916\x0b\x18\xa4!\xf3}\x00c"
 b'\x00h\x00m\xaf\x83\xf5S\x1e\x1d\xb8\xf6\x00\x00\x00\x02\x00xx\xd7'
 b'\x97\xa9\xf1\x80=\xb87\xde\xea\x8c>\xb4!\xbd\x00\xc9\x96\r4\xee\x06\xe5b\xab')

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

{'A1': -0.40236001822058953,
 'A2': {'B1': {'C1': -0.14368966659826388,
               'C2': [{'D1': -32, 'D2': 3452981634},
                      {'D1': 85, 'D2': 1318139403},
                      {'D1': 24, 'D2': 2753688445}],
               'C3': {'E1': [2944660819, 505264374],
                      'E2': 120,
                      'E3': 15535072294341556279}},
        'B2': {'F1': 3739913278,
               'F2': [46113, 48384, 51606, 3380, 60934, 58722],
               'F3': -85},
        'B3': 86,
        'B4': [-5765085123588356425,
               538453392592883892,
               -4635305009935632706,
               1752543482201700475,
               -8886479365734221529,
               1702176392460175565,
               -2040774913656689511]},
 'A3': 8,
 'A4': [0.63820481300354, 0.5591952800750732]}

Пример 2

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

(b'JKY?\xeb7J\xe1\x0fi\x98?\xee(\xceQm\x9e\xf2\x00\x00\x00\x02\x00m\x00\x00\x00'
 b'y\x00\x00\x00\x88\x9f\xf4\x8fw,h\xa1N)\xc1\xb7\x11lh\xd6\xb4\x83\xa7\x01'
 b'y\xec|\x91\n\xb5\xa6\xce\xf4\x9eJ0\xdbk\x98\x96\xdd\x03\x811\x11\x10\xb6\xc9'
 b'\x80z\xbe\x9c\xa5\xf8AQ[_\xef!]\xe0\xfd?=\n\x83\xbfd\x95B\x05v\xc0l\x8a'
 b"\xba'\xe4\x02\xf9\x00c\x00hD\x1e\x0e\xbb\x10\x7f]P\x00\x00\x00\x02\x00q\xf6"
 b'FA\xe9\xb2|\x82\xc7\x138\x9cH\xee\xc7%\r\x9fxo\xbc,*\x8a\xe8\x15\xb2')

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

{'A1': 0.8504995723445061,
 'A2': {'B1': {'C1': 0.9424811926264438,
               'C2': [{'D1': 5, 'D2': 1992322186},
                      {'D1': -70, 'D2': 669254393}],
               'C3': {'E1': [1142820539, 276782416],
                      'E2': 246,
                      'E3': 5062584408943544083}},
        'B2': {'F1': 949766382,
               'F2': [50981, 3487, 30831, 48172, 10890, 59413],
               'F3': -78},
        'B3': 159,
        'B4': [-824309174167843287,
               -4488099346338368381,
               -6412710337789752651,
               -6426930657524393109,
               -7451525526315790064,
               -5275544223815522824,
               4706643553170841056]},
 'A3': -3,
 'A4': [0.7384416460990906, -0.8929024934768677]}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'VUKV2)\x8e\xa5\xda\x94\x8c\xe0P\xc47\xd2\xa6\xd4+H\x19\xf3\xc3\xc6\\\x11$w'
 b'\xaf\x0b\x02\x00\x00\x00(\x00\x00\x00B\x00\xdccpn\x85\xad\xfb\xaf\x00x%\xd2'
 b'\xe6\xafnsb\xc2Y\xa8\x17W\xdd\xfb=V\xce2yyI\x18<\xac\xc9\xa4\x00\xed\x89\xd0'
 b'A\xde\x9d\xfc\xbb\x91\x07r{H?\xa5Yd\xf1(3C\xe3\x88\x00\x8bN\x14'
 b'\x86\xad\xb2\xbe\xe25@1\xdcE\xb6X\x16\x9cC\x1c\xd2\xb2\xe4')

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

{'A1': 5827812488768753193,
 'A2': -60,
 'A3': 17517111578722751031,
 'A4': 842022652135392963,
 'A5': [{'B1': -36, 'B2': 'cpn', 'B3': -123, 'B4': -1814346502539052115},
        {'B1': -81, 'B2': 'nsb', 'B3': -62, 'B4': 6214399988908664921}],
 'A6': {'C1': -50,
        'C2': {'D1': [31026, 18809, 15384, -13908, 164, -30227, 16848],
               'D2': -0.007709248922765255,
               'D3': 1937,
               'D4': 0.7831336259841919,
               'D5': -91,
               'D6': 9863801495880819801,
               'D7': [340691712, -1095586426]},
        'C3': 826291682,
        'C4': 2036643076293150172,
        'C5': 45778,
        'C6': -28}}

Пример 2

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

(b'VUKV2^[\xb43\x19\xfcRK\x1f\xaf\xff\xac\xca}$\xd5\x86\xdd\x9b\xe4\x11Y\x02'
 b'\x1f\x87\x02\x00\x00\x00(\x00\x00\x00B\x00\x17rix\x86\xb7\xf4\xc86R\xc2\x12'
 b'O\xabbgc\x8e)\xb66\xc0@\x9cc\x97\xcf\xac\xa1Nt\x0e[\xdc\xba\xb6T\xeb\xbe\xd4'
 b'\xe6\x7f\xf7\x99\xbe/\xc3\xdd\xc4x?FW\x1c\xff|9\xa6\xbe9S\x9c\xd7%\x99\xfb4y'
 b'\xbd\x0c\x948\x9d?3\xe7\xddJ\x8f\x11\x03|\x88')

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

{'A1': 5427677686106708830,
 'A2': 31,
 'A3': 9715711893811560367,
 'A4': -8710240572735710243,
 'A5': [{'B1': 23, 'B2': 'rix', 'B3': -122, 'B4': 5697830136939345079},
        {'B1': -85, 'B2': 'bgc', 'B3': -114, 'B4': -7538009549371427287}],
 'A6': {'C1': -49,
        'C2': {'D1': [-24148, 29774, 23310, -17700, 21686, -16661, -6444],
               'D2': -0.300716370344162,
               'D3': -15569,
               'D4': 0.9717538952827454,
               'D5': 70,
               'D6': 4160945871577357399,
               'D7': [634887251, 2033515417]},
        'C3': 949226685,
        'C4': 1265312337241522077,
        'C5': 31747,
        'C6': -120}}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LXNDT\x04\x00a\x00\x00\x00\xae\x1e\xf8(\xb2\x7f\xa8\xab\x03\x00q\x00\x00'
 b'\x00\x8c\x00\x00\x00\x98\x00\x00\x00XH9\xbd\x02\x00\x00\x00\xa4\x00\x00'
 b'\x00\xdbK\x00?\x8c\x89\x04!\x11\xaf]\xefQ??Q\xecI5\xc2>\xe5\x83\x8c\xf1E\xa6'
 b'\xc8_\x12^Z\xd03\xda\xd8\xb0\x003\xe6\x9aa=\x12\xa1\xe3{a\xb9++\xfa1\x00\x00'
 b'\x00=\x00\x00\x00I\x00\x00\x00U\x00\x00\x00T\x90D\xfff\x06\xb7\x0fNPrJ!M\x8f'
 b'\x84\xd9\xe3Kb\x9f.r\x88~@\xd4xO\xb4\xb3W\xde\x96\xf5\x0b_`\xbf\xfeO<Q'
 b'\xdc\xb6\xe8\xaf\x18\x9dD={]')

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

{'A1': [{'B1': 35212, 'B2': 2937135364, 'B3': 1062334301, 'B4': 20799},
        {'B1': 18924, 'B2': 3846095413, 'B3': 1173458051, 'B4': 51366},
        {'B1': 4703, 'B2': 869292638, 'B3': 11589850, 'B4': 58931},
        {'B1': 24986, 'B2': 3818983997, 'B3': 733569403, 'B4': 64043}],
 'A2': 12369276779741322926,
 'A3': [{'C1': 1132380870746083412, 'C2': 78},
        {'C1': -2772933909119602096, 'C2': -29},
        {'C1': 4647301889482777163, 'C2': -44}],
 'A4': [{'D1': 17696576254057402232, 'D2': -0.87645024061203},
        {'D1': 12675582208606228478, 'D2': 0.048001378774642944}],
 'A5': -0.045235008001327515,
 'A6': [123, 93],
 'A7': 0.5011574625968933}

Пример 2

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

(b'LXNDT\x02\x00I\x00\x00\x00"\x07\xac-6\xd8\xab\xfe\x04\x00Q\x00\x00'
 b'\x00u\x00\x00\x00\x81\x00\x00\x00T\xb9\n>\x02\x00\x00\x00\x8d\x00\x00\x00[_.'
 b'\xbc\xa8\xed\xb4\xdd\xd5\x03Oz#\x1c\x1b\xa1\xe3I-@-\t\xb9\xae\xb6+G'
 b'\x151\x00\x00\x00=\x00\x00\x00\x1c<\xf8l4h\xa6o\xc0c\xae\xdd\xba\xa1\xd2'
 b'L\xe9j\xbeN\xd6\x1b\x1c\xd7F\x80)\xcc\xe9\xf9\xba\xf8\xc0\x82\xfe\xaf\x12UH'
 b'H\x97P!g\xa4\x07\x18?\x0b\xd4\x1cZ\x9d~\xff\xaa\xea\x8e\xd5\xbe\x88\x94')

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

{'A1': [{'B1': 60840, 'B2': 64347572, 'B3': 472087119, 'B4': 41243},
        {'B1': 18915, 'B2': 153960493, 'B3': 733392569, 'B4': 5447}],
 'A2': 18350998833857300258,
 'A3': [{'C1': 8045232358719765532, 'C2': -64},
        {'C1': -1635700972575674781, 'C2': 106},
        {'C1': -9203432272758944066, 'C2': 41},
        {'C1': -107311266582107700, 'C2': -81}],
 'A4': [{'D1': 7431309470821012754, 'D2': 0.5938665866851807},
        {'D1': 12321706319795770379, 'D2': -0.4171059727668762}],
 'A5': 0.1354725956916809,
 'A6': [-120, -108],
 'A7': -0.010642851702868938}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'EBV\x00\x02\x00\x00\x00hM\x03w8\x00\x02\x00\x00\x00j5Bm^\x00\x03\x00\x00\x00'
 b"lG\xa2G\xb6\x00\x02\x00\x00\x00o\xbd[;\x15\x00\x04\x00\x00\x00q'\x9e\xf1"
 b'q\xb6\x8b\x05\x92Z_\xebY\xdd@\x14\xfe\x9e:[\xce\xbd?\xba\x00\x00\x00}?0.\xfa'
 b'\xbe\xfe\xfa^?\\\xb2\xb4\xbd\x1a\xad\xb9\xbf\x06\x9c\xeb=\xfe\xccN>\xd8\xd13'
 b'seisaihrphsrt\xff\x8e\x98\xa5\xf1\xcd\xf7\xffR\r\x00\x02\x00u\xb6\xa01?\xd6'
 b'O\x95\x1a\xfbM\x14\x182\x19\xd1\xe0\x0f\nv\x9d\xdf')

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

{'A1': [{'B1': 'se', 'B2': 1292072760},
        {'B1': 'is', 'B2': 893545822},
        {'B1': 'aih', 'B2': 1201817526},
        {'B1': 'rp', 'B2': 3176872725},
        {'B1': 'hsrt', 'B2': 664727921}],
 'A2': 182,
 'A3': 2332398170,
 'A4': 1609259485,
 'A5': 4617595473498984125,
 'A6': {'C1': 16314,
        'C2': {'D1': 21005,
               'D2': [-7432027, -238159873],
               'D3': -74,
               'D4': -24527,
               'D5': 0.3486073268406511,
               'D6': 1743484394943744630,
               'D7': [157, 223]}},
 'A7': [0.6882168054580688,
        -0.49800390005111694,
        0.8621017932891846,
        -0.0377633310854435,
        -0.5258318781852722,
        0.12441311776638031,
        0.423471063375473]}

Пример 2

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

(b'EBV\x00\x03\x00\x00\x00h{V\nJ\x00\x04\x00\x00\x00k\xd3\xc8\x06\xbc\x00'
 b'\x04\x00\x00\x00o\x10\xe0f\xcf\x00\x03\x00\x00\x00s\xc3\xa2U\xcd\x00'
 b'\x02\x00\x00\x00vxO\x83\xb6\x99\x15\x14W\xf7\x1c\xf5\xe2\xcb\x00\xcb'
 b'\xf8c\xa3\xf6\xdc\xc2\xc1q\x00\x00\x00\x80\xbf.\x82\xc4\xbe\xbfW\x16'
 b'\xbfHe\x13\xbed^\x11?yk\xb5>\xebF\xdb=\xd0\x0b&bpjllgxlptqvcurp'
 b'\xee\x06\xf4\xfa\nF\xff\x16=\xe1\x00\x02\x00x\xab\xc0\x07\xbf\xe6N'
 b'\xac\xfa\x1cH\xca\xc3\xde\xc5\xd9\xfb \xe6D\xf4\x1a')

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

{'A1': [{'B1': 'bpj', 'B2': 2069236298},
        {'B1': 'llgx', 'B2': 3553101500},
        {'B1': 'lptq', 'B2': 283141839},
        {'B1': 'vcu', 'B2': 3282195917},
        {'B1': 'rp', 'B2': 2018476982}],
 'A2': 153,
 'A3': 353654775,
 'A4': 485876427,
 'A5': 57412527108578498,
 'A6': {'C1': -16015,
        'C2': {'D1': 15841,
               'D2': [-301533958, 172424982],
               'D3': -85,
               'D4': -16377,
               'D5': -0.6971039662332938,
               'D6': -4332808251472026044,
               'D7': [244, 26]}},
 'A7': [-0.681682825088501,
        -0.3737112879753113,
        -0.7827922701835632,
        -0.22301508486270905,
        0.9742997288703918,
        0.4595249593257904,
        0.10158376395702362]}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'RWT\x00\x00\x00\x02\x00\x00\x00)\x00\x00\x008dvspwn\xbf\xe2\xd1\xd9HZm'
 b'\xc2\x00\x03\x00W\xe5\xd9r3\x00\x00\x00]Nx!\x93\xc8\xe9\x98rJ\xbenhori'
 b'L\xec\x81\x82\xb2\xa1\x8e\xebW\x86\x8f$\x00\x00\x00\x05\x003C\xd7(\xd4H1'
 b'C\xfb\xcf\xeck7\xbc\xa0\xf1\xc18\x1b\x1e\xff\xe4\xf7`\x9a\xb1\x1d$\xf4\xd1+'
 b'0.\xbf\xc8:>x>\x95_s0\x89?\x13j\x1f\xdd\x13\xbc_\xba\xdc\xc4\x83')

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

{'A1': [{'B1': 20088, 'B2': 8595, 'B3': -56},
        {'B1': 59800, 'B2': 29258, 'B3': -66}],
 'A2': {'C1': 5542947639728901867,
        'C2': 1468436260,
        'C3': 'nhori',
        'C4': 1138174164,
        'C5': 5202013793393863479,
        'C6': 188},
 'A3': 'dvspwn',
 'A4': -0.5881163037442365,
 'A5': [-24335, -16072, 6942],
 'A6': -438734285,
 'A7': {'D1': 18439134768645872932,
        'D2': 62673,
        'D3': 3112038743745904248,
        'D4': 0.29174384474754333,
        'D5': 12425,
        'D6': 0.575838029384613,
        'D7': [3709058143, 3135030403]}}

Пример 2

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

(b'RWT\x00\x00\x00\x02\x00\x00\x00)\x00\x00\x007ruzfve\xbf\xe1mnb<W'
 b'v\x00\x03\x00V\xf0\xa3\xd1O\x00\x00\x00\\\xf8\xaf\xd2\\P\x15\xf4+\xd6\x8ds'
 b"mwt_'F\xc6\x1b2\x13I\x92Y\x12\x88\x00\x00\x00\x04\x003b\xae\xe9&\xa5\x9e\x9b"
 b'\xde\x1b\xd2\x1e\xd0{\x01z\x0b\xe5R\xeer\x15\xcb\x198\xc6\x9ac\x90,k('
 b'\xcc\xcf\xcd\\\xb1\xe7\xbe\xaa\x1b\xe1\xbeN\xbf/\xfa\xf4I\xf8\xc5\xc3'
 b'J\x05\xae\x8f')

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

{'A1': [{'B1': 63663, 'B2': 53852, 'B3': 80},
        {'B1': 5620, 'B2': 11222, 'B3': -115}],
 'A2': {'C1': 6856526774368605001,
        'C2': 2455310984,
        'C3': 'smwt',
        'C4': 1655630118,
        'C5': -6512596632879358256,
        'C6': 123},
 'A3': 'ruzfve',
 'A4': -0.5446082991281702,
 'A5': [378, 3045, 21230],
 'A6': -257699505,
 'A7': {'D1': 8220700004021869155,
        'D2': 36908,
        'D3': 7721646754002416103,
        'D4': -0.332243949174881,
        'D5': -16818,
        'D6': -0.6874229907989502,
        'D7': [1241040323, 1241886351]}}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'ICHR5J~\t\xa1\x0e\xf0\x00\xe0\xdc\xce\xf8\x1c9L\n)T\x00\x02\x00t\x00\xa1'
 b'i\x1e\xfaWl|\xe3\x90w\x81i\x05\x00\x94\x00\xda\x93_-\xa9\xd3\x9d\xdc\x02'
 b'\x00\x00\x00\x9e\x00^\x1co\xbeu\xd4|z\x8b\x03xQ\x88R\xb4\t\xa3}y'
 b'\xcb\x0e\x89\xbbMHe\xd0\x1bem\xb2\xfe\xa0\x9frkKj\x0b\xb8Vs\xdc7f\x10\x14'
 b':P\xb5\x90-N\xda\xbc\xf7\xfdT\xb4\xc2\xb0\x91\xfc\xde\xbbxW\xc0\xb0U\xe0'
 b'\x10\xad\xbb\xbf\x91\xc6\x92\x91;\xdbQ\x1el\x87\r\xc0\xd9v\xd5?s\x85\x8f\x8a'
 b'X\x11\x19V\x9b\x85m3\xe6\x19T3\x1d\x17')

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

{'A1': {'B1': 16141165010117819978,
        'B2': 486067932,
        'B3': 688540729,
        'B4': {'C1': 2993513755,
               'C2': 822552806805184766,
               'C3': 3698546360,
               'C4': 336619063,
               'C5': 13608275181661671482,
               'C6': 3025468919},
        'B5': {'D1': [{'E1': [194, 176, 145, 252, 222, 187, 120, 87],
                       'E2': -0.10810952641412808},
                      {'E1': [145, 198, 146, 145, 59, 219, 81, 30],
                       'E2': 0.33537906413231755}],
               'D2': [161, 105, 30, 250, 87, 108, 124, 227],
               'D3': {'F1': 1770092432,
                      'F2': [-31373, -30065, 4440, 22041, -31333]},
               'D4': -2549649090457660454,
               'D5': [434516845, 387789652],
               'D6': -0.23350664973258972,
               'D7': 2055001205,
               'D8': 699274587585119115},
        'B6': -93,
        'B7': 31101},
 'A2': 15016488031232790219}

Пример 2

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

(b'ICHR5O\xdb\xd4\x15\xe7%\x15%\x0f\x96)\xe2_\x06?\x8fT\x00\x02\x00t\x000'
 b'\x9b&\x9d\xbb\xa7\xf4\x82\xb5\xfe\xa6\xa0\x05\x00\x94\x00u}\x19\xd8\xd8'
 b'e\xc9]\x04\x00\x00\x00\x9e\x00\xd30\xad>Q\xfa\x1e\x9a\xd0t\xb05\x93\xe7C'
 b"i\x86\xeb\xf3\xc4<y\xa8<\xe2#\xfe\xcf\xde\x03e@Vr>9c'jf\xc5{\x8d\x8b\x06`H"
 b'\x86\x90q\xac\xf0\x1e\x08V]\x15\x16\xe2\x04/\xc4\xceOj\xeb\x93|p$\x94'
 b'!\x88\xec\xbfl\\\xc0%\xb6b\x02 \xe4\xe5\xf5q\x80\x1c\xd6?c\xad\xf8"=\xd4Hh'
 b'\xf34\x0c\xce\xa7 \xfdH\xa8@\xf2\x06%\xa18X\x08\xa6')

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

{'A1': {'B1': 2672083628348201807,
        'B2': -500591089,
        'B3': -1891695009,
        'B4': {'C1': 1694752463,
               'C2': 7649191589624043072,
               'C3': 2373698918,
               'C4': 1214252683,
               'C5': 6199238906109595782,
               'C6': 3793098077},
        'B5': {'D1': [{'E1': [4, 47, 196, 206, 79, 106, 235, 147],
                       'E2': -0.8916175740628343},
                      {'E1': [108, 92, 192, 37, 182, 98, 2, 32],
                       'E2': 0.3454896080871477}],
               'D2': [48, 155, 38, 157, 187, 167, 244, 130],
               'D3': {'F1': 2695298741,
                      'F2': [-21149, 8952, -11203, 26696, 13555]},
               'D4': 6758044697859030389,
               'D5': [547868172, 1084770557, 2703558386, 2785564728],
               'D6': 0.3382631242275238,
               'D7': 2585721425,
               'D8': 7585160816869012688},
        'B6': -122,
        'B7': -3093},
 'A2': 18312729259971001540}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'NAHL/\xf3^*?\x8a\x1a\x0bF\x93\x00\xf3\xbd4m\x03\xf2a\xbf\x0f:\xec+\xc7'
 b'>\xa6\xe8\xb4\xbe\xc2\x1d\x1d>\xd3\xf3\xe7>\x0f \x17?AD\xc9>_\xa3n>_\x15K'
 b'\x90\xba\xa1\xeeV\x05\x00\x00\x00\x1d\x00\x9f\x82\xf9\x1e\x8ckZ\xb1\xa4'
 b'n\x0fJ\xe7\xe8\xfc@\xbf\xa7\xab\xc7>:\xc0`\xbfn\xb1\x81\xbeb\xea\xb3\xbe'
 b"o:f\xbe\xd4=b\xbfE\xf8X\xbf\xe3\x9b\xe5\xbe_\x95'm\xa2\xbe\x9bE"
 b'\x08\x00\x00\x00P\x00\xae\xf7\x8c\xfcC\xef\x9b\xbaY<\x94\x1eh\x97*9\xc81'
 b'\x00\x00\x00p\x00\x00\x00\xb5\x8e\x17\xbc\t\xbf\x02\x00\x8f\x00l')

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

{'A1': 47,
 'A2': 0.6655113101005554,
 'A3': 1175132810,
 'A4': {'B1': [{'C1': 0.2330450862646103,
                'C2': {'D1': -1874127521,
                       'D2': 1458479546,
                       'D3': [-0.35333746671676636,
                              0.15343382954597473,
                              0.45303210616111755,
                              0.5903329253196716,
                              0.3930988609790802]},
                'C3': 519668383,
                'C4': 140,
                'C5': [23147, 42161],
                'C6': 110,
                'C7': 18959,
                'C8': -25},
               {'C1': -0.44845494627952576,
                'C2': {'D1': 1831310687,
                       'D2': 1167834786,
                       'D3': [-0.7538590431213379,
                              0.3899814784526825,
                              -0.877933144569397,
                              -0.2533068060874939,
                              -0.3513975739479065,
                              -0.22483228147029877,
                              -0.8837559223175049,
                              -0.8475382924079895]},
                'C3': -57870418,
                'C4': 67,
                'C5': [39919, 22970],
                'C6': 60,
                'C7': 7828,
                'C8': 104}],
        'B2': -29003,
        'B3': -0.5380262732505798,
        'B4': [10903, -14279],
        'B5': 108},
 'A5': 1832173043,
 'A6': -0.8825990557670593,
 'A7': 14863,
 'A8': 0.38900697231292725}

Пример 2

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

(b'NAHL\x80\x08\xbe\x12>g\x81SF\x91\x00\xc0\xda8\xffX\xb4H\xbf^\x03\x9b\xcf\x0c'
 b"\xbfw\xb6\xad\xbdy\x94'?\x12\x0eJ\xbf\x00\xff\xd6\xbe5\xac\x9e\xbe\xdf.@"
 b"\xbe}\xd6U?\xe7\x00\x1f?\xc5\x9aG?^X f'\n-A\x08\x00\x00\x00\x1d\x00\xb7"
 b"-P\x1d\x02\xec'f\xf7\xc1\xb1\x136\x8aZB?\xbcVx\xbd\xaaT:>z>e?\x86\xbe7?"
 b's\xa7\x8dU;\xe0\xe2\x93\x04\x00\x00\x00\\\x00\x0cw\x03&f\x1a\xfe%Q\xde'
 b'Z\xb0V\x1b\xf7\xa0"\x80 =\x00\x00\x00l\x00\x00\x000\xe3\xed\xa9J\xbf\x03'
 b'\x00\x8b\x00\x8c')

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

{'A1': -128,
 'A2': 0.1433030366897583,
 'A3': 1179877735,
 'A4': {'B1': [{'C1': 0.7797053456306458,
                'C2': {'D1': 1713395806,
                       'D2': 1093470759,
                       'D3': [-0.08482068032026291,
                              0.6546092629432678,
                              -0.789277195930481,
                              -0.41991424560546875,
                              -0.30990758538246155,
                              -0.18767879903316498,
                              0.8353040814399719,
                              0.6211075186729431]},
                'C3': 491793847,
                'C4': 2,
                'C5': [10220, 63334],
                'C6': 193,
                'C7': 5041,
                'C8': 54},
               {'C1': 0.7177509069442749,
                'C2': {'D1': 1435346803,
                       'D2': 2481119291,
                       'D3': [0.759194016456604,
                              -0.06062959134578705,
                              0.18196359276771545,
                              0.8954845666885376]},
                'C3': 637761292,
                'C4': 102,
                'C5': [65050, 20773],
                'C6': 222,
                'C7': 45146,
                'C8': 86}],
        'B2': -7376,
        'B3': -0.7916553616523743,
        'B4': [-2277, 8864, 8320],
        'B5': 140},
 'A5': 4281916096,
 'A6': -0.7840018272399902,
 'A7': 862,
 'A8': -0.5500428080558777}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'AVTDK\xca\xd4p\xb8\x17\x0c\xe1\x9f\xb6\x96\x15v\xefG\x05\xf9\x0e2\xf3A\x9e(z'
 b'7\xa7\xdc\xbfN:\xce\x00\x00\x00\\\x00\x00\x00h\x00\x00\x00t\x00'
 b'\x00\x00\x03\x00\x80\x16\x9a\x14cQ\xa3*\x8e\xd2\x8b\xea\x84\x00\x00\x00'
 b'\x02\x00\x00\x00\x83f\x8c\x06\xa8\xc3\x14#h\x00\x00\x00\x85\x0fB,'
 b'\xf9\xc2\xc9\xbf\xafz\xban8r\x99f\xdf\xe2\xbc\xb5\x19\xc6\x9d\x1fk\x87\xa7L'
 b'4\x0b"\xd9\x06\xd51\xddw:\x9c\xc2\x99/\xee\x1e\x82\xf2\x978x<\x97\xc5'
 b'\xb9\xf2V\xc8\x07\x11<\xef\xa0*\x19c\xce4\x82\x91\xa1\x9f4a\x8c\x127>'
 b' \xb4\x9f\xa5i4L\x8b8-\x85Xe\x8e\x1e')

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

{'A1': -13612,
 'A2': {'B1': 8122267272055076502,
        'B2': {'C1': 1546686610370268722,
               'C2': -918278952320522276,
               'C3': -0.8055847883224487,
               'C4': [{'D1': -5802120187357259418, 'D2': 57314, 'D3': 48309},
                      {'D1': 1857344654610507596, 'D2': 13323, 'D3': 8921},
                      {'D1': 492354561524800706, 'D2': 39215, 'D3': 60958}],
               'C5': {'E1': [-126, -14, -105],
                      'E2': 1628636632051821198,
                      'E3': 3532384900,
                      'E4': [56, 120],
                      'E5': 1720452776,
                      'E6': -1022090392},
               'C6': {'F1': 0.018526898697018623,
                      'F2': 242,
                      'F3': 1455949585,
                      'F4': [1022337066,
                             425971252,
                             -2104385121,
                             878808082,
                             926818484,
                             -1616549580,
                             1284192301],
                      'F5': 2237162894,
                      'F6': 30},
               'C7': [15, 66, 44, 249, 194, 201, 191]}}}

Пример 2

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

(b'AVTDK]\x1dh\x94,nX\x0b\xd4v\x83G\xee/\x8a\x11\x17;A7\xa6d\x90w\x941\xbe'
 b'O0E\x00\x00\x00\\\x00\x00\x00h\x00\x00\x00t\x00\x00\x00\x03\x00'
 b'\x80\xf6\xb7\xa4\x99\xd1\xb8 -\xc04\x896\x00\x00\x00\x02\x00\x00\x00\x83E$E'
 b'\x04\xe5N\x84\x88\x00\x00\x00\x85d_\xbb\xb8\xfa"Gy\xce\xb1p\xd4\x80\xd0\xb9'
 b'\xc2\x9e\x7f\x85\xb97\xdc\x15\x99D\x16[>X\x18\x86@\x92\x91^\xc4L\xca\xaa'
 b'\x92\xe5\xdd\x9e\xfej\x18\x9d\r\xbfS\x1ao\xcf\xe1\xfa\x9f\xae\xac\x8e'
 b'\xdf\x1a\xcf\x93\xca\xe3\xcd\x95$\xd8\xbc\x0c\xed1\xc2\xf8\x99\xe2\xf4t'
 b'\x04\xf8\x11\xa1\r\xe7E\xa4U4X')

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

{'A1': 23837,
 'A2': {'B1': 7535696928932877430,
        'B2': {'C1': -8986952643447285957,
               'C2': 4699407687035098161,
               'C3': -0.20233257114887238,
               'C4': [{'D1': 8777147821951340729, 'D2': 49822, 'D3': 32645},
                      {'D1': -5100366067649997221, 'D2': 15960, 'D3': 6278},
                      {'D1': 4652941201233463978, 'D2': 37605, 'D3': 56734}],
               'C5': {'E1': [-2, 106, 24],
                      'E2': -668885039085772755,
                      'E3': 3224668470,
                      'E4': [-99, 13],
                      'E5': 1160004868,
                      'E6': -447839096},
               'C6': {'F1': -0.8246220946311951,
                      'F2': 207,
                      'F3': 3791298478,
                      'F4': [-1399922918,
                             -812397853,
                             -845863720,
                             -1140003535,
                             -1023895070,
                             -193723144,
                             295767527],
                      'F5': 1168397620,
                      'F6': 88},
               'C7': [100, 95, 187, 184, 250, 34, 71]}}}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'HIH\x85\xca\xe8N*\xe8\xc6\xdcf\x00\x00\x00S\x00s\x00\x00\x00\x8b\xbf\x13'
 b"'#\xbf\xcd(,\xf3\x93\xeaX\xc7\x1dj\x02Y\xe8\x0b\xd0\x91\x90\xf4\\\x90\x00"
 b'\x02\x00\x00\x00\x90\x01!\x04\xc7f\xfc\xdaCV?x\xd8\xbfQ~\xb9`\xdf\xc1'
 b'7\x05X\xdb\xe3?\n\xe2\xe1vh>\xb2\x9d4U\xe2\x009\x00E\xec\x97\x88'
 b'B\x00\x02\x00\x00\x00Q\xd3Y\xc9\x18\xbe\xb2\x1c@\xbe\xd7\x18P\xca'
 b'\x99\xe1\xbf\xa0\xad\x18\xd9\x00\x00\x00\x02\x00k>3\xf9U\x08\x9d\xb7'
 b'MO\xd5\xbf;k,\x05\x7fCN\x93')

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

{'A1': -3825721937250296730,
 'A2': {'B1': {'C1': 0.3488556146621704,
               'C2': 85,
               'C3': -30,
               'C4': [{'D1': 7421046268744399064, 'D2': -0.8183398842811584},
                      {'D1': 6980510389504629731, 'D2': 0.5425243973731995}],
               'C5': -325613502,
               'C6': [118, 104],
               'C7': -749090536},
        'B2': {'E1': 14598947880248875225,
               'E2': [-0.3478717803955078, -0.420107364654541],
               'E3': 0.1757558137178421,
               'E4': 144553805,
               'E5': 20437},
        'B3': {'F1': -0.7321040630340576, 'F2': 5},
        'B4': -0.5748159289360046},
 'A3': -0.2277885617584896,
 'A4': -954373630,
 'A5': 6478441054395757660,
 'A6': -112,
 'A7': [32579, 20115],
 'A8': 18941127}

Пример 2

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

(b'HIH\x85\x05\xd8\xa7<\xca\xaa\x87\xb5\x00\x00\x00U\x00u\x00\x00\x00\x8d\xbfL'
 b'\x8c\xab?\xe0\xe5\x14]\x1e\xc6\xfa\xa7y\xfe\xd8\xc7*/\x97a\t\x1a2@\x00'
 b"\x02\x00\x00\x00\x92\xdd\xde\x0f\x16\xe2\xd1|\xe1\xb5\xe1\x0f'\xbf\x17\xa0"
 b'\x95\x9b\x00\x847w\xdb\x10\x08>-\xc9\xfe\x1d\xb1s?\xbe\x13n\x1d\x1e\x82\x00'
 b'9\x00Eo\xf4l\x19\x00\x04\x00\x00\x00Q\x9b\x9e1\x1d\xbe\x9a\x9e\x17\xbe#\x81'
 b'J\xe8<\xafI\xd25\x89z\x00\x00\x00\x02\x00m>\xf0\x8cq,p,\xe5U6\xbe\xb7\xb2'
 b'\xf2_H\x80\x8eh')

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

{'A1': 421270444699191221,
 'A2': {'B1': {'C1': -0.14397473633289337,
               'C2': 30,
               'C3': -126,
               'C4': [{'D1': -2102762242144399577, 'D2': -0.5922940373420715},
                      {'D1': -7277671624061808632, 'D2': 0.16971585154533386}],
               'C5': 1878289433,
               'C6': [29, -79, 115, 63],
               'C7': -1684131555},
        'B2': {'E1': 16734443046996117882,
               'E2': [-0.3019873797893524, -0.15967288613319397],
               'E3': 0.4698214828968048,
               'E4': 745549029,
               'E5': 21814},
        'B3': {'F1': -0.3587871193885803, 'F2': 95},
        'B4': -0.7990214228630066},
 'A3': 0.5279638117555969,
 'A4': -1485177128,
 'A5': 14351335489784060466,
 'A6': 64,
 'A7': [18560, 36456],
 'A8': 3722317590}