Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x51 0x47 0x5a 0x9
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Адрес (uint32) структуры B |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | Адрес (uint16) структуры C |
3 | int8 |
4 | Размер (uint16) и адрес (uint16) массива char |
5 | Размер (uint32) и адрес (uint32) массива float |
6 | float |
7 | Размер (uint32) и адрес (uint32) массива uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив структур D, размер 8 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'QGZ\t\xa4\x1aR\x00\x00\x00\xde(\rj>\xdf\x98\x88\x7f\x84\x95\x0c\xb6R'
(b'g\xfbT\xd1\xc0\xd9rs\xd1\xfe\x0c\xc8\xc0\x8d\x8f\xcb$\xd9\xeeIlmwreg)\xe2'
b'\xea>\xc3~\xbd\xbdq\xd0\xd6\xbe\xa3\x0fS?\x10\xea(\xbe\xc9HjMQ\xd3H\x99\t)'
b"\xb6\xb6i\xcc\xa9'\xa6\xc0E\xd5\n\x00\xd7\x06\x00,\x00\x05\x00\x00"
b'\x002\x00\x00\x00\x0bD\xab\xbc\x03\x00\x00\x00F\x00\x00\x00')
Результат разбора:
'A1': 6820,
{'A2': {'B1': -3078842950375322519,
'B2': {'C1': [{'D1': 10462, 'D2': 13, 'D3': 106},
'D1': 57150, 'D2': -104, 'D3': -120},
{'D1': 33919, 'D2': -107, 'D3': 12},
{'D1': 21174, 'D2': 103, 'D3': -5},
{'D1': 53588, 'D2': -64, 'D3': -39},
{'D1': 29554, 'D2': -47, 'D3': -2},
{'D1': 51212, 'D2': -64, 'D3': -115},
{'D1': 52111, 'D2': 36, 'D3': -39}],
{'C2': 18926},
'B3': -41,
'B4': 'lmwreg',
'B5': [0.4587567150592804,
-0.09252693504095078,
-0.4195590317249298,
0.8244573473930359,
-0.16495537757873535],
'B6': -0.020906468853354454,
'B7': [1298811081, 2571686737, 3065391369]}}
Пример 2
Двоичные данные:
b'QGZ\ty*A\x00\x00\x00Z\xbf\xae\r\xf4\x00-1\xc2\xf9\xe6u\xb3\x8eV\xb3lf,!\x8dr'
(b'\x95}\x9c\x9b\x00q\x03\x10\x96 \xa6Hwdcco\xbcA\x87\xbd\xde\x8e\xac'
b'>\xa0\xe6\xfb\xb8\xe8\x8d\xaf\x18\xe3x\xf1b\x83Wv\x91\n\x00U\x05\x00,\x00'
b'\x02\x00\x00\x001\x00\x00\x00G\x86h=\x02\x00\x00\x009\x00\x00\x00')
Результат разбора:
'A1': 10873,
{'A2': {'B1': -7965082669145818909,
'B2': {'C1': [{'D1': 48986, 'D2': -82, 'D3': 13},
'D1': 244, 'D2': 45, 'D3': 49},
{'D1': 63938, 'D2': -26, 'D3': 117},
{'D1': 36531, 'D2': 86, 'D3': -77},
{'D1': 26220, 'D2': 44, 'D3': 33},
{'D1': 29325, 'D2': -107, 'D3': 125},
{'D1': 39836, 'D2': 0, 'D3': 113},
{'D1': 4099, 'D2': -106, 'D3': 32}],
{'C2': 18598},
'B3': 85,
'B4': 'wdcco',
'B5': [-0.06604334712028503, 0.33702749013900757],
'B6': 0.05676868185400963,
'B7': [3103516320, 414158312]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x2a 0x53 0x54 0x54 0x55
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 5 |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
3 | uint16 |
4 | int8 |
5 | Размер (uint32) и адрес (uint32) массива uint8 |
6 | int32 |
7 | Структура D |
8 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | Массив int8, размер 3 |
3 | uint64 |
4 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'*STTUmaoqe\x03\x00\x00\x00\x8e\x00\x00\x00\x10\x9eW\x08\x00\x00'
(b'\x00\x9a\x00\x00\x00L\t\xc2\xca\x14\x18\xc3\xfe\x950\xefY\x8b\x8f.'
b'\xa3\xca\xd8\x9b\xd8d\xe8\xd1\x91+\x00\x00\x00\xf6E!\x1c\x04\xe5p\t\x955\xc4'
b'\xac\xa7E$n\xb5}\xea\xd0_\xac&\xa0q\x11Fp\x12L\x00\x00\x00\xba\xc3E\x97\xe1v'
b'\xb5\x02U*\x95\xb8\xe8\xad\xees\x8f\x01\x0cC\x1cG=}\n\x7f\xe6k\xb5m'
b"\x00\x00\x00V\x110'\xb6\x99\x96\xf3y\xd0q=\xfb\x10K\xb1\xfb\xb3\x145\x00"
b'\x00\x00V\x00\x00\x00w\x00\x00\x00Qv\x1a\xe0\x94\x00\xa2\x94')
Результат разбора:
'A1': 'maoqe',
{'A2': [{'B1': {'C1': -1700996595370515666, 'C2': 37329},
'B2': [-10, 69, 33],
'B3': 14138370472980841500,
'B4': -1549883212086007892},
'B1': {'C1': 5048941589916573648, 'C2': 4720},
{'B2': [-70, -61, 69],
'B3': 10748496930795872663,
'B4': 865130331520231608},
'B1': {'C1': -1837738589928612797, 'C2': 46443},
{'B2': [86, 17, 48],
'B3': 8201189008552343079,
'B4': 1491812640476953405}],
'A3': 40464,
'A4': 87,
'A5': [81, 118, 26, 224, 148, 0, 162, 148],
'A6': -893253300,
'A7': {'D1': 4274198548, 'D2': 1508847765},
'A8': -28789}
Пример 2
Двоичные данные:
b'*STTUgakpl\x02\x00\x00\x00m\x00\x00\x00\x9eh\x89\x04\x00\x00\x00u\x00\x00'
(b'\x00A\xd4\\\xc0\xd8jP\xef\xd3\xe5R\xce\xe9\xa8\xd7P\x0c\xeav\xd3P\xd3T'
b'\xb7+\x00\x00\x00\x9a\xd0r\x9cz\x80\xcf\xbb\x85\xec\x82\xad\xe8mY8hM\xca'
b'\x9c\xd2\x1a<&\xbd\xe2\x0c%1L\x00\x00\x00\x15\xf21\x854\xc5\xe7\xe4\xf1l'
b'\x19\x1a\x1cz\xce\r\x05\x96\xb55\x00\x00\x00V\x00\x00\x00\xb5\xb2\x07\xaf')
Результат разбора:
'A1': 'gakpl',
{'A2': [{'B1': {'C1': -3219841225883627305, 'C2': 46932},
'B2': [-102, -48, 114],
'B3': 9434062361121028764,
'B4': -3869321913613555539},
'B1': {'C1': 928512445106541212, 'C2': 12581},
{'B2': [21, -14, 49],
'B3': 1832105113876247685,
'B4': -5362092749481173990}],
'A3': 26782,
'A4': -119,
'A5': [181, 178, 7, 175],
'A6': -1067658175,
'A7': {'D1': 4015024856, 'D2': 3461539283},
'A8': -22295}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x25 0x4b 0x43 0x41
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | double |
3 | uint32 |
4 | Адрес (uint32) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int64 |
3 | double |
4 | uint64 |
5 | Размер (uint16) и адрес (uint32) массива структур D |
Структура D:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры E |
2 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив uint8, размер 5 |
3 | int32 |
4 | uint32 |
5 | float |
6 | Размер (uint32) и адрес (uint16) массива double |
7 | Массив int8, размер 5 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'%KCA\x18\x00\x00\x00D\x1e}(^\x1a\xd4\xbfp\xb83[\x8e\x00\x00\x00\x0f\xcb0\xb0'
(b'-\xd6/?d\xba\xbfE\xf2\xe1\xee\xbf\xa0\xdf\x91\xbf\xf6I\xbc?\xff\n\xe6\x10'
b"'p\xa7\x8c\x1c~\\& 'f\x11\x038\xcd|\xf5\xd3\rz\xbf\x02\x00\x00\x00 \x00\xd7"
b'x\xd9\x0f\xa7(t\xf2\xb5\xe9\r\xcc\xbf\xbeImm\xd13\xe6?\x04\x9e\xec\x81'
b'\n[\xb6u\xcb\xefx\x95,\xbc*/i\x8esl\x7f\xbb s?\x02\x00\x00\x00T\x00=d\xa6,"'
b'0\x00Vd\x00\x9cJ?+\xbfNpY^\xa0E\xca\x07p\x1c\xa0\xdfif\xb6\xbfo\xc6'
b'{\xe6\xda\x05\xbf\xd1\x02\x00\x88\x00\x00\x00')
Результат разбора:
'A1': {'B1': 2955987727, 'B2': 0.6868618130683899},
{'A2': -0.314109363117016,
'A3': 1530116208,
'A4': {'C1': -0.6689344644546509,
'C2': 561337658641051726,
'C3': -0.08750020703893013,
'C4': 15113805312206554735,
'C5': [{'D1': {'E1': 10135192799510137599,
'E2': [28, 126, 92, 38, 32],
'E3': 51471911,
'E4': 4118596920,
'E5': -0.9767734408378601,
'E6': [-0.9650813448223059, 0.11050359894750139],
'E7': [-41, 120, -39, 15, -89]},
'D2': 86},
'D1': {'E1': 8482067048886476292,
{'E2': [203, 239, 120, 149, 44],
'E3': 1764698812,
'E4': 2137813902,
'E5': 0.949718177318573,
'E6': [-0.2191745890058041, 0.693825448727061],
'E7': [61, 100, -90, 44, 34]},
'D2': 156}]}}
Пример 2
Двоичные данные:
b'%KCA\x18\x00\x00\x00D\x12j\xe2\x82_\xef?\xb4_\xb7q\x8e\x00\x00\x00'
(b'\xe38\x8e\\:N\xaf\xbe\x92\xc0K\x7f\xf1\xd5\xe3\xbf\xc0\x81\xd4\xd4'
b'\x81\xd4\xc7\xbf3:Va\xa3K\xe8\x98\xbeK$\x9f\xc3\xf2\x1e\x0f\xd7l\xf5\x1e'
b'\xe4\x9d\x82\xab\xbe\x02\x00\x00\x00 \x00xXE\xe6G^\x83\x00\xd2\xc4\xe7\xe4?'
b'\x1c\xc7\xf9\xe0\xc6\xf0\xec\xbf\xce\x0e\x9c\xdb]n\xecD\xeboO\x99'
b'\xa1\xe7\xfa7\n\x15V\x94\x0ffV\n?\x02\x00\x00\x00T\x00e\x91Pe\xe60\x00Nd'
b'\x002:I&>\xd6-\r~e\xd0\x97\xdd\x9e\x90\x1d{\x1d\x94\xed\xbf\xbe\x82'
b'l\xb8I\x19\x8c\xa5\x02\x00\x88\x00\x00\x00')
Результат разбора:
'A1': {'B1': 1552824547, 'B2': -0.342393696308136},
{'A2': 0.9804090902476408,
'A3': 1907842996,
'A4': {'C1': 0.16238871216773987,
'C2': -2479283935519101482,
'C3': -0.9243304638480543,
'C4': 11928937317415027390,
'C5': [{'D1': {'E1': 11018139653446711859,
'E2': [190, 75, 36, 159, 195],
'E3': -686874894,
'E4': 3827234156,
'E5': -0.33498087525367737,
'E6': [-0.6198661314247309, -0.18617270366759264],
'E7': [120, 88, 69, -26, 71]},
'D2': 78},
'D1': {'E1': 4966465838478266062,
{'E2': [235, 111, 79, 153, 161],
'E3': 171440871,
'E4': 261379605,
'E5': 0.5403808355331421,
'E6': [0.6532920934297228, -0.9043917078072101],
'E7': [101, -111, 80, 101, -26]},
'D2': 50}]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xf2 0x54 0x58 0x4e
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | int32 |
3 | int16 |
4 | uint8 |
5 | Структура B |
6 | Массив char, размер 3 |
7 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint32 |
3 | Размер (uint16) и адрес (uint32) массива адресов (uint32) структур C |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 3 |
2 | uint8 |
3 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xf2TXN\x02\x002\x00\xbew\x80z\xf8\x8c\x8c\xf9\xfe\xc9\xad\xb3\x03\x00X\x00'
(b'\x00\x00hhb\x82\xa8\xcb\xc9U\x14~\xfa*\x980\xf8Up\x17\x0b\x08\x83R\xe8?jy'
b'\x8c\x9f%`T|\x94!\xdd\xb0\x8c\x0e\xa3\x8e\x07,\xb1ZGa\x078\x19q\x11\xaaA\xef'
b'\xadl\xf8\xca.Y\x8c\xb24\x00\x00\x00@\x00\x00\x00L\x00\x00\x00')
Результат разбора:
'A1': 'jy',
{'A2': 2055239614,
'A3': -29448,
'A4': 140,
'A5': {'B1': 249,
'B2': 3014511102,
'B3': [{'C1': 2419695601636974476, 'C2': 244101341},
'C1': 7009671062019870371, 'C2': 1897478151},
{'C1': 14625559284184885777, 'C2': -1299424978}]},
{'A6': 'hhb',
'A7': {'D1': [3385567362, 4202566741, 4163934250],
'D2': 85,
'D3': 0.7600722462745875}}
Пример 2
Двоичные данные:
b'\xf2TXN\x03\x002\x00f\x1c6\xf4\xbeQ\xca\x1f\x9b\xfb3#\x08\x00\x95\x00'
(b'\x00\x00axs\xc3V1\x93\xec.|\xbd\xe3\xc2\xd3Y!d\xfc\x94\xbd\xcb\x80\xd8?uq'
b"h\t'\x87Sm\xdb\x7f\xe7\x81W\x94(\x07\x08\x93'\x1cj\x18W#\xe2E"
b'\xd8\xf3\xe3\xb0\xc1[ \xa0W#\x96\xa1\xf7\xe5i\xf8\xeeAJ\xec\xff\xeb\xa7\xd7'
b'P\xd2\xe8Gv\x13\xb9\xdfd9\xf8\xab\x17\xeb\xa4X\x02\x0c=\xf5\x9fi\xfa\xff'
b'\x00n\x87\x875\xb3\xbcc\x0c\xcf\x17\xb5V\xa3\xb9\xe1\x02i\xdb\x8b'
b'\xfb\xcd\xfbI\xf35\x00\x00\x00A\x00\x00\x00M\x00\x00\x00Y\x00\x00'
b'\x00e\x00\x00\x00q\x00\x00\x00}\x00\x00\x00\x89\x00\x00\x00')
Результат разбора:
'A1': 'uqh',
{'A2': -197780378,
'A3': 20926,
'A4': 202,
'A5': {'B1': 31,
'B2': 590609307,
'B3': [{'C1': 16681292807402891017, 'C2': 680810369},
'C1': 6275882749896361991, 'C2': -666508765},
{'C1': 6314082256037143539, 'C2': -140405213},
{'C1': 18441196221217925605, 'C2': 1356310507},
{'C1': 7268731816839211218, 'C2': 397146169},
{'C1': 11526185943112918251, 'C2': 16775785},
{'C1': 892764629032732526, 'C2': 1454708687},
{'C1': 18125822369349089699, 'C2': -213255219}]},
{'A6': 'axs',
'A7': {'D1': [2469484227, 3179032300, 1507050211],
'D2': 33,
'D3': 0.38286107553353177}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x42 0x57 0x47 0x82
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
3 | uint64 |
4 | Размер (uint16) и адрес (uint32) массива double |
5 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int16 |
3 | float |
4 | int32 |
5 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint32) массива uint16 |
3 | uint16 |
4 | uint32 |
5 | Размер (uint16) и адрес (uint32) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GBWG\x82S\xe6\x02\x00\x00\x00\x7f\x00\x00\x00.\xdf\xb3\x8f\xea?\xea\xb9\x02'
(b'\x00\x87\x00\x00\x00l\x1b\xb6+\xd1D\xa3\x0c\x02\xb7\xec"\x87\x13\x1c'
b'\x00\xc6`\xb8\xa6\x983\xbf\x97=\x12\xb2\xcb\x9cP?\x04\x00\x1f\x00'
b"\x00\x00b\x1d_`\x91q\x02\x00'\x00\x00\x00z\x13\xd1kI\xbang\x94\xdb"
b'\xe7\x95\xb2\x1d\x12\xf1\xc1\x1b\xdb\xf3\xf5e\xbf|\x9b\xfb%\xd7\x02e'
b'?\x04\x00N\x00\x00\x00\x12\x8a\x0b\x98!!\x03\x00V\x00\x00\x00+\x00\x00\x00\\'
b'\x00\x00\x00\xeeV\xfa\x8c\xff\xfa\xef\xbf\x04T\xe5\xc1\x80\xeb\xda?')
Результат разбора:
'A1': 58963,
{'A2': [{'B1': {'C1': 28, 'C2': -14848},
'B2': -18336,
'B3': -0.7015479803085327,
'B4': -1307427433,
'B5': {'D1': 0.8148924708366394,
'D2': [11190, 17617, 3235, 46850],
'D3': 7522,
'D4': 1905352799,
'D5': [8940, 4999]}},
'B1': {'C1': 18, 'C2': -15887},
{'B2': -9445,
'B3': -0.8982841372489929,
'B4': 637246332,
'B5': {'D1': 0.8945745825767517,
'D2': [4986, 27601, 47689, 26478],
'D3': 35346,
'D4': 555849739,
'D5': [56212, 38375, 7602]}}],
'A3': 13396590318232788782,
'A4': [-0.9993894341921228, 0.420623959876423],
'A5': 7020}
Пример 2
Двоичные данные:
b'GBWG\x82e\xa5\x02\x00\x00\x00\x95\x00\x00\x00\xab\xca\x05\xd9\xabL5\x08\x04'
(b'\x00\x9d\x00\x00\x00H, \x95+7\x18f\xbb\x9b>\x0b\xb4\t\xdb\x19Z\xb4\xde'
b'\xe3P\xba&\x87\x84\x86U\x7f7W\xc8\x1b\xbc%\xc7\xad\xbb\x13\x83'
b"\x07\xb7\x19\xd8\x00\xbe\x05\x00\x1f\x00\x00\x00\xd6'\xe0\xba"
b'\x19\x06\x08\x00)\x00\x00\x00Y\x07\x14)\x84$2s\x18\xa5\x0e\xe2\xfe\xd9D\xf3'
b'm:\x80b\xc1\xa1\x94\x1a\xb1,\x1e\x15\x92\x1c>L\xe5\x1b\x1c\xcc=0\xbe\x03'
b'\x00\\\x00\x00\x00\xb3\x87Z\x9e\xfe1\x08\x00b\x00\x00\x009\x00\x00'
b'\x00r\x00\x00\x00\xf6"\xb6\x90lW\xe0\xbf\x88 /&\xe4G\xdb?\xd0`\xf5H\xd6L\xc1'
b'?\x10\xa1\xe1oT+\xe0\xbf')
Результат разбора:
'A1': 42341,
{'A2': [{'B1': {'C1': 55, 'C2': -14249},
'B2': -17381,
'B3': -0.005303280893713236,
'B4': -1224244461,
'B5': {'D1': -0.12582434713840485,
'D2': [38176, 14123, 26136, 39867, 2878],
'D3': 10198,
'D4': 102349536,
'D5': [2484, 6619, 46170, 58334, 47696, 34598, 34436, 32597]}},
'B1': {'C1': 148, 'C2': -20198},
{'B2': 7724,
'B3': 0.15290100872516632,
'B4': 471590220,
'B5': {'D1': -0.17211073637008667,
'D2': [1881, 10516, 9348],
'D3': 34739,
'D4': 838770266,
'D5': [29490,
42264,
57870,
55806,
62276,
14957,
25216,
41409]}}],
'A3': 591463227033242283,
'A4': [-0.5106718851467054,
0.4262628910914903,
0.13515738069941685,
-0.5052892861540688],
'A5': 11336}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x4a 0x49 0x55
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив char, размер 5 |
3 | Адрес (uint16) структуры B |
4 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур C |
2 | Массив float, размер 8 |
3 | Адрес (uint32) структуры D |
4 | int8 |
5 | int64 |
6 | int16 |
7 | Массив uint64, размер 4 |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint8, размер 3 |
2 | uint64 |
3 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VJIU\xe6\nzsdot[\x00D\xf5I\x05\xae-\xfd\xc2.\x86\xce\xec\x0f\xdb\x08'
(b'\x10O\x0c\xe0\xc9\x84\xfb\xd6\xb4\xba\x8a\x15\xbc\xb7\x127\\v_\xc6n\xd6!\x84'
b'\x9d\x87^y\xaf\xbb,\xd5\xbe\xe8z\xb6\xad+\x06:\xb9\x83Zb\x0f\x00"\x00'
b'5\x00\xf8\xc5\x81a\x15[\xb9\x9b\x1a\xcb\xbb\x82:\x03\x00H\x00\x93\x80P\xbf@'
b'\x96\xfd=\x17_\xed>\xd5\xe59?\xe6mu=\xac\x146\xbf\xfc\x82\x1a\xbe\xef'
b'\x13\x1c?N\x00\x00\x00{\xb2P\xe2\xb2>0\xc5[Hk\xb2.U\x9e\xea\xe9'
b'\xd6\xe6\x01\x9bS\x07\x8d<N\xe0\xea\x14\x93\xd0\x88q\xae\xea\xa3\x9f:Nw\x83'
b'l\xfe')
Результат разбора:
'A1': 2790,
{'A2': 'zsdot',
'A3': {'B1': [{'C1': [73, 5, 174],
'C2': 1147519080778104109,
'C3': 9568425226796009691},
'C1': [251, 214, 180],
{'C2': 6644800355552299706,
'C3': 11350234165745704822},
'C1': [135, 94, 121],
{'C2': 13149077968379493295,
'C3': 7087121795186568109}],
'B2': [-0.814461886882782,
0.12382173538208008,
0.46361610293388367,
0.7261632084846497,
0.05991926044225693,
-0.7112529277801514,
-0.1508902907371521,
0.6096791625022888],
'B3': {'D1': 1635894776, 'D2': 9420346360717728533, 'D3': 58},
'B4': 123,
'B5': 6612744673710723250,
'B6': 27464,
'B7': [16633739467627507378,
16162922689090263809,
16910578483251582186,
18333172731555258275]},
'A4': 62788}
Пример 2
Двоичные данные:
b'VJIUQ7atfkxF\x00@\x00tP \xa3\xdf\xc6\xfbH1eP\xeatC\xce\xb4\xcb\xf6|\x9dd'
(b'\x83\xbf\x9c\xadt\xa6$\xd2\xa3YR.\x17Y\xf7b2\x0f\x00"\x00\xf9\x86\xa5'
b'\xde\xffs\xb8O\x15\xb5(B\xf2\x02\x005\x00[\x9d\xf2>\x83\x03C\xbe\x0b\xc9'
b'\xf4\xbe\x91\x051\xbf\xc61\xd8\xbeL\xedD\xbf\xbc\xb7\x1e<u\xda\xac>9\x00'
b'\x00\x00\x0f2\xaf|Z\x96Hl5\xd4\xbc\xbd\xd3|\xfa\x1c\xf1\xf4D\xe7w\x00'
b'\xcc\xd1\x9e2A\xc8\xae\xe8\xb1DFyG\xb6\rN\x15\x90\x12)\x16')
Результат разбора:
'A1': 14161,
{'A2': 'atfkx',
'A3': {'B1': [{'C1': [116, 80, 32],
'C2': 5793090685213532067,
'C3': 9004608482388964586},
'C1': [157, 100, 131],
{'C2': 11804537870632197311,
'C3': 3630736211627102809}],
'B2': [0.47385677695274353,
-0.19044308364391327,
-0.4780963361263275,
-0.6914911866188049,
-0.422254741191864,
-0.7692458629608154,
0.009687360376119614,
0.33760419487953186],
'B3': {'D1': 3735389945, 'D2': 4767259308708099071, 'D3': -14},
'B4': 15,
'B5': 3849531592095346482,
'B6': -17196,
'B7': [4968861395660362685,
4697991985208784871,
5150224909731409608,
1596827952921578934]},
'A4': 64}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x48 0x52 0x13
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Адрес (uint32) структуры B |
3 | Структура D |
4 | int64 |
5 | int8 |
6 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | Размер (uint32) и адрес (uint16) массива структур C |
4 | Размер (uint32) и адрес (uint32) массива char |
5 | Массив uint8, размер 8 |
6 | uint64 |
7 | int8 |
8 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int64 |
3 | double |
4 | uint64 |
5 | int64 |
6 | uint16 |
7 | Массив uint8, размер 8 |
8 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | int16 |
4 | int32 |
5 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DHR\x13\xe9}\x00\x00\x00\x8c\xbf\xa1\xe2A\xe4#\xe8\xe0\xfc\x88\x96R\xe2\xed'
(b'\xd1\xb6\xbf\xc0\x9f\xbb\x01\x10\xef\xa0\x1e\xea\xeb\xb3\xcd\x83'
b's\xdf\xf6\x84=\x0f\tGDqk\xdb\xef@\xc7\x01\\\xaey\xf0\x01\xac2\x91\xb1C\x8e='
b'\x1b\xb1t\xc7>\xae\x00\xfc\x953,\xa8\x8e\x02b\xfb!\xd5\xf1\x9f\\,\xbe\x17'
b'\xa5HP\xb1\xa6\x11$*\xcb[\x9b\xafQ*\x88\xf9\x89\x91\x02D\x04[t\xe21\x951\xae'
b'}N=A\x07\xbb\xf6\xee\x93k\xe9\xc4\xd8\x1e\xac\xe6\x95\xeeuc\xa5\xe8\xdc\x00'
b'\x00\x00\x04\x00Z\x00\x00\x00\x02\x00\x00\x00\x8a\xaa\xeeG6\xe67\xbeF-\xa4K'
b'\x0c\x13\x95%KyT\x97\x1dEf\x13\xa90')
Результат разбора:
'A1': -5763,
{'A2': {'B1': -23064,
'B2': -36,
'B3': [{'C1': 13697598521680700945, 'C2': 606784347},
'C1': 11218274439931726225, 'C2': 38011995},
{'C1': 8422348769989655886, 'C2': 1027671995},
{'C1': 17793321269480183838, 'C2': 2900792814}],
{'B4': 'uc',
'B5': [170, 238, 71, 54, 230, 55, 190, 70],
'B6': 3288836143127536971,
'B7': 121,
'B8': 6095372804571769136},
'A3': {'D1': -0.0349293318740409,
'D2': -249784496580341322,
'D3': -0.12987458755548875,
'D4': 2227852123167749087,
'D5': -683354108664003471,
'D6': 27611,
'D7': [239, 64, 199, 1, 92, 174, 121, 240],
'D8': 428},
'A4': 3643888477226736561,
'A5': 116,
'A6': {'E1': 199,
'E2': 0.3398512601852417,
'E3': -27341,
'E4': 749243906,
'E5': 7132331637636815916}}
Пример 2
Двоичные данные:
b'DHR\x13\x11q\x00\x00\x00\x80?\xca5\x05\xf2\xd6\x98H\xfe\x0c]\xa2^\x9c'
(b"\xc0#?\xeb\xfdBS\x1b-b\x85\xc4Q'[\xf7M\x86\xa1\xa8]\x103g\x91\xb3\x1c\xb6"
b'F\xce\xd6\xa7\xc0\xee\xad\xa8#\tR-\x9b\r\xda\x81;\n\xbb\x83>\x9cGs'
b'\xda\x99:\xc0\xe5\xc3\xde\xb4&\xeb\xa1\xd9#mWC\xf0_\xcdSh\x8dM\x07A\x82Y\xd5'
b'\x80\xc8qQ\x99Jv\x10>\xd3\x03\xa8@\xbe\xfd\xe1\x9c\xce\xc1\xd0(\xd9nq'
b'L\x80\xb2\x00\x00\x00\x03\x00Z\x00\x00\x00\x02\x00\x00\x00~\x0c\x0f]'
b'\x05N\x85\xab\xa8=E\x11%\xfc\x069\xc3\x04\x19PL{{\x87Bq')
Результат разбора:
'A1': 4465,
{'A2': {'B1': 19584,
'B2': -78,
'B3': [{'C1': 6288133798996699277, 'C2': 1292321154},
'C1': 6473221637797943626, 'C2': 1980776147},
{'C1': 263531767248559310, 'C2': 3251644633}],
{'B4': 'nq',
'B5': [12, 15, 93, 5, 78, 133, 171, 168],
'B6': 4414953864546367939,
'B7': 4,
'B8': 1824041942322201201},
'A3': {'D1': 0.20474314076745004,
'D2': -140634536401911773,
'D3': 0.8746654151122295,
'D4': 9638918331968212358,
'D5': -6798081313352478285,
'D6': 7350,
'D7': [70, 206, 214, 167, 192, 238, 173, 168],
'D8': 8969},
'A4': 5921559568864852746,
'A5': -69,
'A6': {'E1': 131,
'E2': 0.30523261427879333,
'E3': -9575,
'E4': 985720259,
'E5': 16047494165702452077}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x54 0x53
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | int16 |
3 | Массив char, размер 3 |
4 | Массив структур C, размер 8 |
5 | Структура D |
6 | Размер (uint16) и адрес (uint16) массива float |
7 | uint64 |
8 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива uint32 |
2 | float |
3 | Адрес (uint32) структуры E |
4 | int32 |
5 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
3 | Массив uint16, размер 4 |
4 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'STS\x00\x00\x00] \xc2pnl94D\x15\xe9\x82\xf9\x19G\x91\xd2f\xc2D\x14\xf1'
(b'\x95:\r\x82\xf6P\xc6\xeb w_"\xff\xee|\\R\xb5\x93@\x91)\xe7\x8b\x07\xf9\x0c,'
b'\xcc\xf6\xfd\xd3\x00\x00\x00\x03\x00b==\x92\x1f\x00\x00\x00no\xf5\xc9n\xcb]'
b'\x00\x04\x00\x8a\xbc\xbeV\xbbN\xa7\x00\xb8\xd6?j\xd1$\x85\xc6\x9b'
b'\xae\xb2\xfdE\xaeE\xedj\xab\xb8\xbf\xb9\x12\x13\xcb&Q@I\xe0K\x03k.'
b'q\xd4\xee\xd3\xe7\xbd\xd93)\x1dV\xb6\xdd}=\xd5\xa0u\xbe\x94\x1f-?\x16'
b'\xc3}\xbc\xf4?\xc3')
Результат разбора:
'A1': {'B1': 0.9172537326812744, 'B2': -123},
{'A2': 8386,
'A3': 'pnl',
'A4': [{'C1': 14644, 'C2': 1142286722},
'C1': 63769, 'C2': 1200738918},
{'C1': 49732, 'C2': 351376698},
{'C1': 3458, 'C2': 4132488939},
{'C1': 8311, 'C2': 1596129262},
{'C1': 31836, 'C2': 1387631424},
{'C1': 37161, 'C2': 3884648441},
{'C1': 3116, 'C2': 3438738899}],
{'A5': {'D1': [3332091570, 4249202245, 3983190968],
'D2': 0.046281930059194565,
'D3': {'E1': -0.09793208799084585,
'E2': 1239436035,
'E3': [27438, 29140, 61139, 59325],
'E4': -2795845737681330819},
'D4': 1878378862,
'D5': 52061},
'A6': [0.10430995374917984,
-0.2893003523349762,
0.5889204144477844,
-0.029815560206770897],
'A7': 13600403287183917240,
'A8': 214}
Пример 2
Двоичные данные:
b'STS\x00\x00\x00]\xf1tyaa\xe2\x8a>c\xe5\xdeFL\xael7\x17\xa3\xcc6Fh\xd16S'
(b'z\\\xc8\x1e\xf6\x93\x83\xa1\x08B\x8b\xf4\xea\x93\xb2[\x067q\xf78Sb\xe2'
b'"-a\xc7\x00\x00\x00\x07\x00b\xbe\xe2\xb0s\x00\x00\x00~\xe4u\xa8\x87\x1b\xc0'
b'\x00\x04\x00\x9a\xa5\xd3\x0b\xe9\xbc\x9fL\xc1\x97\xbe\x95\xd2\xf5`\x98\x03'
b'\x18\xfbu4{B\xdd\xb3\xeb\x8eVVO\x8dy\xc2\x8cMt\xf1\xec\xf6\x7f*\x86\xb1?\xdc'
b'\xf6\xdc\xad\x0e\x11t\x97\x15\xc9\t\x83D\xe7\xb1=%\xba_\xab\xeb\x0c:\xd1z'
b' A>\xa0_\xc8>\xed\xa4\x11?yJ\x05\xbe\x01\xa6\x04')
Результат разбора:
'A1': {'B1': -0.2926250994205475, 'B2': 96},
{'A2': -3724,
'A3': 'yaa',
'A4': [{'C1': 57994, 'C2': 1046734302},
'C1': 17996, 'C2': 2926327575},
{'C1': 41932, 'C2': 910584017},
{'C1': 13907, 'C2': 2052900894},
{'C1': 63123, 'C2': 2208368706},
{'C1': 35828, 'C2': 3935547995},
{'C1': 1591, 'C2': 1912027219},
{'C1': 25314, 'C2': 573399495}],
{'A5': {'D1': [2550339835,
1966373698,
3719555982,
1448497037,
2042793037,
1962011894,
2133493425],
'D2': -0.4427524507045746,
'D3': {'E1': 0.4525672616948875,
'E2': 2534787337,
'E3': [33604, 59313, 15653, 47711],
'E4': -6058735426934792127},
'D4': -462051193,
'D5': 7104},
'A6': [0.3132307529449463,
0.4641423523426056,
0.9737856984138489,
-0.12660986185073853],
'A7': 11948907334863899841,
'A8': 151}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x56 0x46
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 4 |
2 | float |
3 | int32 |
4 | int8 |
5 | Адрес (uint32) структуры C |
6 | uint64 |
7 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | uint32 |
3 | Массив char, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | Размер (uint32) и адрес (uint32) массива int32 |
3 | Структура E |
4 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint16) массива double |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'KVF\x1cS\xdd\x15j<D\x14\xbbT\xee\xa7ho|\xfc><\x8f&\x8at\xc5\xd0\xf6big\x1f'
(b'\xde\x0ck_\xfd\x94\xe5\xab\x9f\xb20lj\x02\xca\xcd\x8a\xbc1\xaa\xf9\xfe\xbfd'
b"\x02mw\xbe'\x82\x1b\xf4~Wg\xa4\x00\x00\x00~'\x94\x05\xa1e\x90\x81\xd5"
b'rR\xbf\xec\x1c\xfa\xaaPN\x9a?\xe1W\xc4\r/ \xbf\xeb}\xf4\x94\xa8'
b'\x87\\\xbf\xd1\x94\x98\xb0\xb0\xf7H\x13\xce\xefs\xe4\xb5\x84\x97S\x88'
b'\xa9\xfb\xbe\x07C\xb0\x00\x04\x00R\x00\x00\x00\x03\x00\x00\x00r\x04\x8c'
b'(\x1d\xd7\xe3\xccK\xbe\xd0\xffq\xa5\xe6')
Результат разбора:
'A1': [{'B1': 2041218140175352852, 'B2': 3142905511, 'B3': 'ho'},
{'B1': 9006141784654776948, 'B2': 3318806114, 'B3': 'ig'},
{'B1': 2296286515317019877, 'B2': 2879369776, 'B3': 'lj'},
{'B1': 201199129117960953, 'B2': 4273955842, 'B3': 'mw'}],
{'A2': -0.16358225047588348,
'A3': -193046681,
'A4': -92,
'A5': {'C1': {'D1': -0.132094144821167,
'D2': [-0.8785374952735368,
0.5419636018277778,
-0.8591254142267917,
-0.2746946073055949]},
'C2': [332328819, -457866089, 1401465339],
'C3': {'E1': 1164, 'E2': 2890703909226790608},
'C4': 4285638118},
'A6': 2851910654784209365,
'A7': 29266}
Пример 2
Двоичные данные:
b"KVF\xa4\xa1I.S!'5\x85\xdd\xb8\xdekb\xec3KK0\x85Ge08\r\xc3xhi\x04\xb1\xc0\xf3"
(b"R\x193w\x0e\nEfjY\x93r\xde\xf1\xf9H\xff\xe0\x11\xe2\xd8iq=\xf9'C\x1e"
b'\x19L\xc7\xd2\x00\x00\x00r\x9cf\xe4]:\xbd\x8bMK\x0f\xbf\xda\xd1\xa0F\x9d'
b'\xd9d\xbf\xaa\xb5\xe7?\x1c\xf9\xa0?\xbdz\x01"\xc2gp\x84\xd6\x84\xd7\x03\xe8'
b'k \xbf>\xac\xfe\x00\x03\x00R\x00\x00\x00\x02\x00\x00\x00j\n3\x19\xb0\xb2\x8a'
b'f\xb4\x0b)\xa65\xfe\x10')
Результат разбора:
'A1': [{'B1': -6583900716926949579, 'B2': 2245900510, 'B3': 'kb'},
{'B1': -1426713870637643931, 'B2': 808979907, 'B3': 'xh'},
{'B1': 7567368716163356979, 'B2': 1997408837, 'B3': 'fj'},
{'B1': 6454628992820005119, 'B2': 3759268568, 'B3': 'iq'}],
{'A2': 0.12165691703557968,
'A3': 504974535,
'A4': -46,
'A5': {'C1': {'D1': -0.744827151298523,
'D2': [-0.41904456039573845,
-0.05216906209396943,
0.11514288996332112]},
'C2': [-2066316073, 65563424],
'C3': {'E1': 2611, 'E2': 1851175754347580201},
'C4': 2788556304},
'A6': 11269946206609836877,
'A7': 19215}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x79 0x4d 0x58 0x57
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур B |
3 | int16 |
4 | Адрес (uint32) структуры F |
5 | Адрес (uint32) структуры G |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int32 |
3 | int16 |
4 | Адрес (uint16) структуры E |
Структура C:
Поле | Описание |
---|---|
1 | Массив int16, размер 2 |
2 | Адрес (uint16) структуры D |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint32) и адрес (uint32) массива float |
Структура F:
Поле | Описание |
---|---|
1 | int16 |
2 | int32 |
3 | uint32 |
Структура G:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | Массив int32, размер 6 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'yMXW\xbd\x15\xce\n\x00\x00\x00\x02\x00f:b\x00\x00\x00n\x00\x00\x00x'
(b'\xbd\xcc\xdb\xf9\xe8>\xe4\x19G?U<\x035O7z\x00\x00\x00\x02\x00\x00\x00'
b'\x1dz<\xc1\xfb\x00\x18D\x99\xb5\x0c\xe0j\x00%>8\x89\xa7\xa5? \x94\x9b'
b'\xbe\x9d\xf8\x9eO\xc0T)\x00\x00\x00\x02\x00\x00\x00DB\xce`\xce\x00?\x8c@'
b'\xbc\xae\xe3\xc6\x00L\x00\x00\x001\x00\x00\x00X\x18\x1a\x96)\xd14'
b'\x83\xfc\x01_\xe9\xb9-\xf9?\x11\xd6\xb3\xcc\xad\x16\x1e\x914A\x1b_I(Iaqv\xcb'
b'\x9c\xe8\xf0;\xa4\x12\xe0\x1d')
Результат разбора:
'A1': -0.03657344728708267,
{'A2': [{'B1': {'C1': [31292, -15877],
'C2': {'D1': -0.10002893954515457, 'D2': 232}},
'B2': 1150924044,
'B3': -8086,
'B4': {'E1': 894383994,
'E2': [0.4455053508281708, 0.8329469561576843]}},
'B1': {'C1': [17102, 24782],
{'C2': {'D1': 0.18021260201931, 'D2': 165}},
'B2': -1941914450,
'B3': -7226,
'B4': {'E1': 1338004521,
'E2': [0.6272675395011902, -0.30853742361068726]}}],
'A3': 14946,
'A4': {'F1': 6170, 'F2': -1775644364, 'F3': 2214330719},
'A5': {'G1': 3921227257,
'G2': 0.5696823000907898,
'G3': [-861071842,
-1858846437,
1598629961,
1634825931,
-1662455749,
-1542266851]}}
Пример 2
Двоичные данные:
b'yMXW>\x17\x8e\x9e\x00\x00\x00\x03\x00\x8dJ0\x00\x00\x00\x99\x00\x00\x00\xa3'
(b'\xbfQPM\xaa=n\x80p\xbe\x19G\xf2\x8f\xe2\x16\xfd\x00\x00\x00\x02\x00\x00\x00'
b'\x1d\\\x17\xa5\xe7\x00\x186\x9e"`\x0b\xad\x00%\xbe\xe8<\xfe\x8b\xbf\x12Am'
b'\xbe\x99\xa9\x03pY\x1b\xaf\x00\x00\x00\x02\x00\x00\x00D\x8d7\xbb\x11'
b"\x00?'\xa7V9\xd8\x18\x00L\xbf\t\x13.E\xbfG\xad~>\xd0n\xdacUG\x11\x00"
b'\x00\x00\x02\x00\x00\x00k1^\xb6=\x00f\xac\xcf\xf0\xf9\x96~\x00s\x00\x00\x00'
b'1\x00\x00\x00X\x00\x00\x00\x7f\x87d\xb5\x17*\r\xf6\x91\xdf\x94}uf\x15\xbf'
b';\x98\xf1<\x04\xde\x10\xe5\xb9\xd9\x90U\x17\x1f>\xfeG\xf9&\xe9u\xa3\x91)'
b'\xd9B&')
Результат разбора:
'A1': 0.14800497889518738,
{'A2': [{'B1': {'C1': [23575, -23065],
'C2': {'D1': -0.8176315426826477, 'D2': 170}},
'B2': 916333152,
'B3': 2989,
'B4': {'E1': -1881008387,
'E2': [0.05822795629501343, -0.1496885120868683]}},
'B1': {'C1': [-29385, -17647],
{'C2': {'D1': -0.4535903334617615, 'D2': 139}},
'B2': 665278009,
'B3': -10216,
'B4': {'E1': 1884887983,
'E2': [-0.571310818195343, -0.3001175820827484]}},
'B1': {'C1': [12638, -18883],
{'C2': {'D1': -0.5354489088058472, 'D2': 69}},
'B2': -1395658503,
'B3': -27010,
'B4': {'E1': 1666533137,
'E2': [-0.7799910306930542, 0.407095730304718]}}],
'A3': 18992,
'A4': {'F1': -30876, 'F2': -1256773107, 'F3': 4136755092},
'A5': {'G1': 2104845845,
'G2': -0.7328024506568909,
'G3': [1006951952,
-440804976,
1427578686,
-28837594,
-378166383,
702104102]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x6a 0x45 0x53 0x54
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | Размер (uint32) и адрес (uint16) массива структур C |
4 | Структура D |
5 | uint64 |
6 | float |
7 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | uint8 |
3 | Массив uint8, размер 2 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива int8 |
2 | int16 |
3 | Размер (uint32) и адрес (uint16) массива int32 |
4 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'jESTn\x7f\x8f@0\xb1/\xbe<v\xb7\xbf#z\x90v?\x02\x00\x00\x00?\x00\x02'
(b'\x00\x00\x00U\x00\x00\x00L\xf8\x04\x00\x00\x00W\x009a\x91\xbeSc`\xd6\xce'
b'#!\xfd\x11\xf6\n?\xd5]+\xa0\xab\xc4\xbe\xf0\x06\xc25\xd8!\xd6)\x96\x9a'
b'\xa9\x00\xde\x9eo\xfe`\xf9\xe3\x92\x1f\xc3_l\x00\x18\xd8\x9b\xa4G'
b'\x16\xecI\x0b\x0e\xfdB')
Результат разбора:
'A1': 1083146094,
{'A2': -0.09164790766925957,
'A3': {'B1': 35,
'B2': 0.9631420373916626,
'B3': [{'C1': -2867172252686826325, 'C2': 33, 'C3': [214, 41]},
'C1': -112696789329929578, 'C2': 96, 'C3': [249, 227]}],
{'B4': {'D1': [-110, 31],
'D2': -1972,
'D3': [7102403, -1533290472, 1240208967, 1123880459],
'D4': -0.28394487500190735},
'B5': 18239899337094095699,
'B6': 0.5428171753883362,
'B7': 2687196629}}
Пример 2
Двоичные данные:
b'jEST\x89\xc8Dd*a\x92\xfb\x12\xcc\xed\xbf\xcd\x1bYW?\x03\x00\x00\x00?\x00\x02'
(b'\x00\x00\x00`\x00\x00\x00\xb7\x80\x05\x00\x00\x00b\x00\xe9M\x03?\x9d'
b'\x814\xae\xb3\xf79\xe8+\xd7\x19\xbfc\xf5v\xbc\xeb\x85>\xf3\x18gv\xe1\x91'
b'\x19wN>\xdf\x86\xbd6\xda\x89\xe3\x04\xe8p*\xe3\xdan&\x97\xb2\x97\x03\x98'
b'\x16\x85\x01\x19\x80N\x1f\xbbC\x86;\xc8\xc0\x91\xd2\xc1\xa5\xcbUM\r2')
Результат разбора:
'A1': 1682229385,
{'A2': -0.9311613954078315,
'A3': {'B1': 205,
'B2': 0.8412033915519714,
'B3': [{'C1': -2200458011066071573, 'C2': 145, 'C3': [25, 119]},
'C1': -8513431957951005106, 'C2': 227, 'C3': [4, 232]},
{'C1': -5577947355914491280, 'C2': 151, 'C3': [3, 152]}],
{'B4': {'D1': [22, -123],
'D2': -32585,
'D3': [1317017857,
-2042381537,
-1849636805,
-878329390,
839732565],
'D4': 0.5129075646400452},
'B5': 16733678241565671837,
'B6': -0.6009394526481628,
'B7': 3161912675}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x48 0x49 0x53
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Массив char, размер 3 |
3 | Адрес (uint16) структуры D |
4 | int64 |
5 | uint64 |
6 | int32 |
7 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 3 |
2 | float |
3 | uint32 |
4 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур C |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
3 | Массив uint64, размер 8 |
4 | uint64 |
5 | uint32 |
6 | uint32 |
7 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'IHISC\x00nnlV\x00\x9d\x95=@\xffcL\x10\xb6\xb4\xec6\xbb\x85qB\xdd'
(b'\xe3K\xad\xc7.n\x03\xba\xee\xe6;\xde\xa7\xac\t\x1aK\xd2\xf9\x0b\xcevg\xd2'
b"z\x81\x03\xab\x96_\xaf?f\xb2\xbb'\x003\x00epc8!\x0c\xbf\x17I9&\x02\x00"
b'\x00\x00?\x00\x00\x00\x12\x0f%`\xb5}\x00\x0f\xbd\x9aX\xfa\x05\xe8'
b'\x1b\x00\xef\xcb\x07Y\xea\x07\xe9\r\xe7E\xc0f5<p\xc6z%r\xbeI\xd6Ofwm'
b'S\xf2\x8b\x0f\xd3_\xf0\x1c\x8d$@\xa5\xdb\x7fC7wb\xe4\x0bt\xe4\xd2+~o\xe7.'
b'\x04:\xdd\x1d7\xaa\xb7\xae\x1d\xe8|m\x8e|0')
Результат разбора:
'A1': {'B1': 'epc',
{'B2': -0.5473818778991699,
'B3': 641288471,
'B4': [{'C1': 162310110, 'C2': 7455372783989705498},
'C1': 58817234, 'C2': -4921759019051280725}]},
{'A2': 'nnl',
'A3': {'D1': 3858,
'D2': 24613,
'D3': [18039338444223708597,
6415320421572012037,
7403994646070233066,
13723072223796804661,
17461420539830589001,
2633793175807004555,
7095200500992943424,
8033906970051480548],
'D4': 12265304946165165799,
'D5': 3894259383,
'D6': 2089708924,
'D7': 48},
'A4': 1174423550782444957,
'A5': 4787754917998408886,
'A6': -1387535395,
'A7': 4316399775570079431}
Пример 2
Двоичные данные:
b'IHISC\x00fqdV\x00\xbd\xf7\x19\x1a\xee\x82,\xef\x0f\xa7\xd0\xe2TtI\xd6\x01'
(b'\x1f\x06\xd5\xf3"\xd3\'o\xd4^\x0e,\xe4\xc0\x1a6\xa8>d\xcdu\xf4\x8fp'
b"\x1bB\x08\xa0[\xaa-Hm\x17\xb8'\x003\x00thv\x83Lb\xbf\xdb\xa5\xc1\xec\x02\x00"
b'\x00\x00?\x00\x00\x00\xf6b\x01zW\x1d5>\x82\xd5\xdb}\xc2\x99\x81\x0cr\xa8'
b'\xe1\x87\x8b}R\x84S^\x8b\x86\x87\x12\xaa\xfe\x99\xdb\x10\xb5&\xe6'
b'\x82\x9b\x14\xc3\xb6\xb1.+Gi\xc2~,\xfd\xf0\xb7\x0by\x8c\x0f\xf5\xaae\xf2'
b'\xf0\x1aj\xd3\xc8B\xfcK\xf4K\xa0\xe5\xa3K\xa9\x00\xf6c.6\xdb\xfa\n')
Результат разбора:
'A1': {'B1': 'thv',
{'B2': -0.8839799761772156,
'B3': 3972113883,
'B4': [{'C1': 448848940, 'C2': -8073698706957883338},
'C1': 138550128, 'C2': -5181552689495254112}]},
{'A2': 'fqd',
'A3': {'D1': 25334,
'D2': 31233,
'D3': [9069077030006758743,
9791292272669727170,
9694946335640419723,
13047169574941364871,
12805637083750393382,
18243095564026063662,
12318769451742509040,
4812328654517367397],
'D4': 5450452450680261628,
'D5': 1677066409,
'D6': 4208670254,
'D7': 10},
'A4': -1212450240517769283,
'A5': 15441000705347856143,
'A6': -721019135,
'A7': 1035498538216399603}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x25 0x4b 0x46 0x5a
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив структур B, размер 3 |
3 | Массив char, размер 2 |
4 | Адрес (uint16) структуры C |
5 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | int16 |
4 | Структура D |
5 | float |
6 | uint64 |
7 | float |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint16, размер 7 |
2 | uint8 |
3 | Размер (uint16) и адрес (uint32) массива int8 |
4 | uint16 |
5 | uint8 |
6 | Массив uint16, размер 7 |
7 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'%KFZ:l\x16q\xd6\xd9\x7f.9\x0c\xa2\xce\xfc\x9d\xf0\xa8.\x84\xf7\xb3xh\x00#'
(b'\xd1?Qz"B\x81\xa3\xd30E\xde\xf9!\xd9\xbb\x87m$M\x80\x8c\x931^\xb4\x00\x03'
b"\x00\x00\x00 4\x11'\xffy\xa5\xd9\xf1q$\x07k\x9e<D\x82\x188D\xa0\xbb\x8d4\xa8"
b'=>\x14\xfaL(m\xb6\x0c+"T=?\\W\x97')
Результат разбора:
'A1': 14956,
{'A2': [{'B1': 5745, 'B2': 3604578094},
'B1': 14604, 'B2': 2731474077},
{'B1': -3928, 'B2': 780466099}],
{'A3': 'xh',
'A4': {'C1': 163,
'C2': -45,
'C3': 12357,
'C4': {'D1': [57081, 8665, 48007, 27940, 19840, 35987, 12638],
'D2': 180,
'D3': [34, 66, -127],
'D4': 13329,
'D5': 39,
'D6': [65401, 42457, 61809, 9223, 27550, 15428, 33304],
'D7': 4054542291928655933},
'C5': 0.14548605680465698,
'C6': 2913184697358111805,
'C7': 0.8607115149497986},
'A5': -784379526}
Пример 2
Двоичные данные:
b'%KFZ\xc7\xc8A\xf1\x00\x1c\xd2\x0e\x13\xd7_M9|<\x82__\xc5kmy\x00$}\x94\xedJ'
(b'\xa8\xd7\x15\x1c\x90]\xac\xb7\xa8_\xdd$\xf6\xc05\xc1s\xb1\x00\x80\xc5Q7\x00'
b'\x04\x00\x00\x00 \\g\xf12\x07\xb7\x9d\x8eJ@\xf66\xb6\x82;M\xa6\x86k'
b'=\xa39\x0e\xc1\xe1?V\x182\xc8\xa0\xcb\x0b\xc1\x8c@j\xbfLs\xf8')
Результат разбора:
'A1': 51144,
{'A2': [{'B1': 16881, 'B2': 1888782},
'B1': 5079, 'B2': 1598896508},
{'B1': 15490, 'B2': 1600111979}],
{'A3': 'my',
'A4': {'C1': 144,
'C2': 93,
'C3': -21321,
'C4': {'D1': [43103, 56612, 63168, 13761, 29617, 128, 50513],
'D2': 55,
'D3': [-88, -41, 21, 28],
'D4': 23655,
'D5': 241,
'D6': [12807, 47005, 36426, 16630, 14006, 33339, 19878],
'D7': 9685903194836615649},
'C5': 0.8363066911697388,
'C6': 14456778055211565162,
'C7': -0.7986445426940918},
'A5': 2106912074}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4a 0x48 0x58 0x49 0x44
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int64 |
3 | double |
4 | int8 |
5 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | Размер (uint16) и адрес (uint32) массива структур E |
3 | float |
4 | Размер (uint32) и адрес (uint16) массива int16 |
5 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | uint16 |
4 | Адрес (uint32) структуры D |
5 | float |
6 | double |
7 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
3 | double |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | int64 |
3 | Размер (uint32) и адрес (uint16) массива int8 |
4 | int64 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'JHXIDK\x00\x00\x00\x02\x00x\x00\x00\x00\x9aG\x16?\x02\x00\x00\x00\xb6'
(b'\x00\xc9\x97\xda\xfd9\xd4\x8a\xbd\x84nt\xd6\x93zk\xa2h\xd4\xc0\xc9M\x00\xe3'
b'?\x02/\x80\xf2\x0b\x98f\x19\xfbvpyrhx\xfcH\xca \\\x8f*\xae\x85\xce\xbf\x80'
b'\x00\x9e\xd3`\x85\xc3?\x06\x00:\x00\x00\x00*s@\x00\x00\x00jL\xec>\xf6'
b'\xf5s\xed{K\xe4\xbf\xef.c\x96\xb5\xae\x8bre\xec*\xf8\xd3|\xd1\x9c\xb3'
b'\xf7\xd1\xee?2\xee\xaa\xeb\xf3\x9f\xbbA\x06\x00\x00\x00m\x00\xc6\xda'
b'%\xf8\xf4\xcf\xe6\x0cA \xd2\x03a\xee\x98\xef?\xddg\xff\xb3\xbc\x84=\xb0\x05'
b'\x00\x00\x00s\x00\xb8\x7fN\x80E.\x0e\xfb\xcf2C\x83\x1b')
Результат разбора:
'A1': {'B1': {'C1': 0.15250788052435738,
{'C2': 'vpyrhx',
'C3': 29482,
'C4': {'D1': 18684, 'D2': 202, 'D3': -0.23845460012555098},
'C5': 0.4615204930305481,
'C6': -0.6342143666985851,
'C7': 12015},
'B2': [{'E1': 0.9631308086450612,
'E2': 4736555303089925682,
'E3': [99, -106, -75, -82, -117, 114],
'E4': 929659024140786374,
'E5': 65},
'E1': 0.9874183554480318,
{'E2': -5747291603446306851,
'E3': [101, -20, 42, -8, -45],
'E4': -356296444475441224,
'E5': -49}],
'B3': 0.5870300531387329,
'B4': [17202, 7043],
'B5': -4788781908217915447},
'A2': -6743161241680449916,
'A3': 0.5937870922558774,
'A4': 2,
'A5': -353138292550369233}
Пример 2
Двоичные данные:
b'JHXIDG\x00\x00\x00\x02\x00n\x00\x00\x00\x04\xc9]\xbf\x02\x00\x00\x00\xac'
(b'\x005\x9eF\xc10E\x927\x1d\xec3\x15\xf3\xe6\xea\xe06\xbe\x1a_\xb2\x9e\xe2'
b'\xbf@f\xe2\xab\x06Y\xcd\x9ednf\x18\xf6\x00\xe4\x7f\x06P\x01\x01\xe1?\xaa'
b'P\xa0\x9ddI\xeb\xbf\x02\x00:\x00\x00\x00\r\x1c<\x00\x00\x00I7\xb2>6'
b'\xb5o\xd6v\xd2\xe9\xbfP\x92\x8b*P?\x19\x88\x18\xb1\xa8\x97n\xc7?\x9f\t'
b'\xae\xa2\xb4\xb0w9\x02\x00\x00\x00i\x00\xdeW=D\t\x80E\xc2\xc8`-\x16'
b'\xd4\x07\x10\xa0\xbf\x93\x12\xb3i\x8b\xed\x89z\x03\x00\x00\x00k\x00\xbf'
b'\xdaD9*\xb1\x8a\xd1\x11,\xc7I\xbb')
Результат разбора:
'A1': {'B1': {'C1': -0.8527091101300546,
{'C2': 'nf',
'C3': 7181,
'C4': {'D1': 63000, 'D2': 0, 'D3': 0.5313726962085608},
'C5': 0.34807804226875305,
'C6': -0.8069414318285115,
'C7': 37456},
'B2': [{'E1': 0.18306251274970387,
'E2': 4140972672260376991,
'E3': [-117, 42],
'E4': -4448008279670564898,
'E5': -56},
'E1': -0.031372303618889985,
{'E2': 8829849727466148499,
'E3': [80, 63, 25],
'E4': -3347668578088985921,
'E5': 17}],
'B3': -0.8663485050201416,
'B4': [-14548, -17591],
'B5': 4004339094389169717},
'A2': -2239723932956234723,
'A3': -0.5818721635350304,
'A4': 64,
'A5': 7250458232360788582}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x44 0x5a 0x1a
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint8 |
3 | Массив структур D, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | double |
3 | float |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | Размер (uint32) и адрес (uint32) массива int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint32) и адрес (uint32) массива float |
3 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RDZ\x1a\x00\x00\x00J4\x19^T\x19\x00\x00\x00\x02\x00\x00\x00X@\xa9~pV\x00\x00'
(b'\x00\x02\x00\x00\x00`\xb8Y3m\xf8\x00\x00\x00\x04\x00\x00\x00h\x82aq_$'
b'\x8f\xea\xa8?\xba\xbb\x00\x00\x00\x02\x00\x00\x000\x00\x00\x00\x02\x00\x00'
b'\x002\x00:?\xb4r\x16\xa4S\x0f\x00?\x0bu\xd3\xbe\xb3\x86\xf5\xbe\xc2Ih'
b'\xbfM\xe9\xe9\xbe\t\xfa6?H\x80=\xbd~U\xf5?B3\xff>\x90\xea\x8f')
Результат разбора:
'A1': {'B1': {'C1': 'aq', 'C2': [1596231658, -1472218437]},
{'B2': 0.07986585151507697,
'B3': 0.5447666049003601},
'A2': 52,
'A3': [{'D1': 425612313,
'D2': [-0.3506390154361725, -0.37946629524230957],
'D3': 64},
'D1': 2843635798,
{'D2': [-0.8043504357337952, -0.13474354147911072],
'D3': 184},
'D1': 1496542712,
{'D2': [0.7832067608833313,
-0.062093693763017654,
0.7586058974266052,
0.28303954005241394],
'D3': 130}]}
Пример 2
Двоичные данные:
b'RDZ\x1a\x00\x00\x00L\xd8:\xd6\xe0\xca\x00\x00\x00\x04\x00\x00\x00Z\xfer\xf7'
(b'\x04\xb3\x00\x00\x00\x04\x00\x00\x00j\x98S\\wX\x00\x00\x00\x05\x00\x00\x00zv'
b'awcmk\x1d\xfa\x00S\xa0b.\x00\x00\x00\x04\x00\x00\x000\x00\x00\x00\x02'
b'\x00\x00\x004\x00<\xbf\xe2]0YY\x038\xbe\xb8&(\xbf\x11\xa4\xea\xbf\x16'
b"\x0e\xe9\xbf\x0c\xb9'<9\xec\xaf\xbf]&\xd4>\x8a\x02\x9f\xbe\xe0\x01\x99>\xdc"
b'\x03|\xbeN3\xd6>C\x0bn\xbe\xad\xbe\xe5\xbf~\xf9\x8a\xbf0\x8d\x8d')
Результат разбора:
'A1': {'B1': {'C1': 'awcm', 'C2': [1797126656, 1403019822]},
{'B2': -0.5738755936691637,
'B3': -0.359666109085083},
'A2': 216,
'A3': [{'D1': 987160778,
'D2': [-0.5689226388931274,
-0.5861650109291077,
-0.5497002005577087,
0.011347933672368526],
'D3': 254},
'D1': 1928791219,
{'D2': [-0.8638737201690674,
0.26955124735832214,
-0.43751218914985657,
0.4297140836715698],
'D3': 152},
'D1': 1398568792,
{'D2': [-0.20136961340904236,
0.1904732882976532,
-0.3393470346927643,
-0.9959951639175415,
-0.6896598935127258],
'D3': 118}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x56 0x5a 0x56
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | uint16 |
3 | Адрес (uint16) структуры D |
4 | Массив int8, размер 6 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | int16 |
4 | uint32 |
5 | Размер (uint16) и адрес (uint32) массива int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | int16 |
4 | Массив uint16, размер 5 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LVZVN\x80\xba)h\xefdv\x16>\xf5\xca<\xd6\xf8\x88\xe1j\xd3\xfeG\xf1h\x00'
(b'\x06\x00\x00\x00?\xbfW\xd00\xfc@T;2\xb5:\xa0s}\x00\x03\x00\x00\x00'
b'E\x8a\x1d\x00HsOi\x1d~C[\x8c]\xc7\x8f\xbe\xf7\xa2<\xe4\xbf\xb2\x97'
b'U\x05\xf1\x95\xa0J\x06\x11\x06+\xe2\xa4H\xd17X\x9b')
Результат разбора:
'A1': 78,
{'A2': 9275771913192633878,
'A3': {'B1': [{'C1': 0.48005855083465576,
'C2': -688355103,
'C3': 27347,
'C4': 4266127720,
'C5': [91, -116, 93, -57, -113, -66]},
'C1': -0.8430204391479492,
{'C2': -62892997,
'C3': 12981,
'C4': 983593853,
'C5': [-9, -94, 60]}],
'B2': 35357,
'B3': {'D1': 228,
'D2': -0.07262164492711642,
'D3': 18950,
'D4': [4358, 11234, 42056, 53559, 22683]},
'B4': [115, 79, 105, 29, 126, 67]}}
Пример 2
Двоичные данные:
b'LVZV7\xbe\xfa\xf5P0\xbf\xb3b\xbfM\xfcgOZ w{hT\xccp\xf1\x00\x05\x00\x00\x00'
(b'??8\xac\xef\x08\x01\xc0\x98Y\xcd\xa1}\x04\xf1\x00\x02\x00\x00\x00D\x94$\x00'
b'F~c\xa0\x18Vk\xcf\x04\x10\xff\xb3\xcfQZ?\xe6\xcd`BI\x18\x94\x90t\xe3as'
b'\x9c\x8d9$\xa0\xbf\xd0')
Результат разбора:
'A1': 55,
{'A2': 13761581336148030306,
'A3': {'B1': [{'C1': -0.8046326041221619,
'C2': 1331306615,
'C3': 31592,
'C4': 1422684401,
'C5': [-49, 4, 16, -1, -77]},
'C1': 0.7213887572288513,
{'C2': 134332568,
'C3': 22989,
'C4': 2709325041,
'C5': [-49, 81]}],
'B2': 37924,
'B3': {'D1': 90,
'D2': 0.7125703138961108,
'D3': -28556,
'D4': [58209, 29596, 36153, 9376, 49104]},
'B4': [126, 99, -96, 24, 86, 107]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x52 0x47 0x4a 0xfd
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
3 | Адрес (uint16) структуры B |
4 | float |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | int32 |
3 | Структура C |
4 | int32 |
5 | int16 |
6 | int16 |
7 | uint64 |
8 | Размер (uint32) и адрес (uint32) массива int32 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив адресов (uint32) структур D, размер 3 |
3 | int16 |
4 | Массив int8, размер 7 |
5 | Массив uint8, размер 5 |
6 | uint32 |
7 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint64 |
3 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZRGJ\xfd\xef\xe8\n@\x00\x83\x18c?\x12I\x1c\xcb\x89A\x9e\xb5\x1c!'
(b'\xbd\xf6\xb2b\xc5\x18!\xbb\x9ek\xde\xa4p\xb7V\x98t\x82\xd4Q\x96\xa1\x18\xee'
b'\x87\xe5\x93,v\n\x08\xd9\xc5\xe7\xbe\xbd\xd9\xfd&\np\xd4u\x87\x8cM\xb8\x0e'
b'\x00\x00\x00\x1c\x00\x00\x00*\x00\x00\x00\xa16~\x81\xc2h$.\x94n\xf6\xc4\xf1'
b'\xb3:\xf9J\xdb\x85/\x90\x97\xe1+\xcdf\x99iIR\x12\x17 H\x01\xbf\xa3'
b'\xfa\xdeh\xac^\x02\x00\x00\x008\x00\x00\x00')
Результат разбора:
'A1': 59631,
{'A2': 10,
'A3': {'B1': 112,
'B2': -1937279532,
'B3': {'C1': 47181,
'C2': [{'D1': -887338734,
'D2': 17779403311118434697,
'D3': 25266},
'D1': -1155458875,
{'D2': 10977162836192422814,
'D3': 33396},
'D1': -1583984172,
{'D2': 753839001353842200,
'D3': 55560}],
'C3': 13985,
'C4': [126, -127, -62, 104, 36, 46, -108],
'C5': [110, 246, 196, 241, 179],
'C6': 3679123770,
'C7': 7407625210004778885},
'B4': 1380542873,
'B5': 5906,
'B6': 18464,
'B7': 6821942842456522497,
'B8': [-1111562299, 170327513]},
'A4': 0.8870927691459656}
Пример 2
Двоичные данные:
b'ZRGJ\xfd\xa5\xddDT\x00+lB=\xa6\xa3\xbd\xa1\xe6\x15\xa8B\xe2\xd1\x83"Og'
(b'$\xb9\x9e;\xc7\x83)J=\xf2\xc53dF\xa0\xc8\xcf\xfe\xbfx\xfa\xd5\x8f\xfe'
b'\xa2\xd7\xaeK\x01J\xeb\xd7\x05;%V\xd1\xec\x98}E\xa4\xc5\x85\xd0W{:.~Y?'
b'x\x07Hc\xd1\xf9\xb2t\x85\xfa\x9b\x0e\x00\x00\x00\x1c\x00\x00\x00*'
b'\x00\x00\x00(\x13j_\xbb3\xa2\xb5\xdf\x05\x1d\xac\xcc\x10\xf5\xa5\xfa'
b'\xd0\xec\xbb\xf7p$\x9b\xf1\x05})\x04\x1a\xfcb=\x95\x86]\xd5B#\x06\x00'
b'\x11\x07\x00\x00\x008\x00\x00\x00')
Результат разбора:
'A1': 56741,
{'A2': 68,
'A3': {'B1': 209,
'B2': -2055949575,
'B3': {'C1': 39930,
'C2': [{'D1': -1581407322,
'D2': 2487062188949771750,
'D3': 26447},
'D1': 1000257828,
{'D2': 3730654211397485511,
'D3': 18020},
'D1': -19937120,
{'D2': 15538261558105372863,
'D3': 19374}],
'C3': 4904,
'C4': [106, 95, -69, 51, -94, -75, -33],
'C5': [5, 29, 172, 204, 16],
'C6': 3506087413,
'C7': 428294020393319404},
'B4': 436480381,
'B5': 25340,
'B6': -27331,
'B7': 1224985847159676294,
'B8': [-672445951,
1445280517,
2107174097,
-2050644923,
981161936,
1062829614,
1665664888]},
'A4': 0.04746643826365471}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x48 0x4f
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Структура D |
3 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | Размер (uint32) и адрес (uint16) массива структур C |
4 | float |
5 | int32 |
6 | double |
7 | Размер (uint16) и адрес (uint32) массива char |
8 | Размер (uint32) и адрес (uint32) массива uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | int8 |
3 | uint16 |
4 | uint64 |
5 | Массив uint64, размер 2 |
6 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LHO\x00I\xc5*\xe4<96\x06W\xf7\xe9\t\xd1G[\xbe&Oy\x03\x10\xc6\xca\xc4'
(b'\x9a\x02\x89\x11\x82\xaf\xfc<\xe45\xaf\xf7?t1~KoI\x00\x93\x06\xaf\x18'
b'sx\xc5\xef!s\x94J\nx\x84\xf4\xf0\x89\xf4yvy\x81\x16\xb6\xe4\xf0L\xca?S\x0e'
b'T\x00\x00\x00\x03\x004?h\xa9\xa7\x16\x90\xf7#?\xea\xed$\xfb\xda\x94R\x00'
b'\x02\x00\x00\x00C\x00\x00\x00\x02\x00\x00\x00E')
Результат разбора:
'A1': {'B1': 3840953546,
{'B2': 0.8244373798370361,
'B3': [{'C1': 1937294831, 'C2': 33},
'C1': 1939098122, 'C2': 120},
{'C1': -2064322423, 'C2': 244}],
{'B4': 0.90883868932724,
'B5': 378599203,
'B6': 0.841448299314502,
'B7': 'yv',
'B8': [31105, 5814]},
'A2': {'D1': 14207418921802663511,
'D2': -9,
'D3': 59657,
'D4': 15080122749518051587,
'D5': [1208876495741815057, 9417022684311957495],
'D6': 0.004930013025800983},
'A3': 2466688792}
Пример 2
Двоичные данные:
b'LHO\x00R~\x01E\x1c\x99\n\xee$>E="\xf2/\xb7\n\xcc\x93\x839\xc3\x16\x82'
(b'P}\xb4\x19F2Dz\r\xe5L\xb0\xbf\xc9\x8c\xfd\xf6\x1b`\x88m\xef\xd0\xf7MC\x102'
b'\r\xce=,U\xea\xadw\xb9\x96p\xf3g\xa21Xse,\x8a0HB]\xd2\x97\xde\xabA&\xbe\x89'
b"jC\x00\x00\x00\x04\x004>ar'\xa6\x9eJ\xd2?\xee0\x01%k\xafl\x00\x02\x00\x00"
b'\x00H\x00\x00\x00\x04\x00\x00\x00J')
Результат разбора:
'A1': {'B1': 3735765286,
{'B2': -0.2683888375759125,
'B3': [{'C1': 1296240690, 'C2': 13},
'C1': -834851755, 'C2': 234},
{'C1': -1384662634, 'C2': 112},
{'C1': -211312079, 'C2': 88}],
{'B4': 0.2201620191335678,
'B5': -1499575598,
'B6': 0.943359921538542,
'B7': 'se',
'B8': [11402, 12360, 16989, 53911]},
'A2': {'D1': 9079614312884661796,
'D2': 62,
'D3': 17725,
'D4': 2518127604860228483,
'D5': [4162195229572445209, 5058180622500318384],
'D6': -0.19961523549023164},
'A3': 1844433143}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x57 0x55 0x41 0x5f
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Структура B |
3 | uint64 |
4 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур D |
5 | float |
6 | Размер (uint16) и адрес (uint16) массива double |
7 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | uint32 |
3 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | Массив char, размер 4 |
2 | uint32 |
3 | Массив float, размер 4 |
4 | int64 |
5 | uint16 |
6 | uint32 |
7 | int16 |
8 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"AWUA_f\x15\x00)'\x8a\x9a\xeel\xa6\xa1G\xe4\\^?\xe7\xe8\x00\x00\x00\x02\x00"
(b'k\xbe\xb8\xe7c\x00\x02\x00s\x7f!\xd4\xc2eiqfr7\xc6\x19\xbd\x87\xd8'
b'\xc6\xbf%\xd9[\xbf5\x9ba?d\x1f\xf2\xc4p\xe4g:\xd0\xa7\x9f\xc3\xc4o'
b"\xd4i\x9c\x12\xdc\xff\xd2\xb5\xaaM\x9c\xaf\x90'X\xea\xa9\x12\x84\xf6"
b'\x90k\xe0!\x81?\xc2\x9b\x90F6\x00\x00\x00Y\x00\x00\x00b?\xdb\xc6\xc5\x13'
b'q\xad\xd0?\xe7\xf7\xb3}\xe8\xb2\xde')
Результат разбора:
'A1': 26133,
{'A2': {'B1': {'C1': 'eiqf',
'C2': 1916257817,
'C3': [-0.06633143126964569,
-0.6478478312492371,
-0.7094021439552307,
0.8911124467849731],
'C4': -4291679312864565345,
'C5': 50116,
'C6': 1876191644,
'C7': 4828,
'C8': -12748105877508208},
'B2': 663395054,
'B3': 27814},
'A3': 11621508448822224872,
'A4': [{'D1': 39, 'D2': 6407119316893208683},
'D1': -32, 'D2': 2414280980313425462}],
{'A5': -0.36114034056663513,
'A6': [0.43400694750627355, 0.7489869555625679],
'A7': 2132923586}
Пример 2
Двоичные данные:
b'AWUA_\x85S\x00)\r\xbcs\xcbWj7\x02\xf7\xadQ\x01,\x18\x00\x00\x00\x02\x00'
(b"k?T\xee\x85\x00\x02\x00s\xe1\xae\x01\naysi\xa1\xc7E'>Q\xa6\xeb\xbfA\xad"
b'=\xbf{*\x0e?1\x07\x8b]\xb7`\xe8\xdc\x10\x8e\xc5\x8d%X\x05\xad\x9aG'
b'\xaf\xcc\xf5*\xf9,9\xaa\x81\xbc\xce\xc0\xe4\xc0\xb5\x19\x0f\x83\x1cU'
b'^\xd6\xbe\x1e\x1c3;\x00\x00\x00Y\x00\x00\x00b?\xef\x94y\x1c\xa2\x94\xe4?'
b'\xbb9\xdebE\xdf ')
Результат разбора:
'A1': 34131,
{'A2': {'B1': {'C1': 'aysi',
'C2': 2714191143,
'C3': [0.2047383040189743,
-0.7565496563911438,
-0.9811104536056519,
0.6915213465690613],
'C4': 6752972719506099909,
'C5': 36133,
'C6': 1476767130,
'C7': 18351,
'C8': -3677986271000941951},
'B2': 230454219,
'B3': 22378},
'A3': 3964002945799891992,
'A4': [{'D1': -68, 'D2': 14898159083664772995},
'D1': 28, 'D2': 6151590253071971131}],
{'A5': 0.8317645192146301,
'A6': [0.9868741568831436, 0.10635175608865355],
'A7': -508690166}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x4a 0x50 0x53
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int32 |
3 | Массив uint16, размер 7 |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint32) массива структур C |
3 | Массив char, размер 7 |
4 | float |
5 | int8 |
6 | Массив double, размер 5 |
7 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура D |
3 | float |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | float |
3 | int32 |
4 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'EJPS\xfc\x8a\xeb\x9c\xc8Y\xd7?\x03\x00\x00\x00[\x00\x00\x00cyuwsqj\x9e'
(b'\x99\xb7\xbd\x83\xa8\xc6\xe1^\x92g\xc8?\xd8\xa7`U\x99\x9c\xdb\xbf\xb8\x8cbl'
b'l\x81\xcb\xbf\xa2:\x87?0\xc1\xef?\x00\x80\x10lB\x85E?\xb8J\x85S\x8aU\x1c\xfb'
b'A\x0b\xeb\x11\x14\xcd\xd3\x02\x1e\x83\x8f\xc1\xdb\xe2\x9d\xbd>@c\xed'
b'\xfb\xaa3x\x14K\xbe\xa6\x0bpG8?\xd2hY\xf5\xa9>\xf1\xfc\xa3k\xc5@$\xb1\xc7'
b'\x00!\xa7\x13\xd39\xbf\x92\xdf\x0f\xecr\xbf |40\x9e_\xa2\xf5\xad\x82y'
b"'\x00\x97\t?")
Результат разбора:
'A1': {'B1': 0.36485495876529206,
{'B2': [{'C1': 193,
'C2': {'D1': -37,
'D2': 0.37034517526626587,
'D3': -68328640,
'D4': 839567610226422698},
'C3': 0.7198400497436523},
'C1': 210,
{'C2': {'D1': 104,
'D2': 0.33194997906684875,
'D3': 1805909233,
'D4': 12042907736235851973},
'C3': -0.7258769869804382},
'C1': 146,
{'C2': {'D1': -33,
'D2': -0.9489144682884216,
'D3': 808746016,
'D4': 2844448323323191198},
'C3': 0.5374603271484375}],
'B3': 'cyuwsqj',
'B4': -0.08964847028255463,
'B5': -125,
'B6': [0.19066075928599457,
-0.43143304193165255,
-0.21488719265207634,
0.9923325768266589,
0.0006567549063483114],
'B7': -72},
'A2': -1974237878,
'A3': [7253, 16891, 60171, 5137, 54221, 7682, 36739]}
Пример 2
Двоичные данные:
b'EJPS(\x11\xd2\r\x88\xc1\xd1\xbf\x02\x00\x00\x00[\x00\x00\x00kqhiste2'
(b'\x998?\xc6\x82\x13\xfdp\x85\xbb\xea?d\xac\xb6\xbd*G\xe1?h\xa0\xa7\x01'
b'\x81\xac\xea?(\x8dr\xde\nW\xca?\xdcIo\x17\x04\xaa\xef\xbf1J/Q\x14\x88f\x96'
b'.\xc6\xa7\x1e\x94\x12\x17\xf4"\x92\xf6\xba7\xfa\x184?\x17>!\xd4\x86`\xe3'
b'\xe2\xa0\xe9\xe3\xc8\xe4\x18\xe1\xbc\x88\xb8\r\xfbH?3\xadI\tlnu\x95E'
b'\x8dN\x81T\n[\xbf')
Результат разбора:
'A1': {'B1': -0.27743722295442064,
{'B2': [{'C1': 186,
'C2': {'D1': 55,
'D2': 0.7035061120986938,
'D3': -736018921,
'D4': 14475670504509497478},
'C3': -0.0274776890873909},
'C1': 136,
{'C2': {'D1': -72,
'D2': 0.7850807309150696,
'D3': 155823411,
'D4': 9317540009075895916},
'C3': -0.8556263446807861}],
'B3': 'kqhiste',
'B4': 0.7210875749588013,
'B5': -58,
'B6': [0.8353907782371695,
0.5399373727172017,
0.8335576088256973,
0.20578132497494406,
-0.9895039041242017],
'B7': 49},
'A2': 340864842,
'A3': [26248, 11926, 42950, 37918, 5906, 8948, 63122]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x56 0x46
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint16 |
3 | int32 |
4 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив char, размер 5 |
3 | Размер (uint16) и адрес (uint16) массива структур C |
4 | int16 |
5 | Массив float, размер 7 |
6 | Массив float, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int8 |
2 | int16 |
3 | uint32 |
4 | float |
5 | float |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RVFH\xd4=\x91klvbm\x00\x04\x00KY\x08\xbf\\*\xe4>[\xe9\x11?9\xdf\xb6>\xb5'
(b'\xa7\xbe\xbeiK\x1e\xbe\x95=M\xbf/\x9e\x1e\xbf\x1a\x81\xea\xbe\x9c'
b'\x903\xfb\x86\xae \xd4{\x00\x00\x00\x9b7\xa1o;\xb2\xd0\xf5\xa9w\\\xef\x00'
b'\x03\x00\x00\x00@\xb7\xc5\x11\xe7\x98\x1d?$\xe4\x0e\xbej\x94<\x00'
b'\x04\x00\x00\x00C \x92F\xafVN<\x9b\xb3\xa1:\xabv\xbf\x00\x02\x00\x00\x00'
b'GN>\xf9\x12\x8eM>\xf6\x04\xc3?y\xb6\xf0\x00\x02\x00\x00\x00Iy\xd7\xde\xaeAr<'
b'M\x90\xca\xbe\xa4\xa6\xa8\xbf\xd4\x8a+\x84\x80u`K\xa3')
Результат разбора:
'A1': {'B1': 1221868945,
{'B2': 'klvbm',
'B3': [{'C1': [55, -95, 111],
'C2': -18491,
'C3': 300390429,
'C4': 0.6441048383712769,
'C5': -0.22908109426498413},
'C1': [59, -78, -48, -11],
{'C2': 8338,
'C3': 1185896014,
'C4': 0.019006552174687386,
'C5': 0.001308165374211967},
'C1': [-87, 119],
{'C2': 20030,
'C3': 4178742861,
'C4': 0.4805050790309906,
'C5': 0.9754476547241211},
'C1': [92, -17],
{'C2': 31191,
'C3': 3735961970,
'C4': 0.012546727433800697,
'C5': -0.32158398628234863}],
'B4': 22792,
'B5': [-0.8600294589996338,
0.21475626528263092,
0.7260698080062866,
0.3547953963279724,
-0.2278256118297577,
-0.2914833128452301,
-0.6860064268112183],
'B6': [-0.6035448312759399, -0.3057876527309418]},
'A2': 64390,
'A3': -1373580165,
'A4': {'D1': -0.3209332269633105, 'D2': 19363}}
Пример 2
Двоичные данные:
b'RVFV\x85\xaeCvtvti\x00\x05\x00P\xc16\xbe\x8cHT?@\x96t?>e\xd9\xbe\xc7'
(b'\xa6%>\xff\xabE\xbd\xe7\xa5s>"-\xbf>L\xa0:\xbeZ\x04\x01[\xdb|W\xac\xc4'
b'\x00\x00\x00\xb4\xe9)\x96\x08\x89a\xec\xeb\x82\x07%\x16\xcc\x13\xa0\xd4'
b'\x00\x04\x00\x00\x00@+ o\x05kq\xbc\n>\x8d\xbe\rAh\x00\x02\x00\x00\x00Dr\x13'
b"\xc3\xa9\x90H?\x06h\x1c>\x02\n\xce\x00\x04\x00\x00\x00F-'g\xb1=_"
b'\xbe\x1aP\x80\xbf(\xffI\x00\x02\x00\x00\x00J\xfbt\x87%D\xc5>\xb9B\xcc'
b'>\xd1f\xec\x00\x04\x00\x00\x00L\xcd\x1aph?x\xbf\x12\xca\xf1>\x815\x14'
b'\xbf\xdeq!\xae\xd7\xa3\xe4\xb8\xae')
Результат разбора:
'A1': {'B1': 1451601475,
{'B2': 'vtvti',
'B3': [{'C1': [-23, 41, -106, 8],
'C2': 11040,
'C3': 1862626161,
'C4': -0.008437764830887318,
'C5': -0.13794481754302979},
'C1': [-119, 97],
{'C2': 29203,
'C3': 3282669640,
'C4': 0.5250260829925537,
'C5': 0.12699434161186218},
'C1': [-20, -21, -126, 7],
{'C2': 11559,
'C3': 1739668831,
'C4': -0.1506977081298828,
'C5': -0.6601453423500061},
'C1': [37, 22],
{'C2': -1164,
'C3': 2267366597,
'C4': 0.3618377447128296,
'C5': 0.408988356590271},
'C1': [-52, 19, -96, -44],
{'C2': -13030,
'C3': 1885880184,
'C4': -0.5734091401100159,
'C5': 0.252358078956604}],
'B4': -16074,
'B5': [-0.27398931980133057,
0.752295732498169,
0.7437415719032288,
-0.38993945717811584,
0.4993535578250885,
-0.11310853809118271,
0.15837763249874115],
'B6': [0.19982996582984924, -0.2129058986902237]},
'A2': 23515,
'A3': 2086120644,
'A4': {'D1': -0.4756550033039828, 'D2': -18258}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x53 0x56 0x70
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив char, размер 8 |
3 | uint16 |
4 | int16 |
5 | Адрес (uint16) структуры B |
6 | Структура E |
7 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | Массив структур C, размер 7 |
4 | Адрес (uint32) структуры D |
5 | Массив uint64, размер 6 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
3 | Массив float, размер 6 |
4 | Массив int16, размер 7 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HSVp\xd0\xdax\xc5ydclxunc\xc5\xde\xd8GJ\x00\xa5\x9d\x98\xb1;(\xcc\xc4\x0f?'
(b'\xc1S\xaf>\xb6<\xca>9C\xd1=\x91`_\xben@\xdd\xbe\xc2\x83\xe30\xb6\xd2DT'
b'\xd4\xfb\xf2\xcb\xbb\x85\x1a\xe5\x96\xae\x9c\xf8\x1e\xdbRIO\xe4\xd5\xe6'
b'\xa1.?)\xcf@\xa1\xc3h\xa6\xa5\xb3\xe1\x1b\xa2o\xdfi\x99zD\x00\x00\x00'
b'\x00#\x88\x06A\x04%n\x1f\xa8>I\x9cM\x9c\x9d\xe2q\x88J\xdc0\x05\xe3'
b'\xf86\xa1\x12\x12}\xe8%\x01\xa3\xc9\xc8\x82T\xf93\xc8!H\xc8(B\xbd_')
Результат разбора:
'A1': -981935408,
{'A2': 'ydclxunc',
'A3': 57029,
'A4': 18392,
'A5': {'B1': -464565934,
'B2': -43,
'B3': [{'C1': -26, 'C2': 11937},
'C1': 63, 'C2': 53033},
{'C1': 64, 'C2': 50081},
{'C1': 104, 'C2': 42406},
{'C1': -77, 'C2': 7137},
{'C1': -94, 'C2': 57199},
{'C1': 105, 'C2': 31385}],
{'B4': {'D1': -123949418, 'D2': 30, 'D3': -37},
'B5': [7936754595639337728,
11357037693960628255,
16358534944194589154,
2731570690575644408,
3745117485826417409,
6898742947127763400]},
'A6': {'E1': 40357,
'E2': 675000728,
'E3': [0.5615966320037842,
0.3424358665943146,
0.39499443769454956,
0.10217899829149246,
-0.2181418091058731,
-0.43213218450546265],
'E4': [-31806, 12515, -11594, 21572, -1068, -13326, -31301]},
'A7': -6886}
Пример 2
Двоичные данные:
b'HSVp\x10\x0fK\xd8sdwvgttr\xd6\xbaVhJ\x00\x88$M\x81-\xafS\x03\xe2\xbe'
(b'\x0e\xd3\x0b\xbf\x9c\'\x1c\xbfM\x85\x0f\xbf"\x03M?\x0f\xdd?\xbfV\xb4Yp'
b'\xb0Qu\x0b`uR\r\xee\x9fV\xf8\xa0]\xa9\x9c\xf9\x99_\xd3\xa2N\xa0\x85\xfee3|'
b'\xca3G\xdf\xc7B\xb4\x8c\x957\x91,\x04]\xd2SD\x00\x00\x00\x04\xfc\x95X'
b"\xd3\xbcWd\r_\x01\xe3\xcb0\x98'\xdd\x94\x83\x7f\xc9Hf]\x87Ij\x07<\xe3\x9dM"
b"\xad\xfb+!q4\xeb/y\x1b\xbf)\x17'\xf5\x82")
Результат разбора:
'A1': -666169584,
{'A2': 'sdwvgttr',
'A3': 47830,
'A4': 26710,
'A5': {'B1': 1319293791,
'B2': -96,
'B3': [{'C1': -123, 'C2': 26110},
'C1': 51, 'C2': 51836},
{'C1': 51, 'C2': 57159},
{'C1': -57, 'C2': 46146},
{'C1': -116, 'C2': 14229},
{'C1': -111, 'C2': 1068},
{'C1': 93, 'C2': 21458}],
{'B4': {'D1': -1666622048, 'D2': -7, 'D3': -103},
'B5': [7230455342676966404,
2853084016184221453,
6730146723416741085,
5592876159225973127,
3452911199802096557,
9436491574662863737]},
'A6': {'E1': 9352,
'E2': -1355972275,
'E3': [-0.44143161177635193,
-0.5461891889572144,
-0.6099793910980225,
-0.5606277585029602,
0.8008290529251099,
-0.7494668364524841],
'E4': [-19370, 28761, 20912, 2933, 30048, 3410, -24594]},
'A7': -1962}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x3c 0x47 0x52 0x56 0x43
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | int64 |
3 | uint64 |
4 | uint8 |
5 | Массив char, размер 8 |
6 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | uint64 |
3 | Структура D |
4 | uint16 |
5 | int16 |
6 | float |
7 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | uint32 |
3 | uint8 |
4 | Массив uint16, размер 7 |
5 | uint64 |
6 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint8, размер 2 |
2 | double |
3 | uint8 |
4 | int16 |
5 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'<GRVC\nW\x87\xc9\xd4\n\xbc>v;A\xd4-7}v8^N!\x95bprlgfjmH"\xf5\xc1\x14\xe1'
(b'P\xfa\x8d\x00\xaa\x85G\x16\x9a\x1e\xd9\xe4J\x81m\xe1\xbf#\x1e\xc8\xe1r}\xda'
b'\xdb~\xee\xd4\xd4\xf4j\xa7u\x1b_\x0b\x1dt\x86E\xa9O@&\xd5\xfc\xe7I\xed\xc6^6'
b'\xb9\x1b\xc0ejJwa\x06\x14\x1a\x0e\xc7k\xdd\x87\x87u\x84X\x1f\xba\x17\xc0'
b"\xd2?h\x00\x14\xd2\xed@\xe8\xbf\xb8\x19'\xbc\xfe\xac\x1e\x97DoI\xb4\xa1^"
b'Sv\xbaF\xbf\xe5K')
Результат разбора:
'A1': -913877238,
{'A2': -3152172885137945900,
'A3': 2399959248034150189,
'A4': 149,
'A5': 'bprlgfjm',
'A6': {'B1': [{'C1': -409580086821051832,
'C2': 2242510989,
'C3': 71,
'C4': [39446, 55582, 19172, 28033, 49121, 7715, 57800],
'C5': 15336144859725200754,
'C6': 27380},
'C1': -8758343440651291225,
{'C2': 1078962501,
'C3': 38,
'C4': [64725, 18919, 50925, 13918, 7097, 26048, 19050],
'C5': 7766191587591610743,
'C6': 34781}],
'B2': 13841736623538337159,
'B3': {'D1': [210, 63],
'D2': -0.7579259017075062,
'D3': 184,
'D4': 10009,
'D5': 5291523503029026492},
'B4': 41396,
'B5': 21342,
'B6': -0.7762826681137085,
'B7': 19429}}
Пример 2
Двоичные данные:
b'<GRVC\xfbMs\xd4\x1e\xd4\xd75\x94\x939Kr\xb9\x9e\xca\x88(\xf8Y\x85nkxrzz'
(b'ggg\xd2\x98-/-\x94U\x8cn\x19\xc4\xb1\xb0\x0f1\x8c\x104\xa4\xecw\xa2\xafL\xb6'
b'\x99HN6.\x16\x99}\xf4\x8c"D\xbe0,\x997\x9eH\x01\xd0\xf0\xa6\xcfl\x19\x19\xc5'
b'\x03\xd0\x0c\xec\xff\xb8\x0e\x81SqP\x07_n\xd7\x02\xe4\xe6\xa2\x97'
b'\xff\x02\xb6.\xa1X\x9c$\xf3@\x10LBb\xf7p\xd2?\x84B\xfaU^\r\x82{\x8e\xf9'
b'\x84~\xdb\xa4\xca;N\x10?\x9c\xbb')
Результат разбора:
'A1': -730640901,
{'A2': 5420525891284882462,
'A3': 6482976231579892082,
'A4': 133,
'A5': 'nkxrzzgg',
'A6': {'B1': [{'C1': 6166603470428754535,
'C2': 3290001036,
'C3': 177,
'C4': [4016, 35889, 13328, 60580, 41591, 19631, 39350],
'C5': 17617405637886889544,
'C6': 8844},
'C1': 5232680948062010948,
{'C2': 2800799745,
'C3': 207,
'C4': [6508, 50457, 53251, 60428, 47359, 33038, 29011],
'C5': 16637426047706400592,
'C6': 38818}],
'B2': 2638080931028927231,
'B3': {'D1': [243, 64],
'D2': 0.2881449183998379,
'D3': 132,
'D4': -1470,
'D5': 9581846343321476693},
'B4': 56190,
'B5': -13660,
'B6': 0.5636937022209167,
'B7': 48028}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x4a 0x51 0x52
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив структур B, размер 2 |
3 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур C |
2 | uint8 |
3 | Массив float, размер 5 |
4 | int8 |
5 | int32 |
6 | Адрес (uint16) структуры D |
7 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int16, размер 2 |
2 | int16 |
3 | Массив uint8, размер 4 |
4 | uint16 |
5 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GJQR,.\r/\xc3\x0b\xdeI\x00\x00\x00\x02\x00\x00\x00fR?\x12\x13\xaf\xbf4\x0b'
(b'w\xbf\x1a3r\xbf\x19\xbc\x94>\x81\x85Om\xdb\xc7\x0f\xdf\x00ni\x00\x00\x00'
b'\x02\x00\x00\x00\x8a\xe2>\xe9\xe5\x08=*\xb2\xd4\xbd\x9d+\xaf=\xa9'
b'\xe0.\xbd\xcf\x9d\xdb\xba\xd7\x12_\x16\x00\x92\xcaN\xc6\xc2av\xd4'
b'\xe3\x08\x84\x0b"d\xa2\x11\xfa-\x00\x00\x00Z\x00\x00\x00`?\xbf\x1df <'
b"\xc0\x9e<\xe2S\x96>^\x06'v\xce#\xb4so\xb8\xc8P\x99&\x88\x00\x00\x00~\x00\x00"
b'\x00\x843bJ\xdd\xc3-y\xaa6\xb6bz>\x93b\x9a')
Результат разбора:
'A1': 3183496485384478281,
{'A2': [{'B1': [{'C1': 118, 'C2': 212, 'C3': 3808986123},
'C1': 34, 'C2': 100, 'C3': 2719087149}],
{'B2': 82,
'B3': [0.5706128478050232,
-0.7032999396324158,
-0.6023474931716919,
-0.6005337238311768,
0.2529701888561249],
'B4': 109,
'B5': -607711265,
'B6': {'D1': [16319, 7526],
'D2': 8252,
'D3': [192, 158, 60, 226],
'D4': 21398,
'D5': 0.2168203443288803},
'B7': 105},
'B1': [{'C1': 118, 'C2': 206, 'C3': 599028591},
{'C1': 184, 'C2': 200, 'C3': 1352214152}],
{'B2': 226,
'B3': [0.45682549476623535,
0.041674450039863586,
-0.0767434760928154,
0.08294712007045746,
-0.10137530416250229],
'B4': -70,
'B5': -686661866,
'B6': {'D1': [13154, 19165],
'D2': -15571,
'D3': [121, 170, 54, 182],
'D4': 25210,
'D5': 0.2878616452217102},
'B7': -54}],
'A3': 1321648737}
Пример 2
Двоичные данные:
b'GJQR\x91u\x1f\xf3\n\x87\xe6\t\x00\x00\x00\x02\x00\x00\x00f\x9d\xbe\xa1\xe4'
(b'C\xbe\xdd\xaa=\xbe\xa8\xdes\xbd\xf0_\xb8\xbf\x0f\x12\x02\xe3\xbd\x92'
b'\x9a\xf8\x00n\xef\x00\x00\x00\x02\x00\x00\x00\x8a\x08\xbd\xb3P\xfb?\x18'
b'\xf7\xd4>\x8b\xd3\xcb\xbe\xb9*\x81>\x854wv"\xd2\x1f\x9f\x00\x92\x104\xbb'
b'\xf7HL>L\x8f1\x1e\xbc\xc8S\xed\xbd\xef\x00\x00\x00Z\x00\x00\x00`$\xc4'
b'(\xbb\xae\xe8\xefI\x10%\xfa?>\xa4\xb9\xe7;\xec\xe7h_\x12`\xd4\xceaDB\x00\x00'
b'\x00~\x00\x00\x00\x84\xfb\xfb\x14\xe9\x1fR\t\xa2e\x1e\xbb\x85\xbf\x17'
b'\xa8\xb2')
Результат разбора:
'A1': 10481318836488889865,
{'A2': [{'B1': [{'C1': 76, 'C2': 62, 'C3': 1284452638},
'C1': 188, 'C2': 200, 'C3': 1408089583}],
{'B2': 157,
'B3': [-0.316194623708725,
-0.43293944001197815,
-0.3298221528530121,
-0.11737006902694702,
-0.5588685274124146],
'B4': -29,
'B5': -1114465544,
'B6': {'D1': [9412, 10427],
'D2': -20760,
'D3': [239, 73, 16, 37],
'D4': 64063,
'D5': 0.3217308223247528},
'B7': -17},
'B1': [{'C1': 59, 'C2': 236, 'C3': 3882376978},
{'C1': 96, 'C2': 212, 'C3': 3462480962}],
{'B2': 8,
'B3': [-0.08755680173635483,
0.5975315570831299,
0.27310022711753845,
-0.3616524040699005,
0.26016589999198914],
'B4': 118,
'B5': 584195999,
'B6': {'D1': [-1029, 5353],
'D2': 8018,
'D3': [9, 162, 101, 30],
'D4': 48005,
'D5': -0.59241783618927},
'B7': 16}],
'A3': 884733768}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x46 0x42 0x4e
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив структур B, размер 4 |
3 | Массив char, размер 8 |
4 | Адрес (uint32) структуры C |
5 | Массив int16, размер 2 |
6 | uint16 |
7 | uint16 |
8 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
3 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Структура D |
3 | uint8 |
4 | uint32 |
5 | uint64 |
6 | int64 |
7 | uint8 |
8 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив int8, размер 4 |
3 | int8 |
4 | uint8 |
5 | uint8 |
6 | Массив uint32, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'TFBNm\xc6b\xa2s\xc4\x1b\x96\xbb\x10\xd7p\xaa\xf5\x9e2\x05\xcd\xa1\x02L0H\x17'
(b'.BP(2h\xd3\xa8\x9a\x15\xd8\x14\xd2\x14\xfc\xb2O\x06\xa8\xc0J\xea^gybllkqck'
b'I\x00\x00\x00\xa1O\xdf/\xa4\x03\xc4\x18\x8e\xf0=S\x0f\xb0-\xb1\xbf|z\\'
b'.Xi\xee\xa8K\x7f\xef\x93\\s\xce`Dxd\xfaM\xc0\xed\\uS<\xb5Ma\x96.\xc2\xb4\xb6'
b'}*\xf6\xba<\xf9Q\xc0')
Результат разбора:
'A1': 10816454930985043565,
{'A2': [{'B1': 1893142715, 'B2': 849278378, 'B3': -13051},
'B1': 810287777, 'B2': 1110316872, 'B3': 10320},
{'B1': -1462540238, 'B2': 349705626, 'B3': 5330},
{'B1': 105886460, 'B2': -364199768, 'B3': 26462}],
{'A3': 'ybllkqck',
'A4': {'C1': -0.06710338949346073,
'C2': {'D1': 124,
'D2': [122, 92, 46, 88],
'D3': 105,
'D4': 238,
'D5': 168,
'D6': [2481946443, 1624142684, 4200888388]},
'C3': 77,
'C4': 1969024448,
'C5': 13992286436946426963,
'C6': -487309093225253196,
'C7': 81,
'C8': 192},
'A5': [20385, 12255],
'A6': 932,
'A7': 6340,
'A8': 142}
Пример 2
Двоичные данные:
b'TFBNH\xb6.|k\x18\xd4\xd2\xf0\x9aM\x9f\x90\xe5\xd4\xd4-\xb1\x89\x9f'
(b'.\x1b\x97\x92\xb7\x87\xe6\xe7\xf6Z\x97\xc5/\x0bX\x8d\xd4\xf7\xd4\x1a'
b'L\xb4\r\n\x9dX\xe99uudlimotI\x00\x00\x006d\x9a\xa9\xe1t=\xe0RT3\xe7'
b'\x92\xc7\x08\xde?\xab\x8e\xd0.\xe3\xd7\xfa"\x94\x7fe\xb7\n\xb5\x9d'
b'\x03\x1f\x07\xafc\x89j\xb0\xa6\xe6\xe9\x16\xba$\xdfp\x07\x10\x1b\xab'
b'\xb9\xa9zV\x1f\xee\xbd\xb2')
Результат разбора:
'A1': 15191794292951529032,
{'A2': [{'B1': -1622304016, 'B2': -724245104, 'B3': -20179},
'B1': 456040329, 'B2': -2018012521, 'B3': -6170},
{'B1': -979936522, 'B2': -1923609809, 'B3': -2092},
{'B1': -1270080812, 'B2': 1486686733, 'B3': 14825}],
{'A3': 'uudlimot',
'A4': {'C1': 0.4692858633614396,
'C2': {'D1': 171,
'D2': [-114, -48, 46, -29],
'D3': -41,
'D4': 250,
'D5': 34,
'D6': [3076882324, 60667146, 1672415007]},
'C3': 137,
'C4': 3869683818,
'C5': 1155015933140014825,
'C6': -1288215883571156197,
'C7': 189,
'C8': 178},
'A5': [25654, -22118],
'A6': 29921,
'A7': 57405,
'A8': 82}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x9a 0x51 0x55 0x41 0x48
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива int8 |
2 | double |
3 | uint64 |
4 | Адрес (uint32) структуры B |
5 | Структура D |
6 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур C |
2 | Размер (uint16) и адрес (uint32) массива uint16 |
3 | int16 |
4 | uint16 |
5 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
3 | uint64 |
4 | double |
5 | Массив uint8, размер 8 |
6 | int64 |
7 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x9aQUAH\x04\x00L\x00p\x89H`\xc1\x8f\xca?\xe4\xcf\x0c\xbe\xb0D\x9a'
(b'\xa0j\x00\x00\x00\xces\xd7\xaa\xf7:\x83m\x0f)\xd7\x9a\xde\x07Y(\xf7\xe1?'
b'-\xd5%r7\x0f\xf1/jF6\xe1\x9a\xc1\xbfs\xff3\x03?\xc3\xf8\xae\xaa'
b'\xfb\xf4\xd7\xe1\xfb\xcb\x11&\xb5Bt\xd9\xbe\x9c\x03\x00bGN]P\x00V\x00'
b'\xc1\xf6hIQP\xffZ}\xda\x02\x00\x00\x00\\\x00\x00\x00\x05\x00`\x00\x00\x00'
b'\xbc\xaa\x8e\x05p\xdc')
Результат разбора:
'A1': [-5, -53, 17, 38],
{'A2': 0.20751206590018567,
'A3': 11572637718375354340,
'A4': {'B1': [{'C1': 3648275125, 'C2': -25410},
'C1': 1197604867, 'C2': 23886}],
{'B2': [63169, 18792, 20561, 23295, 55933],
'B3': -21828,
'B4': 1422,
'B5': -9104},
'A5': {'D1': 29646,
'D2': 215,
'D3': 15503940155227174826,
'D4': 0.5614206065065048,
'D5': [45, 213, 37, 114, 55, 15, 241, 47],
'D6': 8340597905861002858,
'D7': 0.5125121474266052},
'A6': 16273745140264138947}
Пример 2
Двоичные данные:
b'\x9aQUAH\x05\x00L\x00|\x17(~J\xb1\xe3\xbf\xca\x97R\x9f6\xc5\xa4\xd8{\x00\x00'
(b'\x00\xcbH)\xfe\xbc\xc3)\xb6\xbf]V\xd2Sr4/l\xed\xbfR\xc2\x80O\xa4\xe7\x8b\x83'
b'\xf5u\xae\xe6\xd7l\x8b\xcd\x86g\x10?\x02\x93\xdaQyEK\xf8>O\xc1$`\xb4\xc7\xab'
b'\xbf\xfe`N\xb9\xe7\x85!6\x81\x8f*K\xb6\xa9\x8cs\xae\xbfEIQ\x00W\x00]\x00c'
b'\x00c\xa3&z\xc7\x05\x11\xbe\x06$\x04\x00\x00\x00i\x00\x00\x00\x05'
b'\x00q\x00\x00\x00\xff\xcdvg\xa0\x83')
Результат разбора:
'A1': [62, 79, -63, 36, 96],
{'A2': -0.6153919662472016,
'A3': 15610819046764877770,
'A4': {'B1': [{'C1': 3215706036, 'C2': 24830},
'C1': 2246555982, 'C2': 13857},
{'C1': 1261080449, 'C2': -22090},
{'C1': 3215881100, 'C2': 18757}],
{'B2': [41827, 31270, 1479, 48657, 9222],
'B3': -12801,
'B4': 26486,
'B5': -31840},
'A5': {'D1': 18635,
'D2': 41,
'D3': 6223341049201540350,
'D4': -0.9194561027858248,
'D5': [82, 194, 128, 79, 164, 231, 139, 131],
'D6': -3635692599627581963,
'D7': 0.5640796422958374},
'A6': 17891470332026065666}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x1d 0x57 0x4a 0x4e
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив адресов (uint16) структур B, размер 5 |
3 | Структура C |
4 | int32 |
5 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint32, размер 7 |
2 | Структура D |
3 | uint16 |
4 | int8 |
5 | int8 |
6 | Адрес (uint32) структуры E |
7 | float |
Структура D:
Поле | Описание |
---|---|
1 | Массив float, размер 2 |
2 | uint16 |
3 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива int16 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x1dWJN\xeap\x83T\x00Z\x00h\x00w\x00\x85\x00\x93t~\xe1\xb3\xd8\xc9'
(b'\xc7\x9eM\xe0 \xacY\xf3_\x17\xb2]y\rf\x11C\nbh~&\xbeB[\xff>\xa3'
b'\x91\xc4\x86\x11\xbc\xf3\xdb\x9d\xed\xe0\xeb\xd0\xf3\xc2\x9cZ'
b'\x00\x00\x00\xa7>\xd8S\x0b\x97\xa0\x88M\x88\xf3\x19X\xce\x96\xd4\xd3qa4\x0f'
b'\x00\x02\x00\x00\x00X\x1a\x81\xaf\xf4um!\x02\x00\x02\x00\x00\x00f'
b'\x98\x11 \xccfoa@\x88\x00\x03\x00\x00\x00t\xeb\xb8\x9f\x19cr\xd9r\x00'
b'\x02\x00\x00\x00\x83\x89f\xe2\xcddpz\xb5\x00\x02\x00\x00\x00\x91\x94'
b'\xaf\xefS\xf0\xd4\xd2\xb74\xa6/\xed\x00\x00\x00\x04\x00\x9fO\x1a*\xd7')
Результат разбора:
'A1': -361725100,
{'A2': [{'B1': 13327, 'B2': 'qa', 'B3': 444706804},
'B1': 8450, 'B2': 'um', 'B3': -1743707956},
{'B1': 16520, 'B2': 'foa', 'B3': -340222183},
{'B1': -9870, 'B2': 'cr', 'B3': -1989745971},
{'B1': 31413, 'B2': 'dp', 'B3': -1800409261}],
{'A3': {'C1': [1954472371,
3637102494,
1306534060,
1509121815,
2992470285,
1712407306,
1651015206],
'C2': {'D1': [-0.1898040622472763, 0.31947147846221924],
'D2': 34321,
'D3': -4831276503891121200},
'C3': 62402,
'C4': -100,
'C5': 90,
'C6': {'E1': [-3884, -11593, 13478, 12269], 'E2': 1327114967},
'C7': 0.42250856757164},
'A4': -1751087027,
'A5': -8578484995996855085}
Пример 2
Двоичные данные:
b'\x1dWJN\x91=\x81\xe4\x00[\x00i\x00x\x00\x87\x00\x95V\xdb?\xa7j7\x91C\x1dX'
(b'?E>\xae\xf6\x04tj\x00\x15\xc1\xfc\xc3r\xd8\xc4$\x05?;\xdec\xbfRu\xd7\x02\xfd'
b'\xbb6\xce\xe3\x89\xf0\xbd\xe3\x1a,\x10\xab\x00\x00\x00\xa9\xbe\x83\x97\xb6'
b'\x8f\xd8\xe1\x8b\xc5\xed\xba\x1aI\xc7\x84zkpxCU\x00\x03\x00\x00\x00X\x83'
b'\xca1Lfb1\xd5\x00\x02\x00\x00\x00gW\xc5\xd1\x11tiw\xf2\xa7\x00\x03'
b'\x00\x00\x00u\xbePz\xd2aou\x8d%\x00\x03\x00\x00\x00\x84Cq*mmx\xb32\x00'
b'\x02\x00\x00\x00\x93\xea&\x8a\x86\xf4.\x18\xfa\x98\xdb\xe3\xd5\x00\x00\x00'
b'\x04\x00\xa1\xb1\x82$\x97')
Результат разбора:
'A1': -1858240028,
{'A2': [{'B1': 17237, 'B2': 'kpx', 'B3': -2083901108},
'B1': 12757, 'B2': 'fb', 'B3': 1472581905},
{'B1': -3417, 'B2': 'tiw', 'B3': -1102021934},
{'B1': -29403, 'B2': 'aou', 'B3': 1131489901},
{'B1': -19662, 'B2': 'mx', 'B3': -366572922}],
{'A3': {'C1': [1457209255,
1782026563,
492322629,
1051653636,
1953103893,
3254567794,
3636732933],
'C2': {'D1': [0.7338621020317078, -0.8221105933189392],
'D2': 765,
'D3': -4956546863207498269},
'C3': 6700,
'C4': 16,
'C5': -85,
'C6': {'E1': [-3026, 6394, -26405, -7211], 'E2': 2978096279},
'C7': -0.2570168375968933},
'A4': -1881611893,
'A5': -4184483856687594374}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x48 0x51 0x45 0xa8
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int8 |
3 | Структура C |
4 | Структура D |
5 | uint64 |
6 | Адрес (uint16) структуры F |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | uint8 |
3 | float |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | int64 |
3 | uint64 |
4 | uint8 |
5 | float |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива структур E |
2 | Размер (uint32) и адрес (uint32) массива int16 |
3 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | int64 |
3 | uint32 |
Структура F:
Поле | Описание |
---|---|
1 | Массив uint32, размер 6 |
2 | Размер (uint32) и адрес (uint16) массива uint8 |
3 | int16 |
4 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FHQE\xa8\x02\x8f\x02\xed\xf5|\x17\xe4`\x15.h\xbf\xd4\x03\x00\x00\x00I'
(b'\x00\x00\x00\xc7\xf3\xb9\xfb\x82\xe1\x02\x0ca\xce\xdfpO\x83\x07\xab\x8f'
b'\xcf\xf2<\xbe\x03\x00L\x00\x00\x00\x06\x00\x00\x00s\x00\x00\x00\x9c\xe3'
b'i\xdf\xb3\x1b(\xc6\x1a\x81\x00ghd\xf1\xa9\xd5\x1b\xf0\x01\xe8\x12\xdb0\xf4c'
b'\xb4N\xc0\xe6\x1c$\xdc\xd9\xab\xa7u\x0c\x08Y\x82\x88\x9a\x15\x13\xb9'
b'\xd2\xc9\xd6\x8cg\x99\xbfBY\xc6\x9f\x0f\xff<\xedv\x0b\n\xd1\x9b\xccF\x7f\xa0'
b'H=\x08T\x1a\xc4\x90\x0c:`{0\xfe^\xc5\x916\xd1\x9cjR\x02\x00\x00'
b'\x00\x7f\x00\x1e\xecoQ\xe4\xd5\xb2\xdcNC')
Результат разбора:
'A1': {'B1': -2011001312912437502, 'B2': 96, 'B3': -0.9069531559944153},
{'A2': -44,
'A3': {'C1': 'ghd',
'C2': 865502031093822407,
'C3': 12323963282542022241,
'C4': 143,
'C5': -0.18451999127864838},
'A4': {'D1': [{'E1': 241, 'E2': -2660809334801574487, 'E3': 3026449456},
'E1': 78, 'E2': -6364754108836157760, 'E3': 1493699701},
{'E1': 130, 'E2': -2969610786943165816, 'E3': 3214501772}],
{'D2': [22850, -24634, -241, -4804, 2934, -12022],
'D3': -100},
'A5': 1929273589821827555,
'A6': {'F1': [1218477894,
441714749,
973902020,
4264590176,
915522910,
1382718673],
'F2': [155, 204],
'F3': -5090,
'F4': 4850056509375402351}}
Пример 2
Двоичные данные:
b'FHQE\xa8SX\xc5\xce\xef\xd5?#z\xd2\xc4+?\xec\x03\x00\x00\x00I\x00\x00\x00\xf3'
(b'\x93h\x1c\xdf\x0fj\x8e\xe4\x10\xa08\xbe$\xa2P-\xe0\xf3\xff=\x02\x00L\x00'
b'\x00\x00\x05\x00\x00\x00f\x00\x00\x00\xea[\x93\xca\x82\xaf\xdfG\xf4r\x00pct'
b'\x0c$\xb5\x906!AfC\xae\xfb~K\xe4\xb8\x87\x89\x18\x1d\xd0\x0b1HA\xbfp\x86\x8c'
b'_{\xfe\x94#\r\x7ft\xa0\x8b\x9a\x05\x07\xcep2\x9b\xc3>f\xc5\xc0\x18{'
b'e\xe5\x88\xbdyI\xb1\x92\xdd3\x02\x00\x00\x00p\x00\xaf\xce_O_\xd0_\xe3'
b'\xfe\xb4')
Результат разбора:
'A1': {'B1': 2539983940803188819, 'B2': 122, 'B3': 0.6709719896316528},
{'A2': -20,
'A3': {'C1': 'pct',
'C2': -8184711921863715853,
'C3': 5810246868673761508,
'C4': 45,
'C5': 0.12497687339782715},
'A4': {'D1': [{'E1': 12, 'E2': 4856640859070838052, 'E3': 1266613166},
'E1': 228, 'E2': 3534147155986581432, 'E3': 1891582280}],
{'D2': [-29562, 31583, -27394, 3363, 29823],
'D3': -22},
'A5': 17602283613507457883,
'A6': {'F1': [3456566682,
3281728112,
3234162238,
3848633112,
1232715144,
870159025],
'F2': [160, 139],
'F3': -12625,
'F4': 13042111571568840543}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x51 0x49
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | Адрес (uint32) структуры B |
3 | double |
4 | int64 |
5 | Адрес (uint16) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | float |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур D |
2 | uint16 |
3 | Структура E |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | int64 |
4 | double |
5 | Размер (uint32) и адрес (uint32) массива int32 |
6 | Размер (uint32) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"VQI`\xe8\xa9V\n\n\xa8\xed'\x00\x00\x00\x80*K\xdf]\xf0\xe6\xbf\x81"
(b'\xe9\xd1\xe6\xcb\x0fO\x0by\x00vvknsr$>ri\xfe\xc4,j\x06\x00!\x00!'
b'\xc4\x82>\xa7\xbeaD2\x15\xe8c\x7fk\x85\x87\xd1\xaa\x02\xc3\xe1@\x8f\xa3\xc3'
b';;\xae\x19|\xed\x10\x8d\x9f\x9f\xc0\xe5<I\x947\x00@\x00I\x00R\x00\xaf'
b'\x82\xe4\xb8\x8c\xc0\x0e\x07\xf8\x04\x80\x05H\x8e\xd5v\xd8\xa0\xa0t\xca'
b'p\x04\x00\x00\x00[\x00\x00\x00ra\xb6-Y7\xcf\x18\x8c\x93\x0e\x9b\x12\xba\xfb'
b'\xc98\xc4m\xee?\x05\x00\x00\x00c\x00\x00\x00\x02\x00\x00\x00w\x00\x00\x00')
Результат разбора:
'A1': -1321795451113314208,
{'A2': {'B1': 7650706463965462052, 'B2': 'vvknsr', 'B3': 0.2554025948047638},
'A3': -0.7168416367724859,
'A4': 814887426002643329,
'A5': {'C1': [{'D1': 7199027309991542439, 'D2': 127},
'D1': -2178894862034172565, 'D2': 64},
{'D1': 8942370104549811087, 'D2': 237},
{'D1': 5277345478845893904, 'D2': 148}],
{'C2': 24946,
'C3': {'E1': -74,
'E2': 22829,
'E3': 1340681340946272055,
'E4': 0.9508992299232581,
'E5': [-1192983889, 118407308, 92275960, 1993707080, 1956683992],
'E6': [202, 112]}}}
Пример 2
Двоичные данные:
b'VQI\xb1\xddM\x0f\xea]\xcb &\x00\x00\x00\x80\x16\x90^\xbb\xa6\xbc\xbf\xf3'
(b'\xdfz\xf8\xc3\x8c)\xef|\x00ttmvb"\xe9\x10\x03\x0e(&\xeb\x05\x00!\x00\xc6\xc6'
b'@?\x1ab)\x9a<\xf8\xbb\xc8<0`\xae|L\xb7}\x9adP\xfaH\x8a\xe8};z\n\xf6zN'
b'\x0e4\xae\xb96\xffi\xfa\xd8t%\x8f\x1d!w6\x00?\x00H\x00Q\x00Z\x00~:\x8d'
b'\x18^\xbd\xf7\xb0\x0e^\xdd,\x8a\xb2\x0b\x05\x00\x00\x00c\x00\x00\x00'
b'\xa3\xc1\xc4\xd0\xd7\x1c\xeb;\xfb\x97\x1ak}D\xacZ:h}\xe7\xbf\x03\x00\x00'
b'\x00m\x00\x00\x00\x03\x00\x00\x00y\x00\x00\x00')
Результат разбора:
'A1': 2363085689346448817,
{'A2': {'B1': 16944274688674162978, 'B2': 'ttmvb', 'B3': 0.7530330419540405},
'A3': -0.11191912707007567,
'A4': -1213283851284324365,
'A5': {'C1': [{'D1': -3982316506310942182, 'D2': 60},
'D1': -7314488680642617296, 'D2': 100},
{'D1': 8807771933959060048, 'D2': 10},
{'D1': 3943374487341136630, 'D2': 255},
{'D1': 2386220768613169769, 'D2': 119}],
{'C2': 49571,
'C3': {'E1': -60,
'E2': -10288,
'E3': 9037346317306424092,
'E4': -0.734058488820104,
'E5': [411908734, -1325941410, 752705038],
'E6': [138, 178, 11]}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x59 0x57 0x42
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | double |
3 | int8 |
4 | Адрес (uint16) структуры B |
5 | Структура F |
6 | double |
7 | int16 |
8 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив char, размер 5 |
3 | uint32 |
4 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C |
5 | Структура D |
6 | uint8 |
7 | Адрес (uint16) структуры E |
8 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int32 |
3 | float |
4 | Массив float, размер 2 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | float |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint16) массива double |
Структура F:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
3 | Размер (uint16) и адрес (uint16) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'YWB\xe2b?\xed\x96\x054p\xbe\xc6\x81\x00u\x9eX\xa9\x00\x02\x00\x96\xbf'
(b"\xe2\xc8I\xd3\x1c\xde\xe4Ow\xf3'\xd926\x06\xc7\x18\x8c\xda\xea\x08\xbf\x0bj"
b'-\xbfN+\xfc?\ri\xde\xd3\xe5!\xe1J+W=?\x03\x04\x9e?q\xa0P\xbfN?'
b'\xd6\x00\x00\x00%\x00\x00\x009?\xda<\x07\x8ew\x82\x88\xbf\xd8Y\t\xd7\xb7C'
b'd\xbf\xe6\xaa\xda\xd5)e\\\xbfLl\xdb\x00\x03\x00U\x87odoio^\xd1p\xc4\x00'
b'\x02\x00MZM\xfe\xbc\xfc\xa5\xc5\x8e\xbd\xf4i\xffG\x00m\x10\xfe\xc9\xa4cE')
Результат разбора:
'A1': -7582,
{'A2': 0.9245630287386681,
'A3': -127,
'A4': {'B1': 135,
'B2': 'odoio',
'B3': 1590784196,
'B4': [{'C1': 906413848,
'C2': -1931810296,
'C3': -0.5445888638496399,
'C4': [-0.8053586483001709, 0.5523966550827026]},
'C1': 3555008993,
{'C2': 1244354365,
'C3': 0.5117892026901245,
'C4': [0.943852424621582, -0.8056615591049194]}],
'B5': {'D1': 6507137124266263950, 'D2': -0.11934279650449753},
'B6': 71,
'B7': {'E1': -0.7985360026359558,
'E2': [0.40991391098763375,
-0.38043447557452326,
-0.7083563006701001]},
'B8': 285133220},
'A5': {'F1': 40536, 'F2': 169, 'F3': [99, 69]},
'A6': -0.5869492648407371,
'A7': 20343,
'A8': 4079474994}
Пример 2
Двоичные данные:
b'YWB\xf3\x93\xbf\xe3\xd3\xdd\xf2\xac\xfbZL\x00\x85s\xc3\xf2\x00'
(b"\x02\x00\xa6\xbf\xdd\xe9]\xf9\xf9\x8d\\\x1d\xe4nB'\xa8\xd7\xe8\xa4\xbd2h\x99"
b"E\xbfSv\x94?cC\xc9?e;\xdf\xdcs'\xae\x8eH^u\xbe\xef\xe3\xcc\xbf\x12\xc1"
b'\xc6?U]\xcdHr\xd0\x9f\xc9T\x1b\xd2\xbfu\x8a\x8e>\n\x1en\xbf;8'
b'\xae\x00\x00\x00%\x00\x00\x009\x00\x00\x00M?\xcd\x0c\xc6\xebP\xa8\xa8?\xddj'
b'\xf7\xefz\x9d\xc0\xbeK\x8bh\x00\x02\x00m\novdek\x8a|\xae\x8c\x00'
b'\x03\x00a\x8b\xed\xf1\xe9\xf0\ni\xef?\x1c\xceq{\x00}\x8e\xa7\xde*\x91O')
Результат разбора:
'A1': -3181,
{'A2': -0.6196126689681976,
'A3': 76,
'A4': {'B1': 10,
'B2': 'ovdek',
'B3': 2323426956,
'B4': [{'C1': 3622347965,
'C2': 845715781,
'C3': -0.8260281085968018,
'C4': [0.8877530694007874, 0.8954448103904724]},
'C1': 3698534318,
{'C2': -1907859851,
'C3': -0.46853482723236084,
'C4': [-0.573269248008728, 0.8334625363349915]},
'C1': 1215484063,
{'C2': -917234734,
'C3': -0.9591454267501831,
'C4': [0.13488170504570007, -0.7313336133956909]}],
'B5': {'D1': 10082981127809296879, 'D2': 0.6125250458717346},
'B6': 123,
'B7': {'E1': -0.19877398014068604,
'E2': [0.2269524239539511, 0.4596538389837086]},
'B8': 2393366058},
'A5': {'F1': 29635, 'F2': 242, 'F3': [145, 79]},
'A6': -0.4673685971412931,
'A7': 7652,
'A8': 1849829288}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x32 0x56 0x4e 0x51 0x44
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Структура B |
3 | Массив uint32, размер 5 |
4 | uint8 |
5 | Размер (uint32) и адрес (uint16) массива int16 |
6 | int64 |
7 | int8 |
8 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
3 | Размер (uint16) и адрес (uint32) массива структур C |
4 | Размер (uint16) и адрес (uint16) массива char |
5 | Адрес (uint16) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива float |
2 | uint8 |
3 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'2VNQD\xcf{\x81\xb3\x11\x00\x07\x00\x00\x00;\x00\x02\x00P\x00fnr\xc8\x05\xfb|'
(b'`e\x04\xe98j\x91qJt\xef*\xc7\x89u\x00\x00\x00\x02\x00w\x10\xa9\xbd'
b'\x99\xda\xe2\x84|qGi{O.\x88\xc0e\xddfS\x8bAY\xeb\xa3\xdb\xcc\xb4\xcbQ\xba'
b'zv>\x8c\x9b\x08\xbf\x0e\x81\x88\xbe\xaa\x809>\x9f\xb6?\xbe\x9duM\x00\x00'
b'\x00\x05\x00\x00\x00R\xeb\xbf\xe2\xcf\x02Mz\rlVE8\xc9')
Результат разбора:
'A1': 53115,
{'A2': {'B1': -127,
'B2': 45841,
'B3': [{'C1': 27003, 'C2': 79},
'C1': 11912, 'C2': 192},
{'C1': 26077, 'C2': 102},
{'C1': 21387, 'C2': 65},
{'C1': 23019, 'C2': 163},
{'C1': 56268, 'C2': 180},
{'C1': 52049, 'C2': 186}],
{'B4': 'zv',
'B5': {'D1': [0.27462029457092285,
-0.556663990020752,
-0.3330095112323761,
0.3119373023509979,
-0.3075355589389801],
'D2': 235,
'D3': -0.5877696526735412}},
'A3': [1853016069, 4219232357, 82393194, 2440120948, 4012558217],
'A4': 117,
'A5': [22085, 14537],
'A6': 1200699244170871932,
'A7': 113,
'A8': 71}
Пример 2
Двоичные данные:
b'2VNQD\xb4\x0e\xb42\xaf\x00\x04\x00\x00\x00;\x00\x02\x00G\x00U\xaet'
(b'\x07\x0b\xba\xbc\x99aZ\xa9\x80RRL\xaa<\xeaR\x83\xa9{\x00\x00\x00\x02\x00'
b'f\x89\xd5Y%!I\xa0\xea\x19\xb1\xdd\x15\xaa%K\xcbt\\\xb0\xda\x8c\x19y'
b'n\xbev\xd4\x8d>\x00g+\xbf.\xf9\x87\x00\x00\x00\x03\x00\x00\x00I\xb4?\xed'
b'\xf6\x15J\x15^8mJ\xdcP')
Результат разбора:
'A1': 46094,
{'A2': {'B1': -76,
'B2': 12975,
'B3': [{'C1': 56597, 'C2': 170},
'C1': 9547, 'C2': 203},
{'C1': 29788, 'C2': 176},
{'C1': 55948, 'C2': 25}],
{'B4': 'yn',
'B5': {'D1': [-0.24104519188404083,
0.1253935545682907,
-0.6834949851036072],
'D2': 180,
'D3': 0.9362894484465363}},
'A3': [2926839563, 3132922209, 1521057874, 1380756028, 3931276201],
'A4': 123,
'A5': [27978, -9136],
'A6': -8514801504466919190,
'A7': 25,
'A8': -79}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x56 0x4b
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Структура B |
3 | uint32 |
4 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив структур C, размер 5 |
3 | int64 |
4 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint8, размер 2 |
2 | int8 |
3 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива float |
2 | int16 |
3 | float |
4 | uint64 |
5 | uint16 |
6 | int64 |
7 | Размер (uint32) и адрес (uint16) массива double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LVK\xb6=\xffK\xd7\x91Y\n\xb0\xa4\r\x16*\xda\xfa{\xa3\xa6\xd2\xee\xd1'
(b'\x11\xfd=\xbav\x0c\xdbl\xcd\xb2\xc2\xb8\xa1\x00tB$W\xd2\x82\xbb\xf3\x7f8'
b'\xc6\xbb\xb6\x89\xee\xb3\xdd\xa9ud\xe3\xc8*\xbe\xa5\x08\xb5\r\xb7O'
b'\x0e;\x02\x00\x00\x00p\x00\xf4\x93\xe5\xc1\xd9\xbe:\xe8\xb9\xed\xbe\xe4'
b'=\x9d\xe7\x84\x14\x04\xee\x81A<\n\xdc\x02\x00\x00\x00x\x00\xe6g'
b'\xa9\xc4\x05\x8aJ\x0fP?pM#\xbe<l\xe4\xfe\xef\xf0\xd8\xbf\xce\x1cx\xed'
b'\xaf\xc1\xe0\xbf')
Результат разбора:
'A1': 15798,
{'A2': {'B1': 19455,
'B2': [{'C1': [215, 145], 'C2': 89, 'C3': -370937745098100726},
'C1': [123, 163], 'C2': -90, 'C3': 8555218599278669522},
{'C1': [12, 219], 'C2': 108, 'C3': 4788452998391182029},
{'C1': [36, 87], 'C2': -46, 'C3': -5279408192194626686},
{'C1': [137, 238], 'C2': -77, 'C3': -4743758378512832035}],
{'B3': 4255426345539274917,
'B4': {'D1': [0.8127332925796509, -0.15947508811950684],
'D2': -27660,
'D3': -0.42530742287635803,
'D4': 11330463746217338938,
'D5': 34023,
'D6': -2591192383547898860,
'D7': [-0.3897056569273365, -0.5236434591360195]}},
'A3': 3299436518,
'A4': -30203}
Пример 2
Двоичные данные:
b'LVK\xe3\x87\xe1q\xa8\x12\xd2\x83\xa2\x17\xb0\x1es\xac\xea&Xc\xb9\xfeC'
(b'\x07\xfe\x0b\x12-W7\xb0W6\xae\xdb4\x0b\xda\x96S\xa9\xa1\xa2v\x91\xe0k'
b'\xdb\xf9\xc1\x0c\x0b\x8f\xda\x15\xaa\x90T\x8b\x97\xde\x08@9\xb75-'
b'\xff\x99\x02\x00\x00\x00p\x00\\\x93W`\x15<\xe6\xd8\xed\x87\x8dn\xdd;\xd8\xf0'
b'\x10\xac\x13uYe5\\\x02\x00\x00\x00x\x00^\x99\xa7\x82\xe1\xfc\x1bg\x0e\xbe'
b'\x88\x87y?\xa8\x9d+\xbe\xe8|\xdd\xbf\x1c5\xf9\x1e\x92n\xd0?')
Результат разбора:
'A1': 34787,
{'A2': {'B1': 29153,
'B2': [{'C1': [168, 18], 'C2': -46, 'C3': -1536726797199629693},
'C1': [38, 88], 'C2': 99, 'C3': 3247671466959044281},
{'C1': [87, 55], 'C2': -80, 'C3': -7576731101445605801},
{'C1': [83, 169], 'C2': -95, 'C3': -4469299898812893534},
{'C1': [12, 11], 'C2': -113, 'C3': -2407302280485661222}],
{'B3': -7350106358114861048,
'B4': {'D1': [-0.1390651911497116, 0.974724292755127],
'D2': -27812,
'D3': 0.009117207489907742,
'D4': 4313725572240759014,
'D5': 61656,
'D6': 6644328260145753104,
'D7': [-0.46074884959531426, 0.2567487051463375]}},
'A3': 2192021854,
'A4': -799}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x50 0x57 0x4c 0x2b
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
2 | Адрес (uint16) структуры C |
3 | float |
4 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив double, размер 4 |
2 | int32 |
3 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив uint32, размер 5 |
3 | Структура E |
4 | Массив int32, размер 5 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива uint16 |
2 | int8 |
3 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RPWL+\x05\x00\x00\x00.\x00\x00\x00B\x00%\x01\xd8>n\x00\xc8D\x9f\x9bMTv'
(b'\x85\x94L}\xf1\tq\x80\xf8\xa2o/u\xc80\x18o\xcb\x15\x00\x00\x00\x1a\x00'
b"\x00\x00\x1f\x00\x00\x00$\x00\x00\x00)\x00\x00\x00\xe4'\xce\xbd\x1f\xd8"
b'\xdb?\x80\x9c+\x89Z\xd3\xb3\xbf\xa0\xc4`H\xfe\x8f\xb4\xbf\x16T\x9d4CQ'
b'\xeb\xbf\x1aeh\x98$\xa8\x0c\xcb~\xbe\xcd\x1d\xb3\xf0C\x87.\x97`\x1an0'
b'\x10\xde\xc75tI,Fhv\xb5\x94G\xd2\x8bFOR\x02\x00\x00\x00j\x00\x83[\xe4\xee'
b'\x1c_\x0f\x9f\xed\xdf}\xcd\xd0\x9cO/\xa2r9\x1b=\xbcz')
Результат разбора:
'A1': [{'B1': -56, 'B2': 1302044484},
{'B1': 84, 'B2': 1284801910},
{'B1': 125, 'B2': 2154891761},
{'B1': -8, 'B2': 1966043042},
{'B1': -56, 'B2': 3413055536}],
{'A2': {'C1': [0.43506616149590926,
-0.07744375084767974,
-0.08032216326752684,
-0.8536697414043626],
'C2': -1737988838,
'C3': -888362972},
'A3': 0.4218837320804596,
'A4': {'D1': 1900685268844015795,
'D2': [3725602926, 1232352711, 1986545196, 3527906485, 1380927115],
'D3': {'E1': [48766, 7629], 'E2': -125, 'E3': 58459},
'D4': [257891566, 2111827359, 1335677133, 963813935, 2059156763]}}
Пример 2
Двоичные данные:
b'RPWL+\x06\x00\x00\x003\x00\x00\x00K\x00k\x04\x00\xbey\x00\xab\xce$'
(b'\xbff\xa5\x12\x80;\xf8m\xf1<\xc2^\x8ec\xf8\xd9\x0c\x1e%t7\xc2\xf4Z'
b'\xc2R\xce\x15\x00\x00\x00\x1a\x00\x00\x00\x1f\x00\x00\x00$\x00\x00\x00)'
b'\x00\x00\x00.\x00\x00\x00x\x1e@\xecR\xeb\xe7?\xae7\x82E\xaam\xe1?\xc0'
b'\xfa/F\xfc\xd2\xeb\xbf\x10R\xab\xe1\x8eM\xe2\xbfY\x9b\xac m89@\x94\x91p\xe0K'
b'\xb4\x15$g\xa5\t\xb9\xa7\xe27\xd5Z\x8c\xff\xb81~\xb8\xcdld\xbb\x18\xb9'
b'\xd6\xbe\x10\xea\x96\x03\x00\x00\x00s\x00T\x7f\xe2fs\xc5[\xf1\xect[\xfa^'
b'\x1d|\xe6\x12\t\xaf-\xfaeS')
Результат разбора:
'A1': [{'B1': -85, 'B2': 1723802830},
{'B1': -91, 'B2': 4164648978},
{'B1': 109, 'B2': 1589787889},
{'B1': -114, 'B2': 215611491},
{'B1': 30, 'B2': 3258414117},
{'B1': -12, 'B2': 3461530202}],
{'A2': {'C1': [0.7474760641352551,
0.5446368558493668,
-0.8695050593231244,
-0.5719675452806445],
'C2': 548182873,
'C3': 1077491821},
'A3': -0.12501685321331024,
'A4': {'D1': -2114518048946314219,
'D2': [2354763063, 2117187839, 1684852152, 3602454715, 2531922110],
'D3': {'E1': [37268, 57456, 46155], 'E2': 84, 'E3': 57983},
'D4': [1539666790, 1534389489, 2082299642, -1358359834, 1399192109]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x6b 0x56 0x52 0x5a
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | double |
3 | Адрес (uint32) структуры D |
4 | Размер (uint32) и адрес (uint16) массива float |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива структур C |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | double |
4 | uint64 |
5 | float |
6 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | float |
3 | Адрес (uint32) структуры E |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива float |
2 | Массив double, размер 5 |
3 | int16 |
4 | uint8 |
5 | uint32 |
6 | float |
7 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'kVRZ*\x00\x00\x00\x90ua\xb1*\r\xc3\xbf\x9f\x00\x00\x00\x02\x00\x00\x00'
(b'\xa9\x00O\xb5\x1b\x85\x94\xb4\x1d\x95\xa6DA\x05`,pc\x07\x00\x00\x00\x1a\x00'
b'\x02\x00\x00\x00(\x00\x00\x00p\x9b\x8a\xac4\x9d\xc8?\\\x16\xf7<\x86=\xd7u'
b'V\xd2\x95\xbeJ>\xf3\xf0<S++\xbe9\xd1>\x11\x7f\t\xbf\xad\xc6\x9b\xbe'
b'\x03\x00\x00\x00T\x00\x00\x00`\xaek\xdc\xc2\xd8\xa6\xbf\x08\xaa\xd4\x9d'
b'\xff\xd5\xc0?\x16\x1d\xda\x86`\x16\xe7\xbf\x90R4v\x10\xda\xdc?\x90C~/'
b'5i\xec\xbfI\x1a\x05ST\xe4\x15Wq\x8d\xbdK]\xf7\xbd\xdc*\xdc\xf3x?`\x00\x00'
b'\x00>\x80\x19\xbe*/<?')
Результат разбора:
'A1': {'B1': [{'C1': 79, 'C2': 181},
{'C1': 27, 'C2': 133},
{'C1': -108, 'C2': 180},
{'C1': 29, 'C2': 149},
{'C1': -90, 'C2': 68},
{'C1': 65, 'C2': 5},
{'C1': 96, 'C2': 44}],
{'B2': 'pc',
'B3': 0.19229753899454805,
'B4': 8491323269188097628,
'B5': -0.29262036085128784,
'B6': 3110671488835075658},
'A2': -0.1488393179051113,
'A3': {'D1': 10972,
'D2': 0.9724709987640381,
'D3': {'E1': [0.4086436629295349,
-0.5370951294898987,
-0.30425015091896057],
'E2': [-0.044622506529631734,
0.13153071600511645,
-0.7214815744236229,
0.4508095888461776,
-0.8878427436448977],
'E3': 6729,
'E4': 5,
'E5': 367285331,
'E6': -0.06906383484601974,
'E7': -0.12078341096639633}},
'A4': [-0.14990326762199402, 0.7350946664810181]}
Пример 2
Двоичные данные:
b'kVRZ+\x00\x00\x006P\xe7\xb1\x8dN\xe9\xbf\xa0\x00\x00\x00\x02\x00\x00\x00'
(b'\xaa\x00\x04\x8cb\xcd\xabc$\x81\xf4j\x12\xb0\xc4\x81wyr\x07\x00\x00\x00\x1a'
b'\x00\x03\x00\x00\x00(\x00\x00\x00\xa4\xda\x90\t\xd6\x9d\xe8\xbf\xfb\xc9\n'
b'\xde\x1a/\xab,\xb9\xfdp\xbf$\x06U\xd3U\x8e\xc2\x86\xb8\x8f\xae>\xcd\xca*'
b'?f\n\xf0\xbe\x03\x00\x00\x00U\x00\x00\x00.\x87\x12\\\xea/\xe8?\xd8\xbd\xb1'
b'sWN\xc0?\xfe\xd9\xa7E\xa9\xb5\xe8\xbf\x84\x0b\xa7F\xf2\xd9\xe8'
b'\xbf\xb2\xb4\xc8\xf4h\x8f\xef\xbf\x95 \xf1\xa9j\x05\xd5OX\xd4\xbeI%S?'
b'\xa3a\xa7\x97\x1f=a\x00\x00\x00\tY\x87\xbe\xc9\xcf\xf7\xbe')
Результат разбора:
'A1': {'B1': [{'C1': 4, 'C2': 140},
{'C1': 98, 'C2': 205},
{'C1': -85, 'C2': 99},
{'C1': 36, 'C2': 129},
{'C1': -12, 'C2': 106},
{'C1': 18, 'C2': 176},
{'C1': -60, 'C2': 129}],
{'B2': 'wyr',
'B3': -0.7692671000321138,
'B4': 3218718151127255547,
'B5': -0.941371500492096,
'B6': -8736263827876411868},
'A2': -0.790839049785524,
'A3': {'D1': 24995,
'D2': 0.03896298632025719,
'D3': {'E1': [0.3409402370452881,
0.667156994342804,
-0.46882933378219604],
'E2': [0.7558490560806825,
0.127390796176299,
-0.7721754417860323,
-0.7766047840053578,
-0.9862561016976967],
'E3': 8341,
'E4': 241,
'E5': 3573901993,
'E6': -0.41473624110221863,
'E7': 0.8247876763343811}},
'A4': [-0.26435115933418274, -0.4840071499347687]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x1b 0x54 0x54 0x48 0x43
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | double |
3 | int32 |
4 | Размер (uint16) и адрес (uint16) массива char |
5 | int32 |
6 | float |
7 | Структура D |
8 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив char, размер 5 |
3 | Массив структур C, размер 6 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint8 |
3 | uint64 |
4 | double |
5 | uint32 |
6 | int32 |
7 | Массив int32, размер 5 |
8 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x1bTTHC\x00^\xbf\xa6\xe7m\xc0\xd2\xd7@\xb8\xa8\x88\xd9\x00\x02\x00\x88\xcd'
(b'\xcdbc<\xc0|\xf2\x94\xa6\xc7\x99\xdd^N\xfe\xc3\x9b\xeb\x07\xb1'
b'\xd6\xe5\x1b\xce\xbf\xc6A\xa0\xe4y\xf1\xa86\x9f\x14iS\xfb\xd0\xaf'
b'\xa9\xc9\xe3f\x051\x92\xf3\xeail\xdb\xac3\x8c\xa7\xa3v\xdd\xd8\xb1\x19vp'
b'K\x86\x14\x16\x99welzyhic\xf2\x1f4\xcd\x0e\x02\xa4#9\x04\x1e\x0c4\xeb\xe9'
b'"\x01\x848\xb6r\x8fH`\r\xc1+\x16\x0eR\x1f\xe3\xd7\\\xf6hs')
Результат разбора:
'A1': {'B1': 101,
{'B2': 'lzyhi',
'B3': [{'C1': 25586, 'C2': 523554062},
'C1': 676, 'C2': 590939166},
{'C1': 3124, 'C2': 3957924353},
{'C1': -31688, 'C2': 3060961096},
{'C1': 24589, 'C2': 3240826382},
{'C1': 21023, 'C2': 3822542070}]},
{'A2': -0.044734411037480104,
'A3': -1196914471,
'A4': 'hs',
'A5': -842177949,
'A6': 0.0234970785677433,
'A7': {'D1': 10711468227405172478,
'D2': 195,
'D3': 11235082155801779150,
'D4': -0.17387782245704142,
'D5': 916395113,
'D6': 1409011887,
'D7': [-1446386842, 87134963, -362189605, -1405907801, -1552491048],
'D8': 12761361243806503958},
'A8': -26249}
Пример 2
Двоичные данные:
b'\x1bTTHC\x00^?\xe76\xaco\x11\xb9\xaali\xfd\xcc\x00\x02\x00\x88nqw\xba='
(b'\xa1\x16\xcee_\xc9@@#"\xeekq9\xfe\xd3D\xbc^r\xbf\xe9\xfb\xa1\x13\xbd\xd4\xf4'
b'\xa0\xe0\xb5f\xa3\xfb\xd4\xb6\xaf\x16\xfc\xf9\x83\xfb=el\x94\xd8\x1f.*]3'
b'9\xad\x03\xc9\xf9\xfc\x19\xda>MU\xd5om2yngur\x87\xeb\xc8h\x89g8\x02'
b'\x93\xfa\xc6I3\x894\x8d|T/\xa2\xad\x8e_\xd2\xc0~\xfb\xb3<\xf8?1\xd7\x17x_tb')
Результат разбора:
'A1': {'B1': 50,
{'B2': 'yngur',
'B3': [{'C1': -30741, 'C2': 3362294119},
'C1': 14338, 'C2': 2482685513},
{'C1': 13193, 'C2': 881687636},
{'C1': 12194, 'C2': 2911789010},
{'C1': -16258, 'C2': 4222827768},
{'C1': 16177, 'C2': 3608639583}]},
{'A2': 0.7254240197487907,
'A3': 1818885580,
'A4': 'tb',
'A5': 1852929978,
'A6': 0.07865677773952484,
'A7': {'D1': 7304778398409368302,
'D2': 107,
'D3': 8158832383303114354,
'D4': -0.811966455991437,
'D5': 2699081062,
'D6': -1543777098,
'D7': [-1357447943, -2080686747, 1821693983, 774528307, 967640009],
'D8': 18013301034713961941},
'A8': 28525}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x87 0x41 0x58 0x4e
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | int16 |
3 | int32 |
4 | Адрес (uint16) структуры B |
5 | Структура E |
6 | uint64 |
7 | uint32 |
8 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Структура C |
3 | int32 |
4 | uint16 |
5 | Размер (uint16) и адрес (uint32) массива адресов (uint32) структур D |
6 | uint16 |
7 | Массив double, размер 4 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив char, размер 5 |
3 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint16 |
2 | uint8 |
3 | Массив int8, размер 5 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x87AXN\xb3\x06\x94\x14[\xde\xfb\xcfx\x07\x84R\xdd\xf9\x00D\x00\x03\x00\x82'
(b'd\x1e\xab\xa4f\xffpqG\xca&\xbe\x83\xd1\x0e\xbf\xee\xff\x07\xaa'
b'\xba\xf7\x9d\xbf\x90~\xb7\t\x97\x1fR\xf3\x00\x00\x00,\x00\x00\x000'
b'\x00\x00\x004\x04\xa4suwfguc\xcb\xb4$\x05\xc3\x93\xec0(a\x0e\x82\x1c\x00\x03'
b'\x00\x00\x008fk\xbf\xd1\xe6\x00\xec%\xcb\xfc?\xea\xabJ\x1e\xa2\xc6p?\xd2'
b'\xe6\xbe]\xffc\xac\xbf\xee\xcb)3\x1e\xdf6\xdc|}\x12\x01\x92')
Результат разбора:
'A1': -5546583075898590257,
{'A2': 30727,
'A3': -2074944007,
'A4': {'B1': 1188,
'B2': {'C1': 115, 'C2': 'uwfgu', 'C3': 7191039296835654636},
'B3': 807952654,
'B4': 33308,
'B5': [{'D1': 186, 'D2': -9, 'D3': -25153},
'D1': 144, 'D2': 126, 'D3': -18679},
{'D1': 151, 'D2': 31, 'D3': 21235}],
{'B6': 26219,
'B7': [-0.2796633058671316,
0.8334093664509066,
0.29533347300962975,
-0.9622999189805117]},
'A5': {'E1': [56444, 32018, 402], 'E2': 100, 'E3': [30, -85, -92, 102, -1]},
'A6': 8102336138175218641,
'A7': 247459583,
'A8': 1962}
Пример 2
Двоичные данные:
b'\x87AXN\x17\x1b\xf7{\xd8\x91\x9a%\xe7\x96\xd3sF\x98\x00<\x00\x02\x00z'
(b'=\xfa\xdfcE9\x94z\x0f\x12gb,\x89\x15\x02\xca`\x05\xfdz\x03\xe8\x84\x86X5\xe8'
b'\x00\x00\x00,\x00\x00\x000\x1f}&frxfy\xdd\x93eC\xe3X\x80\xe7/<\xd46'
b'\xebt\x00\x02\x00\x00\x004\xb0\xb6?\x9f\xb9\xd4}\xe0!\x00\xbf\xde\xaf\xd9-('
b'\xa7\xd4\xbf\xcd\xb5\xff\x19X\xe2\xf0?\xe9\xd5\xf5i\xf6{\xc8\xd1t\x8d\x12')
Результат разбора:
'A1': 1665196598529989157,
{'A2': -6250,
'A3': -747420008,
'A4': {'B1': 8061,
'B2': {'C1': 38, 'C2': 'frxfy', 'C3': -2480527627499568921},
'B3': 792515638,
'B4': 60276,
'B5': [{'D1': 122, 'D2': 3, 'D3': -6012},
'D1': 134, 'D2': 88, 'D3': 13800}],
{'B6': 45238,
'B7': [0.030982322867232348,
-0.47948293123283503,
-0.2321165918126762,
0.8073679990374041]},
'A5': {'E1': [53620, 36114], 'E2': 61, 'E3': [-6, -33, 99, 69, 57]},
'A6': 10698880436490349705,
'A7': 352504416,
'A8': 1533}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x43 0x49 0x40
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | float |
3 | int64 |
4 | int8 |
5 | Массив структур B, размер 4 |
6 | Структура D |
7 | int16 |
8 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | Адрес (uint32) структуры C |
4 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
3 | double |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint16) и адрес (uint32) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HCI@\x00\x07\x00\x00\x00L?^\x90\x9f\xd3m\x81D\x8d;\xfb1\x83$2\xaf\x9b0'
(b'\x00\x00\x00W\x06ds\xb1\xd8N\x00\x00\x00n\xa6\xaa}6o@\x00\x00\x00\x84'
b'\xb8\xcf\x1f\x08oE\x00\x00\x00\x9a\x123\x00\x04\x00\x00\x00\xae\x03d'
b'\xb0\x15\xf7Wsqpdzod\xdb8@G\xb9\x94\x88(\x0c\xf9\xa2\xd8\x00\x04\x00S?'
b'\xd6\xf0\x9dRLT\xf0\x1c\xa3\xd6\x81e\\\x83\xb1\x9a\xf2\x92\x00\x03'
b'\x00k\xbf\xe9\xf8\x93\xd1\xe3"z\x06\xf4\xe6\xa4C\xd3h\xb3@x\x00\x02\x00\x82'
b'?\xe2\xafUx\xc5\xa9D"\x1b\xca[\xd6\xfexS\x00U\x00\x02\x00\x98\xbf\xd5'
b'\xf9\x84\x06J\xa3\x10\xd5\xfb-\xa1\x15B\x15\xdd')
Результат разбора:
'A1': 'sqpdzod',
{'A2': 0.8693942427635193,
'A3': -3211768827818017999,
'A4': -125,
'A5': [{'B1': 607301531,
'B2': 48,
'B3': {'C1': 13372462899167601368,
'C2': [219, 56, 64, 71],
'C3': 0.3584359458630635},
'B4': 6},
'B1': 1685303768,
{'B2': 78,
'B3': {'C1': 9323960324230673042,
'C2': [28, 163, 214],
'C3': -0.8115939235077143},
'B4': -90},
'B1': -1434634641,
{'B2': 64,
'B3': {'C1': 16619483100177711224,
'C2': [6, 244],
'C3': 0.5839030608015396},
'B4': -72},
'B1': -820049809,
{'B2': 69,
'B3': {'C1': 14581484606970855509,
'C2': [34, 27],
'C3': -0.34335423101815454},
'B4': 18}],
'A6': {'D1': 51, 'D2': [54779, 11681, 5442, 5597]},
'A7': 868,
'A8': -1340737705}
Пример 2
Двоичные данные:
b'HCI@\x00\x05\x00\x00\x00L\xbfL"\xac:\x07\x94\x16\xf1\xba\xda\x1d\xb3\xfdJlB^'
(b'\x00\x00\x00S\x14\x91\xdc\x12M\xf4\x00\x00\x00kSY i^\xd2\x00\x00\x00\x83'
b'i\x84\xdf\xbd\xcb\xd4\x00\x00\x00\x9a\xb6\xc1\x00\x03\x00\x00'
b'\x00\xae\xaf\x8d\x9f\x8d\x89\x95iwuhx\xc8O\xc9%q\xa0fW!\xef\x00\x02\x00Q?'
b'\xe5\xd3L8\x85\x9d\xe0\xa7\x97\xc9y\x9e\xb5kH\xdd#\xb1\xfa\x00\x04\x00g?'
b'\xecOCM\x90v\xaa\x9e#\xad\xd1\x94(WB\xb1H\xda\xa5\x00\x04\x00\x7f\xbf'
b"\xeb\x95\xffb\xb2b\xce\x90\xeey\xc7\xb0\x90C'\xf5\x00\xf1\x00\x03"
b'\x00\x97\xbf\xe3\xc7{i\xfa\xe1\xcaN\xb8\x10\x14\x1bT')
Результат разбора:
'A1': 'iwuhx',
{'A2': -0.7974040508270264,
'A3': 4181473605302540829,
'A4': -77,
'A5': [{'B1': -45454270,
'B2': 94,
'B3': {'C1': 14494115909487501807,
'C2': [200, 79],
'C3': 0.6820431808418412},
'B4': 20},
'B1': -1847848371,
{'B2': -12,
'B3': {'C1': 11436164789469164026,
'C2': [167, 151, 201, 121],
'C3': 0.8846756472518866},
'B4': 83},
'B1': 1495296350,
{'B2': -46,
'B3': {'C1': 10675878860635560613,
'C2': [158, 35, 173, 209],
'C3': -0.8620602538749951},
'B4': 105},
'B1': -2065711669,
{'B2': -44,
'B3': {'C1': 14389159427556311281,
'C2': [144, 238, 121],
'C3': -0.6181008405611064},
'B4': -74}],
'A6': {'D1': 193, 'D2': [20152, 4116, 6996]},
'A7': -20595,
'A8': -1618114155}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x49 0x5a
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int32 |
3 | Адрес (uint32) структуры C |
4 | Структура D |
5 | Структура F |
6 | uint32 |
7 | Массив uint16, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | double |
3 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив char, размер 5 |
2 | Массив структур E, размер 5 |
3 | uint32 |
4 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
Структура F:
Поле | Описание |
---|---|
1 | Массив float, размер 7 |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'IIZ\x98`\xfd\xa2}M9\x96\xc4\x00\x00\x00]hztusR6\xbf6\xc9\xe7\xfa\x92>\x7fe'
(b'\xdel}\xbe\xbe[\xad\xb1\x8f=\xed\xe2S\x11G?\x07\xbaq\x14\xb4\x12\x013'
b'\xbfz\xeep\xbfN\xae\xff\xbf\x1a\x02\x90=O\x9c\x1d>\xdf+(\xbfc\xc9\xd2'
b"?\x03\xde\x0b'\x1a\xd8\xa0Bs\r\xa5u\xbf\xdcT\xd9\xd6\xf76\xe8\xbf\xe4\x84"
b'\xa6\xa3\xe2\xceT\xdf]\xcaN')
Результат разбора:
'A1': {'B1': -26528, 'B2': -3, 'B3': 41597},
{'A2': 1295619780,
'A3': {'C1': -0.44267889015905704,
'C2': -0.6411927414796517,
'C3': -547501490},
'A4': {'D1': 'hztus',
'D2': [{'E1': 21046, 'E2': -0.7140182852745056},
'E1': 64146, 'E2': 0.24941202998161316},
{'E1': 27773, 'E2': -0.3717931807041168},
{'E1': 45455, 'E2': 0.11615433543920517},
{'E1': 4423, 'E2': 0.5301886200904846}],
{'D3': 347345409,
'D4': 51},
'A5': {'F1': [-0.9802007675170898,
-0.8073577284812927,
-0.6016016006469727,
0.05068599060177803,
0.43587613105773926,
-0.8897982835769653,
0.5151068568229675],
'F2': 39},
'A6': 450404418,
'A7': [29453, 42357]}
Пример 2
Двоичные данные:
b'IIZ|\xe2\x8b/\xf5\xc9\x82H\xc1\x00\x00\x00]oqlow1\x1e?T8\xe9\x87'
(b'\x7f?\x04\x82\xf7=K\xbd\xbeE=W\x85\xbd\xe7\x0f~\xb0>?.\x918k\x0f\xa8\xd4\x17'
b'\xbex\x84\xa1\xbc\xfb\xd17\xbf\x06\xe0\x10\xbfdP&\xbd\x97\x10\xcb>Q9a'
b'?`\xa2\xb5\xa7/\xb9e^)?l-?\xd7\xc6\xd4\x8c.\xae\xd4?\xeb\x1fwy}\xf4'
b'\x1a\x03\xd3\xfa\x84')
Результат разбора:
'A1': {'B1': 31970, 'B2': -117, 'B3': 12277},
{'A2': -914208575,
'A3': {'C1': 0.37151063623126146, 'C2': 0.8475911496058217, 'C3': 64223876},
'A4': {'D1': 'oqlow',
'D2': [{'E1': 12574, 'E2': 0.8289933800697327},
'E1': 34687, 'E2': 0.5176233649253845},
{'E1': 15691, 'E2': -0.09290549904108047},
{'E1': 22405, 'E2': -0.1128225177526474},
{'E1': 45118, 'E2': 0.6819033622741699}],
{'D3': 1796188372,
'D4': 23},
'A5': {'F1': [-0.2426934391260147,
-0.03073940984904766,
-0.5268564224243164,
-0.8918479681015015,
-0.07376249879598618,
0.20432044565677643,
0.8774827122688293],
'F2': -89},
'A6': 800679262,
'A7': [10559, 27693]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x4a 0x5a 0x41 0xcb
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Структура C |
3 | Массив char, размер 8 |
4 | uint16 |
5 | Структура E |
6 | int8 |
7 | Размер (uint16) и адрес (uint32) массива float |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
3 | float |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
3 | int64 |
4 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур D |
5 | int8 |
6 | int64 |
7 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива float |
2 | uint16 |
3 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | uint64 |
4 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'KJZA\xcb\xfe\xc8`RYu<\xbf\xcb"G\xbe\x96y\xcb1\x05h\xe6\x89,\x02\x00'
(b'\x00\x00\x7f\x00\x00\x00\xce\xff\xfc\x8bv\xf4\xa8\x05\x93$ojwqthvw\xab%/\xa8'
b'\xa9\xdds?e\xfd\xb3o\x16\xd0"L\x82\xe2\xecB\xa9\x06\x00\x83\x00\x00\x00\x0f'
b',\x90>(Ih\xbfL\xc7R\xbf\x03\x00\x00\x00O\x00\x88\xaf\xfbn\xa5\x12\x85'
b'$+\xbf\x00\xb0\xf1\xbe\x90aR\xbf\x03\x00\x00\x00g\x00\xf0\xdb_\xe8x\xc1['
b'\x00s\x00L5v\xbf*\xae1\xbe\xc0(\t\xbf\xa1\xa0\xac>\x89\xe6F?.\x15#\xbf')
Результат разбора:
'A1': {'B1': -14082, 'B2': 21088, 'B3': -0.7361655831336975},
{'A2': {'C1': -0.1944686621427536,
'C2': -106,
'C3': 3209349543916325753,
'C4': [{'D1': [0.2815861403942108,
-0.9073662757873535,
-0.8233535289764404],
'D2': 44936,
'D3': 312831739},
'D1': [-0.6685259938240051,
{-0.4720458984375,
-0.8218011856079102],
'D2': 56304,
'D3': -1049040801}],
'C5': -50,
'C6': -7852684607336219393,
'C7': 36},
'A3': 'ojwqthvw',
'A4': 9643,
'A5': {'E1': 43055,
'E2': 0.9526010155677795,
'E3': 5486176090872610149,
'E4': 1122820738},
'A6': -87,
'A7': [-0.9617507457733154,
-0.1735159456729889,
-0.5357780456542969,
0.3371630012989044,
0.7769551873207092,
-0.6370419263839722]}
Пример 2
Двоичные данные:
b'KJZA\xcb\xe5\x8d\xa9\xb42\xb3\x0b?|\x9d\xa8\xbe\xc7\xdf(fD\xbc\x92'
(b'\xdc\xf4\x02\x00\x00\x00{\x00\x00\x00\x86\xbb\xab\xf0<\x1eO\\e\x81wpxhyinm'
b'\x01\xfaP\xc9`;{\xbf\xe6\x0c`)XR\xa6\xf10\xc6~\x8eO\x02\x00\x7f\x00\x00\x00Q'
b'T\xa2\xbe\xc7uy\xbf\xcb\xf8\x0e\xbf\x03\x00\x00\x00O\x00I\x0b\xf8\x8f\x98 g'
b'f\x1c?[\xb7\x08>\x02\x00\x00\x00g\x00\x10\x93\xe35l\x85[\x00o\x00\xccjp\xbfT'
b'\xabN>')
Результат разбора:
'A1': {'B1': -29211, 'B2': -19287, 'B3': 0.5457030534744263},
{'A2': {'C1': -0.3293265104293823,
'C2': -57,
'C3': -802605296279738145,
'C4': [{'D1': [-0.3170495331287384,
-0.9744533896446228,
-0.5584837794303894],
'D2': 2889,
'D3': 546869240},
'D1': [0.6109375357627869, 0.13351194560527802],
{'D2': 37648,
'D3': -2056505885}],
'C5': -122,
'C6': 7303799686978120635,
'C7': 129},
'A3': 'wpxhyinm',
'A4': 64001,
'A5': {'E1': 51536,
'E2': -0.9813747406005859,
'E3': 17412695547879361766,
'E4': 2390672944},
'A6': 79,
'A7': [-0.9391295909881592, 0.20182543992996216]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x4b 0x51
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур B |
2 | int64 |
3 | Адрес (uint32) структуры C |
4 | int8 |
5 | uint16 |
6 | int8 |
7 | Массив int8, размер 5 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | Размер (uint32) и адрес (uint16) массива char |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint8 |
3 | float |
4 | int16 |
5 | Размер (uint16) и адрес (uint32) массива int16 |
6 | Размер (uint16) и адрес (uint16) массива double |
7 | uint64 |
8 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'IKQ\x03\x00\x00\x00,\x00\x00\x00$|\xfd0T1\xbd/c\x00\x00\x00T\x10j\x867'
(b'}\x18\xa8\x0cfgwhlrveavni\x97\xaa\x94\xbe\x02\x05\x00\x00\x00 \x00\x90'
b'\xa4\xda\x9c2\x05\x00\x00\x00%\x00\x07P\xbf\xc4\xbb\x02\x00\x00\x00*'
b"\x00\x8c\x13\xb3'\x92\xd2\x1e^\x07\xc9\xc6)\xeb\xbflp\xd8\x9cv\xad\xd7?\xbe"
b'H\x19`\x1d\x89\xfb\xbd>\xce/\x03\x00M\x00\x00\x00\x02\x00S\x00\xf9\xd0^\xf7'
b'P\xd0\x1f\x8a\x19\xb8\x83')
Результат разбора:
'A1': [{'B1': -105, 'B2': 46044330, 'B3': 'fgwhl'},
{'B1': -112, 'B2': 849140388, 'B3': 'rveav'},
{'B1': 7, 'B2': 3150233424, 'B3': 'ni'}],
{'A2': 3439959928049859620,
'A3': {'C1': 1612269758,
'C2': 29,
'C3': 0.37105968594551086,
'C4': 12238,
'C5': [5004, 10163, -11630],
'C6': [-0.8488496710151059, 0.36996236149730666],
'C7': 9952902747678232825,
'C8': {'D1': 25, 'D2': -31816}},
'A4': 84,
'A5': 27152,
'A6': -122,
'A7': [55, 125, 24, -88, 12]}
Пример 2
Двоичные данные:
b'IKQ\x04\x00\x00\x000\x00\x00\x00\xa3d\xb4\x90\xe4!O\xf2p\x00\x00\x00\xfb'
(b'8\xdcM\x1eNI\xf6\xa7inkyjaohdnzyliwo\x18\x1b,@\x8e\x05\x00\x00\x00 \x00G'
b'Cq\x1a\xaa\x05\x00\x00\x00%\x00\x1c\x8a\x80u\x85\x03\x00\x00\x00*'
b'\x00\xff(\xd0#\x88\x03\x00\x00\x00-\x00\x81\x91\xb2\xdc\x10e#\xed'
b'\x03\xd9\xb9?^D\xf2\xacG\xc9\xe8?EJ$2|\x83\xbbd?\x1a\x84\x02\x00\\\x00\x00'
b'\x00\x02\x00`\x00\xe0\x87w \xe6\xa4\xc2\x9e\xa0\xd9 ')
Результат разбора:
'A1': [{'B1': 24, 'B2': 2386570267, 'B3': 'inkyj'},
{'B1': 71, 'B2': 2853859651, 'B3': 'aohdn'},
{'B1': 28, 'B2': 2239070346, 'B3': 'zyl'},
{'B1': -1, 'B2': 2284048424, 'B3': 'iwo'}],
{'A2': -986532527806847837,
'A3': {'C1': 841239109,
'C2': 124,
'C3': 0.8934862017631531,
'C4': -31718,
'C5': [-28287, -9038],
'C6': [0.10096764125355073, 0.774570310388423],
'C7': 11439887311768618976,
'C8': {'D1': -96, 'D2': 8409}},
'A4': -5,
'A5': 56376,
'A6': 77,
'A7': [30, 78, 73, -10, -89]}