Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x43 0x4f 0x51 0x36
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint8 |
3 | Структура F |
4 | Массив float, размер 5 |
5 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 2 |
2 | Адрес (uint32) структуры E |
3 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | int8 |
3 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | int8 |
4 | uint8 |
5 | int16 |
6 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | Массив int8, размер 2 |
2 | uint32 |
3 | int16 |
Структура F:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
3 | uint8 |
4 | Размер (uint32) и адрес (uint32) массива double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MCOQ6a\x00\x00\x00\xa9\xd9\xce\xd3\xbe\xb3\xf9\xad\x02\x00\x00\x00q\x00\x00'
(b"\x00_\x1f\x91>TF\xea>\xea\xfeu?\x97'3\xbf3w`\xbfN \xf9\x1cx]\xe0\x10\xa8Ih"
b"\xbetP\xf5s&NVu\xb77&nH\xa6\xc8\xf8\xc3\x81\xb8Kj\x00m'\x177\x8a=\x87Cm"
b'\xc24\x1dD\xdd\xa3\xf2|\xcb/\x00\x00\x00D\x00\x00\x00Y\x00\x00\x00,\xf5w'
b'"4\xf7L\x8a\x06r\xec\xbf\x10t\xd2\xb7j\x1c\xed\xbf')
Результат разбора:
'A1': {'B1': [{'C1': 5307510716683001081,
{'C2': 104,
'C3': {'D1': 4115690686,
'D2': 9843,
'D3': 78,
'D4': 86,
'D5': -18571,
'D6': 9783}},
'C1': -5151621025449490322,
{'C2': 75,
'C3': {'D1': 661454954,
'D2': 14103,
'D3': -118,
'D4': 61,
'D5': 17287,
'D6': -15763}}],
'B2': {'E1': [52, 29], 'E2': 4070825284, 'E3': -13444},
'B3': 578286892},
'A2': 169,
'A3': {'F1': -0.41368749737739563,
'F2': -1613,
'F3': 173,
'F4': [-0.8889191342529785, -0.9097188558840816]},
'A4': [0.2834424674510956,
0.45756781101226807,
0.9609209299087524,
-0.6998228430747986,
-0.876818835735321],
'A5': 8270}
Пример 2
Двоичные данные:
b'MCOQ6a\x00\x00\x00,\x98\xfe4>~}d\x05\x00\x00\x00q\x00\x00\x00ts\x08'
(b'\xbf/\xfb\xc9\xbe9V ?i\xa4\x18\xbf0\x8b\xee>/\x11\xc2\x89\x9d\xda\xa8'
b'\xe8\x03\xf4\x1dJ\x18\xd7{\xe5\xe7\x8a\xee\x93\xe3G\xb1\x7fk\xc68'
b'\xe9\x06\xc7qQE\x95\xbb${\xfbr-~\xe7\xb7i\xf4!\x13keh\xdd\xb4/\x00\x00'
b'\x00D\x00\x00\x00Y\x00\x00\x00\xb0\xc6\xc1\x02X\xd2lts:\xdd\xbf\xa0?\x17'
b'I\x96`\xc7\xbfP>\x91-e\xc3\xb9\xbf(V\x9cY\x95\x8a\xea?t+!\\\x03u\xd9?')
Результат разбора:
'A1': {'B1': [{'C1': -863590891605095998,
{'C2': 29,
'C3': {'D1': 2077694026,
'D2': 59365,
'D3': -118,
'D4': 238,
'D5': -7277,
'D6': -20153}},
'C1': 8198529245400951679,
{'C2': 81,
'C3': {'D1': 616273221,
'D2': 64379,
'D3': 114,
'D4': 45,
'D5': -6274,
'D6': 27063}}],
'B2': {'E1': [-12, 33], 'E2': 1751477011, 'E3': -19235},
'B3': 46253744},
'A2': 44,
'A3': {'F1': 0.17675244808197021,
'F2': 32126,
'F3': 100,
'F4': [-0.4566925656284062,
-0.18263510292899543,
-0.10063774454578689,
0.8294169187744886,
0.397766914339335]},
'A4': [-0.5330116748809814,
-0.39449450373649597,
0.6263156533241272,
-0.5962586998939514,
0.46590566635131836],
'A5': 4399}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4 0x43 0x5a 0x51 0x42
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив char, размер 5 |
3 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур B |
4 | uint16 |
5 | Размер (uint32) и адрес (uint32) массива int64 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
3 | Структура C |
4 | double |
5 | Размер (uint16) и адрес (uint32) массива int16 |
6 | uint32 |
7 | Адрес (uint16) структуры D |
8 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int16, размер 4 |
2 | int32 |
3 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x04CZQB\x87~vipfq\x02\x00\x8e\x00,:\x04\x00\x00\x00\x92\x00\x00\x00\x1cX'
(b'\xc1"H\xc6\xbf\x84`\xf1vQ\xf7\x89\xe9\xe5Z\xd9|\x93\xcc=\x88i\xf4r'
b'\xd1\x94M\x9f\xa3V\x93\xe8p\xdc9\xdf\xfe\x02\xbd\xbf\x02\x00\x1a\x00'
b'\x00\x00)\xa1Z\xeb\x1e\x00\xd6\xa2d\x87\xa3\xb2\xe9Z\xa9\x18\xdc\x1b'
b'_\xd9\xe82\xf5kT\xfeM@\xc2\xe1n\x96\x876\x0e\xb4\x9c\xe2\x82\t\xdc\xfe'
b'\xc6\xe1fN\n\x06}y\xe0?\x02\x00T\x00\x00\x00\x85|\xe9\x01X\x00+s\x92B&\x00'
b'`\x00\xf6\x82o\xa2\x8c.~U\xca\x95\x9c\xca\x0b\x97\xf1*\xf7\xceY(\xb6\xa5'
b'\r\xa52\xcc\xfa\xb6\xc0\x1d\x1b|')
Результат разбора:
'A1': 32391,
{'A2': 'vipfq',
'A3': [{'B1': -437679625,
'B2': -1820534438,
'B3': {'C1': [15820, 27016, 29428, -27439],
'C2': 1453563725,
'C3': 59539},
'B4': -0.11332695913175583,
'B5': [22556, 8897],
'B6': 3948585257,
'B7': {'D1': -2067806648, 'D2': 1366749536},
'B8': 2271519446},
'B1': -28021771,
{'B2': -507363251,
'B3': {'C1': [-27026, 13959, -19442, -7524],
'C2': -19134078,
'C3': 57798},
'B4': 0.5148301237081341,
'B5': [-19805, 23273],
'B6': 32078981,
'B7': {'D1': 467409065, 'D2': 854120799},
'B8': 1116893995}],
'A4': 14892,
'A5': [6160412521844933366,
3094420495879935434,
-6553399680974598409,
8942774198615067698]}
Пример 2
Двоичные данные:
b'\x04CZQB,\xf3jrlco\x02\x00\x90\x00#\xe0\x02\x00\x00\x00\x94\x00\x00\x00z\xde'
(b'G\x10\xa2a\x18\x0bx\xe5b\xd5BK\t\xf4$\x13@,\x98\xb5\x185\xa6~\x04K\xf9\x01'
b'\x03T2fa\xec\x8cX\xc7\x11iU\xd9?\x03\x00\x1a\x00\x00\x00Z\xb0\x9e\xa2'
b' \x00\xf6507\xe8\x84\xbbL\x12l\xfa+\xf5\xfb\x8f\xa30CS\x9b.\xe1'
b'\xd5\x9d\xce\xb0\xccv\xf4k\x8b\x0f\xc8\x0b\xd6\xf0\xab<2\xce\xf3Y'
b'\xde\xce\xec?\x02\x00V\x00\x00\x00f\x1f\xf8\xdfZ\x00E[O^(\x00b\x00_>G\xdb'
b'$\xa4oY\xab\xbf+\xb5\x02\x19\xd8 ')
Результат разбора:
'A1': -3284,
{'A2': 'jrlco',
'A3': [{'B1': 321188873,
'B2': -1248318400,
'B3': {'C1': [13592, 32422, 19204, 505],
'C2': 1714574339,
'C3': 60513},
'B4': 0.39583803878975554,
'B5': [-8582, 4167, 24994],
'B6': 2728308826,
'B7': {'D1': -445117672, 'D2': 1262671202},
'B8': 925906422},
'B1': -1689042128,
{'B2': -1646927570,
'B3': {'C1': [-20274, 30412, 27636, 3979],
'C2': -254407736,
'C3': 15531},
'B4': 0.9002525097734575,
'B5': [-31512, 19643],
'B6': 3757580134,
'B7': {'D1': 737831954, 'D2': 2744122357},
'B8': 1582259013}],
'A4': 57379,
'A5': [6444550069995126367, 2366669103603367851]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x56 0x56
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | int8 |
4 | Массив адресов (uint16) структур B, размер 2 |
5 | Адрес (uint16) структуры D |
6 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Массив uint16, размер 6 |
2 | Структура C |
3 | int64 |
4 | float |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив uint16, размер 4 |
3 | int16 |
4 | Массив double, размер 7 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RVV\xdbs\xc5\x8c\x00\x07\x00\x13\xc8\x00\x1a\x00;\x00\\vghqortq\xac\xaa'
(b'Um\x94\xa1\xd5\xa5S\x90;7:\xed\xf3\x86o\xf3\x8c0\xa7Q\xac4\xf2~\x10Tr?'
b'*\xb3w\xde\x8d\xd6.qh\x13\x8f\x9f5\xcf.\x1e\x0c{9q(\xba\r-\x13\x1de\xcb'
b'|\xa2\x13?>\xb8s\x8d;|E\n\x9e\xcf\x1e,,G\xa6\xf0\xe5u\x90h\xda\xf3\xbf\xdb'
b'\x92K\xd15\xff\xe8\xbf\xdb\x92\xb5\x99a\xdc\xf0\xbf\xbdg\x87\xe8R\xcd`?\xec'
b'd\x1b\x8c\xe8A$\xbf\xe37\x00\xc5\x81\xf30?\xe7zE\xf39Gb?\xeb\xfb\x0b\xee\xa1'
b'\x962')
Результат разбора:
'A1': -613169780,
{'A2': 'ghqortq',
'A3': -56,
'A4': [{'B1': [44202, 21869, 38049, 54693, 21392, 15159],
'B2': {'C1': 58, 'C2': -1300548051994398553},
'B3': 5885137029168125042,
'B4': 0.6668009161949158},
'B1': [56973, 54830, 29032, 5007, 40757, 53038],
{'B2': {'C1': 30, 'C2': 899375708767915309},
'B3': 1377368985689002815,
'B4': 0.3602565824985504}],
'A5': {'D1': 4286376857266232876,
'D2': [11335, 42736, 58741, 36968],
'D3': -9485,
'D4': [-0.43080420904880024,
-0.43082942942369495,
-0.11486100599249971,
0.887220168313466,
-0.6004642350741047,
0.7336759329284457,
0.8743953381314837]},
'A6': 118}
Пример 2
Двоичные данные:
b'RVV\x15\xb9\x1b\xbf\x00\x03\x00\x13\x92\x00\x16\x007\x00X\xdegxq\x88)'
(b'\xcb\x9a\xc6m\x18\x9b\x84\x9d\x88*\xday!\xda\x01\x9e\x8d\xd71\xa6F\x88\n\x90'
b'trb\xbfE\xf7_\xe6\x16\xa8\xe6\xe6\x89\x17\xdf\xa9\xb9_x|\x16h\x0bcM\xf9\xfdH'
b'4\xa6\x9e\xf8\xb2\xd3\x8e\xb0?#k\xca\x9e\x05LN\xbc\x80\xfde\xbe\x83\xf2\xd8'
b'\xc1w\x19Dux\xbf\xe9?\xdf\xe7\xd4\xfc\x10\xbf\x91\x93\xa1\x7f\xc2'
b'I\x80\xbf\xe70S7\xf2T\xf4\xbf\xeb&\xdc\xc8\x1a\xb7\xd8\xbf\xeb\\o\x8e\xf1'
b'\xe7&\xbf\xe1`\x94\xb0\x87\\P?\xd5\x9e\x80\xf7k\xea\xa8')
Результат разбора:
'A1': 364452799,
{'A2': 'gxq',
'A3': -110,
'A4': [{'B1': [34857, 52122, 50797, 6299, 33949, 34858],
'B2': {'C1': 218, 'C2': 8728497253310650161},
'B3': -6465330636089167262,
'B4': -0.7733058333396912},
'B1': [58902, 43238, 59017, 6111, 43449, 24440],
{'B2': {'C1': 124, 'C2': 1614552987550219592},
'B3': 3793894527095508656,
'B4': 0.6383634805679321}],
'A5': {'D1': 11386591133929897317,
'D2': [48771, 62168, 49527, 6468],
'D3': 30072,
'D4': [-0.7890471961944758,
-0.017164729521547795,
-0.7246490566928103,
-0.8484939487732346,
-0.8550336639302472,
-0.5430396507098383,
0.33779930269489933]},
'A6': -34}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x56 0x44
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 7 |
2 | uint64 |
3 | Структура B |
4 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур C |
2 | int8 |
3 | double |
4 | uint16 |
5 | uint16 |
6 | float |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | Массив uint8, размер 8 |
4 | float |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint16) и адрес (uint16) массива float |
3 | uint8 |
4 | double |
5 | uint16 |
6 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RVDerbfggf\xfbU\x7f\xbb\xc5\x91\xc3I\x00\x00\x00\x03\x00\x00\x00mA?'
(b'\xdb#\xb1\x88\x8ch\xa8<\x9f\x02\xfa=\xdad\xea\x84\x00\x05\x00s&?\xd8\xbd'
b"U\xe2\x1d\x87\x88\x07\x06?\xb7\xcd\x95cKf\xd0\x88\xad\xc3\x93xUk\x1bd\x0b?'h"
b'\x0cD\xaf\x88\xccD\x056\xaf\xae)\xbe\xcc\xfa\x1d$\x00\xde\xda\x19C\xb6\x07i'
b"\xac?d\x82P\x00C\x00Q\x00_\xbf\x0c\x9f^\xbd\xbf\xa8\xa0\xbf'n\xc5\xbeQ?\xec>"
b'\x95h\x15')
Результат разбора:
'A1': 'erbfggf',
{'A2': 18110521920990593865,
'A3': {'B1': [{'C1': 136,
'C2': -83,
'C3': [195, 147, 120, 85, 107, 27, 100, 11],
'C4': 0.6539313793182373},
'C1': 68,
{'C2': -81,
'C3': [136, 204, 68, 5, 54, 175, 174, 41],
'C4': -0.40034571290016174},
'C1': 36,
{'C2': 0,
'C3': [222, 218, 25, 67, 182, 7, 105, 172],
'C4': 0.892613410949707}],
'B2': 65,
'B3': 0.4240535577279254,
'B4': 15519,
'B5': 762,
'B6': 0.10663779079914093},
'A4': {'D1': 132,
'D2': [-0.5493067502975464,
-0.09358334541320801,
-0.6540339589118958,
-0.20434540510177612,
0.29180970788002014],
'D3': 38,
'D4': 0.3865561206968029,
'D5': 1798,
'D6': 0.09298070596869512}}
Пример 2
Двоичные данные:
b'RVDwrhyxwu\xbc\x01\xd9\xae7W\xed\xd8\x00\x00\x00\x04\x00\x00\x00{\x98\xbf'
(b'\xe4\xe2\x94\xcd\xfd\n&\xcfw\xed\xfd>\xe5\xc7\xa3\x00\x00\x03\x00\x83'
b'\xca?\xd2\x93i\x88\xf3\x1d\xe4\xce\x12\xbf\xe4\x14\xd5\xf3P\xf1\xb6\x11'
b"\xb6\xd0>g\xee\xbc`\x91'\xbfz1\xff\xda\\M\xa5\xdc\xd1\x13vZ!?A\xa8\xf7\x0c"
b'\xc1\xe5\x93\xf7m\xb0\xa1\xaeO?DGqk\xf92-\x93\xdbb\xfar\x06>\xf4\x0b\x97\x00'
b'C\x00Q\x00_\x00m?5S\xdf\xbfh\x00t\xbft$\x19')
Результат разбора:
'A1': 'wrhyxwu',
{'A2': 13547348496383208920,
'A3': {'B1': [{'C1': 17,
'C2': -74,
'C3': [208, 62, 103, 238, 188, 96, 145, 39],
'C4': -0.9773253798484802},
'C1': 218,
{'C2': 92,
'C3': [77, 165, 220, 209, 19, 118, 90, 33],
'C4': 0.7564844489097595},
'C1': 12,
{'C2': -63,
'C3': [229, 147, 247, 109, 176, 161, 174, 79],
'C4': 0.7667151093482971},
'C1': 107,
{'C2': -7,
'C3': [50, 45, 147, 219, 98, 250, 114, 6],
'C4': 0.4766509234905243}],
'B2': -104,
'B3': -0.6526588462077754,
'B4': 53111,
'B5': 60925,
'B6': 0.44878873229026794},
'A4': {'D1': 0,
'D2': [0.7083110213279724, -0.906256914138794, -0.9536758065223694],
'D3': 202,
'D4': 0.29024732946387943,
'D5': 52754,
'D6': -0.627543425776415}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x4e 0x57 0xd6
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Адрес (uint32) структуры B |
3 | int64 |
4 | Структура D |
5 | Структура E |
6 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | int8 |
3 | Размер (uint32) и адрес (uint32) массива char |
4 | Размер (uint16) и адрес (uint32) массива адресов (uint32) структур C |
5 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint32, размер 2 |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint8 |
2 | double |
3 | int16 |
4 | uint16 |
5 | uint32 |
6 | double |
7 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | int32 |
4 | uint32 |
5 | uint16 |
6 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VNW\xd6\xe0\xe4\x98\t\x00\x00\x00\x8c\xc0[k\xb7\x13\xaf\xfbC\x00\x03\x00\xa7'
(b'?\xe7\xcf\xe5\x1f\xa8\x00\xa8(\x01\x13W\x7f\xc0\x9f\xe8?\xe12D'
b'\x04\x8a\xd4\x88\x0e\xf4H\xf5\xf5\xc0H\xfd\x83\xd1-\x9b#r\x05\xc4\x02\x03F<'
b'\x0c7\xa9\xad\xc9\xc6<\x0fh\xec8\xf01cpywosu}O\x99\x19f\xf8\x1e\xa6'
b'\x9e\xc2\xbc:\xf9L\xa8\xe3\xf1\x06a\xb2y\xb6\xb6//5\x0f\xc9\xa4\xecd\xb2'
b'"\xb0\xecQ\x00\x00\x00X\x00\x00\x00a\x00\x00\x00j\x00\x00\x00s\xb7POz'
b'\x1d\xbf\xa4\x07M\x00\x00\x00\x07\x00\x00\x00Q\x00\x04\x00\x00\x00|\xd9'
b'\x110\x91\xc8\xc3\xe3')
Результат разбора:
'A1': -521889783,
{'A2': {'B1': -5237598980728183801,
'B2': 77,
'B3': 'cpywosu',
'B4': [{'C1': [2102368537, 1727536806], 'C2': -98},
'C1': [3267115769, 1286136817], 'C2': 6},
{'C1': [1639086518, 3056545589], 'C2': 15},
{'C1': [3383028836, 2988617964], 'C2': 81}],
{'B5': 3641782417},
'A3': -4585953361493230781,
'A4': {'D1': [200, 195, 227],
'D2': 0.7441278093611077,
'D3': 10241,
'D4': 4951,
'D5': 2143330280,
'D6': 0.5373859490124611,
'D7': 3828},
'A5': {'E1': 72,
'E2': 4126523464,
'E3': -41692883,
'E4': 2602791429,
'E5': 50178,
'E6': 235942053654670793},
'A6': -4162435012283011023}
Пример 2
Двоичные данные:
b'VNW\xd6\xb3\xd8\xb5g\x00\x00\x00z\x1d`2>i$\x0ee\x00\x02\x00\x95?\xa4\xa0\xae'
(b'00, \xc2\xabn\xa2a\xd9\x96\x8a\xbf\xeaF\x195\x1f\xc5\xa4`\x9fYB\xca$\xa40'
b'\no\xb8\xf3\x1a\xb2\xb7\\n/\xf9&\xe9\x1d"\x98\x96\xc2\x99\x95\t\xa4\x1b\x10'
b"\x99yh'\\\xaa4>i\x01\x14\xecaR\x99\xc6$\xdb\xe3\xe5$^\xa0\xb1\xddN\xfct"
b'\xfeg\x00\x00\x00S\x00\x00\x00\\\x00\x00\x00e\xd5+\x8f\xcdG2\n\xf4*\x00'
b'\x00\x00\x02\x00\x00\x00Q\x00\x03\x00\x00\x00n\xce\x14\x99\xa3\x90\xc3')
Результат разбора:
'A1': -1277643417,
{'A2': {'B1': -3086215007806813452,
'B2': 42,
'B3': 'yh',
'B4': [{'C1': [660384308, 1047068948], 'C2': -20},
'C1': [1632803270, 618390501], 'C2': 36},
{'C1': [1587589597, 1325167870], 'C2': 103}],
{'B5': 3457456547},
'A3': 2116747068497464933,
'A4': {'D1': [144, 195],
'D2': 0.04028839433893716,
'D3': -15701,
'D4': 28322,
'D5': 1641649802,
'D6': -0.82105694175532,
'D7': 24735},
'A5': {'E1': 89,
'E2': 1120543908,
'E3': 805990328,
'E4': 4078613175,
'E5': 23662,
'E6': 3456836971641608342},
'A6': -4424341290274320231}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x57 0x4a 0x57
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | Структура B |
3 | double |
4 | double |
5 | int16 |
6 | int16 |
7 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | uint32 |
3 | uint16 |
4 | int16 |
5 | uint16 |
6 | Размер (uint32) и адрес (uint32) массива структур C |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint16) массива int16 |
3 | Размер (uint16) и адрес (uint16) массива int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CWJW,2\xe93\xdd\xf4<\x81\x04\x00\x00\x00<\x00\x00\x00\xc5ue\xbf\xcd\xa2#:'
(b'8\x96\x02\x00\x00\x00\\\x00\x00\x00>d2p\xd3\xf4\xe8\xbf\xa2%\xae\r\xbf\x0b'
b'\xe9?+\x80~\x07t\x00onyz\x8cA\xba*c\x00\x94\x95\xa9\xdc a\x00\xba\x085'
b'NC\xf8t\x1b\xaf\xbeN\x9e\xa5R\xb8{/\x02\x00\x00\x00@\x00\x02\x00D\x00'
b'\x11\x0c\x02\x00\x00\x00L\x00\x03\x00P\x00\xc9\xdaW8Gs\xaag\x07G')
Результат разбора:
'A1': -9134156713318338004,
{'A2': {'B1': 'onyz',
'B2': 3211097541,
'B3': 41677,
'B4': 14883,
'B5': 38456,
'B6': [{'C1': 12155,
'C2': [16780, 10938],
'C3': [-1785462685, 1629543593]},
'C1': 3089,
{'C2': [-17920, 13576],
'C3': [1962427214, 1321119515, -1202543202]}]},
'A3': -0.7798859778732845,
'A4': 0.78268387481619,
'A5': -32725,
'A6': 1918,
'A7': {'D1': 56009, 'D2': 5118173483306006615}}
Пример 2
Двоичные данные:
b'CWJW\xa3X\xb4\x0e|\x85\xe69\x04\x00\x00\x00<\x00\x00\x00\xd8\xfb\x7f2'
(b'\xe3S\x1c\xb2\xd3M\x02\x00\x00\x00b\x00\x00\x00\xf8\x07\x0bg\xd0\x0e'
b'\xe6\xbf\xc68A\xb6M\x97\xed\xbf\x05\x8b\xf3\xf3z\x00kasy\xb40p\x03\xcd%\xb3|'
b'7\xce\xf6\x0f\xa1\xc5\xd5q\xd5x\xe7\x84WaopF\x9a\x9b\xe0\xf5O+\xaf'
b'\t\x0f&\xcd\x02\x00\x00\x00@\x00\x03\x00D\x00\xa0\xc8\x03\x00\x00\x00'
b'P\x00\x03\x00V\x00\xa2\xae\xa5\x9b\xd0\xcf\x06m_\xdd')
Результат разбора:
'A1': 4172168872674482339,
{'A2': {'B1': 'kasy',
'B2': 847248344,
'B3': 21475,
'B4': -19940,
'B5': 19923,
'B6': [{'C1': -13018,
'C2': [12468, 880],
'C3': [2092115405, 267832887, 1909835169]},
'C1': -14176,
{'C2': [30933, -31513, 24919],
'C3': [-1706659729, 1341513883, 252292907]}]},
'A3': -0.6893083584366186,
'A4': -0.9247196731246496,
'A5': -29947,
'A6': -3085,
'A7': {'D1': 44706, 'D2': 15951588281193372581}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x8 0x4d 0x59 0x4e 0x4a
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | Размер (uint16) и адрес (uint32) массива структур B |
3 | Структура C |
4 | int8 |
5 | Массив uint8, размер 6 |
6 | uint8 |
7 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры D |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | int32 |
3 | Размер (uint16) и адрес (uint32) массива uint64 |
4 | uint16 |
5 | Размер (uint32) и адрес (uint16) массива uint32 |
6 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x08MYNJ\x02\x00\x00\x00!\x00\x00\x00\x03\x00#\x00\x00\x00i\x005\x0c"'
(b'i \x89\x96\xf0\x15\x95\x07\x9dls\xaf\xd2w/;\xbfw\nF\x17\xf9>\xa2H\xc9Qe'
b'>z\x03\x04G\xa3\xa5s\xd1\xfb2\xd47\xd6\xb2C\x03\x0b\x86\xa8\x1fZv5'
b'\r0\x08\xd44PY\xbb\xef\xad\xdfj\x0c0\xbaZ\xf3\xae\x1d\xc1*\x8cA\x0b'
b';K\xb9\x9c\xda\xb7\xaex\x0f\xce\xc3\xe2|\xc6\x1eo\xc1\x05\x005\x00\x00\x00H'
b'U\x03\x00\x00\x00]\x00\\\x86')
Результат разбора:
'A1': 'ls',
{'A2': [{'B1': 53935, 'B2': -0.7311930060386658},
'B1': 2679, 'B2': 0.4865056872367859},
{'B1': 18594, 'B2': 0.2239447981119156}],
{'A3': {'C1': {'D1': 8998970295229918903,
'D2': -1049682234,
'D3': [15092588896938361722,
235228238682796795,
951797025709000203,
17274498996728236080,
17535532814649974701],
'D4': 21832,
'D5': [717299118, 990593420, 3667704139],
'D6': -31140},
'C2': 3125},
'A4': 34,
'A5': [105, 32, 137, 150, 240, 21],
'A6': 149,
'A7': 40199}
Пример 2
Двоичные данные:
b'\x08MYNJ\x02\x00\x00\x00!\x00\x00\x00\x04\x00#\x00\x00\x00S\x000\xder'
(b'}\x08\xa6\x1a\xe4\xaf\x04-Vfk\xef\x8d\xd4h\x8d\xbc\x08\xee\x98\xcf\x1e?\xe0'
b'\xd1-<Y>\x033N-R?*\xe2\xa3\xd5?v\x96\xda\xf8l\xc3$\xd8\xf9\x81q\xec'
b'\xd9>\x9ar\xb7\x89\x10[\xd5Df\x82B\x07a\xa1\x14\x9f\x04\x02\x00;\x00\x00'
b'\x00\xf4$\x02\x00\x00\x00K\x00,L')
Результат разбора:
'A1': 'fk',
{'A2': [{'B1': 36335, 'B2': -0.017261900007724762},
'B1': 60936, 'B2': 0.6203551292419434},
{'B1': 53728, 'B2': 0.21214361488819122},
{'B1': 13059, 'B2': 0.821003794670105}],
{'A3': {'C1': {'D1': 6991630074344953179,
'D2': 77534369,
'D3': [15750906763314192938, 8179093105006570744],
'D4': 9460,
'D5': [2587810284, 277460850],
'D6': 19500},
'C2': -8656},
'A4': 114,
'A5': [125, 8, 166, 26, 228, 175],
'A6': 4,
'A7': 22061}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x43 0x51 0x48
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур B |
2 | int16 |
3 | Адрес (uint16) структуры C |
4 | Адрес (uint32) структуры E |
5 | uint64 |
6 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | uint32 |
3 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив float, размер 8 |
Структура E:
Поле | Описание |
---|---|
1 | Массив int64, размер 3 |
2 | int8 |
3 | uint32 |
4 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BCQH\x02\x00\x00\x00\x1f\x00\x14\xdd-\x00[\x00\x00\x00\xceCr\x92\x97e'
(b'\x07\xc36\x11\x15$\x9c\x1b\x00\x00\x00\x1d\x00\x00\x00plmhfj\x06\x00\x00'
b"\x00'\x00Ek\xdc0\x86\xe6\xb2E\xc4r\xd0=\x97F\x18?[\xb7E\xbf\t\xc3\xf6>\xfc"
b'\xe6\xe4>\xd1`\xc5\xbe\xd8h\xd3>7\xe0N\xbe\xbco\xfe\xc7\x84bo\xa3\xa3'
b'<\xeeh\x91K\xc6Mi\xd1\x9d&\xca-\xe2v\x13GK\x16\xd6.\xe3q\x9a')
Результат разбора:
'A1': [{'B1': 17, 'B2': 21}, {'B1': 36, 'B2': -100}],
{'A2': -8940,
'A3': {'C1': 'plmhfj',
'C2': 819751749,
'C3': {'D1': 1169352326,
'D2': [0.10178139805793762,
0.5948271155357361,
-0.7723290324211121,
0.48195675015449524,
0.4470747709274292,
-0.38550427556037903,
0.41290926933288574,
-0.20202718675136566]}},
'A4': {'E1': [-6670004200681869380, 5604249874211945635, 8566459787466625385],
'E2': 19,
'E3': 3591785287,
'E4': -1703812306},
'A5': 14053312863904351182,
'A6': 54}
Пример 2
Двоичные данные:
b'BCQH\x03\x00\x00\x00!\x00K\xb4/\x00]\x00\x00\x00p\x88\xcd5\xec\xce'
(b'\x9e\xcd\xab_\xcd3\x05W7\x1b\x00\x00\x00\x1d\x00\x00\x00\x1f\x00\x00'
b'\x00ct\x02\x00\x00\x00-\x00\x0c\xa8\xf2^L\xeah\xee\xba\n\xb3\xbe\xc4g!'
b'\xbf\x19\xc7K?:\xd1l>\\\xae\x14\xbe\xbe\xdeD\xbf\xdcl\x83\xbe\x87ST'
b'?\xf4Q\x03\xb1W\xcf2\x1b\x83\x96\xd0\x14\xf7\n\xb1I\xa5|i\x0c,\x89\x00'
b'i\x8f\xea\x8d\x08_\x12U\x06)')
Результат разбора:
'A1': [{'B1': 95, 'B2': -51}, {'B1': 51, 'B2': 5}, {'B1': 87, 'B2': 55}],
{'A2': -19381,
'A3': {'C1': 'ct',
'C2': 1592961036,
'C3': {'D1': 3999853132,
'D2': [-0.3496912121772766,
-0.6304895877838135,
0.7960067391395569,
0.23126688599586487,
-0.14519637823104858,
-0.7690237760543823,
-0.2566899061203003,
0.8293995261192322]}},
'A4': {'E1': [1959856763398476276, 5310037491968939651, 7566198196262239397],
'E2': -113,
'E3': 1594396138,
'E4': 688280850},
'A5': 14816507338005776496,
'A6': -85}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x41 0x42 0x52 0x7f
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Адрес (uint16) структуры B |
3 | Адрес (uint32) структуры C |
4 | Массив адресов (uint16) структур E, размер 4 |
5 | Массив uint8, размер 6 |
6 | uint8 |
7 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | uint8 |
4 | Размер (uint16) и адрес (uint32) массива char |
5 | uint32 |
6 | double |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | int16 |
3 | double |
4 | int8 |
5 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint16) массива int16 |
3 | uint64 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | int16 |
3 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZABR\x7f7\xa7\x00 \x00\x00\x00T\x00e\x00s\x00\x81\x00\x8f\x89\x01\x1b'
(b'\x1161\xbc\xa5\xeajt\xf4\x0b#>\x00\x02\x00\x00\x00\x1eA\x8f\xb2b\xbf\xcb'
b'K\xe9S%\xe4pp{\x9b\xaa\xa5\x14\x1c\xa2\xbf\xd4\n\xf9U\xaf\xba$\x00\x00'
b"\x00\x04\x006'\xcc\xdb\x99\xfa\x8b\xd6\xcd\x00\x00\x00>p\xf1\xbf\xed"
b'\xc1\xe8a\r&\xb06;V\x05\x94QND\xedqO\xc2\xc8\x15\xd7"\xc5\xcc,#\x88O'
b'\x83d\xdeIv\xb6\xea\xf3\x19\xae\xae\xe8E\xaft\xbd;\xb1\xe8:\x9a\xa2^\x84'
b'_\x86\xee\xf2\x8b"\xe3\x03\xd6\xe7\xcf.\xee')
Результат разбора:
'A1': 14247,
{'A2': {'B1': -3061,
'B2': 35,
'B3': 62,
'B4': 'jt',
'B5': 1099936354,
'B6': -0.21325413284265293},
'A3': {'C1': {'D1': -0.31316979759040664,
'D2': [28795, -25686, -23276, 7330],
'D3': 2867908517108111053},
'C2': 28913,
'C3': -0.9299203773054696,
'C4': 54,
'C5': 15190},
'A4': [{'E1': 402035663348527439, 'E2': -15672, 'E3': 366420677},
'E1': -3734570922640448290, 'E2': 18806, 'E3': 3068850969},
{'E1': -5859490679168385733, 'E2': -19992, 'E3': 983212638},
{'E1': -8908253177086008605, 'E2': 982, 'E3': 3889114862}],
{'A5': [137, 1, 27, 17, 54, 49],
'A6': 188,
'A7': 42474}
Пример 2
Двоичные данные:
b'ZABR\x7fl\t\x00 \x00\x00\x00T\x00e\x00s\x00\x81\x00\x8f\x9a+\x03n\xe4I\x95'
(b'v\xfdub\xddz1N\x00\x02\x00\x00\x00\x1e)Q\x96\xd0\xbf\xe2\xf0\xa3jk'
b'\xe9\xe8b\xb6i\xe3b,\x0e\xa4?\xdd\xb8\xa3\xb8q\xb3$\x00\x00\x00\x04\x006'
b'\x17\xe5u3\x9f\x9c:\x97\x00\x00\x00>\xe5~\xbf\xe9\xf0\xe06\xdeb\xf8\x9e\xcf'
b'\xae6\x95^+"\xde\x86\x9d\xbd\xcc?0\xa3*y\x82\xb8\xe1\xde\xd9S\xf0='
b'\xac\xf2@\xe45\xca\xdc\x82V,d\xcc\x06\xe5\x05\xcbR\xe8,\xa52([9\xe5\x84op'
b'\xd8\x8e\x17\xfeL')
Результат разбора:
'A1': 27657,
{'A2': {'B1': -8838,
'B2': 49,
'B3': 78,
'B4': 'ub',
'B5': 693212880,
'B6': -0.5918747976823484},
'A3': {'C1': {'D1': 0.46439450275538463,
'D2': [25270, 27107, 25132, 3748],
'D3': 1721911297120680599},
'C2': -6786,
'C3': -0.810653788724351,
'C4': -98,
'C5': 53166},
'A4': [{'E1': 3933153388939609757, 'E2': -16948, 'E3': 1060152106},
'E1': 8755763905807602672, 'E2': 15788, 'E3': 4064338997},
{'E1': -3829042276548162554, 'E2': -6907, 'E3': 3411208236},
{'E1': -6543122936337431441, 'E2': 28888, 'E3': 2383937100}],
{'A5': [154, 43, 3, 110, 228, 73],
'A6': 149,
'A7': 30461}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x56 0x58 0xa3
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | Структура B |
3 | uint32 |
4 | Структура E |
5 | Размер (uint16) и адрес (uint32) массива char |
6 | Массив uint8, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | float |
3 | double |
4 | Массив адресов (uint16) структур D, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | uint16 |
3 | int8 |
4 | uint16 |
5 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | int16 |
4 | double |
5 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | double |
3 | Массив char, размер 5 |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CVX\xa3^\x00#B\xb2H\x9aw?\xd8\xb8"\xd8O`\xfc:v\xa6\xc9m\xf5\xee\xbfT~\xee?'
(b"\xdc\xc7\xa1G'o8\x00J\x00]\x00p3\x84VV\x80\x97\xbf\xe3\x91\xbbq\xf5\x83pc"
b'kbep\x1f\x00\x06\x00\x00\x00\x83 \xbb\x03\xda\x87=\xfbh\x12\xf5?\xec\xb5'
b'm\xdf}2"7\xfc\xe8\x82\x16+\xc7Z\x82x\xbd?\xeaU\x8fl7b\xf6~\xc3FP'
b'\xb7\xf2\x90!\x84\x91\xe9\xbf\xe1\xf4=`\x7f\xb2\x92oV\xe4\xc2olvrje')
Результат разбора:
'A1': 6773452608931142263,
{'A2': {'B1': {'C1': 0.3862387764361441,
'C2': 14966,
'C3': -90,
'C4': 51565,
'C5': -2578},
'B2': -0.8300617933273315,
'B3': 0.44968444775234984,
'B4': [{'D1': -38,
'D2': 2268986216,
'D3': 4853,
'D4': 0.897147118093532,
'D5': 939321474},
'D1': 22,
{'D2': 734485122,
'D3': 30909,
'D4': 0.8229443658447895,
'D5': 2126726736},
'D1': -73,
{'D2': 4069532036,
'D3': -28183,
'D4': -0.5610644230597066,
'D5': 1867965634}]},
'A3': 864310870,
'A4': {'E1': 32919, 'E2': -0.6115395761263311, 'E3': 'ckbep', 'E4': 31},
'A5': 'olvrje',
'A6': [32, 187, 3]}
Пример 2
Двоичные данные:
b'CVX\xa3F\xe4+B\x14\xc6\xdaL?\xe8d\x8b\xd0\xa2y\x02\x9di\n\x19\xbdzY\xbf'
(b'a\x88\xba\xbf\xece\xbaY\xdb\x07\x0e\x00J\x00]\x00p$\x97\xf1\xc6W\x19?'
b'\xeb\xcb\xab\xa8\x81\xcaPmryqt~\x00\x02\x00\x00\x00\x83\xd1\x95\\g\x0c'
b'0\x8bI>\x86\xbf\xe9T""O\x9e\xcc\xed\xc5-\x10\xaa\xbe\xe1\xfe\xea\xe4='
b'\xbf\xeba\xa6\x11\x19\x17\x86\xb6\xc9\xde\xea\xd1L\xdc\xde\xea\xcf\x00?'
b'\xec_\xc1\xdd\xcc\xd8\x9e\x9ag \xd9jc')
Результат разбора:
'A1': 5108255440161397324,
{'A2': {'B1': {'C1': 0.7622737002273257,
'C2': 40297,
'C3': 10,
'C4': 6589,
'C5': 31321},
'B2': -0.8809925317764282,
'B3': -0.8874179606429793,
'B4': [{'D1': 103,
'D2': 204507977,
'D3': 16006,
'D4': -0.7915201826226279,
'D5': 3989122320},
'D1': -86,
{'D2': 3202481898,
'D3': -7107,
'D4': -0.8556700071282968,
'D5': 3066683114},
'D1': -47,
{'D2': 1289543402,
'D3': -12544,
'D4': 0.8866891223940632,
'D5': 2590449881}]},
'A3': 613937606,
'A4': {'E1': 22297, 'E2': 0.8686121264602864, 'E3': 'mryqt', 'E4': 126},
'A5': 'jc',
'A6': [209, 149, 92]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x55 0x41 0x43
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур B, размер 2 |
2 | Размер (uint16) и адрес (uint16) массива int64 |
3 | Структура C |
4 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | Размер (uint32) и адрес (uint16) массива int32 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив uint32, размер 4 |
3 | uint8 |
4 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | int16 |
4 | int64 |
5 | int64 |
6 | int16 |
7 | uint32 |
8 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'EUACR\x00\x00\x00w\x00\x00\x00\x03\x00\x85\x00t\x0e(L\xa3\xd6\x84\x96'
(b'\x16\x91Ye\x91D\xa4\xec\xdf|\xb3U\xdb\xa8\xc5\x18\xe8\x0f\x1b?x%\xaa\xba'
b'\x89J[%>3}0\tEK\x04!\xa2\xcaSW\xdb\x14\xd1"\xe4pvrgFp\x9b\x93\x92\xcd'
b'\xf6I\xe54\x04\x00\x00\x00F\x00\x02\x00\x00\x00J\x00nbrw\xf9~\xc3\x900Yi\x98'
b'\xbb\x0f\xccI\xce\rTz\xa0U\xa2\xba-\x03\x00\x00\x00`\x00\x05\x00\x00\x00c'
b'\x00&p<i\xccd\xc8\x01\xc3l\xb2\xbb\xe3\xd0\xa8\xd2e\xdd\x05\xc1\xb5\x80\\w')
Результат разбора:
'A1': [{'B1': 13541, 'B2': 'pvrg', 'B3': [-1818529722, 1240911250]},
{'B1': 11706,
{'B2': 'nbr',
'B3': [-1015088777, 1767452816, -871384168, 1410190921, -1571446662]}],
'A2': [128463418481733670, -3267131853132108605, 8600890906486627685],
'A3': {'C1': 116,
'C2': [2739677198, 378963158, 2439338385, 3756827716],
'C3': 124,
'C4': 2832946611},
'A4': {'D1': 6341,
'D2': 0.6057114601135254,
'D3': 9592,
'D4': 3692429818513177258,
'D5': -6764120444006485891,
'D6': 21450,
'D7': 3507805015,
'D8': 58402}}
Пример 2
Двоичные данные:
b'EUACT\x00\x00\x00q\x00\x00\x00\x04\x00\x7f\x00\xa0TaO\x19uNr\r\xd3\xa5-'
(b'\x02D#\xc5\xfc\x19a\xa9\x9f\x142\xb7\xb0\xddg\xbf\xac\xa6\x8f\x8d\xe5S\xa8X'
b'\x11\xca0\x92-\x97\xd3\x95L94\x83h\x12*\xbeG\xc1jmp4\x9d\x84\xbe%6n'
b'm\x10?\xef\xbc@\x02\x00\x00\x00F\x00\x03\x00\x00\x00H\x00bkx\xe83\x85>\xcb[.'
b'"\xc7\xae`4\t"\x03\x00\x00\x00b\x00\x03\x00\x00\x00e\x00\x8e\x0f\xb6,\x0f'
b'\x00\xe3\xfbl\xf8"\xd9\xc6K\xb4W\x95\xa3\x1bK\n|&\x0c|\x97\x07}\x88'
b'3\xf7\xf2')
Результат разбора:
'A1': [{'B1': 16572, 'B2': 'jm', 'B3': [-2070072208, 1849042366, -281079699]},
{'B1': 8713, 'B2': 'bkx', 'B3': [1048916968, 573463499, 878751431]}],
{'A2': [-296393085301682290,
6319759494526204012,
875523561221759893,
-939225335977240708],
'A3': {'C1': -96,
'C2': [424632660, 225594997, 36546003, 4240778052],
'C3': 25,
'C4': 346007905},
'A4': {'D1': 46898,
'D2': -0.905726432800293,
'D3': -22868,
'D4': -3886227523458724465,
'D5': 4128839694398886448,
'D6': -31948,
'D7': 3190428264,
'D8': 49479}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x49 0x41 0x4e
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int16 |
3 | Размер (uint16) и адрес (uint32) массива char |
4 | uint32 |
5 | Структура D |
6 | uint8 |
7 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив структур C, размер 5 |
3 | int8 |
4 | int16 |
5 | float |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив uint16, размер 7 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | Массив float, размер 7 |
3 | double |
4 | uint16 |
5 | uint8 |
6 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WIAN6=\xd1\n\xa3\xb71\x9bl#\nt\xbf\xfc\xe0\xa1M\xee\xb7\xc0r\xd7\xd9\xf2'
(b'\xa3\xefO\x84%J\xef\xb9\x8c\xf1|!\xa5\xb6\x14\x8e,\xf0\x87\xaf'
b'\xd2\xa0\xd4\xf7\x93\x92\x1f\xc3\xac\xcb_\x0b\x0c\xb8K\x02\xd4F\xc4\x9f'
b'Tf\xf8\xbf0\t\xe2\x15\x9fn\xe1~\xdbG\xeawc@\xa9\xeaR2p?!\x87\x06\x00'
b'\xa0\x00\x00\x00\x91\x9e\xa9\xa2\xa7\xc2\x0e\xbe~\x83\x7f\xbf\xa4\x8d\x14?'
b'\xb7O\xbf\xbeYK\x1f\xbf\x8f\xb9\xf5\xbeT\x89v?\xca\xb1\xc9>\x00\x1c\xc8c'
b'\x02]\xc3\xbf\xd3\x8b^\x07#v\xf3\nQ\x18<e\xec\xe0\xf5\xd3eksmwx')
Результат разбора:
'A1': {'B1': 54,
{'B2': [{'C1': 53565,
'C2': [41738, 12727, 27803, 2595, 49012, 57596, 19873]},
'C1': 47086,
{'C2': [29376, 55767, 41970, 20463, 9604, 61258, 36025]},
'C1': 31985,
{'C2': [42273, 5302, 11406, 34800, 53935, 54432, 37879]},
'C1': 8082,
{'C2': [44227, 24523, 3083, 19384, 54274, 50246, 21663]},
'C1': 63590,
{'C2': [12479, 57865, 40725, 57710, 56190, 59975, 25463]}],
'B3': 64,
'B4': -5463,
'B5': 0.9382678270339966},
'A2': -30943,
'A3': 'eksmwx',
'A4': 2729025169,
'A5': {'D1': -0.13941441476345062,
'D2': [-0.9981001615524292,
0.5802862644195557,
-0.3736550509929657,
-0.6222434639930725,
-0.4799313247203827,
0.9630329608917236,
0.39393454790115356],
'D3': -0.15127591964866838,
'D4': 35795,
'D5': 94,
'D6': 4330300149192860423},
'A6': 101,
'A7': 3556106476}
Пример 2
Двоичные данные:
b"WIAN+\x9a\xd2)\xb8G\xfb\x0e4Xh\x94\x18\xb8&-'m&\xe2\xd6\xf7\xdc\xba"
(b't\xa1\x04So\xd4\x81\xd5\rZ\xdf\x8bg@<~\x12\xec\x0bb\xe2\xa0\x88K|MX\x81'
b'\xa8"bL\xd5\xc9\x88\xfcl\xc4\xe1\xa8\x9e\x14\x08\xcf\xea.\xd9Dv\xcf\x99\xa8'
b'\x13\x16\x8d\xca\xfd<\xd7\x9f\xf1\to?t\xc2\x02\x00\xa0\x00\x00\x00'
b'\xc3\n\x95\x11\xf3\xec\r?\xf4\xb4\xbc>%\xd5X?\xfa\x02~\xbf]\xbb\xda\xbe'
b'\xc5\x0e\xfb=\x08O7\xbfp \xab;\x9cF\x1c \xceW\xee\xbfX\xac0\x03\xa5b^\xce'
b'\xe2Z\x9ey\x84\xc4\xc9"cn')
Результат разбора:
'A1': {'B1': 43,
{'B2': [{'C1': 53914,
'C2': [47145, 64327, 13326, 26712, 6292, 9912, 10029]},
'C1': 9837,
{'C2': [55010, 56567, 29882, 1185, 28499, 33236, 3541]},
'C1': 57178,
{'C2': [26507, 15424, 4734, 3052, 57954, 34976, 31819]},
'C1': 22605,
{'C2': [43137, 25122, 54604, 35017, 27900, 57796, 40616]},
'C1': 2068,
{'C2': [60111, 55598, 30276, 39375, 5032, 36118, 64970]}],
'B3': 60,
'B4': -24617,
'B5': 0.9337454438209534},
'A2': -15756,
'A3': 'cn',
'A4': 294980291,
'A5': {'D1': 0.5543968081474304,
'D2': [0.3685680627822876,
0.8470023274421692,
-0.9922329187393188,
-0.4272107183933258,
0.12258676439523697,
-0.7160496711730957,
0.0052223727107048035],
'D3': -0.9482184054524683,
'D4': 44120,
'D5': 48,
'D6': -7036062091838315261},
'A6': 121,
'A7': 583648388}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x69 0x44 0x43 0x43 0x59
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива структур B |
2 | Массив char, размер 6 |
3 | uint32 |
4 | Структура C |
5 | Размер (uint32) и адрес (uint32) массива char |
6 | int16 |
7 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int8, размер 3 |
2 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'iDCCY\x00\x02\x00\x00\x00,rucbaz\xed\x00E2\x80\x9a_\xde=,\xd5\xf4]\x00\x00'
(b'\x00\x04\x00\x00\x00>p\x1e\x00\x00\x00B\xee\xfaV\\Ca\xb6\rU\x84\xa2\x8a'
b'.\xb4+K\xcamdgjd\x1b\xf9\xde/')
Результат разбора:
'A1': [{'B1': 17220171079471969805, 'B2': 85},
{'B1': 9557353292429478858, 'B2': 109}],
{'A2': 'rucbaz',
'A3': 3976217906,
'A4': {'C1': 2157600734, 'C2': 0.042196229100227356, 'C3': 93},
'A5': 'dgjd',
'A6': 28702,
'A7': {'D1': [27, -7, -34], 'D2': 47}}
Пример 2
Двоичные данные:
b'iDCCY\x00\x02\x00\x00\x00,qdlbky\x9e\x8f\xc0\xff%\xf7\xd3\x19\xbe\xf6\x9a'
(b'U\xf7\x00\x00\x00\x04\x00\x00\x00>0i\x00\x00\x00B\xc7\xe1\xe8\xac\xe22~\xc2'
b'n)\xf5Q\xc3A\x87,l\x14lohl\xcfX>7')
Результат разбора:
'A1': [{'B1': 14403048912534535874, 'B2': 110},
{'B1': 3023412623909006444, 'B2': 20}],
{'A2': 'qdlbky',
'A3': 2660221183,
'A4': {'C1': 636998425, 'C2': -0.48164620995521545, 'C3': 247},
'A5': 'lohl',
'A6': 12393,
'A7': {'D1': [-49, 88, 62], 'D2': 55}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x49 0x45 0x90
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | Структура B |
3 | uint8 |
4 | Адрес (uint16) структуры G |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | int8 |
3 | Адрес (uint32) структуры C |
4 | Размер (uint32) и адрес (uint32) массива int8 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | int64 |
3 | int8 |
4 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур D |
5 | uint32 |
6 | Структура E |
7 | Адрес (uint32) структуры F |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
3 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | Массив int32, размер 5 |
2 | uint16 |
3 | Массив double, размер 2 |
4 | uint64 |
5 | double |
6 | double |
Структура F:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
Структура G:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
3 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AIE\x90\xbf\xd6\x99\xa6\xb6gi\xa4\xb6^\x00\x00\x00>\x00\x00\x00\x03\x00\x00'
(b'\x00\x99\xe1\x00\xa0\xc2jM$\xe9\xffk\xacI}\xf4\xa4\xfa\xa6\x16'
b'\xe1\x00\x1d\x00!\x00%\x00)P?\xed\xdb.\xdclH"*\x03$\x91\x895\x92Z\x99\x0f'
b'\xbe\x9e\xaf$D=z\x00\x04\x00-!\tPM|3\xab\xda\x1bO\x8fr\x1d\xaa\xc9\x8b"'
b'57\xbd\x13GU\xb0\r\x9a?\xe0\xfc\x04\xa5\x10\xa8\x84\xbf\xdd\xed]P\xb3V'
b'\xbca\xfb\xa1\xfa\xff\x89\xed}?\xe4E\x04W\xc8\xf4 \xbf\xdd\x92\xc0?b\x99'
b"\xe8\x00\x00\x005t\xf90\xa0\xa7\x81\x99'\x8a\x00\x04\x00\x9c=\xf48\x16")
Результат разбора:
'A1': -0.3531281262673025,
{'A2': {'B1': -74,
'B2': 94,
'B3': {'C1': 3027303582013952602,
'C2': -7417500472503417795,
'C3': 122,
'C4': [{'D1': -62, 'D2': 106, 'D3': 19748},
'D1': -23, 'D2': 255, 'D3': 27564},
{'D1': 73, 'D2': 125, 'D3': 62628},
{'D1': -6, 'D2': 166, 'D3': 5857}],
{'C5': 554258509,
'C6': {'E1': [2083761114,
458198898,
497731979,
573913021,
323442096],
'E2': 3482,
'E3': [0.5307639335562873, -0.4676125801173432],
'E4': 7060414940234509693,
'E5': 0.6334249224233908,
'E6': -0.46208196821171876},
'C7': {'F1': 80, 'F2': 0.9330057435165637}},
'B4': [116, -7, 48]},
'A3': 225,
'A4': {'G1': 10122, 'G2': [160, 167, 129, 153], 'G3': 0.11924760043621063}}
Пример 2
Двоичные данные:
b'AIE\x90\xbf\xb7!\xec\x01\r\xa6\xf0\x0b\xbb\x00\x00\x002\x00\x00'
(b'\x00\x04\x00\x00\x00\x8d\xf8\x00\x93~\t\xd2\xe4\xbd\xb7\x93\xc0\x00\x1d\x00'
b'!a?\xdf\xfb\xa6\xab\rI\xd8\xcb\x92\xfa\x9dC\x0f\xc5G\xae\xc7\x01\xe6\x95B'
b'\xa1z\xf3\x00\x02\x00%LZ<\xae\xe0\xbcL\x81`\x179\xe9\x82\xc0Vb\xf7'
b'\xd3\x88\xae\r\x0e0B\xe4\x8c?\xe1\xd5\xf2\xc3h\xbc\xf8?\xe4*5\xca\xae*'
b'\xe8\x1e\xe8p\x02\xfd\x02U\xdd\xbf\xde0sg\nDP\xbf\xe2\x11\xb6z\xba`'
b'2\x00\x00\x00)\x0e\x06\xf5\x8e\xb5\xb7\xd5a\x00\x02\x00\x91>\x9b\x1c_')
Результат разбора:
'A1': -0.09036135698047665,
{'A2': {'B1': 11,
'B2': -69,
'B3': {'C1': -3777681584068508345,
'C2': -5852707100886392454,
'C3': -13,
'C4': [{'D1': 126, 'D2': 9, 'D3': 53988},
'D1': -67, 'D2': 183, 'D3': 37824}],
{'C5': 1280982190,
'C6': {'E1': [-524530559,
1612134889,
-2101324190,
-137131858,
219033666],
'E2': 58508,
'E3': [0.5573667351326597, 0.630152603015941],
'E4': 2227153173871744477,
'E5': -0.47170720160017243,
'E6': -0.5646622082740633},
'C7': {'F1': 97, 'F2': 0.4997345610073842}},
'B4': [14, 6, -11, -114]},
'A3': 248,
'A4': {'G1': 54625, 'G2': [181, 183], 'G3': 0.30295082926750183}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x51 0x49 0x9b
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint32) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур D |
2 | uint16 |
3 | Адрес (uint16) структуры E |
4 | Структура F |
5 | uint16 |
6 | uint16 |
7 | Массив uint32, размер 7 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
3 | uint32 |
4 | uint32 |
5 | int64 |
6 | Массив int16, размер 4 |
7 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | uint8 |
Структура F:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint16 |
3 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FQI\x9b\\D\x1dL\x00\x00\x00\x03\x00\x00\x00A\x00\x00\x00\x02\x00\x00\x00D'
(b"B\x03\x00\x88'\xf9K\xae\xa6\x1b\x12+\x8e/S\xceA\xdc_\xd6\x8f\x82\xc61"
b'\xc0V\x90\xb1w\rP!\xc2\xd6\x7f\xfdy}\x02+\x13daw\xbb\x85\x04\x8d \xc5G^'
b'\xa1q\x12\x08+e?8\xe4z-0\xbb!\n\x81\xd6m\x1f\xfb\x0f\x11\x95Y;8\x9e\xd3'
b'%OA\xc5\x05\x898\xda\xa0\xdc8\xea/u\xb6\xb1\xfaE\xd4\x81\xb0\\%\x8c\xa2\rC$'
b'\xf56\x1c\xbe?\xe6\xa2\x9b\x13\xe0\xd9\x04\x0c')
Результат разбора:
'A1': {'B1': 1547967820, 'B2': 'daw'},
{'A2': {'C1': [{'D1': -1148910451,
'D2': 8389,
'D3': 1197384049,
'D4': 302525285,
'D5': 4555642236480568097,
'D6': [2689, -10643, 8187, 3857],
'D7': 2505653048},
'D1': -1630329521,
{'D2': 16837,
'D3': 92879066,
'D4': 2698787050,
'D5': 3419840367582106753,
'D6': [-20388, 9612, -24051, 17188],
'D7': 4113964222}],
'C2': 16899,
'C3': {'E1': 0.7073493374107618, 'E2': 12},
'C4': {'F1': 10233, 'F2': 19374, 'F3': 166},
'C5': 6930,
'C6': 11150,
'C7': [794021441,
3697268367,
2194026944,
1452323191,
223355330,
3598712185,
2097294099]}}
Пример 2
Двоичные данные:
b'FQI\x9b\x93,\xde\xe8\x00\x00\x00\x02\x00\x00\x00A\x00\x00\x00\x02'
(b'\x00\x00\x00C\xfb\xfd\x00\x87\x9d\x1e\xa1\x8b\x06;(\xd9\x95\x9e\x96\xc9'
b"l\xd7\xe8)\xa553dy9\xda\x15\xdf\xcf\xbe'VC\x92g\xd1\x7fY\x8dNtz\xcb"
b'\xd1\xca\xda\x0c,\x1a\xc4\x02\x8d\xde\xc5\xa2j\x17\x97N\x06\xc8\xca\xad'
b'\xd6\xcb\x12\xef.\x07\xc7\x03\xdb\xa3\xf8\x14\r\xc1\xa1\xa4\x8a\x81D\x8e'
b'z\x92\x11\x85\xd25\xb7\x0fm\x003l\x847"\xbb_\xb0\xb8\xe8]\xf3\xc1~'
b'\xb9K\x17\xbf\xca\xc2\xf3@&\x95\xe0\xac')
Результат разбора:
'A1': {'B1': 2469191400, 'B2': 'tz'},
{'A2': {'C1': [{'D1': -875443494,
'D2': 3116,
'D3': 449053325,
'D4': 3737494122,
'D5': 1699913175401147862,
'D6': [-13550, -4306, 1991, 987],
'D7': 2750944269},
'D1': -1046371190,
{'D2': -32444,
'D3': 2390397457,
'D4': 2245146039,
'D5': 1111544903894316834,
'D6': [-17569, -20296, -6051, -3135],
'D7': 2126072599}],
'C2': 64509,
'C3': {'E1': -0.20907440788611975, 'E2': 172},
'C4': {'F1': 40222, 'F2': 41355, 'F3': 6},
'C5': 15144,
'C6': 55701,
'C7': [2660682092,
3622316453,
892560505,
970593759,
3485345622,
1133668305,
2136575310]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x59 0x53 0x54 0x46 0x7d
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур B, размер 5 |
2 | Адрес (uint16) структуры D |
3 | int32 |
4 | int32 |
5 | double |
6 | double |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 2 |
2 | Массив int8, размер 4 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
3 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | uint32 |
4 | Массив int8, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'YSTF}3\x00E\x00W\x00i\x00{\x00\x83\x00\xc5c*_\xfc\xcf\x89\xbf\x18\xa6\x9d'
(b'\x17\x07\xe8\xc2?\x98b\xee\xa9\x8fw\xcb?\xd3\xf8\xd83\xc3\xab3\tz\xcd)'
b'\x00.\x00\x16\x05W\x95\xdc_\x19\xa9P9\xa6\x11\x88\xa2;\x00@\x00\x9d$\xa3'
b'\x98\x17\xe3\xba\xdf\xeb \xb6\x82W)M\x00R\x00\x15&\xefB\x84p\xf5\x83\xd3'
b'\xd1:\rto_\x00d\x007\xe1\x0cT@\xb0&!\xad\xb8\x95\x95VUq\x00v\x006'
b'f\xae\xe6\xc1\xc3]e\xac\x87pI\xf3\xc7U\x83]zF5"\xed"')
Результат разбора:
'A1': [{'B1': [{'C1': -1837, 'C2': 216, 'C3': 49971},
{'C1': 13227, 'C2': 9, 'C3': 52602}],
{'B2': [22, 5, 87, -107]},
'B1': [{'C1': 24540, 'C2': 25, 'C3': 20649},
{'C1': -22983, 'C2': 17, 'C3': 41608}],
{'B2': [-99, 36, -93, -104]},
'B1': [{'C1': -7401, 'C2': 186, 'C3': 60383},
{'C1': -18912, 'C2': 130, 'C3': 10583}],
{'B2': [21, 38, -17, 66]},
'B1': [{'C1': 28804, 'C2': 245, 'C3': 54147},
{'C1': 15057, 'C2': 13, 'C3': 28532}],
{'B2': [55, -31, 12, 84]},
'B1': [{'C1': -20416, 'C2': 38, 'C3': 44321},
{'C1': -27208, 'C2': 149, 'C3': 21846}],
{'B2': [54, 102, -82, -26]}],
'A2': {'D1': 1700643777,
'D2': -8983054033997494356,
'D3': 893811293,
'D4': [34, -19, 34]},
'A3': 1596613573,
'A4': -1081487364,
'A5': 0.14770592358699797,
'A6': 0.21458621785565835}
Пример 2
Двоичные данные:
b'YSTF}3\x00E\x00W\x00i\x00{\x00\x83\x00\xfb\xc13\x80*\xdcD\xb2\xfc\x0cK'
(b'\x8b\xcfb\xeb\xbf\x90\x01[\x02\xee\x1c\xc1?\xad\x80\xcc=\xcc{\x96'
b'\xd7\xed\xd5)\x00.\x00Y\x96\x8fS\xaf\xea\xbf\x8f\r\x18Uw\xeb\xcc;\x00@'
b'\x00\x9f\x17\xd8\xef\x9e\x9d9\xe9\xd8\x9e\xd42";M\x00R\x00l=C\x00\x8e'
b'\xb2\xd0\xdbQ\xccd\xdc\x15V_\x00d\x00\x828/\xc9\x99)y\xb2\x05W\xb2\x98*\xb2q'
b'\x00v\x00\x99X\xa1=;=\xd2\x8f\x1c\xba6\xe1\x8f=I\x1b\xea\xea>\xbe\xf7.\\')
Результат разбора:
'A1': [{'B1': [{'C1': -32595, 'C2': 204, 'C3': 52285},
{'C1': -27013, 'C2': 215, 'C3': 54765}],
{'B2': [89, -106, -113, 83]},
'B1': [{'C1': -5457, 'C2': 191, 'C3': 3471},
{'C1': 21784, 'C2': 119, 'C3': 52459}],
{'B2': [-97, 23, -40, -17]},
'B1': [{'C1': -25186, 'C2': 57, 'C3': 55529},
{'C1': -11106, 'C2': 50, 'C3': 15138}],
{'B2': [108, 61, 67, 0]},
'B1': [{'C1': -19826, 'C2': 208, 'C3': 20955},
{'C1': 25804, 'C2': 220, 'C3': 22037}],
{'B2': [-126, 56, 47, -55]},
'B1': [{'C1': 10649, 'C2': 121, 'C3': 1458},
{'C1': -19881, 'C2': 152, 'C3': 45610}],
{'B2': [-103, 88, -95, 61]}],
'A2': {'D1': 2412920123,
'D2': 1966170400492010012,
'D3': 3191794410,
'D4': [-9, 46, 92]},
'A3': -2144091653,
'A4': -1304110038,
'A5': -0.8558118553704896,
'A6': 0.1336953650952748}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x46 0x57 0x4e
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур B |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | Адрес (uint32) структуры C |
4 | Размер (uint16) и адрес (uint32) массива float |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | double |
3 | Размер (uint16) и адрес (uint32) массива uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int8, размер 6 |
2 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PFWN\x02\xc4f\x07[<\xe0?\x02\x00\x00\x00\x82\x00$P\x00\xdb\xfd\x04'
(b'\xce\x18\xdb\xf4\xe9\xf8\r\x03a\xa0P\x11\xbb\xa3\x0c\xa9\xbf\x02\x00\x12'
b'\x00\x00\x00\xd0\xf2F?)\x98\xbf\xbd(yo$|\x86\xc7\xbf]\x1a\x00\x00\x00'
b'\x02\x00/\x00\x00\x00\xc8\xcc\xc8\xd8\xa3\x86\\\xc7\x95\x0bg\xdd\xc2V'
b'\xb5\\g\xba\xd5\xdc\x8c\xec?\x02\x00J\x00\x00\x00\xdb%\x9a>\xd8/f?\x98'
b'\x93\xdf4~c\xc9\xbf\xeaR\x00\x00\x00\x02\x00g\x00\x00\x007\x00\x00\x00o\x00'
b'\x00\x00')
Результат разбора:
'A1': 0.5073676247176311,
{'A2': [{'B1': -0.18379165438722933,
'B2': 93,
'B3': {'C1': {'D1': [-37, -12, -23, -8, 13, 3], 'D2': 97},
'C2': -0.0489245572904633,
'C3': [3674230820, 416154877]},
'B4': [0.7771425247192383, -0.09355194121599197]},
'B1': -0.1983487852259287,
{'B2': -22,
'B3': {'C1': {'D1': [-107, 11, 103, -35, -62, 86], 'D2': 181},
'C2': 0.8921951460244872,
'C3': [3637038280, 3344729763]},
'B4': [0.30107006430625916, 0.899167537689209]}]}
Пример 2
Двоичные данные:
b'PFWN\xec\x99y\x85\xba\x8b\xdf\xbf\x02\x00\x00\x00\x82\x00\x99\xe6Vh\xbbA'
(b't\xc8\xf3A\xca\xe1\t\xf9LH\xe3\xe7\x8d\xa3\xe6\xd0?\x02\x00\x12'
b'\x00\x00\x00\xe3\xc7~\xbf\x9d-\x05>~.\x8f\xccEU\xe3?\xb3\x1a\x00\x00\x00'
b'\x02\x00/\x00\x00\x00\x85\x87S~(0\x12\x14K\xce\nz\x8f|\xcf\x08\xcc\x84'
b'p\xb2a\xe6\xbf\x02\x00J\x00\x00\x00\xe4\xd6\xc8\xbeB"\x82\xbd\x90'
b'\x95\xf0\xb4?\xe7\xb9\xbf<R\x00\x00\x00\x02\x00g\x00\x00\x007\x00'
b'\x00\x00o\x00\x00\x00')
Результат разбора:
'A1': -0.4929033568827481,
{'A2': [{'B1': 0.6041592593478098,
'B2': -77,
'B3': {'C1': {'D1': [-13, 65, -54, -31, 9, -7], 'D2': 76},
'C2': 0.26407708032597954,
'C3': [1750525593, 3363062203]},
'B4': [-0.9952375292778015, 0.13005681335926056]},
'B1': -0.10118482749438429,
{'B2': 60,
'B3': {'C1': {'D1': [75, -50, 10, 122, -113, 124], 'D2': 207},
'C2': -0.6994259069091422,
'C3': [2119403397, 336736296]},
'B4': [-0.3922644853591919, -0.06354190409183502]}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x4f 0x5a
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
3 | Адрес (uint16) структуры B |
4 | int32 |
5 | int16 |
6 | int8 |
7 | uint32 |
8 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | Структура E |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив структур D, размер 2 |
3 | float |
4 | uint16 |
5 | Массив int8, размер 5 |
6 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив float, размер 7 |
2 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | Массив float, размер 7 |
4 | Размер (uint32) и адрес (uint16) массива uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VOZ>\xb7\xe4\x03\xf6\x00&\xc1\xceE\xf8\x88\xb2y\xb1\xdb\xb5\x90\xac\xf0\xf6'
(b'\x83\x83\xe8;\xf6dyp\xaf\x1er\xf8T\xaf*"L\xe5\xbe#\xf7\x9e>\x9c\x8cf\xbf\r'
b'L\x1c\xbfiw\xe8?{)\xcd\xbe\x82^C?v9s^w\xd6\x16?m\x12@\xbfu\xb2\xae\xbe\xdb'
b"\xd3\xa7?'-\xb9\xbf%\x80<>\xcc\xd3e\xbfS\xfdcL\xe9\xbaQ\xbe\xf0\x85h\xd4\xf1"
b'5Hk\x1e6M\xa9.\xba~?Rn#\xad\xa4\x82\xbf\xe2\x14G\x18\xec)\x94\xbf $^\xbe:*'
b'\xc7\xbe\xc9a\xbc\xbdma\xd5<\xb9^\xe9\xbf\x00;\x0c?C\xe9\xd1\x00\x00\x00'
b'\x02\x00\x16')
Результат разбора:
'A1': 0.35916146636009216,
{'A2': -10,
'A3': {'B1': {'C1': 706890981,
'C2': [{'D1': [-0.160124272108078,
0.30575865507125854,
-0.5519425868988037,
-0.9119858741760254,
0.9811065793037415,
-0.2546254098415375,
0.9618141055107117],
'D2': 1584911894},
'D1': [0.9260597229003906,
{-0.9597576856613159,
-0.4293491542339325,
0.653041422367096,
-0.6464879512786865,
0.4000503122806549,
-0.8280851244926453],
'D2': 1290386001}],
'C3': -0.46976780891418457,
'C4': 54513,
'C5': [53, 72, 107, 30, 54],
'C6': 5596055390501425774},
'B2': {'E1': 598582402,
'E2': -0.5649753081100237,
'E3': [-0.6255549192428589,
-0.18180380761623383,
-0.39332377910614014,
-0.05795462802052498,
0.022628264501690865,
-0.5009009838104248,
0.7652865052223206],
'E4': [17363210015933724260, 8750686621293630639]}},
'A4': -1043446280,
'A5': -30542,
'A6': 121,
'A7': 2983966096,
'A8': -84}
Пример 2
Двоичные данные:
b'VOZ\xbf=F\xf4`\x00&.0N$\xce\xad\x19tK\x0e\xf4\xddz\x80\xcd\xcf>\xee'
(b"h\x98\xda\x11\x15:l\xeb\xda\xa5\xde\x9d'W>\x95b\xbd\xbfP#6\xbeU\xc4C?8"
b'\xab\xea\xbfg\xeds\xbe\xd3!\\\xbe\xd0\x1d\xcc\xd9Z\xce\xa6>\xa1'
b'\x9e\xf7\xbe\xf4\xb3\xb6\xbe\x00\x03\x05\xbf#p\xe8\xbe\xbc\xb8\x1c\xbeD'
b'\xdf\xf0\xbd\xe9{d\xb5\xe8\x1e\x1c>\xbe\xe5\x8e\x1f+e\x85\xb9/>5\xb0\x9c'
b'\xf1\x98cW\xf8B\x94X^\xbf\xc6R4\xa0\xf6\xf2\x10?1\x0f\xef>\xe8\x9c'
b'\xaf\xbf\x1d\xbf\xd4>\xdf({\xbfLbl?ce0?*t.\x00\x00\x00\x02\x00\x16')
Результат разбора:
'A1': -0.7393639087677002,
{'A2': 96,
'A3': {'B1': {'C1': 3734841175,
'C2': [{'D1': [0.2917689383029938,
-0.8130372762680054,
-0.2087564915418625,
0.7213732004165649,
-0.9059669375419617,
-0.4123638868331909,
-0.40647733211517334],
'D2': -648360282},
'D1': [0.31566593050956726,
{-0.4779335856437683,
-0.12501151859760284,
-0.6384415626525879,
-0.36859214305877686,
-0.1922605037689209,
-0.11400488018989563],
'D2': -1243079140}],
'C3': 0.3728451132774353,
'C4': 7979,
'C5': [101, -123, -71, 47, 62],
'C6': 3868764641368954872},
'B2': {'E1': 1117018206,
'E2': -0.17438371524430396,
'E3': [0.6916493773460388,
0.45432040095329285,
-0.6162083148956299,
0.4358557164669037,
-0.7983767986297607,
0.8882627487182617,
0.6658352613449097],
'E4': [8827281559643908248, 15713363915552053925]}},
'A4': 774917668,
'A5': -12627,
'A6': 25,
'A7': 1951076084,
'A8': -35}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x4a 0x50
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | double |
3 | int8 |
4 | int64 |
5 | int8 |
6 | uint16 |
7 | int64 |
8 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | float |
3 | Структура E |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | uint16 |
3 | Массив uint8, размер 5 |
4 | int16 |
5 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | double |
3 | int8 |
4 | uint32 |
5 | int8 |
6 | float |
7 | Массив int16, размер 5 |
8 | Массив uint8, размер 8 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | int16 |
3 | int8 |
4 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DJPN\x00\x00\x00\xa9j\xdbH\xf7\x02\xfe\tW\xe10z\x00\x00\x00<\xfe\xfd\\\x84N'
(b'\x13\xa7\x7f\xd1\x98\xaa\x95\xce>\xc6\xbf\xee\xdb\t\xc6d\xc7R\xe0\r'
b'\x1f:o\xca\x00r\xa7\xeb\xbfDZ\x1e\x06\x03\xf6\x87F\xaf\r\xd2\xab\r\xce\xeb'
b'\x8b\xe0\xd3\x80\xc3|Ij\x05\x14*\xc6\xaa\xb6\xc4\x19\x1b\xeb\xe4I\xde?\xfdV'
b'W\xb4\x8dm\x87\xe7\xb4\xbd5z\xa5\x99)d\xcfc\x18FY\xb4\x16\x8eI\x92'
b'\xa6\x10\xa1l\xf1\xde\x87z\x02\xa5\xb0\xe9\x13\xd4\xc3\xcf\xb8?\xe3\x90Ml;C'
b'M\x1c\x1f>\x9cDX\xb0\xee\xf97jJ~\xeb\xbf\xe0\xcb\xd8%\xa7A')
Результат разбора:
'A1': {'B1': [{'C1': {'D1': 13162550744970521161,
{'D2': 0.47326014480168177,
'D3': -3,
'D4': 2377406294,
'D5': 109,
'D6': -0.08833222836256027,
'D7': [31285, -26203, 25641, 25551, 17944],
'D8': [89, 180, 22, 142, 73, 146, 166, 16]},
'C2': 27305,
'C3': [219, 72, 247, 2, 254],
'C4': 22281,
'C5': 12513},
'C1': {'D1': 11890200690191068321,
{'D2': 0.09692024161987578,
'D3': -29,
'D4': 996953488,
'D5': 67,
'D6': 0.15538139641284943,
'D7': [17564, -20392, -1554, 27191, 32330],
'D8': [235, 191, 224, 203, 216, 37, 167, 65]},
'C2': 65084,
'C3': [253, 92, 132, 78, 19],
'C4': 32679,
'C5': -26415}],
'B2': 0.40348559617996216,
'B3': {'E1': 198, 'E2': -4417, 'E3': -37, 'E4': 2237691236010214921}},
'A2': -0.8641901030964398,
'A3': 68,
'A4': -5816812378019979686,
'A5': 13,
'A6': 43986,
'A7': -4359251477921018355,
'A8': 124}
Пример 2
Двоичные данные:
b'DJPN\x00\x00\x00\t_\x91\xb8g{\x93\xa0@5\x9dz\x00\x00\x00%+\x89\x97>e'
(b'\\\x97\x03\x04g\x1d\xe3\xa6\xbcZ\x93\x02\xa9\x10\x9d\xd0\xfc~\x8azTt*\x1f'
b'\xdb"\xad\xd2\xbf\x06\x86\xb6\xff\xbc\xb8\x15\xb9b\xfb%\x01"\x02t\x87=\xb8;'
b'\x9b\xa6\x91\x9a2\xef\x8a\xfe\x97\xead\xa9\xb8\ri\x9f\xe2\xbf\xcf\x94'
b'\xf0n\xc1\x08Z\xefa=r\xf4r\x15u\xd0\x91,\xfe\xcbY\xd0\xc0\x18U\xbc'
b'\x98\x9e\r\x18\xe0nq\xbb\xc2\xea\xc0\xceS\xb5\xf1\xbf\xda?\xce\xf6V\xbf~\x1f'
b'\x856)\xbf~V\xd7}\xc4\x8b\xb2\xdb=\xe0\xdfi\xddE\xd4\xc0\xf3\x0f')
Результат разбора:
'A1': {'B1': [{'C1': {'D1': 16904259599030459025,
{'D2': -0.5819592731470888,
'D3': -49,
'D4': 3245273236,
'D5': 8,
'D6': 0.055159904062747955,
'D7': [-2958, 5490, -12171, 11409, -13314],
'D8': [89, 208, 192, 24, 85, 188, 152, 158]},
'C2': 24329,
'C3': [145, 184, 103, 123, 147],
'C4': 16544,
'C5': -25291},
'C1': {'D1': 16916289246222882829,
{'D2': 0.4179653425955898,
'D3': -50,
'D4': 2126468854,
'D5': 31,
'D6': -0.6609881520271301,
'D7': [22142, 32215, -29756, -9294, -8131],
'D8': [223, 105, 221, 69, 212, 192, 243, 15]},
'C2': 11045,
'C3': [137, 151, 62, 101, 92],
'C4': 919,
'C5': 26372}],
'B2': -0.020371967926621437,
'B3': {'E1': 90, 'E2': 659, 'E3': -87, 'E4': 6087330124356689168}},
'A2': -0.29181739233596393,
'A3': 6,
'A4': 7113740969597449862,
'A5': -5,
'A6': 293,
'A7': -7261007399799750110,
'A8': -90}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x53 0x47 0x47
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Адрес (uint16) структуры B |
3 | uint8 |
4 | Размер (uint32) и адрес (uint16) массива char |
5 | Массив адресов (uint16) структур C, размер 2 |
6 | Структура D |
7 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
3 | int16 |
4 | Массив char, размер 7 |
5 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int32, размер 2 |
2 | uint64 |
3 | double |
4 | int64 |
5 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | double |
4 | int8 |
5 | uint8 |
6 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZSGG\xc5+\x00\xb7\x05\x00\x00\x00H\x00M\x00o\x00 \x0f\xb9\xd6]\xd0'
(b'\xae\xbf&\x90\xe3\x081\xa5V\xd7?\xe3\xe8\xf5\xc20?2$\xea\xbb\x17%\x80'
b'\xb6S\xe2]\xcc\xc2?!\xb8gwuepig\xfe\x81\x1fp\x13\xc6k[okpad!\xa0\xe3'
b'\xa2\xc8m\x8e\xd1O\x17\xa7\xd7b;@\xeb0k\x07\xd7u\x7f\xd7\xbf\xbc\x01Y'
b'\xf1\x91\x0b\xc0\xa61\x8d\x9c\xcegb\x87\xaa\xf6\x1ec\x95L\xfb\x86'
b'\x0b\xe7\xee\x9c\x10\x9a\xd2\x0b8\xe6?\xabj\r\xbdT\xbe\x18\xd0&\x86')
Результат разбора:
'A1': -59,
{'A2': {'B1': 622312426,
'B2': 0.14686177779315202,
'B3': -18399,
'B4': 'gwuepig',
'B5': 6587576666747273726},
'A3': 183,
'A4': 'okpad',
'A5': [{'C1': [-1562140639, -779194936],
'C2': 16951614293133432655,
'C3': -0.3671545600788475,
'C4': -6431127546437762628,
'C5': -29391},
'C1': [1650970268, 519481991],
{'C2': 17214740775016633699,
'C3': 0.6943415749851911,
'C4': -3451799843221181781,
'C5': -31194}],
'A6': {'D1': -0.060183460675516054,
'D2': 38,
'D3': 0.3646634081701956,
'D4': -29,
'D5': 232,
'D6': 0.690474808216095},
'A7': 9266}
Пример 2
Двоичные данные:
b'ZSGG\x86+\x00\x18\x08\x00\x00\x00H\x00P\x00r\x00`\xbed\xaa\xe4|\xa6?mn'
(b'p\\\x84=w\xef\xbf\xbe\x08\xf4\x17k?\xb1\x13Z\xc9!1N\xd4\xc9~\tX\xe0?\xf7mfhr'
b'gllf\x08\x8a\xdd\xa2\xd0\x07\xf9\x1cdnygqfqb\x9d\xdf\xd4\x82O\xb8\x97J'
b'\xcd\xf4\xfbJ\xb7!\x9d\xaa`\xfa\x94>\xd4\x9c\xe0?\x17\xc6\x90}'
b'\xc8\xd3\xf2\xb4\x87\xc2\xa1|\x02\x12\x00\xd8\x8dr\x81^u\xb9G\xe8'
b'\xd4\xe2\xb6\xc1\xd1\xc9\xee\xd0\xed?\x1e\x86\xe3\xbbwm\x99\x94\x06\xc8')
Результат разбора:
'A1': -122,
{'A2': {'B1': 824297818,
'B2': 0.5107467151962142,
'B3': 28151,
'B4': 'fhrgllf',
'B5': 2087708494929955336},
'A3': 24,
'A4': 'dnygqfqb',
'A5': [{'C1': [-2099978339, 1251457103],
'C2': 12294019628912080077,
'C3': 0.5191441747954961,
'C4': -5408027344464984553,
'C5': -15737},
'C1': [302152865, 1921898496],
{'C2': 16344944342386171521,
'C3': 0.9317544881615081,
'C4': -7739034123638700514,
'C5': -14330}],
'A6': {'D1': 0.043921609687797014,
'D2': 109,
'D3': -0.9833057007958936,
'D4': -66,
'D5': 8,
'D6': 0.9183342456817627},
'A7': 5041}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x45 0x44 0xed
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | uint32 |
3 | int64 |
4 | Размер (uint16) и адрес (uint16) массива uint8 |
5 | int8 |
6 | int32 |
7 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | float |
3 | Массив адресов (uint16) структур D, размер 7 |
4 | Размер (uint16) и адрес (uint32) массива int64 |
5 | uint16 |
6 | Структура F |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры E |
2 | int16 |
3 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив int32, размер 2 |
Структура F:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BED\xed\xac\x00\x0bA\x07\xbe[!\xb3\x86k\xb4\x1c\x05\x02\x00\xd2\x00\x19\xab'
(b'\xcfh\x85(\x12\x1cf\x1b8\x0c_\x19\xa1\xfd2\x1d\x00\x00\x00\x0c\xb7\x1f2G'
b'hJ\x83\x01\xf0\xdc\xad\x12.\x00\x00\x00Z\x14\xa4JZ\x04\xb3\x13V\xe5.\xea'
b'\x94?\x00\x00\x00\x8e\x9c/\x11\x16\xc6\xc7R\x87\x02\x0f\xa6\x14P\x00'
b'\x00\x00\xb9\xa2\xba\x07\x8c\xb9E\xa1PK\xad\xc0da\x00\x00\x00\xbc'
b'\x18\t\xfe\x7fy\xdd?e\xebIQ5r\x00\x00\x00\x8f\xdc\xda\xe2\xb3\x0eT\x83'
b'y\rI\x92\xc2\x83\x00\x00\x005|\xa5\xe3\xf1\x83Y\x15\x8a\x9c{\xeexO\xd6'
b"\x04\xcb\xa6\xa1l\x86j\xd2\x7f\xfbwv#\x8c\x1a\x08\x1a?'\x008\x00I\x00"
b'Z\x00k\x00|\x00\x8d\x00\x03\x00\x94\x00\x00\x00\xa0C\xec\x0fG^\x1c\xec\xdcR'
b'\x12\xdf\xb92')
Результат разбора:
'A1': {'B1': {'C1': 35, 'C2': 140},
{'B2': 0.6016861200332642,
'B3': [{'D1': {'E1': 26140, 'E2': [1594636315, 855482649]},
'D2': -18676,
'D3': 31},
'D1': {'E1': 18226, 'E2': [25381480, 313384176]},
{'D2': 5210,
'D3': 164},
'D1': {'E1': 23114, 'E2': [1444131588, -1796591899]},
{'D2': -25458,
'D3': 47},
'D1': {'E1': 5649, 'E2': [-2024618042, 346427138]},
{'D2': -23879,
'D3': 186},
'D1': {'E1': 35847, 'E2': [1352746425, 1690348875]},
{'D2': 6332,
'D3': 9},
'D1': {'E1': 32766, 'E2': [1698684281, 894519787]},
{'D2': -9073,
'D3': 218},
'D1': {'E1': 46050, 'E2': [2038649870, -1030600435]},
{'D2': 31797,
'D3': 165}],
'B4': [8907145987332764131, -6798523365833344786, 8536568145113679468],
'B5': 17312,
'B6': {'F1': 4076, 'F2': 16074001128846286407}},
'A2': 3188146443,
'A3': 368367643451924827,
'A4': [185, 50],
'A5': 25,
'A6': -2056728661,
'A7': 4648}
Пример 2
Двоичные данные:
b'BED\xed\xa4\x00x/Jl\xebR\x9ay\xac)Ki\x02\x00\xca\x00\xe9\xafkz\x19\x94'
(b'\x0b\xa6fu>\x9f\tR)\xc6L\x1d\x00\x00\x00\x19\xae\x7f\xe4\xc0\xceE\xbc\x83'
b'\x98\xdbF\r.\x00\x00\x00\xbc\xcdk\x91y\xf0\xc0&p\xb0\xb5v\xe2?\x00\x00'
b'\x00l`L!\x88\xd8W\x96\x0b\x8c\x051\xebP\x00\x00\x00\xc4c\x9ft\xe0\t'
b'\x91\x02]\x85 \xb0\xf7a\x00\x00\x00}\x1d\x9f\x0f\x1aYD\xfe\xfa=\xcd\xe4A'
b'r\x00\x00\x00\x8d\x95\nv\x9b\xae\xad@A\xc6\xca\x0bE\x83\x00\x00'
b"\x00\x16\x07\xcc\xd73\x82f\x1d\x7fQ1e'w?\xa2\x9c\xc6\xff\x17\x06\xd1 "
b"\xc1\xbe'\x008\x00I\x00Z\x00k\x00|\x00\x8d\x00\x02\x00\x94\x00\x00\x00L\x9b"
b'\x89,-Aj\xf7\x02V\xc6\x00\xff\xd5')
Результат разбора:
'A1': {'B1': {'C1': 23, 'C2': 6},
{'B2': -0.37720349431037903,
'B3': [{'D1': {'E1': 26278, 'E2': [161431157, 1288055122]},
'D2': -20967,
'D3': 127},
'D1': {'E1': 49380, 'E2': [-2084813362, 222747544]},
{'D2': -12868,
'D3': 107},
'D1': {'E1': 31121, 'E2': [1881587952, -495536720]},
{'D2': 24684,
'D3': 76},
'D1': {'E1': 34849, 'E2': [194402264, -349108852]},
{'D2': 25540,
'D3': 159},
'D1': {'E1': 57460, 'E2': [1560449289, -139452283]},
{'D2': 7549,
'D3': 159},
'D1': {'E1': 6671, 'E2': [-83999655, 1105513789]},
{'D2': -27251,
'D3': 10},
'D1': {'E1': 39798, 'E2': [1094757806, 1158400710]},
{'D2': 1814,
'D3': 204}],
'B4': [3553761345222620119, -16153327985809563],
'B5': 39756,
'B6': {'F1': 11401, 'F2': 55826616129569069}},
'A2': 1816801144,
'A3': 7587203817987003115,
'A4': [255, 213],
'A5': -23,
'A6': 427453359,
'A7': 2964}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x4b 0x55 0x56
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | Адрес (uint16) структуры B |
3 | Размер (uint32) и адрес (uint16) массива int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 2 |
2 | double |
3 | Адрес (uint16) структуры D |
4 | double |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив int8, размер 7 |
3 | uint64 |
4 | uint32 |
5 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
3 | double |
4 | int8 |
5 | Массив int16, размер 6 |
6 | Массив uint8, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FKUV\xd8\x11\t\xddCp\xee?d\x00\x03\x00\x00\x00~\x00\xeb\\{c^\xe4\xdd^'
(b'\xaa\x10\x83\xa6=\xdf&\x0fD\xd0j9M\x1e\x86U\x1e}D|\x08\x1a\x00WWV\x9d\xca'
b'\xd5{d\xc5\xdd\x13z\x7fI\xff\xe7#\x9d\x83er\xe9\xf5s<\xc4\r\x00x'
b'\x1d\xa1\xdc\xbf4\x9c^\xe8P_Q\x1cz\xfbo.\xeb\x97\x10\xf5\x14\x00\x00\x00'
b'-\x00\x00\x00\xd0\\\xb3V\xe8\xc1\xe3\xbfF\x00\xd6\xf6M\xf9q\xad\xec\xbf:\xf5'
b'\xf4X\x90xxa/?\x16\x02\x96u\xde\xf4%\xbf\xef\xccX\xd3\xa4\xbd')
Результат разбора:
'A1': 0.9512042348001684,
{'A2': {'B1': [{'C1': 23787,
'C2': [123, 99, 94, -28, -35, 94, -86],
'C3': 4904181259483644688,
'C4': 1295608528,
'C5': 508921374},
'C1': 17533,
{'C2': [124, 8, 26, 0, 87, 87, 86],
'C3': 1431517291938695837,
'C4': 4283006842,
'C5': 2208113639}],
'B2': -0.6174203580257203,
'B3': {'D1': -169250203,
'D2': 15475,
'D3': -0.4473336860539485,
'D4': 52,
'D5': [24220, 20712, 20831, 31260, 28667, -5330],
'D6': [151, 16, 245]},
'B4': -0.8961725110272833},
'A3': [7023496180247360826, -802074396484813009, -4781464526011777243]}
Пример 2
Двоичные данные:
b'FKUV>QJM \x8f\xe4?d\x00\x05\x00\x00\x00~\x00\xec\x981\xc4{l\xcd\x0c'
(b'=\x19\xb2\x8f\xa3\x1c\x95\xed\x19^\x14\xd2\xb27\x14\xe0\x1d\xfd\xae\x7f'
b'\xe6\xfb\x97\x0c\x15\x17\xcd\xc1\xa5\xaa\xe6\xb2`\xc9<\x1dWQF\x0e'
b'\x1dr\xc6\xb4\xf8\x97\xdfU `;\x1bjM\xe1?F4\xfe\x03\xa6\xc7\x9f\x82'
b'\xdc\xb9o\xbd`Q,\xcc\x14\x00\x00\x00-\x00\x00\x00\xf8t\x94\xb8\xcc`\xef?'
b'F\x00jK\x12}\x97\x07\xec\xbf\xfbe\xb0r\xfcq\xef"4\xf5\x8e\x99\xab\xbd'
b'\x07L\xe9\x96f\x01q\xe7\xc8\\\xa8(%\xfc8xVb\xa3\x16\xd8\xc3\x13\xb4Mg')
Результат разбора:
'A1': 0.6424714574409689,
{'A2': {'B1': [{'C1': -26388,
'C2': [49, -60, 123, 108, -51, 12, 61],
'C3': 1868313370664350233,
'C4': 3000112222,
'C5': 501224503},
'C1': -20739,
{'C2': [127, -26, -5, -105, 12, 21, 23],
'C3': 14510794703162950093,
'C4': 1364663612,
'C5': 1914506822}],
'B2': 0.9805663685871471,
'B3': {'D1': -1745308474,
'D2': 21983,
'D3': 0.5407000095247021,
'D4': 70,
'D5': [-460, -23037, -24633, -9086, 28601, 24765],
'D6': [81, 44, 204]},
'B4': -0.875926727562143},
'A3': [2517356045793256955,
5478556016432837940,
6685848119372322537,
7085983249857849512,
7443803756096394915]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x54 0x50 0x4b 0xe9
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | Адрес (uint16) структуры B |
4 | Структура F |
5 | Структура G |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив адресов (uint16) структур C, размер 2 |
3 | uint32 |
4 | int64 |
5 | Массив char, размер 4 |
6 | Адрес (uint32) структуры E |
7 | uint16 |
8 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
Структура F:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint16) и адрес (uint32) массива int8 |
3 | double |
Структура G:
Поле | Описание |
---|---|
1 | float |
2 | Массив int8, размер 6 |
3 | int8 |
4 | float |
5 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WTPK\xe9\x84\xac\x1eZ\x0b*\xeb\xbf\x81l\x00;\x02\x00\x8e\x00\x00\x00\xb6'
(b'\xb8\xb1q?D\xeb?L\xd6\xc7\xbe;K\xfe\x0f<\xbb\x8b\xe4\xd7\xa5\xbe\xa9\xbb'
b'\x01\x07\xa1\xc4hl\xfb\xd2\xd7g\xb8\xc9\x8e!\xeeF\xc0\x9a\xf5\xa0\xe1?TO'
b'\xc4>\x84\xf0\xf0\xd9Q\xa9E1\x16\x93\x07$\xc0\x92\x96\x89&7\xa0\xbf\r\xa3'
b'\x97\xd5\x9a&w\x9dq\x0b`P\x05-X{\x9d\xf46\x00N\x00\x98*\xfa\x1d\x1a\xa8\x17]'
b'_\xfa\xa4xaugqf\x00\x00\x00\x10\xbeN\xcf\xa5\x12Sz')
Результат разбора:
'A1': -0.8488823661949856,
{'A2': -127,
'A3': {'B1': 4103961432,
'B2': [{'C1': 2418091843797897979,
'C2': {'D1': 0.5508983633501126,
'D2': 1053052756,
'D3': 3656446084}},
'C1': 2596205433727592785,
{'C2': {'D1': -0.031670765204841356,
'D2': -711482611,
'D3': 2641831578}}],
'B3': 502934168,
'B4': 8693348468222568474,
'B5': 'augq',
'B6': {'E1': 1348471665, 'E2': 11525},
'B7': 48656,
'B8': 312856398},
'A4': {'F1': 59, 'F2': [83, 122], 'F3': 0.852081033762963},
'A5': {'G1': -0.39030683040618896,
'G2': [59, 75, -2, 15, 60, -69],
'G3': -117,
'G4': -0.32391273975372314,
'G5': 7811709749560458153}}
Пример 2
Двоичные данные:
b'WTPK\xe9\xc0@e\xc9\xed\xec\xe0\xbf\x1fl\x00\xc0\x02\x00\x8e\x00\x00\x00\n'
(b'\x16\xa7u\xfe\x1d\xe2\xbf\x8a\xd7\xd1>\xb0<z]\xfb\xd7~\xcb\xa3\x01\xbeA\xc5'
b"\xba\xcd\xfbm\x1a\xfeWM\xa9s\x8e\xa0\xf6\xcc2)L\xcd\xb0q\xed\xbfn\x07^\x17'N"
b'\xe6O\x86\x0b\xf2\x90^\x05_\x9bL\xe2e\xfcD\x96\xe2\xbf\xe7\xa4'
b'\x85\x8b\xbb\x1a\x91\xdbF>\xed\x94\n\x17>\x1cm76\x00N\x00\x06\x01aW'
b' \xd5\xf44r#Wjdvkxf\x00\x00\x00v\xbc\xc0\xc9\xeb\x02\xbd\xee')
Результат разбора:
'A1': -0.5289219792848812,
{'A2': 31,
'A3': {'B1': 929897534,
'B2': [{'C1': 14769168561694395735,
'C2': {'D1': -0.920128251048743,
'D2': 392038254,
'D3': 1340493351}},
'C1': 11195673102383188870,
{'C2': {'D1': -0.5808434419296389,
'D2': -1954175769,
'D3': 3683719867}}],
'B3': 1465975046,
'B4': 7662632264415892768,
'B5': 'dvkx',
'B6': {'E1': 2498575942, 'E2': 5898},
'B7': 48246,
'B8': 49007040},
'A4': {'F1': -64, 'F2': [-67, -18], 'F3': -0.5661613748458774},
'A5': {'G1': 0.40984755754470825,
'G2': [-80, 60, 122, 93, -5, -41],
'G3': 126,
'G4': -0.12660138309001923,
'G5': -136675910425590463}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x41 0x4a
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 3 |
2 | int64 |
3 | Адрес (uint16) структуры B |
4 | int8 |
5 | Массив float, размер 8 |
6 | Структура D |
7 | uint8 |
8 | Массив float, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | Размер (uint32) и адрес (uint32) массива double |
3 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | int8 |
3 | int8 |
4 | uint8 |
5 | uint8 |
6 | int32 |
7 | double |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FAJxcz\x97\xae\x1f\x01\x8evK\x90\x00Se\xbe\xd5\x0c^\xbfIL\x05\xbe\xe8v'
(b'w\xbe\xb9\xea\x88\xbf#\x14\x1c>\x89m\x83?v\x05\xb5\xbd\x0eD\x13R\x81\x03'
b'\xcfl\x07\xbe\xc1v?\xbf^f\xe4>\xb7\xa8\x1d\xbf\xc2\x16?\xf8\x9c3\xd0?'
b'\xd7\xe1vMc"|\xdd\x97sY`^\xc3l\x8d\xdf\xc6\x12\xba\x85\x82X?\xb9\x1b\xe4#'
b's\xf1\xb0\xf0\xb7\x10^Q\xe1\xd0C\xa5\xef\x13\xabg\xe6\x07M?\xe4\xcd\x8b\xd3'
b'\xc1\x8f(\x00\x00\x00\x02\x00\x00\x00C_>#\x91')
Результат разбора:
'A1': 'xcz',
{'A2': -7517036636489233520,
'A3': {'B1': [{'C1': -2479386242138061972,
'C2': -115,
'C3': -33,
'C4': 198,
'C5': 18,
'C6': -1165655464,
'C7': 0.09808183541821935},
'C1': -1101393586582073277,
{'C2': -91,
'C3': -17,
'C4': 19,
'C5': 171,
'C6': 1743128397,
'C7': 0.6500910888539453}],
'B2': [-0.14130401267212145, 0.3731361156210722],
'B3': 1597907857},
'A4': 101,
'A5': [-0.41610997915267944,
-0.7863162159919739,
-0.45402881503105164,
-0.3631174564361572,
-0.6370255947113037,
0.26841363310813904,
0.9610245823860168,
-0.034732889384031296],
'A6': {'D1': 1384186831, 'D2': 108},
'A7': 7,
'A8': [-0.3778552711009979, -0.8687574863433838, 0.35870447754859924]}
Пример 2
Двоичные данные:
b'FAJtmj\xaf\xc0\xad\xddTgn\xdf\x00S\\\xbfF=\x0f\xbf\x1aj@=N%p>\xd3%\x08?k\xc6'
(b'h?c\xd9S\xbf\x10R!\xbfy\xd0\x9d\x17\x00\xa9\xfc\x8d\x93>\x8e\xf2\x91\xbf'
b'.\xf1\x99\xbe\xfco\xe3\xbf\xd9\x96\x05\xe6(0\x90?\xe9\xc8\x12V\xa0\x7f\xdcr'
b'1J\x86/\xed\xe2"u\x86zA\x8d#}F?\xe2\\\x89\x08\x07\xe1\x96z\xd7\xf5(,'
b'\x91\xa1\x87"\xf5\xcd\x0e\x9d\'\x14s\xbf\xeb%\xe0\xb7\r\x14\xcc\x00'
b'\x00\x00\x02\x00\x00\x00C\xf4\xf8#\xef')
Результат разбора:
'A1': 'tmj',
{'A2': -5782430755428274465,
'A3': {'B1': [{'C1': 8228439934372799010,
'C2': 117,
'C3': -122,
'C4': 122,
'C5': 65,
'C6': -1927054010,
'C7': 0.5737958103991783},
'C1': 8851813145515237767,
{'C2': 34,
'C3': -11,
'C4': 205,
'C5': 14,
'C6': -1658383245,
'C7': -0.8483737540451783}],
'B2': [-0.39978167988079694, 0.8056728069241177],
'B3': -185064465},
'A4': 92,
'A5': [-0.7743691802024841,
-0.6031837463378906,
0.05032867193222046,
0.41239190101623535,
0.9209961891174316,
0.8900348544120789,
-0.5637531876564026,
-0.9758394360542297],
'A6': {'D1': 385919484, 'D2': -115},
'A7': 147,
'A8': [0.2791943848133087, -0.6833739876747131, -0.49304112792015076]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x49 0x59
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Массив структур D, размер 2 |
3 | float |
4 | int16 |
5 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | int16 |
4 | uint8 |
5 | Адрес (uint32) структуры C |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | double |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | uint32 |
3 | Размер (uint32) и адрес (uint32) массива int32 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint32) массива float |
3 | Массив int8, размер 7 |
4 | float |
5 | float |
6 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XIY.\xd6\x1aD\xbe\xd3\xc4;\x89\xd6\x1d\x00\x00\x00[\x00\x03\x00e6n'
(b'\xb5\x10\x00\x00\x00\x07\x00\x00\x00h\x00\x02\x00\x84\x94\xcb'
b'\xac\x98\x00\x00\x00\x04\x00\x00\x00\x86\xbf\x04\xb6\xc5\xc9\xcc?\xce-\x80'
b'\xd46\xcf\xf0\x00\x00\x00\x02\x00\x00\x00\x96~\xed\rK\xd3\x9bO\xbe'
b'\x04\xa3\x11\xbd\xbe[c\x9f\x86S\xe7J\x9b\xbf\xe1R#\x1bZ\xd0\xaevyw'
b'\x8d*\x10\x18\xf5o,\x1a\xff\x9c\x85u\xac\x8c\x07Dx\xd9\xef\xc3T\x08W9'
b'\xc3]\x03\xcexx<C\xdc\xd6X(A\xf5>yY\xd6\x10\x89\x85\x8f\xbd\x9a\x14\x81\xbf6'
b'*\xe1')
Результат разбора:
'A1': {'B1': 785783364,
{'B2': -0.4136064946651459,
'B3': -30250,
'B4': 29,
'B5': {'C1': 74, 'C2': -101, 'C3': -0.5412765058777234}},
'A2': [{'D1': 'vyw',
'D2': 913224976,
'D3': [-1926623208,
-177263590,
-6519435,
-1400109244,
2027548611,
1409832761,
-1017314354]},
'D1': 'xx',
{'D2': 2496375960,
'D3': [1011080406, 1479033333, 1048140246, 277448079]}],
'A3': -0.5184138417243958,
'A4': -13876,
'A5': {'E1': 0.23576364862458332,
'E2': [-0.07523442059755325, -0.7115917801856995],
'E3': [126, -19, 13, 75, -45, -101, 79],
'E4': -0.12952829897403717,
'E5': -0.09294774383306503,
'E6': -1618586649}}
Пример 2
Двоичные данные:
b'XIY\x8b\xeeS\xac\xbe\x90\xfe\x0c\x87\xda\x08\x00\x00\x00[\x00\x02'
(b'\x00e\xae\x0b\xf6F\x00\x00\x00\x06\x00\x00\x00g\x00\x03\x00\x7f2{'
b'\x0bw\x00\x00\x00\x07\x00\x00\x00\x82\xbfj/K\x95\x9d\xbf\xd7\xbdQ?\xe26\xfc'
b'\x00\x00\x00\x02\x00\x00\x00\x9eEX\xea\xac2\xb8\xfc?`\xa1\x8e?[\x03{d'
b'\x19qy\x89\xef?\xe9\xdb\xa1\xban\xd5\xdaxto\xce\xe1}}\xa6-\xd3c\xec\x17|u'
b'\x91\xb1\x92\xaf\x92\x05\x9e\xb1W!+oks\xcb\x91\xe0 \x17\xb5\x0b\xe0e\xbf'
b'\x1a7\x806S \xb3\xcd\xa5)\x8437\x8f\xfc\x1a\xb8s?e\x9dn\xbfT|s')
Результат разбора:
'A1': {'B1': 2347652012,
{'B2': -0.28318822383880615,
'B3': -30758,
'B4': 8,
'B5': {'C1': 137, 'C2': -17, 'C3': 0.8080605164784018}},
'A2': [{'D1': 'xt',
'D2': 2920019526,
'D3': [1875829117,
2108042707,
1676416892,
1972482450,
-1349384802,
-1319689941]},
'D1': 'oks',
{'D2': 846924663,
'D3': [-879632352,
397741024,
1707022903,
-2143923424,
-1278368471,
-2077018225,
-65357709]}],
'A3': -0.9147841334342957,
'A4': -27235,
'A5': {'E1': -0.370930015932444,
'E2': [0.8969334363937378, -0.8300239443778992],
'E3': [69, 88, -22, -84, 50, -72, -4],
'E4': 0.8774651288986206,
'E5': 0.8555218577384949,
'E6': 1679389049}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa 0x4a 0x46 0x47 0x51
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
3 | uint32 |
4 | Адрес (uint16) структуры B |
5 | uint8 |
6 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | Массив int8, размер 5 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив структур D, размер 3 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint16, размер 6 |
2 | Размер (uint32) и адрес (uint16) массива int16 |
3 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\nJFGQ;8\xeb\x1a\xf5\x8a\x85\x00!\xfa\x006\n$\xca\x924\xd2\x9c4\xf4\xd1\xe2'
(b"\xf9C\xba\xb8\xf2\xe1\xae\xa2*$m'\x8c2\xbc\xeb\x1a+@>A\xb5\xc1\xfd3Yn\x02"
b"\xe2\x9c\xb0\\\xbe\xad\xbaM\rn:A\x00\x00\x00\x04\x00\x1a\xd4\x13\r'hH"
b'\\h\xe2\xaf\x8b\xcb\x97\\\x00\x00\x00\x04\x00"\xd8\xcb\x1b3\xa1\x8f'
b'=\x1d\x10\xd1E\xe4(B\x00\x00\x00\x06\x00*\tF\xef\xc0\xde\x90\xa0')
Результат разбора:
'A1': 993585946,
{'A2': 62858,
'A3': 2231378426,
'A4': {'B1': {'C1': 28162,
'C2': [{'D1': [58012, 45148, 48813, 47693, 3438, 14913],
'D2': [-11806, -1725, -17736, -3359],
'D3': -11245},
'D1': [3367, 26696, 23656, 58031, 35787, 38748],
{'D2': [-20830, 10788, 27943, -29646],
'D3': -10037},
'D1': [6963, 41359, 15645, 4305, 17892, 10306],
{'D2': [-17173, 6699, 16446, 16821, -15875, 13145],
'D3': 2374}]},
'B2': [-17, -64, -34, -112, -96]},
'A5': 10,
'A6': 2651092086230365428}
Пример 2
Двоичные данные:
b'\nJFGQ\x1b>\x04\x9a\xf8\xac\xdd\x82_\x9d\x004\xf2/^e\xd5\xf0\xc3'
(b'x\x07\x8c\xbai\x98\xb5:/\x8cL\xbf\xaf\xaf\x08+\xd1vg\x98O\x12\xc9\x0b'
b'\xad\x91\xfa0\xf3\xfb\xbbN\xf5\x87;\x10\xbdp\xee\x95\x11\xe8\x00\x00'
b'\x00\x08\x00\x1a\x04\xcf~I\xca,\xaf\xb6U\xec8^I\xda\x00\x00\x00\x02\x00*'
b'\x17\x8b\xa5Q\x82k\xc7Ow\xc8s\x87\x81\xf6\x00\x00\x00\x03\x00.\xe8\xfe.\xb1'
b'\xc6[$')
Результат разбора:
'A1': 457049242,
{'A2': 63660,
'A3': 3716308893,
'A4': {'B1': {'C1': -3077,
'C2': [{'D1': [47950, 62855, 15120, 48496, 61077, 4584],
'D2': [-29510,
27032,
-19142,
12172,
19647,
-20561,
2091,
-11914],
'D3': 1231},
'D1': [32329, 51756, 44982, 21996, 14430, 18906],
{'D2': [26520, 20242],
'D3': 6027},
'D1': [42321, 33387, 51023, 30664, 29575, 33270],
{'D2': [-14069, -21103, -1488],
'D3': -5890}]},
'B2': [46, -79, -58, 91, 36]},
'A5': 242,
'A6': 3413277537135196167}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x59 0x5a
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Массив int16, размер 7 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 6 |
2 | Структура D |
3 | Массив uint64, размер 8 |
4 | uint8 |
5 | float |
6 | Массив int8, размер 4 |
7 | float |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив int8, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'KYZ\x00t\x00z\x00\x80\x00\x86\x00\x8c\x00\x92e\x9d\x0b\xe9\x94#\x1ax\xac'
(b'\xd5\xfd\xddZ\x12F\x98,H~\x0b\xf5\xf4\xf3\xe4\x96\xfbG\x82W\x03f\x8e\x14'
b'\xe6\x03E\xae\xbd\xa7\xb8\x81\x90 /x\xd1b\xa7\xfc6\n2\x19\xb7)N_.\x99\x88C'
b'?mo\xf9\x8d\xba8\xb4C\xda\xcf]0V>a\xc99\xde\xe2\xbb\x02?\r\x07\xd4M\xae'
b'(\xfaGQ\xe7\xa9\xb9\xff\x9f\xb9iB\xbfX8\xad\x07k\xbd#\xb0\x90c\xe2?N\xd6\xdc'
b'\x15\xeb=\x9d?:\x85R\xbe\x10\xee\xf9\xbe\x0f?w\x02\xba\xa2\x9b')
Результат разбора:
'A1': {'B1': [{'C1': -0.8446148037910461, 'C2': 1899},
{'C1': -0.03996330499649048, 'C2': 25570},
{'C1': 0.8079659938812256, 'C2': 5611},
{'C1': 0.07678075134754181, 'C2': -31406},
{'C1': -0.14153660833835602, 'C2': -16881},
{'C1': 0.9648853540420532, 'C2': -23909}],
{'B2': {'D1': 26013, 'D2': [11, -23, -108, 35, 26, 120, -84, -43]},
'B3': [18292876295989111880,
9082623505935406843,
5152776595782374630,
235786685092757904,
2319205173817769014,
734677963677523758,
11063166424333678989,
13418673293277224240],
'B4': 86,
'B5': 0.22049416601657867,
'B6': [-34, -30, -69, 2],
'B7': 0.5509006977081299},
'A2': [19886, 10490, 18257, -6231, -17921, -24647, 26946]}
Пример 2
Двоичные данные:
b'KYZ\x00t\x00z\x00\x80\x00\x86\x00\x8c\x00\x92\xbb\x11\xfb\xce#\xd8J\xb1M'
(b'\xb4:\xb7U\xb7\x1bD\xf3\x913\xa8\xa9?\xc0\x0f\xd6\x90\x7f\xb0\xf5'
b'\x90\x1f\xef\xe5\\\x1b\xc1\xad\x1f$-\x8d\x8b-\xe4#$\xc87\xc6\xe8\xc4\xfa\x9d'
b'\x9b\xed\xb4\x89\xe2\xd7\x84<\x10Z\\\xe4\x15\x83+\xa6\xa7L$l!\x87\xbe\xf2'
b'\xad8\xebrD\xbd>\xe2}>\xb4\xb9\xbc\x89\xa1L\x08\xd0\xc4P\x80\xc4P\xf4?-Q\x86'
b'\xd1\x08\xbf\x14!\x86\x80x\xbf[h\xf1;\xc0>\xbe1AV>?+?\xcbj\xde\xbe\x9d'
b'Wo\xf1\xa9')
Результат разбора:
'A1': {'B1': [{'C1': 0.6770251989364624, 'C2': -12024},
{'C1': -0.5786365270614624, 'C2': -32648},
{'C1': -0.8570700287818909, 'C2': 15296},
{'C1': 0.37146952748298645, 'C2': 22078},
{'C1': 0.6689421534538269, 'C2': 27358},
{'C1': -0.3073076903820038, 'C2': -3671}],
{'B2': {'D1': 47889, 'D2': [-5, -50, 35, -40, 74, -79, 77, -76]},
'B3': [4230944619862750097,
3722411183292012176,
9201124038077834588,
2000070058791767435,
3306806667281680104,
14193830468645063138,
15529603456013493269,
9451831480434322465],
'B4': 135,
'B5': -0.47397780418395996,
'B6': [-21, 114, 68, -67],
'B7': 0.4423617720603943},
'A2': [-19271, -17271, -24244, 2256, -15280, -32572, 20724]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x4d 0x46 0x4e
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | int64 |
4 | float |
5 | Структура F |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint16) массива структур D |
3 | Структура E |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint16) и адрес (uint32) массива float |
Структура F:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
3 | Размер (uint16) и адрес (uint16) массива float |
4 | Массив uint64, размер 2 |
5 | uint16 |
6 | int32 |
7 | int16 |
8 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BMFNRH\x00\x00\x00\x03\x00NG\x00\x02\x00\x00\x00r\x99\x00\x00\x00\x02'
(b'\x00\x00\x00z\x8e\xccZ\xe1\x01\x17K\xed\xbf\x1c\x1ezY\x1a\x00\x03\x00|\xeaZ'
b'\xcf21\xf69\x08\x15\xceUr\xce\xaf\x87\x0f\xd2\xbe2\rq\xde\x8d\x8f\xbf\xeb'
b'-\xc3\xfc_\xa9H\\eK\xb8?\xe6\xf0\x98O:H\xf8\xab\xb5|\x05?\xebF\xa0\xba*'
b'\t\xe09\xb7pZ\xbf\xb3\x12\x94\xf0\xfa\x7f\x00>\xf3\xf3\xb5?p#\x0bqx'
b'\xbfW\xe3.?C\xf1\xe5?d\x1d\xb8')
Результат разбора:
'A1': {'B1': {'C1': 21064,
{'C2': [{'D1': 1550142392, 'D2': 0.7168695018210931},
'D1': 2880797701, 'D2': 0.8523715625781811},
{'D1': 968323162, 'D2': -0.0745022857977311}],
{'C3': {'E1': 71, 'E2': [0.4764687120914459, 0.93803471326828]}},
'B2': 153},
'A2': 'qx',
'A3': -8157044902642365459,
'A4': -0.6098400354385376,
'A5': {'F1': 89,
'F2': 26,
'F3': [-0.8433102369308472, 0.7654097676277161, 0.8910784721374512],
'F4': [16887037567272630536, 1571287271581124367],
'F5': 53950,
'F6': 839741918,
'F7': -29297,
'F8': -0.8493366173909545}}
Пример 2
Двоичные данные:
b'BMFN\xbe\xf2\x00\x00\x00\x03\x00N\xe4\x00\x02\x00\x00\x00r\x81'
(b'\x00\x00\x00\x07\x00\x00\x00z\xd0\x00!:\xba\xdfl2?_t~\x87K\x00\x02'
b'\x00\x817\x02z\x95}\x83\x0cn6\xede?\xc5\xbb\xc4)\xba\x90Sy\x1b\xe7'
b'\x89\x86\xbf\xe3R\xde\xbc\x8f\xe7d\x95\x03\x95<?\xde\x8eqO\x83\n\x18\x9c\xb7'
b'\x84\xcb\xbf\xe0YH\xc1\xd4A\xce\xfba\x010\xbf\xe5`#\xd4>\n\xb0\xbd\xf5'
b'\xd3O\xbf(\x8a hygngqt\xbfq\xa86>\xf5\xbf~')
Результат разбора:
'A1': {'B1': {'C1': -16654,
{'C2': [{'D1': 2500039996, 'D2': 0.47744400753814054},
'D1': 2629272779, 'D2': -0.5108989511227777},
{'D1': 4217438512, 'D2': -0.6679858346327219}],
{'C3': {'E1': -28,
'E2': [-0.1200319454073906, -0.6583576202392578]}},
'B2': 129},
'A2': 'hygngqt',
'A3': -3458727977693516750,
'A4': 0.8728712797164917,
'A5': {'F1': -121,
'F2': 75,
'F3': [-0.9439729452133179, 0.4799765944480896],
'F4': [3963865404513913966, 3957930972103296041],
'F5': 47760,
'F6': 1400445927,
'F7': -30330,
'F8': -0.6038659746984476}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x42 0x42 0x46 0xfd
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int8 |
3 | int8 |
4 | Структура C |
5 | Адрес (uint16) структуры D |
6 | int16 |
7 | Массив адресов (uint32) структур E, размер 2 |
8 | Структура F |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | double |
3 | uint8 |
4 | int16 |
5 | int32 |
6 | int32 |
7 | Массив char, размер 7 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint16 |
3 | float |
4 | uint32 |
5 | float |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int32 |
2 | int64 |
Структура F:
Поле | Описание |
---|---|
1 | Массив uint32, размер 3 |
2 | int8 |
3 | uint32 |
4 | Размер (uint16) и адрес (uint32) массива int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PBBF\xfd\x000\xa8\r\xf5}{z\x00R\xe6\x95\x00\x00\x00z\x00\x00\x00\x94\xd5;@'
(b'j\xe5\xf8\xc6\xea\n\x1e\x1e\xaf\x0e\xdc~\x95\xbc\x00\x03\x00\x00\x00\xa2'
b'2|\xc5\x80\xdd`\xe0\xb0?\xc5t>o\xd5\xfch\xcb\x1d=\xd6\xe2\x9c\xd5\xbf'
b'\x95\x93\x81thivgss\xe4!\xbc\x9a>z\x84h\xda\xd3\x14\xfc?1\xd9\xd1\x83\xa8'
b'\xff\t\xfb\xc5\xc903\x1d\xe1t\xd6o\x1b\x9d\x93g\xe0\xc4&\xdcH\xe6\x00\x06'
b'\x00\x00\x00b\x8c\x0co\x02U\xa3\xe7\x9f\xfa\x13\xff\xe2^\xb8^\x90AVm\xab'
b'\x00\x03\x00\x00\x00\x88*\xda\x8e\xa5\xcf?\xc4XO\xd8\xd6\x9a\x9d\xc5'
b'\xf7)\xdf\xf7\xdd\x84')
Результат разбора:
'A1': {'B1': 3637999756269117616,
{'B2': 0.16760998211609324,
'B3': 203,
'B4': 7485,
'B5': -689791787,
'B6': -1080716415,
'B7': 'thivgss'},
'A2': -88,
'A3': 13,
'A4': {'C1': 62845, 'C2': 31610},
'A5': {'D1': 58401,
'D2': 48282,
'D3': 0.24464571475982666,
'D4': 3671266556,
'D5': 0.6947298645973206},
'A6': -6507,
'A7': [{'E1': [-2086076663,
-70923984,
857596276,
-697361507,
-1821908796,
651970790],
'E2': -8355181152861689953},
'E1': [-99352606, 1589141136, 1096183211], 'E2': 3087937337313707096}],
{'A8': {'F1': [3577430122, 3858286314, 169746095],
'F2': 14,
'F3': 3699283388,
'F4': [1339610778, -1647970519, -537404028]}}
Пример 2
Двоичные данные:
b'PBBF\xfd\x000!X\x93Y^e\x00Ru\x02\x00\x00\x00~\x00\x00\x00\x98\xd9I\xd5'
(b'\xd8\x82\x01\x97\xa1\x86\xd2\x15\xac\xe7u\xea\xfcg\x00\x02\x00\x00\x00\xa6'
b'jl\xdc\xb3\xb1\xadm\x93\xbf\xcdg\xb2\x93\rB0\xc44w\xc4)\xe8\x8c\x97'
b"\xe1\xa5Tphqsgkw!\xc9x&>@\xac+\xe2K\x8ed=\xab\xd1\x97\x9c_a\xee\xe0J'x\xa7u"
b'I\x1bS\xe3/\xeaO\xb3K\xf3\x9a\xec\xff\x0b\x7f\x1e\xd6\xc9\x00\x07'
b'\x00\x00\x00b\xe5\x0e\x86C\x94\xafB\x93\xc4\xc1\x90#T9[\xbf\xdb\n\x1c\xc3'
b'\x00\x03\x00\x00\x00\x8c(\x8a[\xbb\xca\x07 kv\x94\xf2\xc2\xf1\xa1\xf7O')
Результат разбора:
'A1': {'B1': 7668746929843301779,
{'B2': -0.22972709827674143,
'B3': 196,
'B4': 13431,
'B5': -1003886452,
'B6': -1746819756,
'B7': 'phqsgkw'},
'A2': 33,
'A3': 88,
'A4': {'C1': 37721, 'C2': 24165},
'A5': {'D1': 8649,
'D2': 30758,
'D3': 0.18815676867961884,
'D4': 3796602468,
'D5': 0.08389585465192795},
'A6': 29954,
'A7': [{'E1': [-1671470610,
-532011144,
-1485485797,
1407397866,
1337150451,
-1695744245,
2132727497],
'E2': -1941466764534660461},
'E1': [-993947613, 1413045183, -620094269],
{'E2': 2921248170409664619}],
'A8': {'F1': [3645494744, 2181142433, 2261915052],
'F2': -25,
'F3': 1978334311,
'F4': [1989472962, -241043633]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x90 0x4e 0x50 0x5a 0x52
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив адресов (uint32) структур B, размер 3 |
3 | float |
4 | int64 |
5 | Адрес (uint16) структуры C |
6 | double |
7 | float |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | uint16 |
3 | int8 |
4 | uint16 |
5 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | Структура D |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив float, размер 7 |
3 | int32 |
4 | uint64 |
5 | Размер (uint16) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x90NPZR\xd06\r\x1b\x0b.\xa3b7\x00\x00\x00J\x00\x00\x00\\\x00\x00\x00ca\r'
(b'>\xf6\xa5\\A\xf6\x7fH\x8ep\x00D\x06=,g\xd5\xe0?\x9bG\x08?oedp\x04'
b'\x00\x00\x003\x00\x00\x00\xa8n\x95\xb7\xbf$Eepts\x04\x00\x00\x00F\x00'
b'\x00\x00\xc09\x11\xa7<\x1b\xeffpu\x03\x00\x00\x00Y\x00\x00\x006p\xf4\xf0'
b'}4 \x81\xb2Z\xf7\x7f\xbf\xa7{\x93\xccl(\xa0\xfa\xeaH\x9a:\xbf\xb8\xf0'
b'U\xbfW\x9f\x0b\xbf\xe5\xb3\x05\xbe^\xbd\x9e\xbd\xd6\xf0e>:M\xec>\xd8\x9c'
b'r\xd1w\x02\x82/\x1ae\xf6\x1b\x05\x00k\x00\x00\x00\x91\xc6\x19@')
Результат разбора:
'A1': 7107575262154143440,
{'A2': [{'B1': 'oedp', 'B2': 28328, 'B3': -107, 'B4': 49079, 'B5': 17700},
'B1': 'epts', 'B2': 14784, 'B3': 17, 'B4': 15527, 'B5': -4325},
{'B1': 'fpu', 'B2': 28726, 'B3': -12, 'B4': 32240, 'B5': 8244}],
{'A3': 0.13806681334972382,
'A4': -8194158826365344266,
'A5': {'C1': 42943,
'C2': {'D1': -1514722229172268165,
'D2': [-0.7289166450500488,
-0.8357043266296387,
-0.545400083065033,
-0.13056905567646027,
-0.07750962674617767,
0.22455152869224548,
0.46152669191360474],
'D3': -781017896,
'D4': 2014909046435480183,
'D5': [129, 178, 90, 247, 127]},
'C3': 1075431057},
'A6': 0.526050173190193,
'A7': 0.5323426127433777}
Пример 2
Двоичные данные:
b'\x90NPZR2\xef\x8a\xd6<\xe0X\x025\x00\x00\x00G\x00\x00\x00X\x00\x00\x003T9'
(b'\xbf\xe3^\xe0\x1d\xa4\xf3\x92\x8ak\x00\x00\nK""bc\xbf\xf6\xa3_\xbff'
b'e\x02\x00\x00\x003\x00\x00\x00\xa6\x7fX\xd7(\x9c@lwb\x03\x00\x00\x00D'
b'\x00\x00\x00\xb5\xf3*\x0bp+\x14kv\x02\x00\x00\x00V\x00\x00\x00\xd7.\xe9\x11'
b'?\xc8\xd4\xc5\x9e\x16\xca\xa2J\xf0\xb3\xe3G!\xaa\xd1b\xabw\x13?\x18\x9fg'
b'\xbf\xc0D\xc9>\xcb\xf1\x01\xbf\xc2n*>\x0e\xb8^?\xf5\x8d7>\xdf{!\xe4I\x08\x8d'
b'\xca\x17\xf6\xb1\xa9\x04\x00g\x00\x00\x00\xbd\x81\xbcj')
Результат разбора:
'A1': 169131537928482610,
{'A2': [{'B1': 'fe', 'B2': 32678, 'B3': 88, 'B4': 10455, 'B5': 16540},
'B1': 'lwb', 'B2': 62389, 'B3': 42, 'B4': 28683, 'B5': 5163},
{'B1': 'kv', 'B2': 11991, 'B3': -23, 'B4': 16145, 'B5': -11064}],
{'A3': -0.7239410281181335,
'A4': -8461432863674310941,
'A5': {'C1': 19106,
'C2': {'D1': 7120659545766212592,
'D2': [0.5760447382926941,
-0.9047713279724121,
0.39310264587402344,
-0.5075957179069519,
0.16643813252449036,
0.8699959516525269,
0.17925246059894562],
'D3': -467567649,
'D4': 12227825045330528329,
'D5': [197, 158, 22, 202]},
'C3': 1790738877},
'A6': -0.0023661295584542774,
'A7': -0.8735955953598022}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xbb 0x55 0x55 0x4a
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур D |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | uint8 |
4 | int16 |
5 | int64 |
6 | uint8 |
7 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint32) массива int8 |
3 | int32 |
4 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xbbUUJn\x00\x00\x00\x03\x00&\xda\x0e\x9b3\x00\xd9n\x99\xec\xe0n\xf7z'
(b'\xa9\xfa\x00\x04\x00\x00\x00)\x00\x00\x00\x04\x00udlqgwls\xc9\xf9e'
b'\x19\x00\x00\x00\x02\x00\x00\x00-JLI\xe7@8k\xc5\xa5\xac\x00\x00\x00\x03\x00'
b'\x00\x00>\xa0\xb7\xfc\xd0\xa4w\x99\xdb\xf0\xec\xe9v\x00\x00\x00\x05\x00'
b'\x00\x00P\xcd\x1c\xbb\x96\xfdcA\xff\x7f\x00\x00\x00\x02\x00\x00\x00d'
b"\x89\xe65'\xe6\x00\x00\x00/\x00\x00\x00A\x00\x00\x00U\x00\x00\x00f")
Результат разбора:
'A1': {'B1': {'C1': 110,
{'C2': 'dlq',
'C3': 218,
'C4': 3739,
'C5': 3675176364986392686,
'C6': 247,
'C7': 31401},
'B2': -6},
'A2': 'gwls',
'A3': [{'D1': 25881, 'D2': [-55, -7], 'D3': 1246513639, 'D4': 64},
'D1': -23124, 'D2': [56, 107, -59], 'D3': -1598554928, 'D4': -92},
{'D1': -5770,
{'D2': [119, -103, -37, -16, -20],
'D3': -853754986,
'D4': -3},
'D1': -129, 'D2': [99, 65], 'D3': -1981401817, 'D4': -26}]} {
Пример 2
Двоичные данные:
b'\xbbUUJ\xa0\x00\x00\x00\x02\x00&\x1dV\x97 \xcdK\x10\xaf5\xff>\x05}'
(b'\xc6C\x00\x04\x00\x00\x00(\x00\x00\x00\x02\x00PbshfdkMM\x83.\xaa\xb2\x00\x00'
b'\x00\x04\x00\x00\x00,\xf1\xc3\xb5\xe6\x0cS\xffn\xdc\x00\x00\x00\x02\x00'
b'\x00\x00?/p\\\xe6\xc2\x00\x00\x000\x00\x00\x00A')
Результат разбора:
'A1': {'B1': {'C1': 160,
{'C2': 'bs',
'C3': 29,
'C4': 22167,
'C5': 2363627914470489918,
'C6': 5,
'C7': 32198},
'B2': 67},
'A2': 'hfdk',
'A3': [{'D1': -21838, 'D2': [77, 77, -125, 46], 'D3': -238832154, 'D4': 12},
'D1': 28380, 'D2': [83, -1], 'D3': 795892966, 'D4': -62}]} {
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x93 0x42 0x44 0x42 0x4d
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | int32 |
4 | int8 |
5 | Адрес (uint32) структуры B |
6 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | int8 |
3 | uint8 |
4 | int16 |
5 | Структура C |
6 | Массив структур D, размер 2 |
7 | float |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
3 | float |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
3 | float |
4 | int64 |
5 | Массив uint32, размер 4 |
6 | Массив int32, размер 6 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x93BDBM@\xd9\x114.\t\x90M\x94\x82\x00\x00\x00\x1d\xb9\xb5\x08\x13\xdd'
(b'H\xd1\x15aa\x00\x00\x00\x02\x00\x00\x00\x1b\xe9\xfd\x9f\x08M\x8a\x9b\nq\xbeS'
b'\x02\xcfU\xeb\xc0\x82\xb3<\xbf4.\xb9\x98\xe3\x0b+[aX\xa1\x9d.\\\xbf'
b'\xe0\x9f\xff\xf0;\xacIq\xdcHD\xff\x91t>\x87u\xf7\x87\xda\x82\xa0\xc2R'
b'h\x16\xa1\xd3W\x0f\xe6s\x81C\xad\x1a\x16!s2\x7f\xec\xbe\xee~\xbd`\x1epmD\xb3'
b'\xe1\xf6\xa2j\x81\xd6P\xcf\xebr\x01b\xe6\xb9\x1e?\x93"\'E\x16!ra\x10Fp\x80'
b'\xfbAH\x97\xf6J6\xaen\x96\xfcT\xe2\x12\xbe\xe7[}')
Результат разбора:
'A1': 1087967540,
{'A2': 46,
'A3': 160451988,
'A4': -126,
'A5': {'B1': 'aa',
'B2': -23,
'B3': 253,
'B4': -24824,
'B5': {'C1': 1300929290, 'C2': 113, 'C3': -0.20606540143489838},
'B6': [{'D1': 1441513602,
'D2': -19652,
'D3': -0.7038379311561584,
'D4': -7430082679386580831,
'D5': [2637061311, 3768582128, 1001146737, 3695723775],
'D6': [-1854652793,
1979156442,
-2103393710,
1746313683,
1460659827,
-2126271206]},
'D1': 371290930,
{'D2': 32748,
'D3': -0.4658106863498688,
'D4': 6926096891548787190,
'D5': [2724889046, 1355803506, 23258809, 507482914],
'D6': [658839073,
1918963782,
1887501121,
1217918538,
917401238,
-61545966]}],
'B7': -0.4518698751926422},
'A6': -5065133324498317035}
Пример 2
Двоичные данные:
b'\x93BDBM\xb5;\xae\xc0\x98-\xe8{7\xe7\x00\x00\x00\x1d\x8d\x11\x93\xb6s'
(b'\x01u\xfdda\x00\x00\x00\x02\x00\x00\x00\x1b\x08\xf4a~\x02:\xc8\xe7\x91?w'
b'A\xf2\x99\xb3\x8a\xf5\xd4\x94;\x96Q\xd0\xf8\xb6b\xde\xef\x06\xb5\x0e'
b'8\xc9\x87\xdd%n\x8d\x01n\xa12\x19\xd0\xc5\x9b\t\xf4\x18\xe7\xcf\x86*\x95}'
b'\xe5\xbc\xcb\xfc\xe1U\xcb\xb6\xae8O\xb3\x8c\x19[W\xda\x12\xf1~D\x86=e'
b'\xb3\x12\x8d\xce\r\xe6\x9c\x03M\x93\xda\xb0\x16\x8a)\xdf\xd5u\xbe\xa8'
b'\xae\xe1\xc1? SA\x0c0\xb9u\xfb\xac\x7f\x08\xb9\x85\x02\xaf\x0b[d4o\x07B\x9b0'
b'\xe7\xe3>\x8c\xffQ')
Результат разбора:
'A1': -1254379840,
{'A2': -104,
'A3': 770210615,
'A4': -25,
'A5': {'B1': 'da',
'B2': 8,
'B3': 244,
'B4': 24958,
'B5': {'C1': 37406951, 'C2': -111, 'C3': 0.9658499956130981},
'B6': [{'D1': -1716286731,
'D2': -11116,
'D3': 0.004587389528751373,
'D4': -525123596909628146,
'D5': [952731613, 628002049, 1856057881, 3502611209],
'D6': [-199694385,
-2044029571,
-440611844,
-514470986,
-1372041293,
-1944495273]},
'D1': -636292738,
{'D2': 17542,
'D3': 0.05607897788286209,
'D4': -8228624185048216173,
'D5': [3668973194, 702535029, 3198725857, 3242139731],
'D6': [1091317945,
1979427967,
146375938,
-1358210204,
879691586,
-1691293725]}],
'B7': 0.27538540959358215},
'A6': -8281675827934824963}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x16 0x51 0x57 0x51 0x4c
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int16 |
3 | Массив uint8, размер 3 |
4 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint32) массива структур C |
3 | Массив int32, размер 7 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint16 |
3 | Размер (uint16) и адрес (uint16) массива int8 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | uint64 |
3 | int16 |
4 | uint8 |
5 | int32 |
6 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x16QWQL\x82gU\x91\x15\x05\xea?\x05\x00\x00\x00J\x00\x00\x00\xb7*\xc2'
(b'\xb8m\r\xdfSR\xeb\x9e\xf3\x14\xc3\xec\x80\x87\x9e\xaakl\xb2\x9e{\xf4\xa2\x06'
b'@\xe0\x90fl\x7fm\x00?\xc3\x84\x94\x90\xe4\xca\xd0P\x81\xb3\x88\xc7\xad\\\xf6'
b'+\x13\xea\x02\x1c\x06\x008\x00\x8fb\xb3\x04\x00>\x00\xf93\x87\x04'
b'\x00B\x00\x06\x8a\x95\x02\x00F\x00\xc9\xd2P\x02\x00H\x00\xab\xd2^'
b'\xf0\xda\x17\x1a\xd1\xd1\xc8L\xf8\x8b\xee\xc2\x0b+\xf0<\x8c5?hN+\xa8\x07')
Результат разбора:
'A1': {'B1': 0.8131206358477672,
{'B2': [{'C1': 234, 'C2': 7170, 'C3': [63, -61, -124, -108, -112, -28]},
'C1': 143, 'C2': 45922, 'C3': [-54, -48, 80, -127]},
{'C1': 249, 'C2': 34611, 'C3': [-77, -120, -57, -83]},
{'C1': 6, 'C2': 38282, 'C3': [92, -10]},
{'C1': 201, 'C2': 20690, 'C3': [43, 19]}],
{'B3': [-1195234633,
1407126893,
-207688878,
-2131967212,
1806343815,
2073997932,
1074176756]},
'A2': -28448,
'A3': [102, 108, 127],
'A4': {'D1': -3379362341285080405,
'D2': 847501964832721105,
'D3': -4053,
'D4': 60,
'D5': 1748972940,
'D6': 128461646}}
Пример 2
Двоичные данные:
b'\x16QWQL\xa6\xb2\xe9\xd2\xd1\xfa\xee?\x03\x00\x00\x00A\x00\x00\x00$z\x01'
(b'\xcc8\xfa\xc6.\x0bOb\x9e\x8a\xeb\x9c\xcb\x10\x89\xb8\x18\x8d\x18\xa5F\xe1,o'
b"p\x19$J\x9b(V\x00P'o\xae\x87\xf55\x14\xc3J\x9d\n\x02\x008\x00"
b'\xfb\x1e\xd4\x03\x00:\x00\x9e\xac\x8d\x04\x00=\x00\xf02~\x18a\x0388\x98R'
b';is\xf9\x16+\x943\x9d\xd2k\xfc\x04\xb1S\x8dl')
Результат разбора:
'A1': {'B1': 0.9681176299469214,
{'B2': [{'C1': 74, 'C2': 2717, 'C3': [80, 39]},
'C1': 251, 'C2': 54302, 'C3': [111, -82, -121]},
{'C1': 158, 'C2': 36268, 'C3': [-11, 53, 20, -61]}],
{'B3': [-872318428,
784792120,
-1637724405,
-878908534,
414746896,
1185224845,
1886334177]},
'A2': 9241,
'A3': [74, 155, 40],
'A4': {'D1': 4050991580377395952,
'D2': 3104943267200586392,
'D3': 13204,
'D4': 157,
'D5': 83651538,
'D6': 1821201329}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4f 0x4b 0x5a
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | double |
3 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур C |
3 | uint64 |
4 | Размер (uint16) и адрес (uint16) массива int8 |
5 | Массив uint8, размер 3 |
6 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | uint32 |
3 | uint64 |
4 | Адрес (uint16) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | double |
3 | Массив uint16, размер 3 |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | Массив uint64, размер 3 |
3 | uint8 |
4 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'OKZOc\x90\xbe\x02\x00\x00\x00\xb6\x00\x97\xe5\xb5u\xe3X\xa3\xa6\x02\x00\xbe'
(b'\x00\xd3\xeb\x95\x18\xf2\xbfP2`\n\x92\xbd\x0c\xe8?\xd9\xc7r\x9dCa\xf4\xe8'
b'\xe2?6m\xf9\xf2\xe89\xe3\xbf\xb5\x94G\x02\x1c#A\xccV?\xf3\xd8.\x95\x1bF\xc4v'
b'\x88\x81Z\xf2}\xa1?f\x8e\t\x97\xba:\xfc\xa3\xf6af*\x00\x00\x00:\x87'
b'\xde=7\xe5\xc0D\xc4y\xa4\xaa@\x00$\xf1C\x88\xe4\x0b\xdf?\xea(\xc6#'
b'\x86\x12\xe2\xbf\x8b "_{\xba\xda\xcf\xe9=k\xf3"\x13z\xae\xb6\xb3\xef\x15'
b'\xceM\x89g)\xf24K\xdbR\xd8\xa0\xe8\xce\x8e>p\x00\x00\x00\xa7<\x93\xd8'
b'X\n\xde\x95>\xfd\x15-\x86\x00^\x00\x00\x00\xa4\x00\x00\x00\xa4\xd8')
Результат разбора:
'A1': {'B1': -0.2820076644420624,
{'B2': [{'C1': {'D1': 0.5909368419351451,
'D2': -0.6008190866081466,
'D3': [38069, 583, 8988]},
'C2': 1037993786,
'C3': 12296086766502339895,
'C4': {'E1': 0.8390541672706604,
'E2': [8558042276191721715,
7367785077710422408,
17772325883702872462],
'E3': 97,
'E4': 102}},
'C1': {'D1': 0.4851008730618267,
{'D2': -0.5647612284385819,
'D3': [8331, 24354, 47739]},
'C2': 3633527975,
'C3': 3248781151461837400,
'C4': {'E1': 0.11416597664356232,
'E2': [12949729617880740715,
17449592070637229551,
14909343417373510452],
'E3': 142,
'E4': 62}}],
'B3': 12007538765455549847,
'B4': [-92, -40],
'B5': [211, 235, 149],
'B6': 1354756632},
'A2': 0.7515552379945858,
'A3': -14375}
Пример 2
Двоичные данные:
b'OKZ\xaf0\x97>\x02\x00\x00\x00\xb6\x00K\xbb\x89X~\x92\xb8\xc0\x02\x00\xbe'
(b'\x00\x9eVwr0\xe9@\xf8\xb3\xbb\xf6\x8a\xf7\xd8\xbf\x06W("\x95\x93\xad\xa1'
b'\xcc?\\\x91\xb2xp\xb1\xdb\xbf\xf7\xad\x88\xd8\x9cu\x07\xc0\x07\xbfG\x7fG\x88'
b'\xa6\xfe\xf2\x9d\xc2[\x1a\x82\xbfuwA\xa9\xf1\x91f`Q\xebjj\x9f*\x00'
b'\x00\x00m\xd0\x8f\xe1\x90\xf5\xe0|h#\x19\x07@\x000%\xdeulC\xc6\xbf\xe8X@\x10'
b':\xda\xe9?TIM\x82\x9a\x92\x1bC7\xbf\xa7\x0fXuu!_\xcc\x91\xad`\xea=\xff'
b'#Y\x13^\xd3\xdd\x8c\xea\xc5#f?p\x00\x00\x00w^\x8a\x05\x93E\x9ez'
b'\xcd\xbb\x99\x13\x86\x00^\x00\x00\x00\xa4\x00\x00\x00\xad\x9b')
Результат разбора:
'A1': {'B1': 0.29529330134391785,
{'B2': [{'C1': {'D1': 0.22368402200869864,
'D2': -0.43270503794544424,
'D3': [44535, 55432, 30108]},
'C2': 3784298605,
'C3': 511478964361950608,
'C4': {'E1': -0.5302738547325134,
'E2': [11381439199523077959,
4717368600075852738,
7704341062026916265],
'E3': 106,
'E4': -97}},
'C1': {'D1': -0.17393260722409698,
{'D2': 0.8078890149506863,
'D3': [18772, 33357, 37530]},
'C2': 92954231,
'C3': 1412366449357243795,
'C4': {'E1': -0.7158676981925964,
'E2': [14726526094888406951,
6423258134950751633,
2577724252477414931],
'E3': 102,
'E4': 63}}],
'B3': 13887010522345880395,
'B4': [-83, -101],
'B5': [158, 86, 119],
'B6': 1089024114},
'A2': -0.3901088151458789,
'A3': 22278}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x48 0x43 0x51 0x45
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
3 | Массив адресов (uint32) структур B, размер 3 |
4 | uint8 |
5 | Адрес (uint16) структуры D |
6 | Массив int32, размер 2 |
7 | double |
8 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | Адрес (uint16) структуры C |
Структура C:
Поле | Описание |
---|---|
1 | Массив float, размер 5 |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'KHCQE#Zck\x00\x00\x00H\x00\x00\x00p\x00\x00\x00\x99\xfb\x00\xa33sf<'
(b'\xd8\xe5\xb2\x0b?\xc5\x07\x92d\xf5Hp;-nb>!tu=\x82\xe1X\xbfZ7\x12?Q\xcaN'
b'>\x9f\xea\xb0\x1aR\x82\xbd\xe2\xce\x90\xcc?b\x93\x88\x00\x02\x00*\x00,bk'
b'\xbe \xef\x18\xbeQm\xb5?.\r\xd4\xbfA\x04\xd4?\x1ep\xa8\xd2\xa1r]\xfbRC\xd9'
b'?gU/\x00\x02\x00R\x00Tkkq\xbeTC^\xbf\x13\xad*?\x1a}\xfb>p\xd9'
b'\xc1\xbd\x85\xc2\n\x91\xd4/#XgAq\xbe\xc2f\xdd\x00\x03\x00z\x00}>'
b'\xd9\xe9s\x84v')
Результат разбора:
'A1': 9050,
{'A2': 25451,
'A3': [{'B1': 0.885063648223877,
'B2': 'nb',
'B3': {'C1': [0.15767081081867218,
0.06390637159347534,
-0.8524028062820435,
0.8194931745529175,
0.31233739852905273],
'C2': 1896722145142018252}},
'B1': 0.9036435484886169,
{'B2': 'bk',
'B3': {'C1': [-0.15716207027435303,
-0.2045200616121292,
0.6798985004425049,
-0.7539799213409424,
0.6189064979553223],
'C2': 15177537967189279705}},
'B1': -0.3796910345554352,
{'B2': 'kkq',
'B3': {'C1': [-0.2072882354259491,
-0.5768610239028931,
0.6034848093986511,
0.23520566523075104,
-0.0653115063905716],
'C2': 10508075659415732593}}],
'A4': 251,
'A5': {'D1': 0.42560920119285583, 'D2': 33910},
'A6': [863200828, -656035317],
'A7': 0.16429357461544525,
'A8': 15149}
Пример 2
Двоичные данные:
b'KHCQE# hD\x00\x00\x00I\x00\x00\x00q\x00\x00\x00\x9a\x86\x00\xa4\n\x1fVd'
(b'4>p\x98\xbf\xd2\\r\x9b0Z\x08:\xd5wev>\xc3W>\xbd\xc3S\x06?$ld\xbfbI'
b'\xc6\xbe\xd5\x97\x02\x7fLt\x85\xdc\xad\x1ff\xbf\x11\x88\xaf\x00\x03\x00'
b"*\x00-il?F\x8a'>\x933\x8f\xbf3\x05\xdf\xbfn\xb4\xd2>\x8f8\xbbH\x86W"
b'\xa6\x8b1\xfd\xc6?P\x16\xe2\x00\x02\x00S\x00Uhxb>.\xea\xf1>n\x94V\xbes'
b'YH\xbe\x11\x04:?9{\x8cj\xb6\x16\xa2\xf6Dt\xe9\xbf\x0c\x846\x00\x03\x00{\x00~'
b'\xbfh\xb2\xf9\xa5\x1f')
Результат разбора:
'A1': 8992,
{'A2': 26692,
'A3': [{'B1': -0.5684918761253357,
'B2': 'wev',
'B3': {'C1': [0.3815249800682068,
-0.09537319839000702,
0.6422789096832275,
-0.883938193321228,
-0.4171677231788635],
'C2': 9172834659328663398}},
'B1': 0.8128491640090942,
{'B2': 'il',
'B3': {'C1': [0.7755455374717712,
0.2875027358531952,
-0.6993083357810974,
-0.9324465990066528,
0.2797296941280365],
'C2': 5225960790421536198}},
'B1': -0.5488923788070679,
{'B2': 'hxb',
'B3': {'C1': [0.17081810534000397,
0.23298773169517517,
-0.23764526844024658,
-0.14161768555641174,
0.724541425704956],
'C2': 7689358302953895145}}],
'A4': 134,
'A5': {'D1': -0.9089809060096741, 'D2': 42271},
'A6': [169825892, 876507288],
'A7': -0.28689255862391905,
'A8': 15061}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xe9 0x54 0x45 0x54 0x47
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Структура G |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 2 |
2 | int64 |
3 | int32 |
4 | uint8 |
5 | float |
6 | uint64 |
7 | Адрес (uint16) структуры D |
8 | Адрес (uint16) структуры F |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | float |
3 | float |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | Структура E |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | Размер (uint16) и адрес (uint16) массива uint32 |
Структура F:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint8 |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
3 | int32 |
4 | float |
5 | Массив int8, размер 7 |
6 | float |
Структура G:
Поле | Описание |
---|---|
1 | double |
2 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xe9TETG\x00v?\xc1\x83*/g h\xdf\xa9\xc7\x04\x9fr\xdb\xb1\xbf\xebE\x8bG'
(b'\xb6\xb2\xfc\xbfg\xfcw?l\x00R\xbf\xe2k\xb1}\x9b6\xb6\xbe\xc5gY?C*gDn9hD'
b'H\xed\x80\xbf\xee\x0c\x97\xdb\xd8\xc6\xa2?\xe7\xb5+\xdd,\xf9\xda\x81'
b'\xe7\xfaN\x00\x02\x007\xf3\x84P\xd8\x00\x02\x00W\x00\x02\x00Y\xfb'
b"\x10'\x88\xbfw\xe8\x13[\xe3c+\xc6\xfe\xea\xbeM_S\x00\x17\x00'\xcd\x1f"
b'\x96\xf9\xd2q\x91\xe3\x11\xb8\xbf\x06\xc1?c\xe9z\xa6\x0f\xab\x94\xa7'
b'\xdd]\xfa\x00?\x00[')
Результат разбора:
'A1': {'B1': [{'C1': -0.8522392655046072,
{'C2': -0.9061960577964783,
'C3': 0.9218798875808716},
'C1': -0.575646157574474,
{'C2': -0.38555410504341125,
'C3': 0.7623657584190369}],
'B2': -3666045571934613021,
'B3': 297320198,
'B4': 193,
'B5': 0.8902813196182251,
'B6': 11965971389906509306,
'B7': {'D1': -0.9390372556574287,
'D2': {'E1': 0.7408656425321241,
'E2': -2115503538,
'E3': [1148074344, 1145630080]}},
'B8': {'F1': [243, 132],
'F2': [80, 216],
'F3': -82827384,
'F4': -0.9683849215507507,
'F5': [91, -29, 99, 43, -58, -2, -22],
'F6': -0.20055894553661346}},
'A2': {'G1': 0.1368153315982028, 'G2': -2330112509518619727}}
Пример 2
Двоичные данные:
b'\xe9TETG\x00z?tq\xed4\x9bH\x00D\xef)8j\xf4\xa3\xef\xbf\xe6@\x0e&'
(b'8\x06\x16\xbfw\x8e\x06<\xfd\x04`?\xe0\x07Q\xfc\xdd\x19.?\x17\xa3\x10\xbe'
b'\xe5"+.*\xe5\xc5\xf8\xa4\xcbv\x85\xb8\x14\x84?\xda\xfdO\xa6\x0f\xfb@?'
b'\xcb{-\x18[\xa2h\x95\xe6\x947\x00\x03\x007\xa6\x90\xa3W\x00\x02\x00[\x00'
b"\x02\x00]O\xcb\xea\xbb>'n\xd3\xf1\xe7\xc9\x03\r\\\xea\xbe\x99C\x80\x00\x17"
b"\x00'\x11\xe0u\xbb5JX\xe3}\x80b\xae\x97>\xd3\xce\xc9tn\x05\xd0\xa4"
b'\x9a0\xc8\x00C\x00_')
Результат разбора:
'A1': {'B1': [{'C1': -0.6953192469083571,
{'C2': -0.9670108556747437,
'C3': 0.03088587522506714},
'C1': 0.5008935869925943,
{'C2': 0.5923318862915039,
'C3': -0.44752630591392517}],
'B2': 1288158940341360867,
'B3': 2105565870,
'B4': 151,
'B5': 0.4136870205402374,
'B6': 8389649549510717640,
'B7': {'D1': 0.42171088425668657,
'D2': {'E1': 0.21469653786995768,
'E2': -1780050889,
'E3': [774563269, 4171549558, 2243433604]}},
'B8': {'F1': [166, 144],
'F2': [163, 87],
'F3': 1338763963,
'F4': 0.16350869834423065,
'F5': [-15, -25, -55, 3, 13, 92, -22],
'F6': -0.2993431091308594}},
'A2': {'G1': 0.004991461357080951, 'G2': 4967234236302271471}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xbf 0x4a 0x53 0x50 0x49
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
3 | Адрес (uint32) структуры B |
4 | int8 |
5 | Массив адресов (uint32) структур C, размер 7 |
6 | int32 |
7 | Структура D |
8 | Адрес (uint16) структуры F |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | float |
3 | Размер (uint32) и адрес (uint16) массива char |
4 | int16 |
5 | float |
6 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
3 | int32 |
4 | int8 |
5 | float |
6 | Структура E |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | int32 |
3 | Размер (uint32) и адрес (uint16) массива uint16 |
4 | uint16 |
Структура F:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив int16, размер 2 |
3 | Размер (uint16) и адрес (uint32) массива int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xbfJSPI\xd6\xef\x9d\xb1\x06P\x00\x00\x00nd\x00\x00\x00i\x00\x00\x00n'
(b'\x00\x00\x00s\x00\x00\x00x\x00\x00\x00}\x00\x00\x00\x82\x00\x00\x00\x97'
b'\xaa\xab\xa6\x9d\x1d\x90\x89uP\x05.\xaa\xce\xae\x8e>\xceA\xfe\xf5'
b'^\x04\x00\x00\x00\x87\x00\xb5\xad\x99\x00txicd \x10\x1d01\xbf\x05\x00'
b'\x00\x00K\x00\x93C]J\x18\xbfq\x072`o\x00\x00C;e\xc0cU\x90\xf6\xaf\xda\xbd'
b'\x17\xdd%}\xe5.d@\xc4\xcd\xba\xce\x7fI\xa9.\xa7\xe5t-\x06g\x8b\x03s\x8e]['
b'\x9eU\xf6\xf4\x84<6$T:\xd9m{\xea%\x97\x0f\xd3\x9a\x12\xcf\x05\x00\x8f'
b'\x00\x00\x00')
Результат разбора:
'A1': 2979917782,
{'A2': 6,
'A3': {'B1': 4128,
'B2': -0.6921404004096985,
'B3': 'txicd',
'B4': 17299,
'B5': -0.5948846936225891,
'B6': 1905},
'A4': 110,
'A5': [{'C1': 7299122, 'C2': 0},
'C1': -1067107517, 'C2': 99},
{'C1': -1342795691, 'C2': -38},
{'C1': 635246525, 'C2': 125},
{'C1': 1080307429, 'C2': -60},
{'C1': 2144254669, 'C2': 73},
{'C1': -442028375, 'C2': 116}],
{'A6': -1498699113,
'A7': {'D1': 7581,
'D2': 35216,
'D3': 772100213,
'D4': -86,
'D5': 0.27867740392684937,
'D6': {'E1': -50,
'E2': 1593179713,
'E3': [1581, 35687, 29443, 23950],
'E4': 44469}},
'A8': {'F1': 1123408321075599674,
'F2': [-25901, -12526],
'F3': [-24997, -2475, -31500, 13884, 21540]}}
Пример 2
Двоичные данные:
b'\xbfJSPI%\xfa\x16duP\x00\x00\x00fd\x00\x00\x00i\x00\x00\x00n\x00\x00\x00s'
(b'\x00\x00\x00x\x00\x00\x00}\x00\x00\x00\x82\x00\x00\x00\xff2!K\xdc'
b"\xa0B\xd3\xea\xf7\x03\xfc\xf0PCh\xbf\xac8'\x87\xed\x04\x00\x00\x00\x87\x00R"
b'e\x93\x00ncpyl-\xba8\xbd\x03>\x05\x00\x00\x00K\x00\xffY\x7f\xd4\x8c>\x1c\xcf'
b'\x9c\xde\xfc\x83\xfdH\x1c\xf6\x96\xe5;\xd5\xd0-\xafcO\xcaj\xcd\x13\xd34I'
b'u\xa2D\x11VL\x03I\xce\xedP \x93!\xd1N\x15l-\xd3\xc9\xf6Q2\xb3r&\x19y+>I'
b'\xcc\xbe\xaa\x02\x00\x8f\x00\x00\x00')
Результат разбора:
'A1': 1679227429,
{'A2': 117,
'A3': {'B1': -17875,
'B2': 0.12865149974822998,
'B3': 'ncpyl',
'B4': 23039,
'B5': 0.27505871653556824,
'B6': 53020},
'A4': 102,
'A5': [{'C1': -2080579940, 'C2': -3},
'C1': -1762255800, 'C2': -27},
{'C1': 768660795, 'C2': -81},
{'C1': 1791643491, 'C2': -51},
{'C1': 1228198675, 'C2': 117},
{'C1': 1443972258, 'C2': 76},
{'C1': -305247997, 'C2': 80}],
{'A6': 1260466943,
'A7': {'D1': -24356,
'D2': 54082,
'D3': -66848790,
'D4': -16,
'D5': -0.9072771072387695,
'D6': {'E1': -84,
'E2': -309909704,
'E3': [37664, 53537, 5454, 11628],
'E4': 25938}},
'A8': {'F1': 4479807403276284722,
'F2': [-13239, -21826],
'F3': [-13869, 20982]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x57 0x57
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур B, размер 3 |
2 | Массив char, размер 3 |
3 | Адрес (uint16) структуры D |
4 | double |
5 | int8 |
6 | uint16 |
7 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Структура C |
3 | uint16 |
4 | Размер (uint32) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | Массив int32, размер 2 |
4 | double |
5 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GWW\x00\x00\x000\x00\x00\x00Q\x00\x00\x00pnjh\x00\x8c?\xe5\x99\x11h\xf1L\x9c'
(b'\xd2\x81:\xc1i\xaf\x98:\xc8\xc4\x1b\x9eavaorepn\xed\n\xac\x93\xb5\x1f\xd7u'
b"0\xea\xdb'\x9f\xe2\x86\xb0\xce\xa2\xc8\x95\x00\x00\x00\x07\x00\x00\x00)zuou"
b'pu\xdb\xf4\xa1PdX\xea3\xaen7\xfd\x07w\x9a#\xe5w\x02\x00\x00\x00'
b'\x05\x00\x00\x00Ldub\xe5[n\x03E\xea\xd4N\xe1\xe8\x8e\xa3W4\x8ca'
b'\xb5\xa1\x91\x04\x00\x00\x00\x03\x00\x00\x00m.n\xea\xf8F?""t\x11\xe0\x9c'
b',\xa2?\xe7=OD<`0m')
Результат разбора:
'A1': [{'B1': 17080654287154960245,
{'B2': {'C1': 12522, 'C2': 15791766413669093026},
'B3': 51349,
'B4': 'vaorepn'},
'B1': 8492650496012867818,
{'B2': {'C1': 13230, 'C2': 7942094676404347877},
'B3': 30466,
'B4': 'zuoup'},
'B1': 16526924217903141966,
{'B2': {'C1': -7704, 'C2': 10278154657794733473},
'B3': 37124,
'B4': 'dub'}],
'A2': 'njh',
'A3': {'D1': 779021048,
'D2': 17983,
'D3': [572683281, -526635870],
'D4': 0.7262340862971595,
'D5': 109},
'A4': 0.6749350595149681,
'A5': -46,
'A6': 33082,
'A7': {'E1': -16023, 'E2': 12652927787055423073}}
Пример 2
Двоичные данные:
b'GWW\x00\x00\x00/\x00\x00\x00R\x00\x00\x00rylu\x00\x8e\xbf\xef\x88\xc7'
(b'\xb9T0\x80O\x90D\x08r\xbb1\xda=\x8a\xa8/\xf1lrldax\xa4\x15s\xab\x97'
b'\xf1bx\x83\xf9\xaa\x97\x87wQ\xf1\xf7%^o\x00\x00\x00\x06\x00\x00\x00)ijbwu'
b'ly\xea\t\xce\xa6\xd3<M\x92\xe9\x13uq\x8a\xe8\xd3\xc0o\xf0\x82\xce\x00\x00'
b"\x00\x07\x00\x00\x00Kvrglp\xa1\x16\xd9\no\x7f\xe2\x80\xebi\xee\x92Qp'5g"
b'\xa2\xe2\x00\x00\x00\x04\x00\x00\x00n\x8e\xba)\xc4\xb3e:\x06\xe3='
b'\xcf\x90\x9f\x85?\xe1\x97\xeb\x16J\x9eb\xe0')
Результат разбора:
'A1': [{'B1': 11823483577556886136,
{'B2': {'C1': -31751, 'C2': 12292442654476728101},
'B3': 24175,
'B4': 'lrldax'},
'B1': 16864237495569370514,
{'B2': {'C1': -5869, 'C2': 8462697907395522544},
'B3': 33486,
'B4': 'ijbwuly'},
'B1': 8115793124937138146,
{'B2': {'C1': -32533, 'C2': 7633199296911193447},
'B3': 41698,
'B4': 'vrgl'}],
'A2': 'ylu',
'A3': {'D1': 2394565060,
'D2': 45925,
'D3': [973529917, -812605563],
'D4': 0.5497947154407934,
'D5': -32},
'A4': -0.9854467982963939,
'A5': 79,
'A6': 36932,
'A7': {'E1': 2162, 'E2': 13488802316805484529}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa0 0x4d 0x43 0x4a 0x5a
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 3 |
2 | int16 |
3 | float |
4 | Адрес (uint32) структуры B |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint16) и адрес (uint16) массива структур C |
3 | Адрес (uint16) структуры D |
4 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | uint64 |
4 | double |
5 | Размер (uint32) и адрес (uint32) массива uint8 |
6 | uint64 |
7 | Массив uint32, размер 7 |
8 | Массив uint8, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xa0MCJZczxf.?\x08\xe5!\x00\x00\x00}\xaf\x89\x1d\x10\xb2\xf9r\xb1\xc0K'
(b'\xba85\x8flo7<\xc9\xb9\x19\x95\x8d\xd14\xcf\xea\xfd\xae\x0c\xb8\x07\xf3\x02'
b'\xdb\x83\xfb\x0f\xd8\x14\x8e\xbf"\\\xd9\x0fd\xa64\xc8\x05!\xb9?'
b'\xe1\x85\xc3\x14\x0eV\xfe\x00\x00\x00\x03\x00\x00\x006\x82\xb6\x8b\x95\x9c'
b'WS\xef\x0c\xd15CkZ\xf8\x9e\x18\xc5\xe5a\xdb\xef%\xc5^"\xea\xcd\xee~p\x0f\xd8'
b'\x98q\xf7A\xe1\xbf\xa2K\xf3M\xa2O\x80\x00\x03\x00\x12\x009\x1d|\x95\xa6\x94'
b'\xb9\x9f\x8e')
Результат разбора:
'A1': 'czx',
{'A2': 26158,
'A3': 0.5347462296485901,
'A4': {'B1': -0.03573570559197403,
'B2': [{'C1': 2944998672, 'C2': 12896465115713092152},
'C1': 898591855, 'C2': 3980277967524040145},
{'C1': 886041341, 'C2': 12541601406601321347}],
{'B3': {'D1': 5262,
'D2': -0.6342292428016663,
'D3': 1109194153864274361,
'D4': 0.5475783721655885,
'D5': [251, 15, 216],
'D6': 9418869145381327855,
'D7': [215037251,
1801123998,
415622497,
3689883077,
1579346637,
4001263631,
3633869303],
'D8': [65, 225]},
'B4': 2124737666904334222}}
Пример 2
Двоичные данные:
b'\xa0MCJZhee\xa8\xfc?;\x849\x00\x00\x00p\x0f\n 2H\xd0\x1a\x10m.\x90)^\xb4'
(b';\xb1I\xfc\x9e\x1e<\xe2\xdd\xe2CN9\xaa?e\xf1"Pf\xe9\x98~\xdb$}\xbf\xdejQVe'
b'\xc3\x98\x00\x00\x00\x02\x00\x00\x00*\xaflf\\\xdf\x85,\x04\xd1\xf2'
b'\xcc\x91\xa5|\xfaw?\x901|%\x89Z\xe9Uw\xddo\xca\x83a\xec\t\xdf2h\x0bX'
b'\xbf\xe0^\xf8\xcf\xb0\xb4\x9c\x00\x02\x00\x12\x00,\x85f\xe4\xb6\x1a,'
b'\xd1\xba')
Результат разбора:
'A1': 'hee',
{'A2': -22276,
'A3': 0.7324863076210022,
'A4': {'B1': -0.511593251843482,
'B2': [{'C1': 252321842, 'C2': 5246722223740194857},
'C1': 1588870065, 'C2': 5331309911607533026}],
{'B3': {'D1': 14762,
'D2': 0.8982106447219849,
'D3': 5793574811831313533,
'D4': -0.47523911893136406,
'D5': [67, 78],
'D6': 12640590803195210756,
'D7': [3522350225,
2776431223,
1066414460,
629758697,
1433918831,
3397607916,
165622376],
'D8': [11, 88]},
'B4': 9612621925443228090}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5 0x43 0x50 0x46
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Массив char, размер 3 |
3 | Структура B |
4 | Массив char, размер 4 |
5 | Структура D |
6 | float |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | Массив адресов (uint16) структур C, размер 4 |
4 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint32 |
3 | uint64 |
4 | Массив int8, размер 4 |
5 | uint8 |
6 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x05CPF\xf3\x8e\x11?mkn\xf9\xdc<\x00H\x00T\x00`\x00\xc3Riqek(a\x9f\x81R'
(b'\xb2\xcdIS\xd0\xc9\\\xcdN\xa4k\x02\xff\xb1J=\x0b\xe8\x9e<\xd7\x91\xee\x82'
b'\xf4\xcc?;*\xa3P\nh\xc8\xea?IB9X\xd4\xbf\x8b\xba6D\xd8\xbf\xc9~\x156'
b'\x00\xdf#\xae\xe1\x9e\x86?\x8a\xccs\xea`\xd7\xad\x12\x90\x98\xae?J\x90x]')
Результат разбора:
'A1': 0.5685874819755554,
{'A2': 'mkn',
'A3': {'B1': 249,
'B2': 220,
'B3': [{'C1': 0.8369636727776186, 'C2': 1480147529},
'C1': -0.37916343896267546, 'C2': 907378377},
{'C1': 0.011045230032763254, 'C2': 3933457546},
{'C1': 0.059757711677703496, 'C2': 1568182346}],
{'B4': 21187},
'A4': 'iqek',
'A5': {'D1': 5318102802426192168,
'D2': 1556729939,
'D3': 5382363415545401037,
'D4': [61, 11, -24, -98],
'D5': 60,
'D6': -2098294313},
'A6': 0.0029266448691487312}
Пример 2
Двоичные данные:
b'\x05CPFh\xb1M?crjxF<\x00H\x00T\x00`\x00\xa5jwkwuV\xab\xbf\xae\xd4\xb1qI\xbc'
(b'\x1b\xd7N$\xfd\xd0\xceh\x1eom\x9e\xd2\x19\xff*3C\x0fN\x15\x8d\x8e>'
b'\xd4s\x87\xaf8\x7f\xd9?\xa0\xabw\xc1\xf8\xc6\x83\x1e\x1b\xa2\xec?'
b'\x02{\x12\x02\xa0\xfbB\xf3+\x08\xdb\xbf\xa4\xb8\xfcb\xe0\xc1\xd7\x08'
b'\xd6\xd2\xaa?IN<:')
Результат разбора:
'A1': 0.8034882545471191,
{'A2': 'crj',
'A3': {'B1': 120,
'B2': 70,
'B3': [{'C1': 0.3983899797584034, 'C2': 3245845408},
'C1': 0.8947883220664314, 'C2': 34765570},
{'C1': -0.4223737598039694, 'C2': 1660729508},
{'C1': 0.05238980157799111, 'C2': 977030729}],
{'B4': 27301},
'A4': 'wkwu',
'A5': {'D1': 5292206564160023382,
'D2': 1322720188,
'D3': 7885554908044262692,
'D4': [-98, -46, 25, -1],
'D5': 42,
'D6': 1309623091},
'A6': 0.2784201204776764}