Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x49 0x56
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Структура C |
3 | Структура E |
4 | int64 |
5 | uint16 |
6 | uint16 |
7 | int8 |
8 | Структура F |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив структур D, размер 2 |
2 | int64 |
3 | Массив uint16, размер 4 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива uint8 |
2 | uint32 |
3 | uint64 |
4 | int8 |
5 | float |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint32 |
3 | Размер (uint32) и адрес (uint16) массива uint8 |
Структура F:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VIV\xe4\x04\x00\x00\x00s\x00\x00\x00\x88#\xc5\x7f\x02\x00\x00\x00'
(b'w\x00\x00\x00\xfb\xea\x82\xfd\x02a[[\x94\x88\xe4^\x88\x9d\xb3\xd7'
b'\xbe\x02\x00\x00\x00y\x00\x00\x00\x17?\x1bl\xfdg\x89\xfc_\nx\xaf\xc4\x8dF'
b'\xf7>\x07\x88m\xb5\x98O&\x0e*i\x921\x95\xaf\xb1]\x8a\x15zwV\xf5'
b'\x06\x00\x00\x00{\x00\xcf\x06hE\x9c\xb8@4\xf4y\xd0U\x16\x1f\xd6\xc8>\xb2'
b'\x0c\x006cljh\xd6h\xac:\x19:\xdc\xf5Y\xd9')
Результат разбора:
'A1': {'B1': -28, 'B2': 'cljh', 'B3': 2143626120},
{'A2': {'C1': [{'D1': [214, 104],
'D2': 4253215483,
'D3': 6837740305024508162,
'D4': -120,
'D5': -0.4212922155857086},
'D1': [172, 58],
{'D2': 1813724951,
'D3': 12643867361217701885,
'D4': -60,
'D5': 0.48296013474464417}],
'C2': 1019589882943473671,
'C3': [26922, 12690, 44949, 23985]},
'A3': {'E1': 5514, 'E2': 4116084602, 'E3': [25, 58, 220, 245, 89, 217]},
'A4': 3765212269800589007,
'A5': 31220,
'A6': 21968,
'A7': 22,
'A8': {'F1': 0.3922586143016815, 'F2': 905972914}}
Пример 2
Двоичные данные:
b'VIV\xe0\x02\x00\x00\x00s\x00\x00\x00\xc16T\xce\x02\x00\x00\x00u\x00\x00\x00'
(b'\x19d@\x9a\xa3\x9d\xb82Lp\xcb1\x8frc\xf3>\x03\x00\x00\x00w\x00\x00'
b"\x00\x08B\xd6#\x95\x07|Q\x96\xbc\xdaK\xcb'la?\xecz|\x9f\n\x13 \xc2\xe0\xfe"
b'\x90\t5B\xe4z\xf5\xf7\x1f\xfb\xc5\x94\x02\x00\x00\x00z\x00\xa0}\xd6r\xf2\xfc'
b'\xcb\x92\xe3-\xc59\x81x\xe1E?\x9bA\xf0hek[\x0b~gP\x90Z')
Результат разбора:
'A1': {'B1': -32, 'B2': 'ek', 'B3': -833341759},
{'A2': {'C1': [{'D1': [91, 11],
'D2': 2587911193,
'D3': 3588085000701517219,
'D4': -113,
'D5': 0.47536808252334595},
'D1': [126, 103, 80],
{'D2': 601244168,
'D3': 5465888451565717397,
'D4': -53,
'D5': 0.8805565237998962}],
'C2': -4458542694750455060,
'C3': [65248, 2448, 16949, 31460]},
'A3': {'E1': 63477, 'E2': 2496002847, 'E3': [144, 90]},
'A4': -7868917805660865120,
'A5': 11747,
'A6': 14789,
'A7': -127,
'A8': {'F1': 0.7729716300964355, 'F2': 1760575899}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xba 0x4b 0x50 0x49
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | uint32 |
3 | Адрес (uint32) структуры C |
4 | int32 |
5 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 3 |
2 | int16 |
3 | int32 |
4 | double |
5 | float |
6 | int64 |
7 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint32 |
3 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур D |
4 | uint32 |
5 | Структура E |
6 | Массив uint8, размер 2 |
7 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
3 | Массив double, размер 2 |
4 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xbaKPI\x00\x1ab!\x0fb\x00\x00\x00J\x1b\xd1\x01L\x04@x\xb7\xd3\xe0\xf8\xb4bh'
(b'a>j\xea&H)\xbf\xbc<Fgb\xd3@>\x95\xf7\xc3.#9m\xba\xf86\x05\xdcpi\x8e\xbf'
b'\xb2\xf4\x00\x00\x008\x00\x00\x00:\x00\x00\x00<\xf4\xf6\t\xf0\x04\xf3'
b' \xc1\x00\x00\x00\x03\x00\x00\x00>kp\xc9\xd1\xb9R\xbf\xebxp\xde\xb4\x19\x16'
b'?\xef\x8dh_\xdf]\xb2?K?\x03\x04\xc1Zv\xcb\xf24\xc6W\xd0')
Результат разбора:
'A1': {'B1': 'bha',
{'B2': 15978,
'B3': -366589911,
'B4': -0.11029472374032157,
'B5': 0.29290589690208435,
'B6': 3324564093380605445,
'B7': -36},
'A2': 1646333794,
'A3': {'C1': 4109765104,
'C2': 83042497,
'C3': [{'D1': 112, 'D2': 105},
'D1': -114, 'D2': 191},
{'D1': -78, 'D2': 244}],
{'C4': 1802553809,
'C5': {'E1': -71,
'E2': 82,
'E3': [-0.8584522580793272, 0.9860116837034438],
'E4': 1061895939},
'C6': [4, 193],
'C7': 6518621751793309648},
'A4': 466682188,
'A5': 306377505590278324}
Пример 2
Двоичные данные:
b'\xbaKPI\x00\x1a\x9d\xd6\x0e\xa9\x00\x00\x00J\xec\x9eo\xa4\x910[\xda\xbbo'
(b'2\xdbthk\xed\xda9s\xe7\x11?\x9f\x9c\xe7\xe7\xac\xc7\x00\xbe\xe1bh\xe6'
b'L\x9f\xf7D\xb3R>M\x04A\x83*\xa3\x9a\x00\x00\x008\x00\x00\x00:\x00\x00\x00<G2'
b'f\xed\xd7\xefd\x08\x00\x00\x00\x03\x00\x00\x00>\xfbf\t\xda\xe3\xa9'
b'\xbf\x90B\xf7\xc7\x90\xe9\x00?\xcd\xe0\xed~VW q\x05X\xcb\xcfS\x08('
b'\x94\xf2\t^pZ')
Результат разбора:
'A1': {'B1': 'thk',
{'B2': -4646,
'B3': 963897105,
'B4': 0.03087198592692797,
'B5': -0.4402039051055908,
'B6': -1851929462397775298,
'B7': 77},
'A2': 2648051369,
'A3': {'C1': 1194485485,
'C2': 3622790152,
'C3': [{'D1': 4, 'D2': 65},
'D1': -125, 'D2': 42},
{'D1': -93, 'D2': 154}],
{'C4': 4217768410,
'C5': {'E1': -29,
'E2': 169,
'E3': [-0.015880462222619407, 0.23342674893199788],
'E4': 1896175819},
'C6': [207, 83],
'C7': 587883518632030298},
'A4': -325161052,
'A5': -7984781144322264357}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x4a 0x46 0x41 0x58
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив float, размер 7 |
2 | Массив char, размер 4 |
3 | uint64 |
4 | double |
5 | Структура B |
6 | Массив адресов (uint16) структур D, размер 4 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | uint64 |
3 | int16 |
4 | int64 |
5 | uint32 |
6 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int16 |
3 | double |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива uint8 |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HJFAX\xad\x18\xe6>~\x95n?"\xb3\x95>X\x0c\x07?\xe8\x84\x1a?\xf6\xac\xb9'
(b'\xbe\xf0\x82S\xbfgygdZsXR\xd7(6(\x80\xacG\xe9\x0b\xb0\x9d\xbfY\x00\x05'
b'\x9b\xbd$"xS\x18\xe1\xf6\x9eW\xed;w\xd7\x85\xfb\x1f\x0f\x18Q\xc1\x02\x8d'
b"\x08i\x00v\x00\x82\x00\x8c\x00\xfe'\xec\xddL3@zOf\xbd\xca\x96\xbf\xe9"
b'#\x02\x00\x00\x00g\x00z\xcb\xf7\xc2^qe\x05\x00\x00\x00q\x00\xc2P\xbf\xa6'
b'\xb3t\x04\x00\x00\x00~\x00+>}@\x02\x00\x00\x00\x8a\x00y\xea')
Результат разбора:
'A1': [0.44940701127052307,
{0.9319685697555542,
0.29238229990005493,
0.5275321006774902,
0.6035904884338379,
-0.3626477122306824,
-0.8262166976928711],
'A2': 'gygd',
'A3': 2897548315524100954,
'A4': -0.028991876710204867,
'A5': {'B1': {'C1': 3723241470, 'C2': 13132, 'C3': -0.0222577661223744},
'B2': 1752876768017881861,
'B3': -2335,
'B4': -322614891180632162,
'B5': 1360531231,
'B6': 143459009},
'A6': [{'D1': [233, 35], 'D2': 52090},
'D1': [247, 194, 94, 113, 101], 'D2': 20674},
{'D1': [191, 166, 179, 116], 'D2': 15915},
{'D1': [125, 64], 'D2': 60025}]} {
Пример 2
Двоичные данные:
b'HJFAXN\xdeg<\xe9\x86\x01?\x01I\x1f<\x03\xbb\xa2>\xd2\x05.\xbe\x0e\xccs'
(b"\xbfI\x8d\xad\xbewxmg\x19\xbaH\xdd\x89\x9a\xcd\xbfR\xb3'\xc4\xf0\xb6\xe2"
b'?Y\x00Z\xb2\xf5\x8b\xac\xa1\x85p\xc8Bh\xd3\xdc:\xd8\xa9\xafw\xf5\x90\x9b'
b'\xa3\xa9%Rlk\x00w\x00\x83\x00\x90\x00G\xb0P\x8bgF\xb0\xf4Dc\xf27\xe9\xbf='
b'\xb7s\x0b\x04\x00\x00\x00g\x00\x85RX(0\x87\x04\x00\x00\x00s\x00\x9b4\x19'
b'/\x07\xa8\x04\x00\x00\x00\x7f\x00\xc2\x16@\xe1\xdb\xbd\t\x05\x00\x00\x00'
b'\x8b\x00\xa8\x85')
Результат разбора:
'A1': [0.014152122661471367,
{0.5059648156166077,
0.009721995331346989,
0.3178330361843109,
-0.16994407773017883,
-0.9523323774337769,
-0.33896854519844055],
'A2': 'wxmg',
'A3': 13820872748383648281,
'A4': 0.5848316031602769,
'A5': {'B1': {'C1': 2337321031, 'C2': 18023, 'C3': -0.7880794466833745},
'B2': 8108064466605027930,
'B3': 17096,
'B4': 8624298557603369832,
'B5': 2744881397,
'B6': 1817322921},
'A6': [{'D1': [61, 183, 115, 11], 'D2': 21125},
'D1': [88, 40, 48, 135], 'D2': 13467},
{'D1': [25, 47, 7, 168], 'D2': 5826},
{'D1': [64, 225, 219, 189, 9], 'D2': 34216}]} {
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x48 0x47 0x49
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | Размер (uint32) и адрес (uint16) массива uint8 |
4 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | int8 |
3 | uint16 |
4 | double |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива структур D |
2 | int16 |
3 | uint16 |
4 | uint8 |
5 | int16 |
6 | uint16 |
7 | uint16 |
8 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | uint16 |
3 | Массив uint16, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XHGI=\x00\xe0g_\xa0J\x9c\xee\x03U\xd2\xbf\x05\x00V\x00\x00\x00\x03'
(b'\x00\x00\x00[\x00\xc5\xa8h\xf4\x907F3\x9d^\xdb?\xaa\xba\xb0\xe7Lu&'
b'\x9d\xec0\xad\xf2\xe1?\xb5K\xce!C\xea\x02\x00!\x00\x00\x00<\xbbc\x9d@iVuf'
b'\x9f\xb2S\xe0\xdd\xc6\xea:L/fqphn\x04\x93\xc0')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': 0.42764978415731836,
{'D2': 47786,
'D3': [59312, 30028]},
'D1': 0.5608735995819287,
{'D2': 19381,
'D3': [8654, 59971]}],
'C2': -17604,
'C3': 40291,
'C4': 64,
'C5': 22121,
'C6': 26229,
'C7': 45727,
'C8': 3408163798045810771},
'B2': -32,
'B3': 24423,
'B4': -0.28643892576034524},
'A2': 'fqphn',
'A3': [4, 147, 192],
'A4': -194467643}
Пример 2
Двоичные данные:
b'XHGI=\x00N\x9e\xbf\x00\xe8\xa1\x8bVI\x90?\x04\x00V\x00\x00\x00\x04'
(b"\x00\x00\x00Z\x00\xbc'\xbe\xfc0%\t\x86\x84c\xb4?\xe0\xa2\xfc2\xf2j\\"
b'\xb0\xcb\xd5\xa6\xe8\xd1?\xb4\xe9\xd31\xbb\x8b\x02\x00!\x00\x00\x00]'
b'\x11\x0b\x02\x1c\x90PJ\xaa/T\xe2\xab\x92\x13\xbc\x13\xf1\xa1pboh\xb4\xe7'
b'\x1c?')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': 0.07964351913792167,
{'D2': 41696,
'D3': [13052, 27378]},
'D1': 0.27982493284685517,
{'D2': 59828,
'D3': [12755, 35771]}],
'C2': 4445,
'C3': 523,
'C4': 28,
'C5': 20624,
'C6': 43594,
'C7': 21551,
'C8': 11669129807996824546},
'B2': 78,
'B3': 49054,
'B4': 0.015904762527931382},
'A2': 'pboh',
'A3': [180, 231, 28, 63],
'A4': -54646852}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x42 0x52 0xca
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив адресов (uint32) структур B, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | Адрес (uint16) структуры C |
3 | int32 |
4 | double |
5 | int16 |
6 | Массив int16, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | int32 |
3 | uint64 |
4 | Массив int8, размер 5 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
3 | Размер (uint32) и адрес (uint16) массива int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DBR\xca!:\x00\x00\x00\x8e\x00\x00\x00 4X\xa4\xbb\xe9/\x1fF\xf4\xaa<\x80\x8fN'
(b'sK\x99\xd3\x1f\xca\xc7\x02\x00\x00\x00\r\x00\x9ey\xe0\x08\xa8xa\x15\xc1\x83['
b'\x16\x9b\xf2\\\x95xo\x1d\x00m\xf2\t\xee\xa0\x83\xab{\x91\x00\xd2'
b'\xbf\xb0Z\xa60\xd4\x11\x0f:\xb0"\xbb2Ud?\xe1,.Q\xd9\x18\x1c\xbf'
b"\x13\x90\x1b\xd6\xe4\x13\xcb\xfeDF\xbb\xd1\x9f\xe8\xadv'g\xd6@,7\xd6\x04"
b'\x00\x00\x00Q\x00\xde\xfaEA\xae\x7f\\\x01\xa1\xb7\xd7\xb1Z\x1b\xa0\xaed=q'
b'\x00\x02p\x122.\xe8\x12Iv\x84\xe7?5sQx\x9er\xe0\xf3')
Результат разбора:
'A1': 33,
{'A2': [{'B1': 111,
'B2': {'C1': {'D1': 533961035,
'D2': 51146,
'D3': [2247271731206566944, 8308736143481566278]},
'C2': 148928926,
'C3': 1611026157025720488,
'C4': [-101, -14, 92, -107, 120]},
'B3': -301338003,
'B4': -0.2812846858706113,
'B5': 23216,
'B6': [12454, 4564, 14863]},
'B1': 61,
{'B2': {'C1': {'D1': 742446695,
'D2': 54839,
'D3': [-2215942174556872016,
1422886900323135020,
4971634324967660432,
2843651429356387142]},
'C2': 1095105246,
'C3': 12814913166846492590,
'C4': [90, 27, -96, -82, 100]},
'B3': 840069122,
'B4': 0.73491968414533,
'B5': 29493,
'B6': [30801, 29342, -3104]}]}
Пример 2
Двоичные данные:
b'DBR\xca\xe7J\x00\x00\x00\x96\x00\x00\x00\xbb!C\x97\x81#\x93\x9ar\xd6\xc7'
(b'\xa0Fw?\xd36\x8bH\xc2P\xf2\x8eB.\xe1\x94\xae\x16m\x7f\xd3\x96\x951'
b'\x8dS\xf6\x04\x00\x00\x00\r\x00\xa4n\x93K\xb8J\t\n\xf0v{%\xda\xfc\x15Uas-'
b'\x00\x12\x1co\x9dd\xaaO\xf8\x19\x9c\xe5\xbfp\x91@\xdf\xca\x91}'
b'\x1d\xf6\xdb\x931t<\x13\x91`R\xde\x95U\xf8&\xef\xdf\xcas\xab\x99\xa8/'
b'\x9f\x19[\x99\x84\xb1C\x03\x00\x00\x00a\x00\x82\xf9\x81\x19C\x80\xca+\xb1Le'
b'\x01Z\xfc>mGVy\x00\xb4\xfds\x0f\xf8c~\x0b\xe6~\xcb?m\x05K~\xbe(\xd1\x9f')
Результат разбора:
'A1': 231,
{'A2': [{'B1': 115,
'B2': {'C1': {'D1': -1926130282,
'D2': 63059,
'D3': [-7308458730796670533,
-3224727662945118606,
4796037081866996534,
-3206724465478803154]},
'C2': 1267953316,
'C3': 2700883174871354040,
'C4': [-38, -4, 21, 85, 97]},
'B3': -1653662702,
'B4': -0.6753053521945955,
'B5': -28304,
'B6': [-8384, -28214, 7549]},
'B1': 86,
{'B2': {'C1': {'D1': -2070324455,
'D2': 17329,
'D3': [-7992978443906851850,
-1214010003059486112,
-6976171919813653793]},
'C2': 427948418,
'C3': 100570890513317955,
'C4': [90, -4, 62, 109, 71]},
'B3': 259259828,
'B4': 0.21481013833252383,
'B5': 1389,
'B6': [32331, 10430, -24623]}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xe3 0x55 0x50 0x42
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
3 | double |
4 | Размер (uint32) и адрес (uint16) массива char |
5 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | int16 |
3 | int64 |
4 | Размер (uint16) и адрес (uint16) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xe3UPBE\xb9\xc3\xba\x14\xd2?\xe0\x90\xdfQ\xffZ\x94\x00\x00\x00\x04\x00:'
(b'\x00\x02\x00H\x00\x00\x00\x02\x00\x00\x00P\xed@X\xb98="\x9b\x8d\x01\xf2o'
b'^@(\x94\x82\x1a\x00\x02\x00RjegoW\xe3\xf60\n\xa2\xf1\xf4O\xd8\x00\x00\x00>'
b'\x00\x00\x00CvaK\xa2')
Результат разбора:
'A1': {'B1': 1169802170,
{'B2': 5330,
'B3': 0.51768461241848,
'B4': 'jego',
'B5': [{'C1': 1474557488, 'C2': 10}, {'C1': 2733765711, 'C2': -40}]},
'A2': 'va',
'A3': {'D1': -1350982335675424101,
'D2': -29439,
'D3': -977458964464369126,
'D4': [75, 162]}}
Пример 2
Двоичные данные:
b'\xe3UPB>\xc2~v?\xb9\xbf\xc4E\xa04w\xc4\x88\x00\x00\x00\x05\x00:\x00\x03\x00N'
(b'\x00\x00\x00\x03\x00\x00\x00ZK\xc2\xd6R]\xbfe\xb3c\xb8\xdd\x11\xe7\x93:\x0b'
b'T\xd0\x00\x03\x00]akfhb\xd7\x9e\x0767\xe2\xd0\xf1H\xcd\x89#O\x1c\xfd\x00\x00'
b'\x00?\x00\x00\x00D\x00\x00\x00Ixvg(\xf0\x15')
Результат разбора:
'A1': {'B1': 1052933750,
{'B2': 16313,
'B3': -0.15837481080919624,
'B4': 'akfhb',
'B5': [{'C1': 3617457974, 'C2': 55},
'C1': 3805344072, 'C2': -51},
{'C1': 2300792604, 'C2': -3}]},
{'A2': 'xvg',
'A3': {'D1': 5459161347574949299,
'D2': 25528,
'D3': -2516976097203366704,
'D4': [40, 240, 21]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x4a 0x45 0xa6
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Структура B |
3 | Массив int32, размер 7 |
4 | uint32 |
5 | uint16 |
6 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур C |
3 | uint32 |
4 | uint8 |
5 | Массив char, размер 3 |
6 | Адрес (uint16) структуры F |
7 | int32 |
8 | float |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры D |
2 | Структура E |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
Структура F:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | Размер (uint16) и адрес (uint16) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'TJE\xa6\x0b\xd8\xc2E\xac\x00\x00\x00\x05\x00r\x0b6~\xe2\xc3cdf\x00'
(b'\x825\xab\x0e\x1e\xbd46|\xe4+\x1f\xf0l\xec?\x8c`\x86\x91#27\xf5x\xa3J\xc3'
b'\xccA\xc2\xc5j`_9Sx\xe9\x94\xf8\xe4\x89|\xee?M\xa3\x8b\xb3\x00E4\t\xbfh'
b'\xd8j\xd5\x00Nu\x9e\xbfX(\x1cc\x00WO\xde>\xc9\xcd\xee\xda\x00`\x99'
b'M\xbe\xf1\xed\x18D\x00i<L\x00J\x00S\x00\\\x00e\x00n\xc2\x1e\x10='
b'\xa4\x90h\x116\xf9v\x93\xcb\x16\xe7\xc4E\xaa\x00\x03\x00|')
Результат разбора:
'A1': 198754885,
{'A2': {'B1': -84,
'B2': [{'C1': {'D1': 0.8032767176628113, 'D2': 179},
'C2': {'E1': 52, 'E2': 9}},
'C1': {'D1': -0.9095522165298462, 'D2': 213},
{'C2': {'E1': 117, 'E2': 158}},
'C1': {'D1': -0.8443620204925537, 'D2': 99},
{'C2': {'E1': 79, 'E2': 222}},
'C1': {'D1': 0.3941492438316345, 'D2': 218},
{'C2': {'E1': 153, 'E2': 77}},
'C1': {'D1': -0.47251200675964355, 'D2': 68},
{'C2': {'E1': 60, 'E2': 76}}],
'B3': 188120802,
'B4': 195,
'B5': 'cdf',
'B6': {'F1': 1745958649,
'F2': 8544396217290081706,
'F3': [49694, 4157, 42128]},
'B7': 900402718,
'B8': -0.04399727284908295},
'A3': [-466935824,
1827422092,
1619431715,
842528120,
-1555381300,
1103283562,
1616853331],
'A4': 2028573944,
'A5': 58505,
'A6': 31982}
Пример 2
Двоичные данные:
b'TJE\xa6\x9e%&rZ\x00\x00\x00\x05\x00r\xaa\x8b{\x8b\x1dfol\x00\x80\xf9\xbb]'
(b'\xb7?\x14\x8f\x1c\xb5S\xc5@\xd0Y\xd6qU\xc71\xb2\t\x96N\x16\xad=\xa9(F-\xee'
b'\xbe\xff\xe5\x9b\xd3\xf5\xe9=V\xa7%\x1e_?m\xc4\xb6\x14\x00EJw\xbfy'
b'\x03\x1a\xe1\x00N\xa88?I\t!\x13\x00WP\xa4?c9^\x1c\x00`\x9e?>\x98\x8b'
b'\x06\xcf\x00i\xef\xf3\x00J\x00S\x00\\\x00e\x00nZx\xe0<T\xa8\xec\xde'
b'7\xa0\x10O\xbc\xf2U`\x00\x02\x00|')
Результат разбора:
'A1': 2653234802,
{'A2': {'B1': 90,
'B2': [{'C1': {'D1': 0.9287828207015991, 'D2': 20},
'C2': {'E1': 74, 'E2': 119}},
'C1': {'D1': -0.9727035760879517, 'D2': 225},
{'C2': {'E1': 168, 'E2': 56}},
'C1': {'D1': 0.7852955460548401, 'D2': 19},
{'C2': {'E1': 80, 'E2': 164}},
'C1': {'D1': 0.8875941038131714, 'D2': 28},
{'C2': {'E1': 158, 'E2': 63}},
'C1': {'D1': 0.2979356646537781, 'D2': 207},
{'C2': {'E1': 239, 'E2': 243}}],
'B3': 2861267851,
'B4': 29,
'B5': 'fol',
'B6': {'F1': 1420356830,
'F2': 4008221603018200416,
'F3': [23160, 57404]},
'B7': -105161289,
'B8': 0.5803086757659912},
'A3': [-1252801216,
-799418767,
1439117746,
160845334,
-1388467928,
1177415358,
-1729581],
'A4': 4125703510,
'A5': 42789,
'A6': 7775}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xe2 0x4b 0x55 0x51
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | uint64 |
4 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур C |
3 | Адрес (uint32) структуры D |
4 | uint8 |
5 | double |
6 | int32 |
7 | Структура E |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив uint8, размер 8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint64 |
2 | int8 |
3 | int8 |
4 | Размер (uint16) и адрес (uint32) массива int8 |
5 | int64 |
6 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | uint64 |
2 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"\xe2KUQ'\x048\xc2\xbf\xee\xa6\x13\xba\x16\x8b\x90\x85\x11\xb2\xe2"
(b"\x08\x06)\xe2\x98\xb4\xe3\x11\xd7'(\xf2\x00\x02\x00S\x00\x00\x00\x82"
b"\xcb?\xec1\xf1\xf5:\x06$\xcd\xe6\x88\x9d\xed\x9a'x{\xc3f^\xbb\xca\x1d"
b'}q\xae\xc4\\\xca\xc7\xbcbJ(\x0cjx\xe8;\xff\x9d\x9f\x00A\x00J\xea'
b"\xc4\x8dj\xe0\xaa:6#W\xfbW\xc1S\x01E\xe82'\x17\xd5:u\xaf\xf5\xe8\xca>Y"
b'\xb9f\x17=\xd0\xa4\xa62Ka\xec\x1a\x05Q\x00\x05\x00W\x1c\x1d\x00\x03\x00\x00'
b'\x00\x7f~\x10\x80\x9a\xc7\xcd\x15\x133c')
Результат разбора:
'A1': 654588098,
{'A2': -0.9577730783970413,
'A3': 9588641765515471330,
'A4': {'B1': -7443074618372970254,
'B2': [{'C1': 113, 'C2': [174, 196, 92, 202, 199, 188, 98, 74]},
'C1': 40, 'C2': [12, 106, 120, 232, 59, 255, 157, 159]}],
{'B3': {'D1': [16916801590485727798,
2546780468625473861,
16731478548949923247,
17719635103031322135,
4454241065184748012],
'D2': 28,
'D3': 29,
'D4': [26, 5, 81],
'D5': 9083901850671715603,
'D6': 13155},
'B4': 203,
'B5': 0.8810968198378686,
'B6': -840529763,
'B7': {'E1': 17121040331828323934, 'E2': -0.006168066058307886}}}
Пример 2
Двоичные данные:
b'\xe2KUQ\x00a\x86\x9e\xbf\xe8\xb5\x9f\xc9\xb1\xcf4R\x0f\x80\xca^\xb9\xccc'
(b'}7\xf2\xe7\\\x10\x1d\x13\x00\x04\x00e\x00\x00\x00\x88\x8e\xbf\xc40d9Z,'
b'0\x15\xad\x06\x8c=J\xe7ftV\r;?\t9\x91X\xee\xe1u-\xfd\x99\x83\x19\x89vY`1\x98'
b'`\x91\xcf\xa6B\x0e8\xd3\t\xa2i\xd3\x1fH\xc0\xea\xaaWy\xc1\x83\x00A\x00'
b'J\x00S\x00\\\xbb\xf2\x05\xc7j\xe8\xf4YD\x9f\xe3\xd1\xd0V\x83m\xc0ts'
b'\xc6\xa7F\xee\x90\xc3>\xdc\x00\x03\x00mF\xb4\x00\x03\x00\x00\x00\x85'
b'\xd0\x8a\xb5R\x16\x93\xa5\x1efR')
Результат разбора:
'A1': 6391454,
{'A2': -0.7721709193560629,
'A3': 5913086442421734499,
'A4': {'B1': 9022947453956005139,
'B2': [{'C1': 88, 'C2': [238, 225, 117, 45, 253, 153, 131, 25]},
'C1': 137, 'C2': [118, 89, 96, 49, 152, 96, 145, 207]},
{'C1': 166, 'C2': [66, 14, 56, 211, 9, 162, 105, 211]},
{'C1': 31, 'C2': [72, 192, 234, 170, 87, 121, 193, 131]}],
{'B3': {'D1': [13542893383506785369,
4944921406159094637,
13867836449627762320],
'D2': 70,
'D3': -76,
'D4': [-61, 62, -36],
'D5': -3419721602863749858,
'D6': 26194},
'B4': 142,
'B5': -0.15772679138567147,
'B6': 363660940,
'B7': {'E1': 4416596811814669627, 'E2': 0.5360346436500549}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x43 0x43 0x26
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int64 |
3 | Структура E |
4 | int8 |
5 | float |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 6 |
2 | uint64 |
3 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур C |
4 | Структура D |
5 | uint16 |
6 | Массив int8, размер 7 |
7 | int8 |
8 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | double |
3 | Массив uint64, размер 5 |
4 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RCC&\x00q1\x13\x80\t\xb8P\xe6#\xbf\xd5P\x11a\xcb0\x98?\xd8Z"\xde\xa8'
(b'r\x1c_\xa3\xae,\xd8>\xccc\x1f\xba\xa4\x03\x80\x04\xc3\x1c:\xf9\xa6\xaa=\x90'
b'\xf2\xc5\r\x15\x9bL\x97\xf9\xf4K\xd3Y\x8b\x01\x80\x04\x0b\x8f\x01\xce'
b'\xbe\xf5\x15\x97\xca\xf1\x96x\xbd^\x00\x04\x00L\x9f\xc3\xcam\xaa\x00'
b'\x03\x00V\r\xf3\n\xd9\x11s\xa4r\x00\x06\x00_\x00P\x00Y\x00evsfizm\xeb'
b'\n\x87\x0eC[\x8b8\x00\x03\x00\x00\x00k\x1bl\x8d\xfb\xe8\xe7=*\xde\x0e~'
b'x$`\xf5m\xb9\xb2')
Результат разбора:
'A1': {'B1': 'vsfizm',
{'B2': 16936497844009536312,
'B3': [{'C1': -17058, 'C2': [202, 241, 150, 120]},
'C1': 28074, 'C2': [159, 195, 202]},
{'C1': -23438, 'C2': [13, 243, 10, 217, 17, 115]}],
{'B4': {'D1': 460099067, 'D2': -24, 'D3': 59197},
'B5': 10974,
'B6': [14, 126, 120, 36, 96, -11, 109],
'B7': -71,
'B8': 178},
'A2': 3536310911651341859,
'A3': {'E1': -0.3330119566933347,
'E2': 0.38050147766060305,
'E3': [6891543362436779107,
2286320095783600924,
4249610973508334277,
942830450273547339,
15229356453489019791],
'E4': 1},
'A4': -50,
'A5': -0.4786803424358368}
Пример 2
Двоичные данные:
b'RCC&\x00e7\x17\x92\xc6:6H\xa4\xbf\xec\x1d\x0c7h\xb5\x9c?\x80\xb3\x92\x18\x1c'
(b'\x96\x00\xf2\xac\x0f\xb8G!\xbet\xfes\xf8\xd8\xab\x95\xb0i\xc0\xad\xa0i>\xbe'
b'X6;rS\xc6\xcc\xc2\xc6,\xe7Sf\xe9,>\x9c\x99\xfb\x9f>>3\x7f\x98\x95\xaf\x07'
b'\x84E\x00\x04\x00L\x15!\xdaIF\xf1\x0e\x00\x05\x00V\x00P\x00[uadgey@'
b'd\x1e\xee,\x00\xae\xc1\x00\x02\x00\x00\x00a\x8d\x85HY)\x0e\x9f'
b'\xd7\xbc\xf6\xad\x90D\xe2\\\xcfzG')
Результат разбора:
'A1': {'B1': 'uadgey',
{'B2': 4639867524387745473,
'B3': [{'C1': -31675, 'C2': [152, 149, 175, 7]},
'C1': -3826, 'C2': [21, 33, 218, 73, 70]}],
{'B4': {'D1': -1920645031, 'D2': 41, 'D3': 3743},
'B5': 55228,
'B6': [-10, -83, -112, 68, -30, 92, -49],
'B7': 122,
'B8': 71},
'A2': 3969802976628197540,
'A3': {'E1': -0.8785458643157429,
'E2': 0.008155003891782364,
'E3': [17486368737314586228,
18335272117430759529,
13883929600137779254,
4283578308886709804,
16668779797484051609],
'E4': -5},
'A4': -97,
'A5': 0.1857433170080185}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x4f 0x48 0x50 0x75
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | float |
3 | Адрес (uint32) структуры B |
4 | int16 |
5 | uint32 |
6 | int8 |
7 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 6 |
2 | Размер (uint16) и адрес (uint32) массива int32 |
3 | uint64 |
4 | Структура E |
5 | int64 |
6 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры D |
2 | uint8 |
3 | Размер (uint32) и адрес (uint32) массива int8 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
3 | int32 |
4 | Размер (uint16) и адрес (uint32) массива float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AOHPu\xbe\xca"t>i\xa8\xa5\x00\x00\x00Y\rz57\x81\x05V\xc3\x1a]\xb62\x19\t\t'
(b'\xceEV\x18\x18\xd0$\x8a\x8b\xae\xae\x19\xff\xcd\xb5(b3\x15\x85/\x89\xb4\xbe'
b"\x00'4\x10FE0H\x06\x04\xbb\xbc\x93fP\xf2\xbc\x88\xa8\x81\xfaa\xde\x9a"
b'2\xbf\x0f.\x07>\xc7\x9e\xc1\x00\x1a\xc2\x00\x00\x00\x06\x00\x00\x00\x1c'
b'\x00"\x06\x00\x00\x00\x02\x00\x00\x00$\x00&\x07\x00\x00\x00\x07\x00\x00'
b'\x00(\x00/R\x00\x00\x00\x03\x00\x00\x001\x004m\x00\x00\x00\x06\x00\x00\x006'
b'\x00<,\x00\x00\x00\x07\x00\x00\x00>\x00\x03\x00\x00\x00E\xc1-\xaa\xaa*\xebQ'
b'\xd8\xec]\x12\xbc\xc0\x922\x0b\x00\x02\x00\x00\x00Q\x8a\x9d\x18Y\xa8'
b'\xee\x83~.\xfc\xa7\xc5\x02\xc6\x96\x93')
Результат разбора:
'A1': -0.3947941064834595,
{'A2': 0.22818239033222198,
'A3': {'B1': [{'C1': {'D1': 93, 'D2': 182},
'C2': 194,
'C3': [50, 25, 9, 9, -50, 69]},
'C1': {'D1': 86, 'D2': 24}, 'C2': 6, 'C3': [24, -48]},
{'C1': {'D1': 36, 'D2': 138},
{'C2': 7,
'C3': [-117, -82, -82, 25, -1, -51, -75]},
'C1': {'D1': 40, 'D2': 98}, 'C2': 82, 'C3': [51, 21, -123]},
{'C1': {'D1': 47, 'D2': 137},
{'C2': 109,
'C3': [-76, -66, 0, 39, 52, 16]},
'C1': {'D1': 70, 'D2': 69},
{'C2': 44,
'C3': [48, 72, 6, 4, -69, -68, -109]}],
'B2': [1716581052, -2002222598, 1641978418],
'B3': 13919969671113298392,
'B4': {'E1': -5027,
'E2': 4796,
'E3': -1064160757,
'E4': [-0.5592960715293884, 0.3898830711841583]},
'B5': -8458577751766563970,
'B6': 3385765484472735379},
'A4': 3450,
'A5': 892829957,
'A6': 86,
'A7': -15590}
Пример 2
Двоичные данные:
b'AOHPu\xbf\x12kw\xbe\xcf\x88?\x00\x00\x00[\xf7M\xc8\xbc\x97kEDd\xa9\xd4'
(b'\t\xcb\x0c \xd5\x0f\x7f\xb52\x80E\xf2\x9e\xce\xb65_q\x8b\xb3\xe6m\xdc\xfa'
b'MR\x97\xfb\xf5{\xca-Z\xc4U\xe7\x9aaN\x1b\x0c\x16JD\xa3\xddi\x93\xdd7\x98?'
b'~]-\xbf?\xe6\x8d?\x03\xc1P\x00\x1a\x06\x00\x00\x00\x06\x00\x00\x00\x1c\x00"'
b'(\x00\x00\x00\x06\x00\x00\x00$\x00*\x03\x00\x00\x00\x05\x00\x00\x00,'
b'\x001\x1c\x00\x00\x00\x04\x00\x00\x003\x007~\x00\x00\x00\x06\x00\x00'
b'\x009\x00?\x9e\x00\x00\x00\x06\x00\x00\x00A\x00\x02\x00\x00\x00G\xf2\xc8K**'
b'\x8d\x1e\x9e\xafD\x0f9\x0e{:\xf3\x00\x03\x00\x00\x00O"L\xdeH;\x8e\xd7'
b'\xe9\x00\xdbA\xde\x13C\xcc\x1f')
Результат разбора:
'A1': -0.5719522833824158,
{'A2': -0.4053363502025604,
'A3': {'B1': [{'C1': {'D1': -87, 'D2': 212},
'C2': 6,
'C3': [9, -53, 12, 32, -43, 15]},
'C1': {'D1': 127, 'D2': 181},
{'C2': 40,
'C3': [50, -128, 69, -14, -98, -50]},
'C1': {'D1': -74, 'D2': 53},
{'C2': 3,
'C3': [95, 113, -117, -77, -26]},
'C1': {'D1': 109, 'D2': 220},
{'C2': 28,
'C3': [-6, 77, 82, -105]},
'C1': {'D1': -5, 'D2': 245},
{'C2': 126,
'C3': [123, -54, 45, 90, -60, 85]},
'C1': {'D1': -25, 'D2': 154},
{'C2': 158,
'C3': [97, 78, 27, 12, 22, 74]}],
'B2': [1151589737, -1814218856],
'B3': 17494315396995292830,
'B4': {'E1': -20668,
'E2': 3897,
'E3': 242957043,
'E4': [0.9936092495918274,
-0.7496116757392883,
0.5146684646606445]},
'B5': 2471594697337788393,
'B6': 61715441961389087},
'A4': -2227,
'A5': 3367802731,
'A6': 69,
'A7': 17508}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x3f 0x4d 0x56 0x54 0x46
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур B, размер 6 |
2 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint16) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры D |
2 | int32 |
3 | Размер (uint16) и адрес (uint16) массива int64 |
4 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint16) и адрес (uint32) массива int16 |
3 | uint16 |
4 | Размер (uint16) и адрес (uint16) массива uint8 |
5 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'?MVTF+\x00\x00\x004\x00\x00\x00=\x00\x00\x00F\x00\x00\x00O\x00\x00'
(b"\x00X\x00\x00\x00i\x00\xc0V\xfbH\x02\x00{\x00i'gx\xcd\x02\x00)\x00\x00\x00vx"
b'\xc2\x02\x002\x00\x00\x00gh\x04\x02\x00;\x00\x00\x00mc\xef\x02\x00D\x00\x00'
b'\x00wr\xba\x02\x00M\x00\x00\x00jy\x1b\x02\x00V\x00\x00\x00\xdb'
b'\x9e\xae\x03\xe9^\x9d\xf1\x0fI\x02\xc8\x04\x00_\x00\x00\x00\x0b\x92\x02'
b'\x00g\x00\xbf\xe2\xe1=u(P\xa9\x1a\xde3\xcd\xa5:\xc1S\xb8\x7fQ\x02')
Результат разбора:
'A1': [{'B1': 205, 'B2': 'gx'},
{'B1': 194, 'B2': 'vx'},
{'B1': 4, 'B2': 'gh'},
{'B1': 239, 'B2': 'mc'},
{'B1': 186, 'B2': 'wr'},
{'B1': 27, 'B2': 'jy'}],
{'A2': {'C1': {'D1': 51202,
'D2': [-24869, 942, 24297, -3683],
'D3': 37387,
'D4': [15, 73],
'D5': 0.11029576510190964},
'C2': 1224431296,
'C3': [-3660337866030962571, 167055090845301413],
'C4': 10089}}
Пример 2
Двоичные данные:
b'?MVTF+\x00\x00\x004\x00\x00\x00=\x00\x00\x00F\x00\x00\x00O\x00\x00'
(b'\x00X\x00\x00\x00i\x00N\xf1\x93\xe8\x05\x00{\x00%\xebfy6\x02\x00)\x00'
b'\x00\x00jy\x02\x02\x002\x00\x00\x00atQ\x02\x00;\x00\x00\x00hmo\x02'
b'\x00D\x00\x00\x00lsw\x02\x00M\x00\x00\x00var\x02\x00V\x00\x00\x00)\x08o`\xad'
b'\x02\xe4\x13+\xd4\xe4\xec\x04\x00_\x00\x00\x00\xe6\x95\x02\x00g\x00\x18'
b"\x825\xbc\xd8d\xe9\xcf\x85\xcb\xd3\xc3\xb5\xd6?#q\xd0$\n\x18\x1b\x10'6"
b'Q\x13\xe4\xe7\x1b\xd6:\xe1\x17\xf8\xaf\xbe\x82\xd8\x7f\x00U\xeds')
Результат разбора:
'A1': [{'B1': 54, 'B2': 'fy'},
{'B1': 2, 'B2': 'jy'},
{'B1': 81, 'B2': 'at'},
{'B1': 111, 'B2': 'hm'},
{'B1': 119, 'B2': 'ls'},
{'B1': 114, 'B2': 'va'}],
{'A2': {'C1': {'D1': 60644,
'D2': [2089, 24687, 685, 5092],
'D3': 38374,
'D4': [43, 212],
'D5': -0.011078380048274994},
'C2': -392957618,
'C3': [-4335898240648387368,
730938223882131125,
-2012175315479028968,
-5766833066725729305,
8353426344475394750],
'C4': 60197}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x48 0x42 0xce
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Структура B |
3 | Структура C |
4 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур D |
3 | float |
4 | uint64 |
5 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив структур F, размер 4 |
3 | Размер (uint16) и адрес (uint32) массива int64 |
4 | uint16 |
5 | uint8 |
6 | Массив int64, размер 3 |
7 | Размер (uint16) и адрес (uint32) массива int8 |
8 | uint32 |
Структура F:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FHB\xce\xbfY\x14g=\xb4?\\\x08\x9eH\x93\xf4p\xa2(\xcd\xeb\x99\x00\x02\x007>'
(b'\xa3\x89\xd2\xe97cMj\x9b\x85K\xdc\xeb\x00\x00\x00N?\x0c\xd1\x96\x11\xbfu'
b'\x9dlG\x00-\x002\x04\t\x9e\xd9e\xd6\xb2\xc2j<\x0b\xffbVc\x12R;%NBY(\x8c\xde'
b'RA\xbfS\xa8\xaa\xbe[=\xe4\xab\x18\xb2b>c\xbdi\x18\x8a?x\x98\x9d'
b'\xef\x05\x00\x02\x00\x00\x00;\x8e/\x95\x8a\xbf\xd5p\xbbr\n61\x8fu\xe0\xe2'
b'\x1d\xec\xabM\xe2\xca\x80\x81\xdc\x1f\x9f\x00\x03\x00\x00\x00KGZ\xdf\xcd')
Результат разбора:
'A1': -0.8479675650596619,
{'A2': {'B1': 15796, 'B2': 0.8595064878463745, 'B3': 5229792356901375467},
'A3': {'C1': 153,
'C2': [{'D1': 0.5500730276107788, 'D2': 17},
'D1': -0.9594333171844482, 'D2': 71}],
{'C3': 0.31941086053848267,
'C4': 16805009718708503883,
'C5': 56555},
'A4': {'E1': 5639167714118226497,
'E2': [{'F1': -0.8267923593521118, 'F2': 48731},
'F1': 0.11165446043014526, 'F2': 45666},
{'F1': 0.22240222990512848, 'F2': 6282},
{'F1': 0.9710786938667297, 'F2': 61189}],
{'E3': [290938307495768770, 7655006658117395218],
'E4': 36399,
'E5': 149,
'E6': [-8448799695765894602, 3571202638254828715, 5612270738940370847],
'E7': [82, 59, 37],
'E8': 1197137869}}
Пример 2
Двоичные данные:
b'FHB\xce?a\xb1\xee\x94G>\xce6\xb4"\xb7\xb4\x1c\xe7{o\xcc\xa0\x00\x04\x00A\xbe'
(b'\xc2\xfdL\xfd\xc9\x15\xfb\x1d\xeb\x1f\xd3\x80\x19\x00\x00\x00[>\xd4;'
b'f\xd8>\xb8\xc4\xf2F?K\xdbz\xef\xbe\xcc:\xd6\xa1\x00-\x002\x007\x00'
b'<\xa0\xa3\xa2\x1c\x15\x1a\xff\xd8x:\x0b@\xad\xe5\xce\xd1\x88\xec\x1d'
b'\xc1q\x15\x81A\x1e\xb5\xbe\xa5,~\xd27\xbf\x19\xfe\xd1\x95\x02>\x91T\xa2r'
b'M>\xa3\xd1\xe5{2\x00\x02\x00\x00\x00I\xfb\xca\r\xcd\xc9\\5+\xdc\xde\x18'
b'U\xd9\xf5\xbb\xbd\xed\xcb\x05\x18\xaa\xe0(\xea$2\x0e\x00\x02\x00\x00\x00Y~W'
b'7\x8b')
Результат разбора:
'A1': 0.881621241569519,
{'A2': {'B1': 37959, 'B2': 0.4027611017227173, 'B3': 2501666154263310284},
'A3': {'C1': 160,
'C2': [{'D1': 0.4145156741142273, 'D2': -40},
'D1': 0.3608775734901428, 'D2': 70},
{'D1': 0.7963176965713501, 'D2': -17},
{'D1': -0.39888638257980347, 'D2': -95}],
{'C3': -0.3808387517929077,
'C4': 18287171930197532627,
'C5': 32793},
'A4': {'E1': 2144119234781847221,
'E2': [{'F1': -0.32260507345199585, 'F2': 53815},
'F1': -0.6015444397926331, 'F2': 38146},
{'F1': 0.2838488221168518, 'F2': 29261},
{'F1': 0.31996074318885803, 'F2': 31538}],
{'E3': [-6871470364940369960, 8663249205623901905],
'E4': 64458,
'E5': 13,
'E6': [-3618259442176565736, 6186245749864254213, 1777479469282636302],
'E7': [-120, -20],
'E8': 2119645067}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa2 0x42 0x42 0x44 0x53
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | Адрес (uint32) структуры B |
4 | Размер (uint32) и адрес (uint32) массива char |
5 | Размер (uint16) и адрес (uint16) массива int64 |
6 | Структура D |
7 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | uint64 |
3 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур C |
4 | int8 |
5 | uint16 |
6 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | uint8 |
4 | float |
5 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | Массив int16, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xa2BBDS.\xcf\xc3\x00\x00\x00n\x00\x00\x00\x06\x00\x00\x00\x87'
(b'\x00\x03\x00\x8d\xbf\x19\xae\xcd1\x1d\xf4\xa2mlvzsx\xda\xaf\xbc\xf5l]'
b'\x84\xb9\x90:\x82\x1a\x9c\xeftx;\x84\xb6\x8dAE?m5\x91\x01\xf0\x05\xae'
b'S\\u\xda\xbd\x1f\xde\x88\x8c\x11;3K\x05|s\xbfX\x82\xff \xcc\xbd#M\xaa}\xec'
b'>H`\x8b\x91\xc5\x006\x00B\x00N\x00Z\x00\x02\x004.\x81\xfcLcl\xf2\xc3\x00\x00'
b'\x00\x04\x00\x00\x00f\x11\x9c\xc7"\x99qjnudv\xa8\xf1\xb5\x01\xbb\x7f\xbc'
b"N\xfa\xdbl\x90\x0f'\xca\x81\x03\x8cR\x837{\xf6Q")
Результат разбора:
'A1': 11983,
{'A2': -61,
'A3': {'B1': 'tx',
'B2': 3351237002756158147,
'B3': [{'C1': 59,
'C2': 2226556225,
'C3': 69,
'C4': 0.9265986084938049,
'C5': 496},
'C1': 5,
{'C2': 2924698741,
'C3': 218,
'C4': -0.03903058171272278,
'C5': 35857},
'C1': 59,
{'C2': 860554620,
'C3': 115,
'C4': -0.8457488417625427,
'C5': 8396},
'C1': -67,
{'C2': 592292477,
'C3': 236,
'C4': 0.19568078219890594,
'C5': 37317}],
'B4': 17,
'B5': 40135,
'B6': 8857},
'A4': 'qjnudv',
'A5': [-6273033786905084850, -370583178342577535, 255670002378339921],
'A6': {'D1': -0.600323498249054,
'D2': [12573, -2910, 28012, 30330, 29560, -9553, -17163, 27741]},
'A7': -8882910209046307601}
Пример 2
Двоичные данные:
b'\xa2BBDS\x94\xa2\x19\x00\x00\x00`\x00\x00\x00\x04\x00\x00\x00y\x00\x03\x00}'
(b"\xbf\x10\xeb\xd6\x1b\x1f'[\xa7h\xe4uw\xd6Y\xbd\xdb\xb7\x8f\x8b\x19U\x90\x15"
b'\xa40\x95\x83js\xa5H\x82.7,\xbe\x06\x1d\xb4\xfc\xc7Q\x0cb\t<\xf1?\x0f\xd8o'
b's\x88\xcb\x833\x9c\xed^=\x83\x15\xe7\x17\xb0\x006\x00B\x00N\x00\x02\x004'
b'\x81\xf9b\x1e\xf7\xac\x00h\x00\x00\x00\x03\x00\x00\x00Z*I\x82\x0b\xa6ryx'
b'm\x186@\xc5\xe9\x1aD(\x83\x93\x87\xf3irS\x15\xb8\x9b<\x08\xca\xcf\x9b\xda')
Результат разбора:
'A1': 38050,
{'A2': 25,
'A3': {'B1': 'js',
'B2': 9365624785237442664,
'B3': [{'C1': -91,
'C2': 1216491063,
'C3': 44,
'C4': -0.13097268342971802,
'C5': 64711},
'C1': 81,
{'C2': 207751484,
'C3': 241,
'C4': 0.5618962645530701,
'C5': 29576},
'C1': -53,
{'C2': 2201197805,
'C3': 94,
'C4': 0.06400661915540695,
'C5': 6064}],
'B4': 42,
'B5': 18818,
'B6': 2982},
'A4': 'ryxm',
'A5': [1744653124416193576, -8965672953648622827, -5144452140880651302],
'A6': {'D1': -0.5660985708236694,
'D2': [6943, 10075, -22680, -7051, 30678, 22973, -9289, -28789]},
'A7': 1825523646591964547}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x54 0x52 0x46
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 2 |
2 | uint8 |
3 | uint16 |
4 | Размер (uint16) и адрес (uint32) массива int64 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | float |
4 | Размер (uint16) и адрес (uint32) массива uint16 |
5 | int8 |
6 | uint16 |
7 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ETRF\x00$\x00G\x1eT\xf1\x00\x03\x00\x00\x00b\r\xff\x8be\xe5\xf8\xa0'
(b'I[\x83\x12\xbbP\x80\x1d\xa3r\xaa/\xffp\xbf4d\x82\xbf\x00q\xf0\x00\x03'
b'\x00\x00\x00\x19\xbbW\x8aiN\x9f\xd1\x00\x05\x00\x1f\xbe\xbfz\x95\xfa'
b'\x01\xady\xe9Q\xbe\xb7\x8c\xe9?\x0bR\xba\x00\x03\x00\x00\x00?\xb5<\x0by\x92'
b'\xcd\x1e\x00\x02\x00E\xe3n.O\x9e\xb8(\x9el\xa4<\x1d\xfb\xa1\xfc\x95\xabv'
b'\\\xc5\xcbL\xbbB')
Результат разбора:
'A1': {'B1': [{'C1': 65392,
{'C2': -0.7046586275100708,
'C3': -0.5017385482788086,
'C4': [23427, 4795, 20608],
'C5': -69,
'C6': 22410,
'C7': {'D1': 1766760401, 'D2': [29, 163, 114, 170, 47]}},
'C1': 59729,
{'C2': -0.35849693417549133,
'C3': 0.5442310571670532,
'C4': [48831, 31381, 64001],
'C5': -75,
'C6': 15371,
'C7': {'D1': 2039663902, 'D2': [173, 121]}}],
'B2': 30,
'B3': 21745,
'B4': [-2058657060161574754,
7828448151750179989,
-6091579441382900926]},
'A2': 1008678111320514633}
Пример 2
Двоичные данные:
b'ETRF\x00%\x00L\xdc\xda\xf4\x00\x03\x00\x00\x00g[\xaamM^\xc1H\xb8\x93\xc5$'
(b'\xf7~\x01j\x95\xd2\x057\xffn\xfd?\x0c9\x1a\xbdW\x06\x1a\x00\x03\x00\x00\x00'
b'\x19\x80\x01\xac@\xc6P\x08\x00\x06\x00\x1fw\xab\x98\x82b\xd5\xdd\x92'
b'\xa5\xea\xd4M\xb8\xe9<\x84\xd3\xbb?r\xebr\x00\x05\x00\x00\x00@8\x83\xb3\xb7'
b"\xc8H!\x00\x02\x00J\x9c\xe9\xf1[\x87\x07i\x7fQ\xeb'\x1b\xfd\x8d\xecl\xeb"
b'\x8bL\x87\x0b\x9c\xdeW')
Результат разбора:
'A1': {'B1': [{'C1': 28413,
{'C2': 0.5477463006973267,
'C3': -0.0524960532784462,
'C4': [37829, 9463, 32257],
'C5': -128,
'C6': 428,
'C7': {'D1': 1086738440, 'D2': [106, 149, 210, 5, 55, 255]}},
'C1': 47337,
{'C2': 0.016214242205023766,
'C3': 0.9489051103591919,
'C4': [30635, 39042, 25301, 56722, 42474],
'C5': 56,
'C6': 33715,
'C7': {'D1': 3083356193, 'D2': [212, 77]}}],
'B2': 220,
'B3': 56052,
'B4': [-7139910358809482881,
5902854737770703980,
-1474000310134579625]},
'A2': 6605211982561888440}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x4a 0x43 0x45 0x15
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
3 | double |
4 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур B |
5 | Адрес (uint32) структуры D |
6 | uint32 |
7 | Массив uint16, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | Массив int16, размер 4 |
2 | Адрес (uint16) структуры C |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | Массив int8, размер 6 |
4 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 3 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BJCE\x15\xaa\xff\xe1\xb9\xbfH\xf2\x18\xbf\xc18q\xa4N|8\x00\x00\x00'
(b'\x02\x00[\x00\x00\x00_Z%\xbd\xf1\xb8\x86C\x1c\xb6\xb4f\xbe\xc8\xb5\xfel\xc3'
b"y\xf5YN\xf3,=H'b\xf1\xa5\x06\x99\xf6\xbc\x00)\xd5?X\xaceR\xee[\xd0\xbe"
b"\x90\\5A\xdc\xa85\x05$2r\xdf\xfb\x00B\x008\x00Q*\xfd\xdb\xdeu\x10\r\x13'"
b'f\xc8c\xeb\xfcU\\')
Результат разбора:
'A1': -1426071111,
{'A2': -0.7849440574645996,
'A3': -0.13453503153593416,
'A4': [{'B1': [10082, -3675, 1689, -2372],
'B2': {'C1': 102,
'C2': -0.3920134902000427,
'C3': [108, -61, 121, -11, 89, 78],
'C4': 4079762760}},
'B1': [-22475, 1316, 12914, -8197],
{'B2': {'C1': 213,
'C2': 0.8463805317878723,
'C3': [82, -18, 91, -48, -66, -112],
'C4': 1546994140}}],
'A5': {'D1': [721279966, 1963986195, 661047395], 'D2': 3959182684},
'A6': 1512422897,
'A7': [47238, 17180, 46772]}
Пример 2
Двоичные данные:
b'BJCE\x15\xba"\x90\x98?\x11\x1f]\xbf\xe8.\x9c\xd7\xde\xb2p\x00\x00\x00'
(b'\x02\x00[\x00\x00\x00_\xff\x1c\x17eY\xa8y\xc82\t[\xbeB\xa2\xf0\xa6\x8d'
b'l\xf8\xde\xee\xa5.d\xda\xe3WWj\xc7H\xb4y\x00)4>\x98\x15X46T\xf8\xa7'
b'\x87\x96\xe4;\xc6\xc1m\x12\xc9p\xe5\x8cr\x00B\x008\x00Q\xb0D[\xdcGqr\xa2\xbf'
b'\x04\x98\xfbm\x19\x01\xe2')
Результат разбора:
'A1': -1172139880,
{'A2': 0.5668848156929016,
'A3': -0.7556900230607209,
'A4': [{'B1': [-7337, 22378, -14520, -19335],
'B2': {'C1': 91,
'C2': -0.19007468223571777,
'C3': [-90, -115, 108, -8, -34, -18],
'C4': 2771281114}},
'B1': [-16019, 4809, 28901, -29582],
{'B2': {'C1': 52,
'C2': 0.29703783988952637,
'C3': [52, 54, 84, -8, -89, -121],
'C4': 2531539910}}],
'A5': {'D1': [2957269980, 1198617250, 3204749563], 'D2': 1830355426},
'A6': 4280031077,
'A7': [22952, 31176, 12809]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4 0x41 0x48 0x44 0x4d
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Структура B |
3 | uint16 |
4 | uint8 |
5 | Структура E |
6 | double |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | Массив char, размер 5 |
3 | Массив uint64, размер 4 |
4 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива структур D |
2 | int32 |
3 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int16 |
2 | int32 |
3 | Массив int64, размер 7 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x04AHDM=\x02\x00\x86\x00\x00\x00\xb22\x9b\xf1\x98Qwnhjsp\xfb!\xb3{p\xff+}'
(b'\xddlP\xeaE\x1f\x1b\x99\xbe\xed\xfed=mm\xe3*I\x94JA\xf2n\x914\xd8$\xe2'
b'\x02\x00\x92\x00\x00\x00@\x03Q\xefO\x81\x82Q\\\xc8\x7fn\xda\xf0\x9c 6\xb0'
b'Y\x18\xf7\xec\xbc\x88$\xbf\xcf\x14\n\x9f{l\x9ebv\xcd\xf9D&R\xd3\x9e'
b"\xda\x15\xbdv\\\xf7t\xd6_\x1c\xfd\xeb&\xa1%\x93GM\xbc\x9f\x03'\x10\xb3"
b'\xe8\xbf\xab~^\x82!!\x12\xd7\xb7Un\xbd\xa9=\xba\x00')
Результат разбора:
'A1': 61,
{'A2': {'B1': {'C1': [{'D1': 32427, 'D2': 555844190},
'D1': -10478, 'D2': -1116842569}],
{'C2': -241487182,
'C3': 20888},
'B2': 'wnhjs',
'B3': [3170376339280755568,
1954357635976060285,
7885026026578624153,
7994524077107260131],
'B4': 13457},
'A3': 9432,
'A4': 226,
'A5': {'E1': [15785, 186],
'E2': -279903424,
'E3': [7962302965044379983,
1754627276359397594,
1499627364571475191,
-3641614816118071542,
1574745650172937465,
2044588553704076989,
5568581254093663229]},
'A6': -0.7718582880015599}
Пример 2
Двоичные данные:
b'\x04AHDM\xa9\x02\x00\x86\x00\x00\x00iIs\xd8} gmelp\x13d\x0c\x06\x01'
(b'\x9a\xd0\xe9Z\x98\xf6r\xaa=\r-\x97\xadH\x88\xb7:\x08\xee\xcd\x0f\xa8\xc1^'
b'\x92\x13$(8\x93\xb4\xd0\x08\x00\x92\x00\x00\x00\xc1\xf6\xa5\xef\xf5)'
b'\x9d\xfak]\xb9\x1b\x96\xc8b\xa3U\x91\x96@\x83\xa7\xb6\xf2P\xa4C\xf5\x18\x1d'
b'Y\xe0\x1b\n\xe0Ii8|b0An\xbe\xacy\xcc\xb1\x13a\x8b\x98V(\x1a\xa5f\xce\\O\xc4&'
b'\xe1\x05%\x00\xdf\xbf*\x0f]3\xd5\r\x8e\x0cA4\xa5\x87\xe7\x1b\xe3\xd4\x9a6'
b'\xe0\xea\xf4\x8b*6\xc7\x92\x84z')
Результат разбора:
'A1': -87,
{'A2': {'B1': {'C1': [{'D1': 3882, 'D2': 232076125},
'D1': 3214, 'D2': -2019216319}],
{'C2': -663533207,
'C3': 8317},
'B2': 'gmelp',
'B3': [16848135535180145683,
3246318708686493786,
17152023740780424599,
2599582345596506061],
'B4': 14376},
'A3': 46227,
'A4': 208,
'A5': {'E1': [7143, -11037, 13978, -5408, -29708, 13866, -27961, 31364],
'E2': -274336063,
'E3': [1997730628063013365,
4654067061933394070,
-773594043401197693,
5323265874396257560,
-4724767282998527895,
-7454758020966483540,
5718672567105628246]},
'A6': -0.48438382696313576}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x4b 0x52 0x72
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | int32 |
3 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 7 |
2 | int8 |
3 | uint32 |
4 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C |
5 | uint8 |
6 | Структура D |
7 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
3 | Размер (uint16) и адрес (uint32) массива double |
4 | float |
5 | int64 |
6 | int8 |
7 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
3 | uint8 |
4 | Размер (uint16) и адрес (uint32) массива float |
5 | Размер (uint32) и адрес (uint16) массива uint16 |
6 | uint16 |
7 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WKRr\x90\x00\x00\x00\xb7\xaf\x1d\xa8y\xd1\x1f\x80\x00\x00\x95YV\xc8>H'
(b'\xe8\xca\xed?p\x8f\xe9\x0bUT\xbb\xbf\x80I}\x97\x1c\x18\xba\xbfr\x87\x95>'
b'\x8e\t\x03\x00\x14\x00\x00\x00&\xfd\xb8\xbe3\x10\xe7e\x8a\xd3M\xa8\xc4x\xae='
b'\x02\x80\xe3\x1a\xe6\xbfT\xb9\xe5\xa9Sj\xe4?P{\xc3\xc3\xa3+\xdd?\xd7:c?-\xbb'
b'\x03\x00F\x00\x00\x00?\r4\xbf\xbf)\xefb\xeb\xad\xbe\xfb\xb8O,\x00\x00\x00'
b'^\x00\x00\x00\xcdF[>\xad\xa0.\xbf\xb4\xdb\x00?\x84\xfdB7ntkuqek\xed'
b'\x8a\xd2\xd1\xac\x02\x00x\x00\x86W\x94\xd3>-\xc8\x9c\x03\x00\x80\x00'
b'\x00\x00\x02\x00\x00\x00\x8c\x00\xee\xe32\x90\x00\x1e\x15\xe3')
Результат разбора:
'A1': {'B1': 'ntkuqek',
{'B2': -19,
'B3': 2899432074,
'B4': [{'C1': 0.29204899072647095,
'C2': 2446,
'C3': [0.9310189639129571,
-0.10675555744961485,
-0.10193041513892886],
'C4': -0.361306369304657,
'C5': -6319162110762348493,
'C6': -60,
'C7': 120},
'C1': 0.8876165747642517,
{'C2': -17619,
'C3': [-0.6907823085947962,
0.6379793470676227,
0.45578855626620385],
'C4': -0.7033271193504333,
'C5': -306616498125854273,
'C6': -72,
'C7': 79}],
'B5': 134,
'B6': {'D1': 0.41324111819267273,
'D2': -14291,
'D3': 156,
'D4': [0.2141372710466385,
-0.6821392178535461,
0.5033524036407471],
'D5': [64900, 14146],
'D6': 58350,
'D7': 503353394},
'B7': 58133},
'A2': -1474449481,
'A3': 6455065643055042937}
Пример 2
Двоичные данные:
b"WKRr\x8e\x00\x00\x00\xa8q\x97D+ye\x8f\xc63\xcbq.\xf2\x1a)\xc9'\xea?\x1cw)e"
(b'\x8e\t\xdc\xbfHZ\x1b\x89\xbe)\xe5\xbf\xd2\x05\x1a\xbf\x9e\xad\x03\x00'
b'\x14\x00\x00\x00\xa6\xc3\xfa=\xf8\xdf\xf56\xf7\xbb\xeden{\xe8<'
b'\xda\xf9\x9a\xfa\xcb?\xa0s\xacu\t\x9b\xb8?\n\x1f\x82\xe8@m\xed?HvR>\x86<'
b'\x03\x00F\x00\x00\x00\r!\xff\xbe\x82\xe2\xb1\xdft6Ai\xd5j,\x00\x00\x00'
b'^\x00\x00\x00\x85\xa7\x04?\x81\xea\xab\xbes\xa1\xb0\xb9\x14\xd1judycupz\xb6o'
b'^\xbf\x02\x00x\x006\x04\xd5\x11>\xeb^@\x02\x00\x80\x00\x00\x00'
b'\x03\x00\x00\x00\x88\x00h+\x98\xf62\xa7\xecM')
Результат разбора:
'A1': {'B1': 'judycup',
{'B2': 122,
'B3': 3210637238,
'B4': [{'C1': -0.6016513109207153,
'C2': -21090,
'C3': [0.817356663020808,
-0.43808326605891224,
-0.6613457372539608],
'C4': 0.12244348227977753,
'C5': 7344733237764546552,
'C6': 110,
'C7': 123},
'C1': 0.2055293321609497,
{'C2': 15494,
'C3': [0.21858536910847381,
0.09611567614451966,
0.9195866147210563],
'C4': -0.4982990324497223,
'C5': 7584403123065709186,
'C6': -43,
'C7': 106}],
'B5': 54,
'B6': {'D1': 0.1424141526222229,
'D2': 24299,
'D3': 64,
'D4': [0.5181811451911926, -0.3357734978199005],
'D5': [41331, 47536, 53524],
'D6': 11112,
'D7': 2805135000},
'B7': 19948},
'A2': 1150775720,
'A3': 8199704474460453163}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4a 0x43 0x41 0x55 0x32
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур C |
2 | float |
3 | Структура D |
4 | int8 |
5 | Размер (uint32) и адрес (uint16) массива uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | double |
3 | Массив int16, размер 4 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
3 | int16 |
4 | Размер (uint32) и адрес (uint16) массива int8 |
5 | int16 |
6 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'JCAU2\x00x\x95\xddDV\xbf\xe9\xa1\x1f\x92\xa6\xab\x9eQ2v\x05\xca\xbavR\xf7'
(b'E\xbf\xe5\xf2\x7f\x05\xa0\xe1\x94N"\x86\x96eP\x99\tL\xbc\xbf\xd6\xfb\x04?'
b'\xd4F\xa0\xe6\xdd\xb7Rw\xf0\x9b\xe1\x0cO\xbf\xbenu_\xc6\\\x00\xe5\xba\xef'
b'<E\xd4\x03\xb0G*?\xdeb\xdc\xffa\xec`\x13,\x9c\xa3\xbe~\xdd\xe5\x00'
b'\t\x00\x1b\x00-\x00?\x00Q\xd9F\x90\xbd.\xaa\xfa\x890\\G\x00\x00\x00\x05'
b'\x00c\xbe(\xb6)\x0c\xd7\x16F\x8a\xe6\x08H\x00\x00\x00\x07\x00m\x9e\xd1_\x89'
b'u\x00\x00\x00\x04\x00t')
Результат разбора:
'A1': {'B1': [{'C1': 17494,
{'C2': -0.8009183754232827,
'C3': [20786, 30213, -13638, 30290]},
'C1': -2235,
{'C2': -0.6858515844278821,
'C3': [20002, -31082, 25936, -26359]},
'C1': 19644,
{'C2': -0.35907083733864376,
'C3': [-6435, -18606, 30704, -25631]},
'C1': 3151,
{'C2': -0.11887296283963167,
'C3': [-6726, -4292, 17876, 944]},
'C1': 18218,
{'C2': 0.4747841352434019,
'C3': [4908, -25437, -16770, -8731]}],
'B2': -0.1647573858499527,
'B3': {'D1': 215422534,
'D2': 35558,
'D3': 2120,
'D4': [-39, 70, -112, -67, 46, -86, -6],
'D5': -24879,
'D6': 24457},
'B4': 117,
'B5': [137, 48, 92, 71]},
'A2': -27171}
Пример 2
Двоичные данные:
b'JCAU2\x00K\x1eY\x8cP\xbf\xdaxY=\x86\\\xfc\xb5\xc9\xd2\xacZN\x01^)'
(b'\xc4\xbf\xca\xc1\xb6y\x10\x90\x88\xcd\x85Gh\x89kjU\x86:?\xef\xf4\x17\xcf'
b'\xc4s\xf6\xdda\xd9<\t\x83Pg\x00\t\x00\x1b\x00-\x07\x8d<4\x80\n\x00'
b'\x00\x00\x03\x00??[:>n\x82i\xdcb\xb9z\x9a\x00\x00\x00\x04\x00E\xea\x0b\x0epY'
b'\x00\x00\x00\x02\x00I')
Результат разбора:
'A1': {'B1': [{'C1': -29616,
{'C2': -0.41359549530302764,
'C3': [-18999, -11604, 23118, 350]},
'C1': 10692,
{'C2': -0.2090366450439698,
'C3': [-12923, 18280, -30357, 27221]},
'C1': -31174,
{'C2': 0.9985465105015681,
'C3': [-8863, -9924, 2435, 20583]}],
'B2': 0.8563574552536011,
'B3': {'D1': 1854040540,
'D2': 25273,
'D3': 31386,
'D4': [7, -115, 60, 52],
'D5': -5621,
'D6': 3696},
'B4': 89,
'B5': [128, 10]},
'A2': 7769}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x46 0x58 0x59
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
3 | float |
4 | Структура B |
5 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | uint32 |
3 | Структура C |
4 | int16 |
5 | Массив uint32, размер 6 |
Структура C:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур D, размер 2 |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива int8 |
2 | uint8 |
3 | Размер (uint32) и адрес (uint16) массива int16 |
4 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | Массив int8, размер 8 |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VFXY\x81\xadMX?\r\xf3j\xc1\x9a\x1e&s\xbf`\x92o\xe4\x9b\x06\xda\xd2iK'
(b'\xa9kR\x00\x00\x00r\x00\x00\x00\xb6\x16\x00,,G?S\x9e\x8c\xf3\x00\x9fc'
b'e\xb9\x85\x9c\x93?{&v\xe9p\xd7\xa6A\xcc\x95\x7f\x00\x00\x00x\xcb\xdf/'
b'\xd9H\xc1\x99nP\x02\x00H\x00\xfa\x04\x00\x00\x00J\x00\xc6\xf2B4\xf2?\x02'
b'\x15\xd0nP\xb3\xf7#\xee\xaf"\xca\x9fS\x95\x05\x00_\x00f\x07\x00\x00\x00d'
b'\x00\xd7@\xa2{5\xb0^\xe640\x95')
Результат разбора:
'A1': -21119,
{'A2': 11151311744477911117,
'A3': -0.9498003721237183,
'A4': {'B1': -3253280514199547296,
'B2': 1806257001,
'B3': {'C1': [{'D1': [120, -53],
'D2': 250,
'D3': [12255, 18649, -26175, 20590],
'D4': 62150},
'D1': [66, 52, -14, 63, 2],
{'D2': 102,
'D3': [-12267,
20590,
-2125,
-4573,
8879,
-24630,
-27309],
'D4': 16599}],
'C2': 738203318},
'B4': 18220,
'B5': [2359186239,
1671364851,
2626009445,
645611411,
3614501238,
2513191334]},
'A5': {'E1': [-94, 123, 53, -80, 94, -26, 52, 48], 'E2': -107}}
Пример 2
Двоичные данные:
b'VFXY\x97\x1b)w\x87\xa6\xc7m/\x81Na\x81>\xc2\xce\x06\xe5\t\xb8\xa20\xad@'
(b'\xc9+U\x00\x00\x00s\x00\x00\x00ZE\xb2\xe3\xf6#\xbc:\x82"U]}\xcaQ!K\xbd'
b'\x84\xb0[\x03u}cBU!\xc1\xa4\x80\x00\x00\x00\xba\xcf\xcb\xaa\x12\xf9\xeb<'
b'L6\xafMQ\x05\x00H\x00\x03\x04\x00\x00\x00M\x00_Q\xa8_\xf2\x00t\x86'
b'\xd3\xa2\x1c\x00n\xf0\xd9D\x0f\x05\xbc\x05\x00b\x00i\x06\x00\x00\x00'
b'g\x00\xaf\xe3\xb3\xda\x00\xadE\xe8Gu3')
Результат разбора:
'A1': 7063,
{'A2': 9308779659057919785,
'A3': 0.2526955008506775,
'A4': {'B1': 3504565812684312258,
'B2': 734609581,
'B3': {'C1': [{'D1': [-70, -49, -53, -86, 18],
'D2': 3,
'D3': [-5127, 19516, -20682, 20813],
'D4': 20831},
'D1': [-88, 95, -14, 0, 116],
{'D2': 105,
'D3': [-11386, 7330, 28160, -9744, 3908, -17403],
'D4': 58287}],
'C2': 3820111194},
'B4': 9206,
'B5': [578960060,
3397213525,
3175817553,
56340612,
1113816437,
2764120405]},
'A5': {'E1': [-77, -38, 0, -83, 69, -24, 71, 117], 'E2': 51}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x48 0x56 0x57 0x4a
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив адресов (uint32) структур B, размер 3 |
3 | Адрес (uint16) структуры C |
4 | Адрес (uint32) структуры D |
5 | double |
6 | int8 |
7 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 5 |
2 | int8 |
3 | int8 |
4 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
3 | uint16 |
4 | int8 |
5 | int16 |
6 | uint64 |
7 | double |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 3 |
2 | int8 |
3 | float |
4 | Массив int8, размер 6 |
5 | double |
6 | Размер (uint32) и адрес (uint16) массива uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CHVWJA)\x00\x00\x002\x00\x00\x00;\x00\x00\x00D\x00m\x00\x00\x00L\x8d\x91\xe2'
(b'\x13E\xd3?~c\xde\x11\x10\x7fz\x98\x1bifykq\xe9\xb9\x9d\x0bkuswd\x1d'
b'\xb5\xcc\xb8jfrpcBsbXl\xb4_\xb0]P\xf3\x15G\xd2o\n]\x91u\xceu\tv\xcd'
b'\x03\x08n\xd7\x10\xaa\x1c\xc0\xbfU\x9a\x9b\x05\x7f\x10>\xe6o\xe6\xd1'
b"\xe2\x1c\xc0Ol\xa4(h\xbat\xddi\x8c\xd6LK\x1e\xbfjs4\xa1\xcd1|'19"
b'>\xe4\xd5\xbf\x03\x00\x00\x00a\x00')
Результат разбора:
'A1': 65,
{'A2': [{'B1': 'ifykq', 'B2': -23, 'B3': -71, 'B4': 2973},
'B1': 'kuswd', 'B2': 29, 'B3': -75, 'B4': 47308},
{'B1': 'jfrpc', 'B2': 66, 'B3': 115, 'B4': 22626}],
{'A3': {'C1': -1335905172,
'C2': 368267357,
'C3': 53831,
'C4': 111,
'C5': 23818,
'C6': 274004935342716305,
'C7': -0.12587476560916877},
'A4': {'D1': [1817165852, 3127388324, 2355748212],
'D2': -42,
'D3': -0.6183364391326904,
'D4': [106, 115, 52, -95, -51, 49],
'D5': -0.3420558508411131,
'D6': [94083669, 3862827135, 3805406831]},
'A5': 0.30109116674266967,
'A6': 126,
'A7': 1988473921633115747}
Пример 2
Двоичные данные:
b'CHVWJ\xaa)\x00\x00\x002\x00\x00\x00;\x00\x00\x00D\x00q\x00\x00\x00 \xc5\x9aq'
(b'B$\xe8?2\xde\xa6\x00\x83+O\x08\xa6epqis\xc0\x8d\xccUtaryu \xc8y\xbbijbdh'
b'\xb4$\x03o4%\x89{\x1c\x9e\xec\x8c\x07\xa3\x82@@\xd5\xbf"\xd4\xed\xf0\xcd'
b'XT\xdfT\x8bD|\xd7?y\xd6}\x1fa\xfd\xcb\xa3\xbc\xfa\x0ba5Z\xda?\nj\x95'
b"\xa5\x0bl\x03\x05R\xf3\xb9\x8bi\xcf'*\xbf3Zfu\xabH\xf8 VA~L\xe5?"
b'\x04\x00\x00\x00a\x00')
Результат разбора:
'A1': 170,
{'A2': [{'B1': 'epqis', 'B2': -64, 'B3': -115, 'B4': 21964},
'B1': 'taryu', 'B2': 32, 'B3': -56, 'B4': 47993},
{'B1': 'ijbdh', 'B2': -76, 'B3': 36, 'B4': 28419}],
{'A3': {'C1': 2072585524,
'C2': -1930650084,
'C3': 41735,
'C4': -126,
'C5': 16448,
'C6': 6399035549820305365,
'C7': 0.3669597016009807},
'A4': {'D1': [2778032650, 84110347, 2344219474],
'D2': 105,
'D3': -0.664669930934906,
'D4': [51, 90, 102, 117, -85, 72],
'D5': 0.6655875469305377,
'D6': [528340601, 2748054881, 1628175036, 1071274549]},
'A5': 0.7544262141074434,
'A6': 50,
'A7': -6482844615299782946}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xdd 0x46 0x56 0x45 0x4f
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | int64 |
4 | Массив структур C, размер 4 |
5 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | uint8 |
4 | Массив char, размер 5 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint16 |
3 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int64 |
3 | uint16 |
4 | Массив uint8, размер 4 |
5 | int16 |
6 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xddFVEO{o6%?f\xa1\xb1Aosxej\x00\x07\x00L3\xe0\xeb\xa3\x8a\xff\xa71\x99'
(b'\xba\x97\xe8\xc9\xc4Uv\xd4\xbc\x8d?\x8bdO;\xd8\xaay\xff\xe0r\xa7\xa4M'
b",\xf4\x83\x0f\x1d\xfe(\xa1\xa1Nzj:\xbcP\xc6('\xaaDhgswyku")
Результат разбора:
'A1': {'B1': 2070885925, 'B2': 0.9009047150611877, 'B3': 65, 'B4': 'osxej'},
{'A2': 'hgswyku',
'A3': 3738246778361718577,
'A4': [{'C1': 39354, 'C2': 38888, 'C3': 201},
'C1': 50261, 'C2': 30420, 'C3': 188},
{'C1': 36159, 'C2': 35684, 'C3': 79},
{'C1': 15320, 'C2': 43641, 'C3': 255}],
{'A5': {'D1': -32,
'D2': 8261752692808123151,
'D3': 7678,
'D4': [40, 161, 161, 78],
'D5': 31338,
'D6': 4232346561828858436}}
Пример 2
Двоичные данные:
b'\xddFVEO\xecg\xb5\xeb>\xf5\xe2\xcd\xe4sjkyi\x00\x03\x00L\x84\x1a\xbao\xb4'
(b'J\x00\xc4\xfc\x92\x18Q4;n\xaa\xc5\x89\xaa\xf0y7a\x8e\xea\x17vz\xc0\xb5X-\xaa'
b'\xc2\x15\xbd\xdco\xb2\xef\xdbw\xa9\xd3f\x96\xe3\x83\x91\xf50\xa9\xb9fck')
Результат разбора:
'A1': {'B1': 3966219755, 'B2': 0.480245977640152, 'B3': 228, 'B4': 'sjkyi'},
{'A2': 'fck',
'A3': -8927618322379702076,
'A4': [{'C1': 64658, 'C2': 6225, 'C3': 52},
'C1': 15214, 'C2': 43717, 'C3': 137},
{'C1': 43760, 'C2': 31031, 'C3': 97},
{'C1': 36586, 'C2': 6006, 'C3': 122}],
{'A5': {'D1': -64,
'D2': -5379499543470162468,
'D3': 28594,
'D4': [239, 219, 119, 169],
'D5': -11418,
'D6': 10872678588309612985}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x56 0x57 0x51 0x24
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | Структура B |
3 | int16 |
4 | uint16 |
5 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | int16 |
3 | Размер (uint32) и адрес (uint16) массива int16 |
4 | Размер (uint32) и адрес (uint16) массива int16 |
5 | uint32 |
6 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив адресов (uint32) структур D, размер 3 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | Массив int16, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DVWQ$?\xe4y\x97\x81\x07\x08\xc0\x00\x00\x00k.d\x00\x00\x00\x02\x00'
(b'{\x00\x00\x00\x02\x00\x7f\xe35\x9f\xa5\x8dK\xea\xb4\xa3A\x1f#\xa7>~\x90\x88'
b'.#\xa4\xdd;\xd9\xfb\x8c\xf8YC6\x84DZ\xbe\x9e\xb5>Fp\x18\x0b`\x14\r\x13('
b'\xc6J\x97\x03 \x8c\x9e_J\xa5zk\x00*\xffC\x9d\xbc\xac\xf9\x8c\xbb\x02\x98'
b'\xf0\xa0\x06\xba\xe9\x86j\x8c\xeb0T\x00\x00\x00,\x00\x00\x00A\x00\x00\x00Vw'
b'\x92\xfa\xf9\xac\xbc\x1d&')
Результат разбора:
'A1': 0.6398427505557933,
{'A2': {'B1': {'C1': 2364223572,
'C2': [{'D1': 1048481928,
'D2': 46,
'D3': [9124,
-8901,
-9733,
-29448,
22851,
13956,
17498,
-16738]},
'D1': -1254209936,
{'D2': 24,
'D3': [2912,
5133,
4904,
-14774,
-26877,
8332,
-24993,
19109]},
'D1': 2053832746,
{'D2': -1,
'D3': [17309,
-17236,
-1652,
-17662,
-26384,
-24570,
-17687,
-31126]}]},
'B2': 11876,
'B3': [30610, -1287],
'B4': [-21316, 7462],
'B5': 3811942309,
'B6': 2370562740},
'A3': -23743,
'A4': 7971,
'A5': 167}
Пример 2
Двоичные данные:
b'DVWQ$?\xe8j\x02\x16\r,\xd8\x00\x00\x00k\x95~\x00\x00\x00\x02\x00'
(b'{\x00\x00\x00\x03\x00\x7f)0\xf5\xe1\x88`\x93\x8f1\xde\x11\xa9\r\xf8\xf0h\x8c'
b'\xf7J[\xffm\xa6Okj\x9c\r\x89\xc1\xed\xc7z\x05\xf0\xf4\x038\xe0"\xf8'
b'\xad\xc92R\xa1\x05\xf8\xc7\xed\xd4\xbdb\xfe\x0fS\xde\xf8\xf1\x9f#'
b't\x07\xf7\xe4\xa0q\x97\x92\x1f\x10\x05|\x8a\x90B(\xb8\xfb\xca\x00'
b'\x00\x00,\x00\x00\x00A\x00\x00\x00V\xc5\xfc\xc96Gv0"\x91\x86')
Результат разбора:
'A1': 0.7629404478733717,
{'A2': {'B1': {'C1': 683211722,
'C2': [{'D1': -118462324,
'D2': -9,
'D3': [19035,
-147,
-22961,
27498,
-25587,
-30271,
-4665,
31237]},
'D1': -252443848,
{'D2': -32,
'D3': [8952,
-21047,
12882,
-24315,
-1849,
-4652,
-17054,
-497]},
'D1': 1407121649,
{'D2': -97,
'D3': [9076,
2039,
-7008,
29079,
-28129,
4101,
31882,
-28606]}]},
'B2': -27266,
'B3': [-14852, -14026],
'B4': [18294, 12322, -28282],
'B5': 691074529,
'B6': 2288030607},
'A3': 12766,
'A4': 4521,
'A5': 13}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x56 0x4b 0x4b
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | int16 |
3 | Массив char, размер 4 |
4 | float |
5 | Структура B |
6 | uint32 |
7 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 2 |
2 | Адрес (uint32) структуры D |
3 | int16 |
4 | Размер (uint32) и адрес (uint32) массива int64 |
5 | uint8 |
6 | float |
7 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint16) массива int16 |
3 | double |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint8, размер 5 |
2 | int8 |
3 | uint64 |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BVKK?\xd7\xeb\xb5B\xc5\xc30\xec\x1cdklm?K\x8f\xa9\x00\x00\x00@\x00\x00'
(b'\x00^\x00\x00\x00tM\xa4\x00\x00\x00\x08\x00\x00\x00\x83K\xbf%\x9b'
b"\x03\xa7\x17 \xa6?\x80\x9d'\xff\xdc\xbc>\xfd\xaa5\xbf\xe0\x8b\xc1"
b'\x80\x01\xea\xa4\x00\x00\x00\x04\x008?\xd4m\x06\xd8\xd0\x7f\x8c\xb0\xd3'
b'G+\x9b\xb1\xfb\xa9\xbf\xe4\xb3&\xc0\xc2\xd7N\x00\x00\x00\x04\x00V?\xd9E\x0c'
b',\xcby\x18\x98\x8a"$\xfa\xa4\x1b\x91\x9c\xaaC5\x07~\xba\xbe\x07@!ZE\xff\xb2L'
b'\xde\xea!\xb7T\xb9-C\x03\x90\xe2l\xab\xa0\xfa=\x03\xdd\xcaD\xbdk\xbf\x10'
b'\x8c\x0f\x02\x87\xea\xce=?\xda\xd3ki\xb9\xfe\xec\xc1\x92K\xfa\xddb D\x03'
b'\xa2\xc0e\x17-\x18\xa4')
Результат разбора:
'A1': 0.3737614776683129,
{'A2': -5092,
'A3': 'dklm',
'A4': 0.7951608300209045,
'A5': {'B1': [{'C1': -0.5170600414415571,
'C2': [10239, -9028, 16125, -21963],
'C3': 0.31915446446691287},
'C1': -0.6468690647950355,
{'C2': [-20269, 18219, -25679, -1111],
'C3': 0.39483932852262305}],
'B2': {'D1': [152, 138, 34, 36, 250],
'D2': -92,
'D3': 1986541165733021566,
'D4': 186},
'B3': 19876,
'B4': [-4753760369673633870,
5539122022242892077,
4828862527631499514,
4396601522050132927,
1192344504891002429,
4601222427601141484,
-4498449536961601468,
261983268753971364],
'B5': 75,
'B6': -0.6468965411186218,
'B7': 167},
'A6': 388015679,
'A7': -32611}
Пример 2
Двоичные данные:
b'BVKK\xbf\x93sFG\xc8V\x80\xf1Xnnac\xbf\x05(\x17\x00\x00\x00<\x00\x00'
(b'\x00Z\x00\x00\x00p\xe1\xa5\x00\x00\x00\x08\x00\x00\x00\x7f\x19>\xd6o'
b'\x84\xba{\xfd&t\xb7Wf\xdcF#?\xa4\xf6\xc9\x92+\x8a\xe0\x00\x00\x00\x02'
b'\x008?\xea\xad*\xa5\x8c|\xcaN!1c\x14\x99\xc5\xc2\xbf\xc9\xc4\xa5^\x92'
b')X\x00\x00\x00\x04\x00R\xbf\xe4?n\xa1\xad!<\x01\xaeY17\xbe\xcd\x8f'
b"\xd8\x106\xcdh\xa55\x00\xad\xce\x83\xa4\x82\xae\x05;\xfc\xdb\x05\rQ'z\xb0"
b'\xa2\x8a\xcc~\x0f\x93\x023\x838L\r\\]\x87\x18\x7f.\x110\xfe\x15\xb3\x12'
b'\xb4\xaf\x86c#{\xd5\xe5<\xfcC\xc4\xeb\xf7\xf0\x953d\x83\x9f+\xf9\x95')
Результат разбора:
'A1': -0.01899442494512593,
{'A2': -3752,
'A3': 'nnac',
'A4': -0.5201429724693298,
'A5': {'B1': [{'C1': 0.04094533833792524,
'C2': [26332, 17955],
'C3': 0.8336384995817749},
'C1': -0.2013136588833031,
{'C2': [20001, 12643, 5273, -14910],
'C3': -0.6327431829204566}],
'B2': {'D1': [1, 174, 89, 49, 55],
'D2': -66,
'D3': 14812295263595358373,
'D4': 53},
'B3': -7771,
'B4': [48922235767008773,
4322570557113575290,
-5718855965914197246,
3711872417176247687,
1765180230323803571,
1347895180214369237,
-1928389172424607760,
-7695696821772093035],
'B5': 25,
'B6': 0.4188195466995239,
'B7': 186},
'A6': 2080188020,
'A7': -18601}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x51 0x4d 0x4f 0x65
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Массив uint8, размер 2 |
3 | Размер (uint16) и адрес (uint16) массива int32 |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | float |
3 | int64 |
4 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур C |
5 | uint32 |
6 | Адрес (uint32) структуры D |
7 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | Адрес (uint16) структуры E |
3 | uint32 |
4 | int16 |
5 | Массив uint16, размер 7 |
6 | float |
7 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | uint64 |
3 | uint8 |
4 | Массив uint8, размер 5 |
5 | int16 |
6 | float |
7 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PQMOe\x00\x00\x00i\xe7\x9c\x00\x02\x00\x8cS\xb5\xde\x0f^\xd2\xe4\x9f\xd5'
(b'\xb7E\xa0\xf9\xa6\xc4\xc1\xa9l\x00\x0f\x00\x15\x00\x1b?\xef\x01\xde\x06'
b"\x9f'\x12\x97,\x9d\xd0\x8b\xe8\xc8\xe6\x8b]\xbd\x86\xad\x08\xb7\xb4\xbe"
b"\xbb\x94>\xf6/?\xde\xa0M\xee\xfee$\x00' \x15\xc8a9\x91c\xee\x13\xf1*\x08\xac"
b'\x11\xce7Pp\xc8\x97\xbear\xf3!\xdf?\xcc\xf1@\xa9\xd8\x11\xf0>\xd4n~\x18\x00r'
b'\xce\xca\xaf\xfaj\x00\x03\x00\x00\x00!M\xf9\xf0\xa6\x00\x00\x00E\xb8'
b'\xc58\xfc\xd0\xb1\xdf\xbfY')
Результат разбора:
'A1': {'B1': 0.22611244481244297,
{'B2': 0.41490548849105835,
'B3': 1729508489399630442,
'B4': [{'C1': 1404427791, 'C2': 24274},
'C1': -459287113, 'C2': 17824},
{'C1': -106511167, 'C2': -22164}],
{'B5': 1308225702,
'B6': {'D1': 0.4785342058108475,
'D2': {'E1': 0.9689779404954797,
'E2': 10893255117728434406,
'E3': 139,
'E4': [93, 189, 134, 173, 8],
'E5': -18508,
'E6': -0.36636537313461304,
'E7': 63023},
'D3': 538298465,
'D4': 14737,
'D5': [25582, 5105, 10760, 44049, 52791, 20592, 51351],
'D6': -0.22016505897045135,
'D7': 8671},
'B7': -72},
'A2': [231, 156],
'A3': [-986121008, -1310736551]}
Пример 2
Двоичные данные:
b'PQMOe\x00\x00\x00y\x97:\x00\x02\x00\x9cr\xa4\xcdu\xb2\xb4\xc8=J\x1e)h\x15'
(b'\xe5O\xe6\x7ff_\x95\xd4\x7f\xe7\xc5\x17\x93\x0c@z \x00\x0f\x00'
b"\x15\x00\x1b\x00!\x00'\xbf\xd9\x82\xa1\x94?\x83\x04\n\x0b\x82Kz\xdd\xb1\xfaG"
b'\xce\xb2\x95\xac\xc7\xf6\x14\xbe\xe5\xcfv\xcd\x86?\xd2gE\x1c\x84\xc6'
b'\xb0\x007\x99\xda\xc57I\xd0\x07\xf3\xbc\xc0\xd8w\xcan\\\xdf\x1f'
b'\xf8\xe2\x0f\xbd\xa7z\xdbs\x99\xbf\xe5\x9a\x16-]\xc1\xc0\xbe\x08T\x92Kb*'
b'\x079\x81\x13b\x00\x05\x00\x00\x00-_\x83M;\x00\x00\x00US\xad~\xcc\xd5'
b'\xa1\x92vq')
Результат разбора:
'A1': {'B1': -0.675059403043683,
{'B2': -0.1331351101398468,
'B3': 5431950311080137570,
'B4': [{'C1': 1923403125, 'C2': -19788},
'C1': -935507426, 'C2': 10600},
{'C1': 367349734, 'C2': 32614},
{'C1': 1603654783, 'C2': -6203},
{'C1': 395512896, 'C2': 31264}],
{'B5': 1602440507,
'B6': {'D1': 0.2875530985357768,
'D2': {'E1': -0.3985980937705309,
'E2': 723815425818604026,
'E3': 71,
'E4': [206, 178, 149, 172, 199],
'E5': -2540,
'E6': -0.4488484263420105,
'E7': 52614},
'D3': 2581251383,
'D4': 18896,
'D5': [2035, 48320, 55415, 51822, 23775, 8184, 57871],
'D6': -0.08177729696035385,
'D7': 29593},
'B7': 83},
'A2': [151, 58],
'A3': [-1384198955, -1584236943]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x49 0x45 0x56 0x57
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Адрес (uint32) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив char, размер 3 |
3 | uint8 |
4 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив адресов (uint32) структур D, размер 2 |
3 | Размер (uint32) и адрес (uint16) массива int16 |
4 | Размер (uint32) и адрес (uint32) массива int32 |
5 | double |
6 | double |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
3 | Размер (uint32) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MIEVW\r\x00\x00\x00Q\x00\x00\x00\x8frR\x98aek%\xed\xa3\xb7\x16\x0b\xd2]'
(b'\xf6\x9aom\xf6\x94\xad\x85\x8e\x02h\x08\x00\x00\x00\x17\x00\x00\x00\xf4'
b'\x95IY\xb4D\xc3\xb0\xd0f\x02\x00\x00\x00/\x00\x00\x00\xea\x8fr2>\xbb\xe1'
b'\x8a\xd6T\xa5\x86\xe9/1\xd6\xdb\x1f\x00\x00\x001\x00\x00\x00\x02\x00'
b'\x00\x00A\x00\x03\x00\x00\x00E\x00\x00\x00\xea\xc1\x9e8\xbe\x9f\xea\xbf'
b'\xbc\x96\x0b\xba\x13w\xec?')
Результат разбора:
'A1': {'B1': -1739427185, 'B2': 'aek', 'B3': 37, 'B4': 41965},
{'A2': {'C1': 219,
'C2': [{'D1': -1382746515,
'D2': 1744998021,
'D3': [183, 22, 11, 210, 93, 246, 154, 111]},
'D1': 1152670025, 'D2': 1724952771, 'D3': [244, 149]}],
{'C3': [-28694, 12914],
'C4': [-1964917954, -2035985194, -701419543],
'C5': -0.8319998842107996,
'C6': 0.8895357736298233}}
Пример 2
Двоичные данные:
b'MIEVW\r\x00\x00\x00O\x00\x00\x00\x95\xf4\xae\x90vph\xa4\xbf@\xec'
(b'\xd3\x0f\xce6.\x7fE\x8b\xf5\xd6\x03\x00\x00\x00\x17\x00\x00\x00B\xcd'
b'\xe9\xa7\xc7\xd4\xb3T\x90\xb9:\x03\x00\x00\x00*\x00\x00\x00\xcd6\xc5'
b'P~\xe4\xf1\x80z\xb1\xc3\x16\xc8!\xcc\xc3q\xc6t\x1a\x00\x00\x00-\x00\x00\x00'
b'\x03\x00\x00\x00=\x00\x03\x00\x00\x00C\x00\x00\x00p\x19\xb4\xa2<\x7f'
b'\xbd?\x9c\x08\x00\xfe\x8fT\xdd\xbf')
Результат разбора:
'A1': {'B1': -1867582315, 'B2': 'vph', 'B3': 164, 'B4': 16575},
{'A2': {'C1': 116,
'C2': [{'D1': 2133735118, 'D2': -688551099, 'D3': [236, 211, 15]},
'D1': -1277900889, 'D2': 985239636, 'D3': [66, 205, 233]}],
{'C3': [14029, 20677, -7042],
'C4': [-1317371663, 566761155, -965622836],
'C5': 0.11522273037198771,
'C6': -0.4582862835378678}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x64 0x59 0x56 0x56
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | uint32 |
3 | int64 |
4 | Структура B |
5 | Структура G |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Адрес (uint32) структуры C |
3 | int16 |
4 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | int16 |
3 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | int64 |
3 | Массив адресов (uint32) структур E, размер 2 |
4 | int16 |
5 | Структура F |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | uint32 |
Структура F:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | uint16 |
4 | uint32 |
5 | Размер (uint32) и адрес (uint16) массива int8 |
Структура G:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры H |
2 | int64 |
3 | Массив int16, размер 2 |
Структура H:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | Размер (uint16) и адрес (uint32) массива float |
4 | uint8 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'dYVV\xc8\xea\x9c\x1d\xa9\x9eL6\xc3\xd2I\xd1s\x90\x97\x0c\xf7=T\x00'
(b'\x00\x00\xf0!\xe9\xdd9\x1d\x1e\xda\x9d\xed\x00\xcb\xbeF\x83\xb1B]'
b'b\x00\x00\x00l\x00\x00\x00\x8d\xf1\x9f\x87\x80<\x98}q(\x02\x00\x00\x00v\x00'
b'\x84\x00\x00\x00t\x80=\xa9P/o\xcc:\xceb\xc8\x8aG\xb2\xf2\x98\x85\x12\xc1'
b'\xdf\x9c\x9eB6\xdc\xba\xf1\xe9\x9d\x85\xac5\xbf\x80\x04\\\xac\xbb`Q\xbe\xed1'
b'\x8d\xebv"F)\xce\xbe\xa6\xa5x\xbf!\xdfK?r\x19\x93\x06\x89y\x1f\xa5'
b'\xdc\x03\x00x\x00\x00\x00\x8co')
Результат разбора:
'A1': 496822984,
{'A2': 910991017,
'A3': 907352677045359299,
'A4': {'B1': 15863,
'B2': {'C1': -4534414982855374966, 'C2': -25377, 'C3': -600423778},
'B3': 8688,
'B4': {'D1': 17122081181206699497,
'D2': 6720128771375942400,
'D3': [{'E1': 2649354682, 'E2': 44165, 'E3': 75546421},
'E1': 1622912092, 'E2': 48721, 'E3': 3951899117}],
{'D4': -3699,
'D5': {'F1': 159,
'F2': 135,
'F3': 15488,
'F4': 678526360,
'F5': [118, 34]}}},
'A5': {'G1': {'H1': 114,
'H2': 15899148666351817497,
'H3': [-0.4026586413383484,
-0.9712775945663452,
0.7963734269142151],
'H4': 140,
'H5': 111},
'G2': -3715699144074100620,
'G3': [-12742, -14238]}}
Пример 2
Двоичные данные:
b'dYVV\x14\x1e\x82\xac\x05\xd7,R\xba\xc7re\xa4\x08I\x0b\xd8\xaaT\x00'
(b'\x00\x00\xf5\xf5R\xdc5\x02j\xab?\x96\x9a\xd4\xab8|t\x05\xc9b\x00\x00\x00'
b'l\x00\x00\x00\x12\x07\xc0\xe1u\xb5}\x02\xd5\x91\x02\x00\x00\x00v\x00'
b'\x8c\x00\x00\x00W2\xad\xc6\x0c7*k`\x91~\xb3\xeaf\xb1\xcdy@~\xc5*9u\xfd'
b'\x81\x0c\xaa\x85\x9c\xac\xd7R\xabi\xa9t\xbfyzn?\x8c\xfay7\xc1\xa6('
b'\x00`\xac\xbej\x99\x92\xbe\xe5#\xf4<\x8e\xc1\xb5>-G5>\x1c\x0b\xbe\x91'
b'\x1f\xa2\x84\x10\xab\x05\x00x\x00\x00\x00\xb4<')
Результат разбора:
'A1': -1400758764,
{'A2': 1378670341,
'A3': 813190709886764986,
'A4': {'B1': 43736,
'B2': {'C1': -4215861309286029590, 'C2': 14634, 'C3': 209845621},
'B3': -2571,
'B4': {'D1': 10826560501013929042,
'D2': -3961632220326931302,
'D3': [{'E1': 2895938986, 'E2': 21207, 'E3': 1957259691},
'E1': 1853520319, 'E2': 35903, 'E3': 3241638394}],
{'D4': 1810,
'D5': {'F1': 192,
'F2': 225,
'F3': 46453,
'F4': 2446656125,
'F5': [-90, 40]}}},
'A5': {'G1': {'H1': 28,
'H2': 12326498011962261003,
'H3': [-0.336669921875,
-0.28632670640945435,
0.029802272096276283,
0.3549923300743103,
0.1770293265581131],
'H4': 180,
'H5': 60},
'G2': 7722045039092511319,
'G3': [-28320, -19586]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x4c 0x59
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | int32 |
3 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | double |
4 | int8 |
5 | int8 |
6 | int64 |
7 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур D, размер 4 |
2 | Адрес (uint32) структуры E |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива uint16 |
2 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | int64 |
3 | Массив float, размер 7 |
4 | Массив int16, размер 7 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZLY\x00\x00\x00\x1bua\xb1\xb9\x008\x00F\x00T\x00b\x00\x00\x00lsu\xda\xb4\x8f'
(b'5\xadD4\xbf\xef\x11\x80\n\x85v\xac^\xd7\xa8_\x15XN\x88\xc8\xd1\xd4\x82'
b'\x92\x88\xd7>\x00\x00\x00\x02\x004%Z<\x06f\x17\xdfn\x00\x00\x00\x02\x00B'
b'\xde\xd2\xf7\x03\xc5\xa8=\xc0\x00\x00\x00\x02\x00P?c\x02\x85\xab\xef'
b'\x8aI\x00\x00\x00\x02\x00^i\xd5\xda\x7f\x7f\x7f\xa2\xee\x8d\xe4\xc3!'
b"\xfe\xfd?X\x93\xbf\xbdF\xea'?nn\xfc?3\x93\xe8\xbfH\xfc\xd3\xbe\xb4"
b'\x05\x0b\xbf\x0f\x00\xaaY@\x02_\xf5\xe8(\x90{\x8aEq\xe9L\x1e')
Результат разбора:
'A1': {'B1': -1892307644,
{'B2': 52,
'B3': -0.9708862500662767,
'B4': 94,
'B5': -41,
'B6': -6314304683531253551,
'B7': -11134},
'A2': 1969336761,
'A3': {'C1': [{'D1': [37512, 55102], 'D2': 626670598},
'D1': [26135, 57198], 'D2': 3738367747},
{'D1': [50600, 15808], 'D2': 1063453317},
{'D1': [44015, 35401], 'D2': 1775622783}],
{'C2': {'E1': 32639,
'E2': -6706266781442244867,
'E3': [0.8460044264793396,
-0.0485631488263607,
0.9313809871673584,
0.7014756202697754,
-0.7851077914237976,
-0.3516009747982025,
-0.5586038827896118],
'E4': [22848, 607, -2584, 10384, 31626, 17777, -5812],
'E5': 30},
'C3': 1937103540}}
Пример 2
Двоичные данные:
b'ZLY\x00\x00\x00\x1b\xe1\xfbLk\x008\x00F\x00T\x00b\x00\x00\x00li\xd3\xb2.\r'
(b'@M\x87\xf4\xbf\xed\xfe\xae\xc8lzr\xb8\xae\xfd\x92\x9a%Q\xea6\xf7l\x1d'
b'[\xaa\xd7\x9d\x00\x00\x00\x02\x004\xa0\xc7\x9a%?\xf81\x97\x00\x00'
b'\x00\x02\x00BV&\xd2E\xa5\xe0\x9e\xec\x00\x00\x00\x02\x00P\x9d\x97'
b'o\x1c\x98\xb5p\xdb\x00\x00\x00\x02\x00^ck<\xd7\t\xd6\xd7\xc9x\xa7\xedV'
b',\x08>\x83.\xea?}\xef\xc8\xbe\xdf;+\xbe+\xca\x8b>d\xeb\xbe\xbe\x93<\x14?q'
b'-fF\xb8\x87\x97\x98\xf7\x02\xef\x83\x08o\xceh\xe4\xd4')
Результат разбора:
'A1': {'B1': 222317959,
{'B2': -12,
'B3': -0.9373392023588407,
'B4': -72,
'B5': -82,
'B6': -174907950435256585,
'B7': 27677},
'A2': -503624597,
'A3': {'C1': [{'D1': [23466, 55197], 'D2': 2697435685},
'D1': [16376, 12695], 'D2': 1445384773},
{'D1': [42464, 40684], 'D2': 2643947292},
{'D1': [39093, 28891], 'D2': 1667972311}],
{'C2': {'E1': 2518,
'E2': -2897652222599484408,
'E3': [0.2562173008918762,
0.9919400215148926,
-0.4359982907772064,
-0.1677648276090622,
0.2235555350780487,
-0.28756773471832275,
0.9420989751815796],
'E4': [18104, -30825, -26377, 751, -31992, 28622, 26852],
'E5': -44},
'C3': 1775481390}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x4d 0x54 0x58
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
3 | uint8 |
4 | int64 |
5 | Адрес (uint32) структуры B |
6 | int8 |
7 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 2 |
2 | uint64 |
3 | uint32 |
4 | uint8 |
5 | Массив структур C, размер 6 |
6 | Адрес (uint16) структуры D |
7 | int64 |
8 | Адрес (uint32) структуры E |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint16, размер 4 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив uint8, размер 4 |
3 | int16 |
4 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
3 | Массив double, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WMTX\xce\xb6T?}\x9d\x05\xfaF\x81\xc9Sx5e\xb9xJ\x00\x00\x00G\xea|'
(b'\xa3\xde\xe5\x01;\xfc:X@\xeb[%g^\xc7ls\x18\x93.\xf8R\xf2\xc4\xef+\xa08'
b';\x02\x94\x02e#\xc5\xa4\xe2?\x90v\xedz7k\xe2\xbfmt\x06\xb6\xea\xe6F\xcc\xb5/'
b'A\xc4\xfeP\xec\x15\xb9\x0e\x8c\xcc\xdc\xfcF\xc8\xc1\xdd\xc7f\xc6\x0b8[\x98A'
b'\xc90z\x8cVfQ3\xb5\xd7P\xfb\xd1\x1d\xb5G\xdeQ\xe7J\xa9\xdam\xfa'
b'\xc6\x99\x10\x1aV\x02\t0R\x86V"\x00F\xe3\x0c\xcf\xa7)e\xc62\x00\x00\x00')
Результат разбора:
'A1': 0.8309143781661987,
{'A2': 4194671997,
'A3': 70,
'A4': 8699095435569252737,
'A5': {'B1': 'mt',
'B2': 3437878495461160454,
'B3': 1358873665,
'B4': 236,
'B5': [{'C1': [47381, 35854, 56524, 18172], 'C2': 200},
'C1': [56769, 26311, 3014, 23352], 'C2': 152},
{'C1': [51521, 31280, 22156, 20838], 'C2': 51},
{'C1': [55221, 64336, 7633, 18357], 'C2': 222},
{'C1': [59217, 43338, 28122, 50938], 'C2': 153},
{'C1': [6672, 598, 12297, 34386], 'C2': 86}],
{'B6': {'D1': 22586,
'D2': [64, 235, 91, 37],
'D3': 24167,
'D4': 5978579714639621319},
'B7': -4150865680842038458,
'B8': {'E1': 737133810,
'E2': 37435552,
'E3': [0.5826135340976912, -0.5755879784516811]}},
'A6': 71,
'A7': -271621265731388182}
Пример 2
Двоичные данные:
b'WMTX\x08v\xab\xbc>\xf8)\x16\xcf,\x04\xe8\x04y>$\xf6J\x00\x00\x00x\xba\xbf'
(b'\xf07w\xcb\x96o\x81N\x98G\xd2!\x1f\xd9d\xf8e\xb2\x94\xcac\xbd\xfa\xd6'
b'@]\xcc\xc7\x93\x85PS\x94\xa7\xc6\x90\xed\xbf\x00\xf2\xa1\x13\xbe\xa1'
b'\x9d\xbfuo_E\xd15]\xe8\xf4\xe3\xec\xb3\x9a\x8az>ve\xfd\xe0\xc9\xd6'
b'\t\xc0\x0f\xe4`\x08\xaf\x0b\xe2\x96\x1f\xe0\xa0\x85R\xb3\x93)v\xa1\xc0\xefiS'
b'\x89\xd9\x13M\x8f\x02Bl\xae\xf5\xb6\x04\xcf\xba]\xdbX\x81\xaf\xb2'
b'\x82\xa2\xb3"\x00\x8b^\xd0\x1e\xa9\xaa\x9cl2\x00\x00\x00')
Результат разбора:
'A1': -0.020930305123329163,
{'A2': 371849278,
'A3': 207,
'A4': -710374151723416532,
'A5': {'B1': 'uo',
'B2': 16426009227959551327,
'B3': 2325394412,
'B4': 122,
'B5': [{'C1': [30270, 64869, 51680, 2518], 'C2': 192},
'C1': [58383, 2144, 2991, 38626], 'C2': 31},
{'C1': [41184, 21125, 37811, 30249], 'C2': 161},
{'C1': [61376, 21353, 55689, 19731], 'C2': 143},
{'C1': [16898, 44652, 46837, 52996], 'C2': 186},
{'C1': [56157, 33112, 45743, 41602], 'C2': 179}],
{'B6': {'D1': 20097,
'D2': [152, 71, 210, 33],
'D3': -9953,
'D4': -4799770037849819036},
'B7': 7826317895806246539,
'B8': {'E1': 1564530426,
'E2': -2053912628,
'E3': [-0.9239228508982738, -0.028937311123160114]}},
'A6': 120,
'A7': 8040837897616670650}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x33 0x44 0x48 0x47
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | double |
3 | int8 |
4 | Массив uint64, размер 2 |
5 | Размер (uint32) и адрес (uint32) массива float |
6 | uint8 |
7 | double |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура C |
3 | uint32 |
4 | int32 |
5 | int16 |
6 | uint64 |
7 | float |
Структура C:
Поле | Описание |
---|---|
1 | Массив структур D, размер 2 |
2 | int8 |
3 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int64 |
3 | Размер (uint16) и адрес (uint32) массива float |
4 | Размер (uint16) и адрес (uint16) массива uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'3DHGl\x00\\\xa0\xdc\xa5\xb5\x15\xde?\xe7l\xba\xad n\xc7\xe2\r\xbc'
(b"\xfe\xf3\x94\x07\x8f\xe8'\x02\x00\x00\x00\xb2\x00\x00\x00a0%(."
b'\xb1\xa1\xb7\xbf\x07\xd25>!\x98\x1c\xbf\xe9\xe2=\xbf\xef]\x0f?\xfe\x172\x04'
b'\x19m\xe0\xc8O\xf88\x9c\x82\xdd\x89O\xb7\xe9;?~\x84\xd8\xbeR%@?\xdb\xd41D'
b'Z\x8b*)\xf8\x0b\xdb\x91t\\\x8f%"R\xfe\xd9\xbdw\xa3\xc5^nb\n\x8f\x04\x000'
b'\x00\x00\x00\x02\x00@\x00\xc3\x17\xb2\xbd\xfb(\x00\xf4\x82\x90.)\x03'
b'\x00P\x00\x00\x00\x02\x00\\\x00\x89"\xb0\x85l0-\xae\xfds\xe2\x9b\xa2\x0c\x02'
b't\x1e\xef\xa0\xa7\xc09J\x1d\xbf:6\xcb\xbe\x15\x1fj\xbf')
Результат разбора:
'A1': {'B1': 34,
{'B2': {'C1': [{'D1': -0.10644210875034332,
'D2': -8139585150342814857,
'D3': [0.1775590032339096,
-0.6116963028907776,
-0.7417436242103577,
0.5600270628929138],
'D4': [14474689156580775934, 5731355553842133071]},
'D1': -0.08695938438177109,
{'D2': 2967468096597534971,
'D3': [0.7340349555015564,
-0.42288583517074585,
0.7505694627761841],
'D4': [2966336524384326875, 2706483556805970936]}],
'C2': -119,
'C3': -20446},
'B3': 758148229,
'B4': -495714898,
'B5': -23909,
'B6': 13882241325261390348,
'B7': -0.6144137978553772},
'A2': 0.4700750465149264,
'A3': -25,
'A4': [1000581343038257772, 2875705624802623164],
'A5': [-0.396898090839386, -0.9145367741584778],
'A6': 97,
'A7': -0.09231097580790926}
Пример 2
Двоичные данные:
b'3DHGd\x00\x96\xf4\xfb\xe4\x84=\xe4?R\xc7\x99\x1fT\xc4\xa4\x0e\xf3\xb4'
(b'\x8a]\xf3|\xc1\x81\xc9\x03\x00\x00\x00\xaa\x00\x00\x00\xca\xe0\xe0>\xd8'
b'\x9e\xcc\xaf?/\xc1v?9B\x81\xbe\n\xae\x9c\xfcf\x10\x18\x976\x8a\xf0\x04'
b'gd\xef\x8a\x9c\x1aj\xbf\x90\x98/\xbfW\xaa\xfa>\xf0BD\xa0\xff{\xe4\xc2'
b'\xf8\x84"\x88W-1\xf7\xca\xa9f)?]\xd5\xd2\x8b\x96\xb3AX\x02\x000'
b'\x00\x00\x00\x02\x008\x00\x8cA\x1a\xbf\x8a\x0f\x84\x87e\xffk\x00\x03'
b'\x00H\x00\x00\x00\x02\x00T\x00\xca\xec\xec\xa0zV\x10\xd0\x11n\x86'
b'\xf2\xf7_\xa1QzGE\xd0\x9a2"\xdd>\x0e\x84\x12\xbf\x00\xdeN\xbemP\xc1\xbe')
Результат разбора:
'A1': {'B1': 202,
{'B2': {'C1': [{'D1': 0.661722719669342,
'D2': 6359561607996167517,
'D3': [0.9638852477073669, -0.2524583637714386],
'D4': [10887470133679009290, 10011330890295183926]},
'D1': -0.602562665939331,
{'D2': 30398634038398858,
'D3': [-0.91446852684021,
-0.6859216690063477,
0.48958083987236023],
'D4': [14043485875883754224, 17812067855196390648]}],
'C2': -54,
'C3': -4884},
'B3': 274102944,
'B4': -2039606832,
'B5': -2062,
'B6': 11155492450293883231,
'B7': 0.4319015145301819},
'A2': 0.6325096580836937,
'A3': 82,
'A4': [17514117164022340039, 14520099416022289076],
'A5': [-0.5723274946212769, -0.20201873779296875, -0.37756672501564026],
'A6': 202,
'A7': 0.062108005425615564}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x3e 0x4a 0x55 0x52
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 6 |
2 | uint16 |
3 | uint32 |
4 | Массив структур B, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int32 |
3 | Адрес (uint32) структуры D |
4 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив float, размер 5 |
2 | double |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint16 |
3 | Массив uint8, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'>JURwnmntjC|g(_\xdd>\xaf*\x80>\xb8\xe2\xdd\xbe\xd0\x17\x96\xbfE?\xc5'
(b'>\x94\xb8s?\xcfO\xf4\xcac\x9bP]g\xc8\xff\x00\x00\x00`\x9c\xdb\x82y>\xb1c\x14'
b'>U\xe0\xe2=\xa2\xa9\xd5\xbe\x84\xd43\xbf=\xdc\xf7\xbf\xe9\xad\x99'
b"\x03{\xab\x864\x97\x10$\x00\x00\x00lh'o\x98\x8e\xd0\x92\xe5\x86P\x17\xeb"
b'\xa5};|\xd0\xb31\xfbdF\x10\x90!V(\xb1')
Результат разбора:
'A1': 'wnmntj',
{'A2': 17276,
'A3': 1730699229,
'A4': [{'B1': {'C1': [0.3421211242675781,
0.3611058294773102,
-0.4064299464225769,
-0.7705042958259583,
0.2904697358608246],
'C2': 0.24462756998328894},
'B2': 1567082751,
'B3': {'D1': 36560,
'D2': 37605,
'D3': [134, 80, 23, 235, 165, 125, 59, 124]},
'B4': 2631631481},
'B1': {'C1': [0.3464590311050415,
{0.2088656723499298,
0.07942549139261246,
-0.2594314515590668,
-0.7416529059410095],
'C2': -0.8024411266354583},
'B2': 882315300,
'B3': {'D1': 53427,
'D2': 12795,
'D3': [100, 70, 16, 144, 33, 86, 40, 177]},
'B4': 1747414936}]}
Пример 2
Двоичные данные:
b'>JURjkpwaq\xedo\xfd\xfa\xc3p?\x02F\x9f?\x11$R\xbe\xb9\xa0\x02?(\xe0\x84'
(b'\xbf{M\x85?\xb5\t\x7f\x87\xd6c N\xd7;*\x00\x00\x00`\x0c}U\xf9=\x01\xd8/'
b'\xbe\xe6\xbaJ\xbe\x1f\xca\x89\xbe\xcf\xa6e\xbf\x11\xe8T?\xd4\x19\x81'
b'\x8d\xd1\x12\x14v>\xfd\x99\x00\x00\x00l\x91\x83\xf2W\x15\x93ej'
b'\xd3\xcf\xff\xbc\xaa\xde-y\xc5s\xf2\xe0\xff\x89tm\xe8\xd5-\x1f')
Результат разбора:
'A1': 'jkpwaq',
{'A2': 60783,
'A3': 4261069680,
'A4': [{'B1': {'C1': [0.5088900923728943,
0.5669604539871216,
-0.3625488877296448,
0.6596758365631104,
-0.9816516041755676],
'C2': 0.0821761805185699},
'B2': 1322728234,
'B3': {'D1': 5523,
'D2': 25962,
'D3': [211, 207, 255, 188, 170, 222, 45, 121]},
'B4': 209540601},
'B1': {'C1': [0.03170030936598778,
{-0.4506400227546692,
-0.1560460478067398,
-0.40556636452674866,
-0.5699512958526611],
'C2': 0.3140567669800316},
'B2': 1983839641,
'B3': {'D1': 50547,
'D2': 62176,
'D3': [255, 137, 116, 109, 232, 213, 45, 31]},
'B4': 2441343575}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x44 0x41 0x41 0x45
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Адрес (uint16) структуры B |
3 | Массив int8, размер 7 |
4 | Структура F |
5 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | uint16 |
3 | Структура E |
4 | uint64 |
5 | Размер (uint32) и адрес (uint16) массива int8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив адресов (uint16) структур D, размер 8 |
3 | Массив uint8, размер 4 |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | double |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | uint16 |
Структура F:
Поле | Описание |
---|---|
1 | uint32 |
2 | int16 |
3 | uint8 |
4 | int64 |
5 | float |
6 | Массив uint16, размер 8 |
7 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'SDAAEn;b\xbf\x9a\x00\xaf\xbd\x07\xac\xe2\xf2W\x96\xe3\xb2\xcbc\xcd'
(b'\x97\xd6\x05\x1e\xda\t\xfc\x86\xc4[\xce\x1f>H\x84\'"[\x81\r(\x90L\xfb'
b'x\xb4\xe8\n\x815\xbap00\xca\x00-\x0eg\xd2\xef\xbf\x8b\xf4\xcf\x80-,'
b'\xf5\xd0?Z\xfe\xda\x92\xb3)\x10\xee\xbf\x9b\xfc\x06@\xb4\xf9v\xe1'
b'\xbf\xe3\x00\xa0\xe8\xb7\x13\xe3h?Z2\xb0sZ:\xfb\xef\xbfx\xf0\xa6\x13\xd1'
b'L\xa1\xd2\xbf\xa4\xba9\xc4E \xd7\xe7?\xa1\xea9\x00B\x00K\x00T\x00]\x00f\x00o'
b'\x00x\x00P%\xf3\n\x83|\x1d\x81\x00\xcf\xddC(pM\x89\xfb\x84\xf4\xdb\x98'
b'\xc0\xf8\x00\xafn\xd2x\xb5\x02\x00\x00\x00\x98\x00')
Результат разбора:
'A1': -0.8837193250656128,
{'A2': {'B1': {'C1': -5471,
'C2': [{'D1': 48, 'D2': -0.9944339062567675},
'D1': -117, 'D2': 0.2649641460768628},
{'D1': 90, 'D2': -0.939473009805482},
{'D1': -101, 'D2': -0.5457733650693792},
{'D1': -29, 'D2': 0.0030379662632817883},
{'D1': 90, 'D2': -0.9994174734724821},
{'D1': 120, 'D2': -0.29109497468617374},
{'D1': -92, 'D2': 0.7450105059268062}],
{'C3': [80, 37, 243, 10],
'C4': -125},
'B2': 56783,
'B3': {'E1': -827259864401041341, 'E2': 39131},
'B4': 13076432890894547136,
'B5': [124, 29]},
'A3': [-81, -67, 7, -84, -30, -14, 87],
'A4': {'F1': 3417498518,
'F2': -12957,
'F3': 151,
'F4': -4285460876152142378,
'F5': 0.1560606211423874,
'F6': [33864, 8743, 33115, 10253, 19600, 30971, 59572, 33034],
'F7': 47669},
'A5': 12400}
Пример 2
Двоичные данные:
b'SDAAE.\xf0\x00\xbf\x9a\x00Lq\xdcI\x9c\xde>\xeck\x17\xbd\xfb4\xfc\xf7\xe9&'
(b'\x87\x9dk\x8a\xa3u\x08s?2\x17\xa3\xcd\xfb\n\xe7\x826s\x07\xfb\xc8\xfc\xb2'
b'\x15\x1a\xca6\xefxXO\x83\xeefV\xd1?~tU\xfb\x06\x1b\xee\xd8?\xd9'
b'\xd0\x8d\xbe\xa9\xb78\xc9\xbf\xe1\x88\xee\xf5\xfe\x9e\xa6\xdd'
b'\xbf\xcd\xc0\xde.>]\xb3\xd1\xbf\xf9\xe0w7\xe8\xac\x03\xe7\xbf2\x90O\x04S'
b';%\xb0?\xef\x9e\x02y\xabK\xd3\xec\xbf\x87\xbd9\x00B\x00K\x00T\x00]\x00f\x00o'
b"\x00x\x00\xa65\xfc\x81\x89L\xde\x81\x00*\xc1\xd4\x04(\x19'\x90\xe9\xb2bE"
b'P_\xd7E\x8bLZ\x0e\x02\x00\x00\x00\x98\x00')
Результат разбора:
'A1': -0.5036648511886597,
{'A2': {'B1': {'C1': -17017,
'C2': [{'D1': 120, 'D2': 0.2708985642650439},
'D1': 126, 'D2': 0.38953281099141823},
{'D1': -39, 'D2': -0.19704337871836097},
{'D1': -31, 'D2': -0.46329474352362654},
{'D1': -51, 'D2': -0.27657252380911856},
{'D1': -7, 'D2': -0.7191986594659703},
{'D1': 50, 'D2': 0.06306811119821831},
{'D1': -17, 'D2': -0.900792918117151}],
{'C3': [166, 53, 252, 129],
'C4': -119},
'B2': 49450,
'B3': {'E1': -5554750167784618796, 'E2': 17762},
'B4': 1034223225490857808,
'B5': [76, -34]},
'A3': [76, 113, -36, 73, -100, -34, 62],
'A4': {'F1': 3172428780,
'F2': 13563,
'F3': 252,
'F4': -6662394374419715593,
'F5': 0.9493477940559387,
'F6': [5938, 52643, 2811, 33511, 29494, 64263, 64712, 5554],
'F7': 51738},
'A5': 61238}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x57 0x55 0x4f 0xe4
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
3 | Размер (uint32) и адрес (uint32) массива char |
4 | Адрес (uint16) структуры B |
5 | Массив адресов (uint32) структур D, размер 2 |
6 | Массив uint16, размер 4 |
7 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
3 | Размер (uint16) и адрес (uint16) массива char |
4 | uint32 |
5 | uint8 |
6 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | float |
3 | int64 |
4 | double |
5 | int8 |
6 | uint16 |
7 | int16 |
8 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LWUO\xe4\xbf\xe3\x92\xcc\x8bs\xcb\n\xc2\x83\xacB\x00\x00\x00\x03\x00\x00\x00'
(b'-\x003\x00\x00\x00d\x00\x00\x00j\x9a\x8aB\xb4\xfa2\xe1\xf2A\xaeahhgcj\xbe'
b'"\xe8\xa3q\x00\x03\x000c\x91\xb2\xe5\xb5\x81\xaaD\\}\x8c\xb8<\xbe\x05\xbd'
b'\xe7\xd3\xe60\x1c\\\x99R\xba\xbf\xe5\x9dedA\xd1\x16\x13\x05T\xf7k\x92/'
b'>}\x95\xdc\xd4.>\xe2\xd2n\x1eu')
Результат разбора:
'A1': -0.611669800155455,
{'A2': 3263409218,
'A3': 'ahh',
'A4': {'B1': -0.1590905636548996,
'B2': 113,
'B3': 'gcj',
'B4': 1670492901,
'B5': 181,
'B6': {'C1': 9343355540967569468,
'C2': -0.1306072324514389,
'C3': -3177799588692536646,
'C4': -0.6754633863588733,
'C5': 19,
'C6': 1364,
'C7': -2197,
'C8': 37423}},
'A5': [{'D1': 0.24764198064804077, 'D2': 54318},
'D1': 0.44301170110702515, 'D2': 7797}],
{'A6': [39562, 17076, 64050, 57842],
'A7': 16814}
Пример 2
Двоичные данные:
b'LWUO\xe4?\xea\xe5\xf8y\x06\xce\xa0I\xec\x9b\xa1\x00\x00\x00\x03\x00\x00\x00'
(b'-\x003\x00\x00\x00d\x00\x00\x00jb\xb0\x80^\x91\xdfiE`Rlvstlo\xbf[k,i'
b'\x00\x03\x000M1\xbcI\xabBL\xb9\xb3\xe8I\x9en\xbf\x19\x04\xfa;UP(\xff\xba\xc1'
b'I?\xea\xc5i&Y\x99\xea\xcc\xc8\x13"%\x89\x9c?Tal=\x06>\xd5\xc2s:\x8b')
Результат разбора:
'A1': 0.8405725826073258,
{'A2': 1240243105,
'A3': 'lvs',
'A4': {'B1': -0.8571040630340576,
'B2': 105,
'B3': 'tlo',
'B4': 1295105097,
'B5': 171,
'B6': {'C1': 4777397487080676974,
'C2': -0.5977321863174438,
'C3': 4275411558277497161,
'C4': 0.8365979908965617,
'C5': -52,
'C6': 51219,
'C7': 8741,
'C8': 35228}},
'A5': [{'D1': 0.8296115398406982, 'D2': 15622},
'D1': 0.4174991548061371, 'D2': 14987}],
{'A6': [25264, 32862, 37343, 26949],
'A7': 24658}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x4b 0x51 0x4f
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур B, размер 4 |
2 | Структура C |
3 | uint32 |
4 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | uint16 |
3 | Массив char, размер 3 |
4 | uint64 |
5 | Массив uint16, размер 8 |
6 | float |
7 | int32 |
8 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint16, размер 4 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AKQO\x00\x00\x00O\x00\x00\x00[\x00\x00\x00g\x00\x00\x00s\xbf\xe1\xba_'
(b'\xac\xb6\xdcD\xee\xefajv\xd7\xf1\x04=\xf5+?C\x94\xd2\xaf@\xc1\x9b\x92'
b'5\x927\xa7\xef\x95\x18\xc9\x1a?c\xf2\xcb\xd6\xfd|\xe70\xe8\xd5!V\xc2\x8d'
b'\xf5\xe9\xe0\x8f\xac\x00\x7f`\xcf@\xd4\n\xc6E[\xf0Rqew\xea\xd2\xe8\x88'
b'y\t\xaff8\x89o\xa4\x12Z\x7f#\xc7\x7f\xed \xf0\xc0S\xc2\x9c\x97Y\xea'
b'\xfc%\x13\x14\xd3\x0b\xedC9\xcd\xa3"}\x16\xc3ad,-\x19\xf3\x82\xfa')
Результат разбора:
'A1': [{'B1': 1624195284, 'B2': 776384246944264549},
{'B1': 2011878120, 'B2': 9833901910279096687},
{'B1': -1542301057, 'B2': 2578169968129523795},
{'B1': -1029925031, 'B2': 16932449462890204141}],
{'A2': {'C1': -0.5540006993604796,
'C2': 61167,
'C3': 'ajv',
'C4': 15560222851694542659,
'C5': [38098, 44864, 49563, 37429, 37431, 42991, 38168, 51482],
'C6': 0.8904234766960144,
'C7': -688030489,
'C8': 3524301047583641077},
'A3': 3923808172,
'A4': {'D1': [17209, 52643, 8829, 5827], 'D2': 7017782691570615034}}
Пример 2
Двоичные данные:
b'AKQO\x00\x00\x00O\x00\x00\x00[\x00\x00\x00g\x00\x00\x00s?\xee\\\xc5'
(b'\x03\xf4UN\xf0\xa4alx\xd3\x8e\xaaE^\xe0\xd9\xb2\x89\xf4\xd7\xc8I\xbd\xba'
b'&\xdd^\xa7=\xe4%\xe5\x80\xbe\xbe\xd6\xc9A\x1cWP \xc5E\x15<l\xea'
b'\xdd\x15\xfe\x9f\xaa\x00\x7f\x7fR\xcc\xd2oC\xbd.\xe0\xc9\xa3\xf8\x11'
b'\x899\xa02\x19\x95\xe2\xa3\xaf\xbfA\x81\x9b\xfey\x0f\x88\xdd\xdc\xa8'
b'\xc389\x95M\xbd\xc9&b\xa1rTy\t\xedd\xef\x15\x87\xc6:T\x7fW\x93\xb2\x17\x87'
b'\xa3\xe2\x96')
Результат разбора:
'A1': [{'B1': 2136132818, 'B2': 8017459770687071224},
{'B1': 294205856, 'B2': 3610081376955514689},
{'B1': -2120483207, 'B2': 1119388447195478073},
{'B1': -1790067255, 'B2': 2765950633574468077}],
{'A2': {'C1': 0.9488244130358596,
'C2': 61604,
'C3': 'alx',
'C4': 15244309003616967090,
'C5': [35316, 55240, 18877, 47654, 56670, 42813, 58405, 58752],
'C6': -0.3727324306964874,
'C7': 1092376400,
'C8': 2361369537136093917},
'A3': 369008554,
'A4': {'D1': [25839, 5511, 50746, 21631], 'D2': 6310583317005853334}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x50 0x41 0xc4
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 3 |
2 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | float |
3 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | Размер (uint32) и адрес (uint32) массива char |
4 | int32 |
5 | Структура D |
6 | Размер (uint16) и адрес (uint32) массива int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | Размер (uint32) и адрес (uint32) массива int8 |
4 | int32 |
5 | int64 |
6 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WPA\xc49\x10UE\t\xa8Y\xf3\xbe\x15\x08\xf3sYZ\xd1\xe8\xaay\x93\xb5s?\x18'
(b'\x87\x9c\xd4\xdc~\x80(\xec\xb78\x07\x98?+Ri\xd1\xda\xf6\x8c\xefC?\xdf'
b'\x9e\xd9T6\xaf\x10\x00\x00\x00\x02\x00\x00\x00f\xbb\x1c_=\xb8\xcd'
b'\x00\x00\x00\x04\x00\x00\x00h\x1f\xeb\xa7O\x89T\x07c\x128\x94\x88'
b'\xcd\xd9\xa8p\x00\x02\x00\x00\x00ltm\xfe+Ab\x89\xb1\x19N?o\xcd\xfe')
Результат разбора:
'A1': [{'B1': 4111880214792395251, 'B2': -0.1455419510602951, 'B3': 29529},
{'B1': 6544267552427849075, 'B2': 0.5958192348480225, 'B3': -11044},
{'B1': 9115330642949179288, 'B2': 0.6692262291908264, 'B3': -11814}],
{'A2': {'C1': -158535869,
'C2': 0.49407036994919995,
'C3': 'tm',
'C4': -1155768515,
'C5': {'D1': 184,
'D2': 205,
'D3': [-2, 43, 65, 98],
'D4': 535537487,
'D5': -8551201670380874616,
'D6': -841373584},
'C6': [-1984882354, 1064291838]}}
Пример 2
Двоичные данные:
b'WPA\xc4\x19/\n\xfd\x16\x1b)e\xbd]\x1a\xd1\x94\xbeA\xb1Q\x17\xabg\xad2\xbfs'
(b'\xd3\x13\xc7\xe2HL\xbeO\xad\xcd\xd3\x83\xbfOn\x18\x0619^,\x88\xbf\xed%C\x15R'
b'Y<\x00\x00\x00\x05\x00\x00\x00f\xdf\x1a\xa1\x99\x8cm\x00\x00\x00\x02'
b'\x00\x00\x00k\x14\xed{\x13\xb6\x81\x7f\xb2)<\x1d\x14\x11`\xef\x94'
b"\x00\x03\x00\x00\x00mwsvdx}\x80\x11\x06>\x91\xb3'\x85\xc53\xb5_e")
Результат разбора:
'A1': [{'B1': 1814681256967481701, 'B2': -0.05398065224289894, 'B3': -27458},
{'B1': 4733653845444898098, 'B2': -0.9524394869804382, 'B3': -14366},
{'B1': 5209748118388462467, 'B2': -0.8102736473083496, 'B3': 1585}],
{'A2': {'C1': 962473096,
'C2': -0.9107985893668125,
'C3': 'wsvdx',
'C4': -551902823,
'C5': {'D1': 140,
'D2': 109,
'D3': [125, -128],
'D4': 351107859,
'D5': -5295811283638280940,
'D6': 291565460},
'C6': [285621905, -1289255483, 867524453]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x5a 0x4c
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Структура B |
3 | Структура E |
4 | uint8 |
5 | Массив uint16, размер 4 |
6 | int8 |
7 | uint64 |
8 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив структур D, размер 7 |
3 | float |
4 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint32) и адрес (uint32) массива int8 |
3 | Размер (uint32) и адрес (uint32) массива uint8 |
4 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HZL\x01\x82\xdf\xabm\x99\x08\x8bY\x03\x00|\x00z\xd0kI\x02\x00\x7f\x00'
(b'\xa5r\xd7%\x03\x00\x81\x00q\x1c\xfcB\x04\x00\x84\x00]\xa4g\xde'
b'\x04\x00\x88\x00\x80{\xbcj\x04\x00\x8c\x00\xaa\x88\xdf0\x03\x00\x90\x00'
b'x\x98$\xbf?\x19\xd5n\xe3\xe3~\xe3\xeb1\x03\x00\x00\x00\x93\x00'
b'\x00\x00\x04\x00\x00\x00\x96\x00\x00\x00N\xbc\x872}\xbb\x89o\x174'
b'\xb3\xe3\x83\x8e\xa6\xb5\x8d7\x8d\x84\xae\\\xfa\xbaW\xff\xf1\xa6@e'
b'\xdd\xbaa\xcd\x91b\x9b\xcf\xc5\xe8\xec\xaeX\xe3\xa16\x07\x1f\xcd\x90'
b'L\xf1\xc1\xa5\xd4\x04\x9b\xe0\x1eC')
Результат разбора:
'A1': 1,
{'A2': {'B1': -8318,
'B2': {'C1': 28075,
'C2': [{'D1': 1502283929, 'D2': [221, 186, 97]},
'D1': 1231802490, 'D2': [205, 145]},
{'D1': 634876581, 'D2': [98, 155, 207]},
{'D1': 1123818609, 'D2': [197, 232, 236, 174]},
{'D1': 3731334237, 'D2': [88, 227, 161, 54]},
{'D1': 1790737280, 'D2': [7, 31, 205, 144]},
{'D1': 819955882, 'D2': [76, 241, 193]}],
{'C3': -0.642951488494873,
'C4': 6463}},
'A3': {'E1': 3597218861514190549,
'E2': [-91, -44, 4],
'E3': [155, 224, 30, 67],
'E4': 847756366},
'A4': 125,
'A5': [35259, 5999, 45876, 33763],
'A6': -114,
'A7': 6678421039494313382,
'A8': 7296014954641472250}
Пример 2
Двоичные данные:
b'HZL\x15\xa9\xc8&\x91\x82\xc0L\xd3\x03\x00|\x00O\xe8\x8e\xc1\x03\x00\x7f\x00'
(b'\x19\xf2qo\x04\x00\x82\x00\xb4\xd1\xb1\xb1\x04\x00\x86\x00N\xa8\x95?'
b'\x03\x00\x8a\x00\x96\r,/\x04\x00\x8d\x00%\xbe\x19\r\x04\x00\x91\x00'
b'\x95U1\xbf\x07\x8a\xfbPr\xa79\x9c\x91\x89\x02\x00\x00\x00\x95\x00'
b'\x00\x00\x02\x00\x00\x00\x97\x00\x00\x00\xa5\xaf\xfa\xb0\x06\xc4'
b'\xadb\x16\xdd\x1a\x83PnW\x04\xae\x99\'|\xbe\x8d\xf6\xa4O\x8d\xd8\xe0?"'
b'\xa0\xdb(\x87\xfc\xff3\xe2 z\xfaB\xe5.\x15\x90\xc1\xe8\xd2\xeb\n\xbe,\xd5'
b'\x8f\xfc\xc9[\xae')
Результат разбора:
'A1': 21,
{'A2': {'B1': -14167,
'B2': {'C1': -28378,
'C2': [{'D1': 3545022594, 'D2': [160, 219, 40]},
'D1': 3247368271, 'D2': [135, 252, 255]},
{'D1': 1869738521, 'D2': [51, 226, 32, 122]},
{'D1': 2981220788, 'D2': [250, 66, 229, 46]},
{'D1': 1066772558, 'D2': [21, 144, 193]},
{'D1': 791416214, 'D2': [232, 210, 235, 10]},
{'D1': 219790885, 'D2': [190, 44, 213, 143]}],
{'C3': -0.692712128162384,
'C4': 35335}},
'A3': {'E1': -8533868047454023429,
'E2': [-4, -55],
'E3': [91, 174],
'E4': 2969218981},
'A4': 6,
'A5': [44484, 5730, 6877, 20611],
'A6': 110,
'A7': 10213737514446750807,
'A8': 2467938341510685942}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x71 0x59 0x51 0x4d
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | double |
3 | Структура B |
4 | Адрес (uint16) структуры D |
5 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур E |
6 | Массив uint32, размер 5 |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | uint16 |
3 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int64 |
3 | uint16 |
4 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | double |
3 | float |
4 | float |
5 | Размер (uint32) и адрес (uint16) массива char |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
3 | int64 |
4 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'qYQM\xef\xa5[\xe3\xd96*\x05\xbf\xecay\xec\x92+\x04?\xd5<b7\xbeYp\x91d8\xe4'
(b'\xce\x90\x1am\xf0r\x7f\x19\xa74\xd1\xfa*A\xa0"Y\xa7\x00T\x00\x00\x00\x03'
b'\x00\x00\x00\x9c\xc2\xdf\x0bcm"\xa0\xb2\x85\xa8&\x03\xf4H\xb8\xd9'
b'v\x1d\xb6\xc4svdhjktdepel\xbf\xca\x8f\xc0U\x00\x86\xf0\xbe\xcc\xaa\x14'
b'?^\xe0\xc9\x00\x00\x00\x04\x00P=\xd6\xaaL\xdf\xf1lY\xc5\xde\xbb\xb6\x01T'
b'?\x01\x1d\xac\\\xcf\x00Nz\xe38f`\x1f?/\xfaO^\x1f]\xa2?wA\xfc\x95+'
b'\x00\x00\x00r\x00\x00\x00\x80\x00\x00\x00\x8e')
Результат разбора:
'A1': -1178434693327607291,
{'A2': -0.8868989582564102,
'A3': {'B1': 0.3318105263109805,
'B2': 37220,
'B3': {'C1': 14564,
'C2': -3562318245762269415,
'C3': 42804,
'C4': 15130452359452449191}},
'A4': {'D1': 'jktdepel',
'D2': -0.20751194143763696,
'D3': -0.39973509311676025,
'D4': 0.8706174492835999,
'D5': 'svdh'},
'A5': [{'E1': 0.10481700301170349,
'E2': -33,
'E3': -1050365906703895039,
'E4': 84},
'E1': 0.5043590068817139,
{'E2': 92,
'E3': -3530735818153367968,
'E4': 31},
'E1': 0.6874131560325623,
{'E2': 94,
'E3': 2260140981477309589,
'E4': 43}],
'A6': [3269397347, 1830985906, 2242389507, 4098406617, 1981658820]}
Пример 2
Двоичные данные:
b'qYQMl\xe4\x8a\xed\x87\xbc4\xdc\xbf\xc3\xe4\x17X\xc1X\xb8\xbf\xe0\xf8C'
(b'X\x8dR\xe4\x86\x13\x1a\xac\xc3i+\xd5\xb9O4\xb4\x02\xe1\n\xed\xb1\xdb\x84\x05'
b'+\xb8\x00T\x00\x00\x00\x03\x00\x00\x00\x9c\xce\x18;\xd8\x01o\xfe?'
b'\xfd\x00\xc3\xd9`Xx\x0b\x02L\xda\xb2xqevgkgbpxnz?\xed\xc7\xdb\xed}\x906'
b'\xbfd:\xa2\xbfb\x98\xe4\x00\x00\x00\x04\x00P>\xef\xb6;:\xe4\x08\xc6\xc0&'
b'\x9ehc\x0c>\x0bU\xd9\x89\xd3\xd4\xfc\x9b\xe9j\xe3\\{\xbfM\xe9\x1d\x98\xa6'
b'C\xc4\r\xc72\xabQ\x9e\x00\x00\x00r\x00\x00\x00\x80\x00\x00\x00\x8e')
Результат разбора:
'A1': 7846549203575387356,
{'A2': -0.1553982909560483,
'A3': {'B1': -0.5303055505306387,
'B2': 34323,
'B3': {'C1': 6828,
'C2': -4365910166821981004,
'C3': 737,
'C4': 787481066230590392}},
'A4': {'D1': 'gkgbpxnz',
'D2': 0.9306468618856403,
'D3': -0.8915196657180786,
'D4': -0.8851454257965088,
'D5': 'xqev'},
'A5': [{'E1': 0.4681871831417084,
'E2': 58,
'E3': -2015142304664360861,
'E4': 12},
'E1': 0.1360696703195572,
{'E2': -119,
'E3': -3182641290077871268,
'E4': 123},
'E1': -0.804338276386261,
{'E2': -104,
'E3': -6466109076518294703,
'E4': -98}],
'A6': [3457694680, 24116799, 4244685785, 1616410635, 38591154]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x4e 0x4a 0x52
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | int64 |
3 | Размер (uint16) и адрес (uint16) массива char |
4 | Адрес (uint32) структуры B |
5 | int32 |
6 | Размер (uint16) и адрес (uint16) массива структур D |
7 | Размер (uint32) и адрес (uint32) массива int64 |
8 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива float |
2 | uint64 |
3 | float |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | int32 |
4 | float |
5 | int32 |
6 | float |
7 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"GNJR\xdc\x97\x82_\xd9\xf2\x9a\xcc\xfa\x00\x04\x00'\x00\x00\x00[|\xb5("
(b'\x13\x00\x02\x00`\x00\x00\x00\x02\x00\x00\x00\x88\xb8dckxh\xbft\x0c\x01?'
b'*\x82\xdc?k\xd1A?\x1eh\x92>BQ;?\x17\x80\x19\xbfD\x82k\x00\x00\x00\x07\x00'
b'\x00\x00+)\x1d\x01\xb3=\x9e\x9b*>\x8d\xcb5\x00\x00\x00G\xf6\xe9\xf9\xc1\x15'
b'\x0c\xf3\x10\xbf$\xf2Q\x18\x8aP\xd2?\x10\x84\x91\x9dI*\xcc\xc5W\x9e\xfe\xbf'
b'\x0c\x0f\xfbn\xaf\xdc\xd3>\xd1n\x15\xad}\x80c\x9e\x93\xc5Z\x97'
b'\xcc\x8c\x87\xa1\xaa;\xd0\xaf')
Результат разбора:
'A1': -36,
{'A2': -7529350237327274758,
'A3': 'ckxh',
'A4': {'B1': {'C1': [-0.9533081650733948,
0.6660592555999756,
0.9211617112159729,
0.6187831163406372,
0.18976299464702606,
0.5917983651161194,
-0.767615020275116],
'C2': 2962525999224232746,
'C3': 0.2769409716129303},
'B2': 246},
'A5': 2092247059,
'A6': [{'D1': -23,
'D2': -1599,
'D3': 353170192,
'D4': -0.6443224549293518,
'D5': 411717842,
'D6': 0.5645228028297424,
'D7': 157},
'D1': 73,
{'D2': 10956,
'D3': -984113410,
'D4': -0.5471188426017761,
'D5': 1857019091,
'D6': 0.40904298424720764,
'D7': 173}],
'A7': [9043337584495123095, -3707439264817229649],
'A8': 47204}
Пример 2
Двоичные данные:
b"GNJRU\x1ag\x99\xb6\xe2\x89V@\x00\x02\x00'\x00\x00\x00I\x16\xbf\xea"
(b'~\x00\x02\x00N\x00\x00\x00\x02\x00\x00\x00vs\x89lh\xbfL\xe0\x8a>\xfc\xa0'
b'W>\x1d\xe9\x9c\x00\x00\x00\x03\x00\x00\x00)\x94\xf0f\xa1\x0e)9\x1d>oW'
b"\x8b\x00\x00\x005\xd3\xf8TI\xf1\xd4I\xbd?'\xd2\x80\xc2\xe7J\xa0\xbe\xd9]"
b'\xaf\x91\xcdWV60?H\xbfY\n\x97R\xc6\xb0t>\xaa\xc4\xc9R#\x8f\xbb.\xc8\xac'
b'\xc0\xa8\xcd^>.\xd0f\xe4\x97')
Результат разбора:
'A1': 85,
{'A2': 1902658378351072832,
'A3': 'lh',
'A4': {'B1': {'C1': [-0.800301194190979,
0.49341079592704773,
0.15421146154403687],
'C2': 10732190753937242397,
'C3': 0.23373238742351532},
'B2': 211},
'A5': 381676158,
'A6': [{'D1': -8,
'D2': 21577,
'D3': -237745731,
'D4': 0.6555557250976562,
'D5': -1025029472,
'D6': -0.4245428740978241,
'D7': 145},
'D1': -51,
{'D2': 22358,
'D3': 909131592,
'D4': -0.8478178381919861,
'D5': 1388753012,
'D6': 0.3335326015949249,
'D7': 82}],
'A7': [2562472522606756008, -3648410277337701225],
'A8': 29577}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x50 0x4b 0x48
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 3 |
2 | Структура D |
3 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | Массив char, размер 3 |
3 | int16 |
4 | int64 |
5 | uint32 |
6 | Массив uint8, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint16) и адрес (uint32) массива int32 |
3 | int32 |
4 | uint32 |
5 | int32 |
6 | int64 |
7 | float |
8 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FPKHr\x00\x00\x00brjgR\x9609pi\x99-8\x08Iz\xfc\x99\x03v\x00\x00\x00n'
(b'ix\x8c\x93\xb9\xcdy\x90\x8e\xfb\x1e\xf4E\xd8\x96\x12\xe8\xc0z\x00\x00\x00wx'
b'ym\xadS\x11\x855\x9fyJ\xa1=8\xfb\x1a\x0b\x7fL\xfaABv.\x84\xaf\x04\x00~'
b'\x00\x00\x009\xaa=@\xd7\xde\x8e\xbd\x08\xf6\xe03\x0e\xc7\x1f\xe4\xa0'
b'\x8ec\xbf\x0e\xb88?_\xd7mX\xf1\xe8\x1aG"\xbc\xee\xcbp\xb8\x16)rO\x0b\xbb\xe7'
b'/\xcc\xa7;\xa72\xb7\x90\xd9K')
Результат разбора:
'A1': [{'B1': {'C1': -3752, 'C2': 6888},
{'B2': 'brj',
'B3': 21095,
'B4': 4048060318209355926,
'B5': 4235872520,
'B6': [153, 3]},
'B1': {'C1': 8775, 'C2': 61116},
{'B2': 'nix',
'B3': -27764,
'B4': -855970289425986119,
'B5': 311875653,
'B6': [232, 192]},
'B1': {'C1': 28875, 'C2': 5816},
{'B2': 'wxy',
'B3': -21139,
'B4': -6824508560621891245,
'B5': 452671549,
'B6': [11, 127]}],
'A2': {'D1': -5799459334693717428,
'D2': [189755945, -869275717, 849820583, 1272549559],
'D3': 1077783097,
'D4': 3180256983,
'D5': 870381064,
'D6': -4655720768097761522,
'D7': 0.7215584516525269,
'D8': 95},
'A3': 28119}
Пример 2
Двоичные данные:
b"FPKHr\x00\x00\x00cud\xd5s4\xc0\xe8\xbd\x03wr\xd2?',\xbd\x9bJv\x00\x00\x00n"
(b'swm\x8ee\xd4\x85\xdd\xe9a_q\xd4\xe6e\xc5\xb7\x07z\x00\x00\x00kck{\xb7\xf1'
b'\xa0z\xd86\x1d\xf0\xd7\xfd\x0fW`\x0f\xe22\xdc\xc3\x90\xe7&\xe7@\x03\x00~'
b'\x00\x00\x00Ui\xee5\xd1\xe89\x9a\x8d\r\xeaBd\x14\xa7\x8f\x83j\x8cS4'
b'\xda\xe1\xbe\x8b\x825\xbe\xb2\xc4\xf1\x16\x82\x99\xb1 \xb0\xfd\xda\xe2\x85'
b'\x19s\xb5bk\xbdD\x899r')
Результат разбора:
'A1': [{'B1': {'C1': -19778, 'C2': 61892},
{'B2': 'cud',
'B3': 29653,
'B4': -3282430320444915660,
'B5': 3173787455,
'B6': [155, 74]},
'B1': {'C1': -32234, 'C2': 45465},
{'B2': 'nsw',
'B3': -29075,
'B4': 8169355906145178725,
'B5': 3311789780,
'B6': [183, 7]},
'B1': {'C1': -20448, 'C2': 56061},
{'B2': 'kck',
'B3': -18565,
'B4': -2886775239747133199,
'B5': 1616318461,
'B6': [15, 226]}],
'A2': {'D1': 4676749514055605298,
'D2': [1931052514, -1117035851, 1916373316],
'D3': 904816981,
'D4': 2587486417,
'D5': 1122635149,
'D6': 6020303915170862180,
'D7': -0.44111788272857666,
'D8': -117},
'A3': 13698}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x59 0x4c 0x93
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int8 |
3 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Массив структур C, размер 6 |
3 | int8 |
4 | uint16 |
5 | Массив char, размер 6 |
6 | int32 |
7 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | double |
3 | Адрес (uint16) структуры E |
4 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
3 | Размер (uint16) и адрес (uint16) массива uint32 |
4 | uint16 |
5 | Массив uint8, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UYL\x93\t\x00\xd7\x98\x00{_\xbb\xbe\xff\x07!D\xbc\x15\xfb\\\xa8\x1d\xeb'
(b'\xbf\xdet\x83\x93\x14\xf1\x0ey\x9b\x0f\xdb\xbf\x9eW\x0b~0MD\x1eO\x9b\xb3'
b'?\n\xc36\xf0\x9co*t\xb2\xb7\xea\xbf\x16\xd4}\xc4\xbc\x06\xb6\xe3\xfeN\xd1'
b'\xbf4\xbd\x9f&\xdc\xeb\xcfC\xad\xfa\xe1\xbf)\x91ijiljvt)\xf7\x91\x17A\x02'
b'>\xc1%3HQS\x90\x8c\xaf\xe6\x93\xc5\x06V*\xc4\xfc\xd8#`\x85\xe8\x0fr`i\xc0'
b'@\x1e\x80\xbf\x89\xb1\x0b\xd9\x02l\x07\x00d\x00s\xb4\x03b \xfb\x82\x11O\xa3'
b'\x84\x89\xcd\xa6\xa6\x07\x00e\x00\xb9o\x13E\x7f\xd3\xbf\x80\x00\xb8\xa9'
b'\xbd\xfc')
Результат разбора:
'A1': {'B1': -0.36596283316612244,
{'B2': [{'C1': 1143015423, 'C2': -0.8473703208953149},
'C1': -1820101410, 'C2': -0.4228275949678999},
{'C1': 2114672542, 'C2': 0.07658857811866393},
{'C1': -264846582, 'C2': -0.8349239605772598},
{'C1': -998386666, 'C2': -0.2704465125790241},
{'C1': 648002868, 'C2': -0.5618501972634209}],
{'B3': 41,
'B4': 27025,
'B5': 'jiljvt',
'B6': 395441961,
'B7': 577},
'A2': -41,
'A3': {'D1': 7277825410175175044,
'D2': -0.3046429338272816,
'D3': {'E1': 7744,
'E2': 7783021750296100736,
'E3': [858112318,
2421379400,
2481368972,
710280901,
601423044,
266896736,
3228131442],
'E4': 46195,
'E5': [3, 98, 32, 251, 130, 17, 79, 163]},
'D4': 4240288184}}
Пример 2
Двоичные данные:
b'UYL\x93\t\x00\xc7\x8c\x00\xdf\xe75?F\xe9\xd7:x`\xe8\xea\xf5\xe4\xe7'
(b'\xbf\xf5\xfd\xfdE\xa0\xc46N\x0b \xcf\xbf\xddQ\xd9\x81\x08\x89\xfc'
b'\xb1\xe7?\xd6?]\x8a\xf6\x0f\x1e\xc9^\xbcI%\xe2?\n\xaa\x14\xed\x9e\x8b\n'
b'\xea^\xff\xee\xbf\x0c\x17\xb0\r\x88H\xa4D\xe4\xfd\xc7\xbf\xa7\x83\x83ibsy'
b'zn\n\xdb\x9e\x82:\xff\xa0bJ\xc2*eR\xc5u\x94c]\t\x0b\x9c/\x98\x13\x88\x08'
b'V\x07\xa3\xda\xc8\x82\x04\x00d\x00jV|\xbf\xa5\xda.|\x98\x86\xbe\x9f\x06\xad'
b'A\x86&J\xf00\xccr\x1a\xa1\xc8\xbft\x00\x14\xce\x80\x94')
Результат разбора:
'A1': {'B1': 0.7105693221092224,
{'B2': [{'C1': 987228486, 'C2': -0.7466992939034887},
'C1': 1174273525, 'C2': -0.243165410223388},
{'C1': -2116464163, 'C2': 0.34765045529833616},
{'C1': 267815517, 'C2': 0.567051761541993},
{'C1': -317412854, 'C2': -0.9686731883160637},
{'C1': 229644044, 'C2': -0.18743565894743974}],
{'B3': -89,
'B4': 33667,
'B5': 'ibsyzn',
'B6': -2103518454,
'B7': -198},
'A2': -57,
'A3': {'D1': 5343105624555560894,
'D2': -0.19241648297646163,
'D3': {'E1': 5016,
'E2': 9424022614010366088,
'E3': [3259654816, 3310511402, 1566807157, 798755593],
'E4': 22122,
'E5': [124, 191, 165, 218, 46, 124, 152, 134]},
'D4': 2491469332}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x97 0x47 0x50 0x52
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Адрес (uint16) структуры E |
3 | int32 |
4 | Массив int32, размер 5 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива структур C |
2 | int8 |
3 | Адрес (uint16) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | uint16 |
4 | int16 |
5 | float |
6 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | int8 |
3 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
3 | uint64 |
4 | float |
5 | Структура F |
6 | Структура G |
Структура F:
Поле | Описание |
---|---|
1 | Массив uint8, размер 4 |
2 | uint64 |
3 | int8 |
4 | Массив uint64, размер 2 |
5 | uint16 |
6 | uint64 |
7 | double |
Структура G:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x97GPR_\x00f\x00\xe1\x13\x1a\xd0\xc5:\xdb\x16~\xc8\x88(\xfe"\xcb\xb4'
(b'\x8e\xae]TAC\xd6\x06\x142\x92\xc7\xa2k\xa5\xad \xf466\x016j\xc0\xbe\x887\x98'
b'\xff\xf8A\xd8@\x8eh\xce\xe2\xe5a\xb6\x8aH\x10\xa2#\x03\xce\x7fF\xbe\xc8\xd0'
b'\x85\xc7L\xf6\x19\xc0\xacu%K\x96?9\x96\x19\xe9%\xc2\x14\x02\x00 \x00<'
b'R\x00\xa5\xadp\xa6\xe7\x11q5l\xe3{\xa0\x806\xfd\xb0P\xbf\xac\xf2\xac@'
b'\xc20\xc5\x92\x89:\x9e\xab\xe1N\xfdD\xaa\xa5\xefy\n\x03z\xb1\x9d\xe6S\xf6'
b'J:;x\xa2\x7fE\xe5\x8c\xd3m\xae\xdb\xdd\xb9u:\xe1?|=|')
Результат разбора:
'A1': {'B1': [{'C1': 20,
{'C2': 2354720061895709234,
'C3': 14068,
'C4': 310,
'C5': -0.37581032514572144,
'C6': 4672557151092750216},
'C1': -114,
{'C2': 5227190849101811304,
'C3': 41488,
'C4': 803,
'C5': -0.1938469111919403,
'C6': 13842365739325313224}],
'B2': 60,
'B3': {'D1': -7621990979609463380, 'D2': 25, 'D3': 348268009}},
'A2': {'E1': -1502564955,
'E2': 4583,
'E3': 3927315329024013681,
'E4': -0.8152006268501282,
'E5': {'F1': [172, 242, 172, 64],
'F2': 12366385989353287874,
'F3': -31,
'F4': [754897907366559054, 5401597053030726147],
'F5': 15162,
'F6': 7913823886561485432,
'F7': 0.5383862142760927},
'E6': {'G1': 124, 'G2': 31805}},
'A3': -803597343,
'A4': [383466181, 680052862, -1261755650, 1415425678, 114705217]}
Пример 2
Двоичные данные:
b'\x97GPR_\x00f\x00NR-\xab+X\x9b\x82\xd3\xdd\xb7\rz\xe2\x06\x9e^\xc2\xfa\xb9'
(b'\xe3?\xee\x13\x80I\xdeC{e\x90\x80\xe93\xf0\xb3\x19N=\xed\xbd5\xbf\x01'
b'\xca\x84H\x057\x03\xb1\xed{\xab\xcd\xf7nV\xb9q\xad0;\x06>\xbf\x0f\n'
b'\xc2\xf2\xdd\xe8\x92\xc8<\xed\xd3\x83\xdd\xe6\x8b\x81W\xb2h\x92\xca\x02'
b'\x00 \x00cR\x00\x90\xc2M\x88\xb7\xd7\xe1\xfeg\xef\xa8\x8c\xc1&\x18L2?'
b'\xdff\\\xaa\xf0S\x83T\x9b\x1d\xca\x1eW{\xa4\x89F\r\xa4\x96\x9bi\x837'
b'\xaf\xa9\x9cl\xeb\xc5\x98\xd3\x96\xbe$\x02#\x98S\x1c#\xcb4\xe2'
b'\x9a\xe3\xbf\xb7\xb47')
Результат разбора:
'A1': {'B1': [{'C1': -128,
{'C2': 16825606973390315081,
'C3': 61491,
'C4': 6579,
'C5': -0.11583958566188812,
'C6': 3964654782131584821},
'C1': 3,
{'C2': 6228187797417356721,
'C3': 29113,
'C4': 12461,
'C5': -0.7422825694084167,
'C6': 14452870194143562255}],
'B2': 99,
'B3': {'D1': -9111935581980201668, 'D2': 87, 'D3': 3398592690}},
'A2': {'E1': -2008169840,
'E2': 55223,
'E3': 2792667901145382625,
'E4': 0.6964735984802246,
'E5': {'F1': [223, 102, 92, 170],
'F2': 2218618319408419824,
'F3': 87,
'F4': [11211328699310384251, 16964106149000872809],
'F5': 39109,
'F6': 6023602993721415379,
'F7': -0.6126566916583189},
'E6': {'G1': -73, 'G2': 14260}},
'A3': -1423093170,
'A4': [-2103748565, 230153683, -1643715974, -1174748578, 334381027]}