Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x57 0x5a 0xd1
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Массив float, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C |
4 | float |
5 | Адрес (uint16) структуры D |
6 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint16) и адрес (uint16) массива int16 |
3 | int32 |
4 | uint32 |
5 | Размер (uint16) и адрес (uint32) массива int32 |
6 | int32 |
7 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HWZ\xd1\x00\x00\x00T?u\xeeZ\xbfS\xb3\x80lfpyctp\xbe\xa4\x1d\x1b@,3\x00\x00'
(b'\x00\x16\x00\x00\x00\x1a\xd0eN\xe9\xc1\xc3R\x1a\xeb\x1b\xea\xda\xbf\x18'
b'\xfc\x14\x1d\x11\xc1\xb2\x00\x04\x00&\x9bk(\xa0\x16\x94\x01X\x00\x02'
b'\x00\x00\x00.\x9a<\xafH\xa9]\xe9F?*\x8b\xe3\x00\x06\x00\x00\x00\x10\x00\x02'
b'\x00\x1e=\x14\xd72\x006\xaflF\xc3')
Результат разбора:
'A1': {'B1': 0.6661970019340515,
{'B2': 'lfpyct',
'B3': [{'C1': 28862, 'C2': 42013}, {'C1': 6976, 'C2': 11315}],
'B4': 0.03633803874254227,
'B5': {'D1': 487702962,
'D2': [-12187, 20201, -15933, 21018],
'D3': -1687476064,
'D4': 378798424,
'D5': [-350491942, -1088881644],
'D6': -1707299000,
'D7': -1453463226},
'B6': -1351858493},
'A2': [0.9606682062149048, -0.8269577026367188]}
Пример 2
Двоичные данные:
b'HWZ\xd1\x00\x00\x00Y\xbf\x1b\x11\xac>@Uejhqsn#<ZF\xb2\x8d\xac\xc4\xd6\x9bp'
(b'\x1f\x00\x00\x00\x15\x00\x00\x00\x19\x00\x00\x00\x1d\xf2\xcd\xee\x9b\xccBy'
b'\x88X_B#\x98]\x81"\x8cb\x00\x03\x00-\xee\xcc$\x85\n\x19\x81\x91\x00'
b'\x02\x00\x00\x003\x9e\xebCC\xb3\xa8\x84R>DS\xee\x00\x05\x00\x00\x00\x10\x00'
b'\x03\x00!?Q\x87\x85\x00;\x02\\j\xfe')
Результат разбора:
'A1': {'B1': 0.191726416349411,
{'B2': 'jhqsn',
'B3': [{'C1': 9020, 'C2': 23110},
'C1': -19827, 'C2': 44228},
{'C1': -10597, 'C2': 28703}],
{'B4': 0.8184741139411926,
'B5': {'D1': -2128442270,
'D2': [-3379, -4453, -13246],
'D3': -288611195,
'D4': 169443729,
'D5': [2038978655, 1109629021],
'D6': -1628748989,
'D7': -1280801710},
'B6': 39611134},
'A2': [-0.6057384014129639, 0.1878257542848587]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x2 0x51 0x4b 0x5a
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 4 |
2 | Адрес (uint32) структуры B |
3 | Размер (uint16) и адрес (uint32) массива int16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 4 |
2 | int16 |
3 | Массив int16, размер 3 |
4 | Массив uint32, размер 2 |
5 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x02QKZculj\x00\x00\x00R\x00\x03\x00\x00\x00n\xbf\xef1\x88c\x05V\xa0\x92B'
(b'z\xf0\xdb\x1d\x93\x15?\xdc\xdb\xc3\xfe\xab\x13\x84\xfdg"\x96\x92['
b'\x8c:\xbf\xe4&:Mt\xca2\xc1@\x00\xee\xe9v;z?\xe5-\xc9X9@\xe4m\x8c\xc3s\xf1&'
b'<\xac\x00\x12\x00"\x002\x00B\xff\xc5n\xfa$;\xeb\x07\x9bV\xc5\x19\x8d\xc4'
b'\x8d\xbb\xb0:\xc4\xc0B\x17\x85\xa0\x83P')
Результат разбора:
'A1': 'culj',
{'A2': {'B1': [{'C1': -0.9747964796067272, 'C2': -7907622820822281451},
'C1': 0.45091342801998047, 'C2': -187142829416674246},
{'C1': -0.6296664727036101, 'C2': -4521612999760921734},
{'C1': 0.6618391726606458, 'C2': 7893899149608107180}],
{'B2': -59,
'B3': [28410, 9275, -5369],
'B4': [2606155033, 2378468795],
'B5': {'D1': 45114, 'D2': 196, 'D3': -64}},
'A3': [16919, -31328, -31920]}
Пример 2
Двоичные данные:
b'\x02QKZuxei\x00\x00\x00R\x00\x02\x00\x00\x00n?\xe1\xd8\x9b}O-\xf6\xf6\xaf'
(b'U=\xfc^\xf9a?\xe2"\xc2B\x8c\x13N9\x80\x05\x84#%6\xb8\xbf\xb6\xfd.h\x9c'
b'\xf6\xc0\xd0\x17\x136\xde\x12\xf1\xf4\xbf\xef\x1d\xd7\x0b\xb4'
b'\xd2\x8a\xf9\xe0\x8f\xa3Aax\x8c\x00\x12\x00"\x002\x00B%\xa9\xb1\x0b\xb1z'
b'\xb5t=1\xe3\x02\xe9\xd4\x92\xae\x7f\x14\xf5\x1a\xe7i\x8eS')
Результат разбора:
'A1': 'uxei',
{'A2': {'B1': [{'C1': 0.5576913306662721, 'C2': -671224094739465887},
'C1': 0.566743020987454, 'C2': 4143317722264319672},
{'C1': -0.08980073980361691, 'C2': -3452269462981250572},
{'C1': -0.9723925808562666, 'C2': -441194832142960500}],
{'B2': 9641,
'B3': [-20213, -20102, -19084],
'B4': [1026679554, 3923022510],
'B5': {'D1': 32532, 'D2': 245, 'D3': 26}},
'A3': [-6295, -29101]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x58 0x4a 0x5a
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Массив uint32, размер 3 |
3 | double |
4 | int8 |
5 | double |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
3 | Адрес (uint32) структуры C |
4 | Адрес (uint32) структуры D |
5 | float |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
3 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | Массив структур E, размер 2 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint16) и адрес (uint32) массива uint32 |
3 | int8 |
4 | Массив int8, размер 5 |
5 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RXJZ\x00\x84\xca\xf0wLiG\x9a\\M\x1cb\x07\xbf\xaa\x05\xc8\x9c\x9ae\xa0\x18?'
(b'\xe0\x81\xcd\xe9\xf7\xe5<\x91\t0\x1aX\x99\x0e\xdcx\xd7\xee\x99o'
b'\xa2\x84\x9b\xbfpjdu)?\xd8\x87\xb6\x0b|n$\x80T\xfcs\xdd\xb5#\xd0&\x9bl'
b'?\xecF\xcc\x90\xf5\xe9\xe8\x00\x02\x00\x00\x000\x9fk\x95\x11\x85\xcf'
b'\xbb\xd1Z\x90\xf27}\x02\xbf\xb1\x88\xfe\xb8;\xa8\xf0\x00\x02\x00\x00\x008Y`'
b'\xca\xb6\x9a:\xd6\xca\xe5\xf0l\xc3\xf1}\xbf\x12\xe3; }\xa9\x8a\x00\x00\x00#'
b'\x00\x00\x00@?:\xe6\x0b')
Результат разбора:
'A1': {'B1': -0.5737797617912292,
{'B2': 545106314,
'B3': {'C1': 2433298458, 'C2': 6384150286857399961, 'C3': 111},
'B4': {'D1': 2630195625636771107,
'D2': -802776212,
'D3': [{'E1': 0.8836424666654326,
'E2': [2726599615, 1886020725],
'E3': -97,
'E4': [107, -107, 17, -123, -49],
'E5': 13533697933810564354},
'E1': -0.06849662778737176,
{'E2': [692050055, 3054206062],
'E3': 89,
'E4': [96, -54, -74, -102, 58],
'E5': 15477435890191823229}]},
'B5': 0.7300726771354675},
'A2': [3404756812, 1766300252, 1293705735],
'A3': -0.05082537566813561,
'A4': 24,
'A5': 0.5158452577299282}
Пример 2
Двоичные данные:
b'RXJZ\x00\x84j/\xf5\x15\x1a\xa6\xaf\x9b\r\x02f\x85\xbf\xd6\xad\xf6a\xb2'
(b'd(\xec\xbf\xba\xd9\x8a\xaf\x03\xc7\x90\x14\x9e\xfa\x9e\x8e\x97\xd0\xc74'
b'\x90#\xdeGa\xf3tEL\x15enU\x98wf\x93Y<\x07EC\x9c@}\x9a\xa5\xc9\x98n\x95G'
b'\xbf\xecaRLtNj\x00\x02\x00\x00\x000\x80\xdf"\x91S\x17\xbc\xf6\x93E4\xbd\xdeo'
b'\xbf\xd6\xa4[%|\x9d\x14\x00\x02\x00\x00\x008\xf6\xd6\xd3~\xca\xf9'
b'\xae\xbe\x8f\xac5\xba\xff\xc0>\x96\x0ff\xfd9b\x17\x00\x00\x00#\x00\x00\x00@'
b'\xbfM\x7f\xa9')
Результат разбора:
'A1': {'B1': 0.2930862307548523,
{'B2': 4248396311,
'B3': {'C1': 345963166, 'C2': 10274910628868006878, 'C3': 71},
'B4': {'D1': 4991004612855768521,
'D2': -1737583289,
'D3': [{'E1': -0.8868800633667437,
'E2': [1643344965, 1276470638],
'E3': -128,
'E4': [-33, 34, -111, 83, 23],
'E5': 13616232448848158319},
'E1': -0.3537814966279751,
{'E2': [1436055398, 2472098823],
'E3': -10,
'E4': [-42, -45, 126, -54, -7],
'E5': 12591659577973080000}]},
'B5': -0.8027291893959045},
'A2': [1781527829, 447131547, 218261125],
'A3': -0.35436782398898226,
'A4': -20,
'A5': -0.10488192341634162}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x59 0x47 0x81
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Структура B |
3 | Адрес (uint32) структуры C |
4 | uint16 |
5 | int16 |
6 | Размер (uint16) и адрес (uint16) массива int32 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Массив char, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур D |
2 | uint16 |
3 | Массив int16, размер 7 |
4 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
3 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VYG\x81 FZ\xbe\x84\xefjtx\x00\x00\x00~U+\x02@\x00\x04\x00\x96\xb3N'
(b'\xd6w"\xeb\x00\x02\x00\x1a?\xe8z\x12\xf6X\x1e|\x9f\xc1\x80\xbd^\x8d\x00\x02'
b'\x00,\xbf\xe6K\xe9\xcc\x82\xbb\xe4s\xec\xa5Bq\t\x00\x02\x00>\xbf\xd5C\xe8'
b'\xa7\t\xb0P\x03\x054\x9e4\xfc\x00\x02\x00P?\xd6\xa4K\xb6\xbcS\x80\xfa\xcf'
b'\xa6@m\xe0\x00\x02\x00b?\xc7\xd3=X\xdc\x0e\xe0\x00\x1c\x00.\x00@\x00R'
b'\x00d\x00\x05\x00\x00\x00t\x08\xab| \xbe\xf9mT\x1fJ=\xef\xc0\xc7\xc2\xfc'
b"#g\xb1'6M\x1dB\x80\xfb\x92\x18o\x95\x0c\xf1<\x03")
Результат разбора:
'A1': 538986074,
{'A2': {'B1': -0.25963908433914185, 'B2': 'tx'},
'A3': {'C1': [{'D1': 3598131947, 'D2': [179, 78], 'D3': 0.764901620045705},
'D1': 2159894157, 'D2': [159, 193], 'D3': -0.6967667574261864},
{'D1': 2772594953, 'D2': [115, 236], 'D3': -0.3322698241452189},
{'D1': 882783484, 'D2': [3, 5], 'D3': 0.3537778172042678},
{'D1': 2789240288, 'D2': [250, 207], 'D3': 0.18613402212951424}],
{'C2': 2219,
'C3': [31776, -16647, 27988, 8010, 15855, -16185, -15620],
'C4': 9063},
'A4': 21803,
'A5': 576,
'A6': [-1322830259, 490897659, -1843892331, 217136131]}
Пример 2
Двоичные данные:
b'VYG\x81\xa0\xe6\xcf\x98?-\x99\xddec\x00\x00\x00B\xc8\tG\xd9\x00\x03'
(b'\x00Z4\x96\xa7\x0c\x84\x16\x00\x02\x00\x1a?\xc1\xb4\x97-\x95\xf5@'
b'%\x02\x00\x06F\xc8\x00\x02\x00,?\xcc5\x06\x02\xfb\xadP\x00\x1c\x00.\x00\x02'
b'\x00\x00\x00>\x92C\xa7\x91\xda\xbf(\xb6X"\xe5\xf91&\x83\x91\x90\x9bq\x04'
b'\x93z3\x04xV\x9c\xc4s\xae')
Результат разбора:
'A1': -1595486312,
{'A2': {'B1': 0.6781290173530579, 'B2': 'ec'},
'A3': {'C1': [{'D1': 2802615318, 'D2': [52, 150], 'D3': 0.13832368589275212},
'D1': 411336, 'D2': [37, 2], 'D3': 0.22036814828548268}],
{'C2': 37443,
'C3': [-22639, -9537, 10422, 22562, -6663, 12582, -31855],
'C4': -28517},
'A4': 51209,
'A5': 18393,
'A6': [1896125306, 855930966, -1664846930]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x51 0x54 0xa9
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Адрес (uint32) структуры B |
3 | Массив адресов (uint16) структур C, размер 3 |
4 | int8 |
5 | Структура D |
6 | int16 |
7 | uint16 |
8 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
3 | uint8 |
4 | uint32 |
5 | Размер (uint16) и адрес (uint16) массива char |
6 | Размер (uint32) и адрес (uint32) массива uint16 |
7 | Массив int16, размер 3 |
8 | float |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint8 |
3 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'IQT\xa9\xd6"\x00\x00\x001\x00`\x00\x8f\x00\x16\xe2\xde\xdf{D\xe7\xe0\x90'
(b'\xaf\x00\xfa\xb4\xca\x81HwK\xc4I\x06\xf6<\x8d\xcf\x89\x1cico\xdc\xe6l'
b'\x92\x96\x9aN\x81\xd0\x1eg.\x18\xe3\xd9?\x8bLM\x96#\x03\x00*\x00\x02\x00'
b'\x00\x00-\x00\x00\x00\xc21v\xb2\xc9T\x7f8&\xbeak\n>\xa7\x82\rs~\x81\xfb\xa1'
b'\xf8\xc8\x13I\xa2Y\xcf\xbfJ\xd0\x8f\xb4@\x02\x00X\x00\x03\x00\x00'
b'\x00Z\x00\x00\x00T=\xb6[\xeb\rM\x8cD\xbfed#\xceN\x19\x9cv\xd6s"\xfeJ'
b'\xb1\xd8MD]\xec\xbf\xc3+\x04\xb2l\x02\x00\x87\x00\x03\x00\x00\x00'
b'\x89\x00\x00\x00\x08\xd2\xf8)g\xc0)st?')
Результат разбора:
'A1': 214,
{'A2': {'B1': 0.030032293871045113, 'B2': 478793613},
'A3': [{'C1': 2169412246,
'C2': 0.40448574573063656,
'C3': 139,
'C4': 597052748,
'C5': 'ico',
'C6': [59100, 37484],
'C7': [12738, -19850, 21705],
'C8': -0.16232489049434662},
'C1': 2717614462,
{'C2': -0.24492291038729497,
'C3': 74,
'C4': 1085575120,
'C5': 'ak',
'C6': [15882, 33447, 29453],
'C7': [15700, 23478, 3563],
'C8': -0.7677658200263977},
'C1': 4263670742,
{'C2': -0.88638510898958,
'C3': 195,
'C4': 1823605803,
'C5': 'ed',
'C6': [52771, 6478, 30364],
'C7': [-11768, 10744, -16281],
'C8': 0.9548822045326233}],
'A4': 22,
'A5': {'D1': 2078269154, 'D2': 68, 'D3': 231},
'A6': -28448,
'A7': 175,
'A8': -4302213865723480838}
Пример 2
Двоичные данные:
b'IQT\xa9""\x00\x00\x002\x00c\x00\x92\x00\x06v\x0b\xa3u\xbf\x06\xe5O;\xefN1'
(b'\xf44\xf2\xb5\xa1S\xc0@i?\x87-\xd1\x8dftem\xba\x88\x19Y\xa6\x00:\xd0\xec\x83'
b'$\x02\xf6Z\xe7?\x92,\x1b\x05\xd2\x04\x00*\x00\x02\x00\x00\x00.'
b'\x00\x00\x00\xaa:OS\xe6r\xc5"\x16?inwx\x8eE\x08s\n?qC/\x82|W!\x9d\xb8v\xd9?k'
b'Q\xa1\xadL\x04\x00Y\x00\x03\x00\x00\x00]\x00\x00\x00\xf2LR\xe68\xf8l\xc6'
b'\x1c\xbfxkma6\xe1\xc1M\xe0(L\x12\x90\x1b\x85\x8c\xec \xbe?\xb2;'
b'\x90\x07\xca\x04\x00\x8a\x00\x02\x00\x00\x00\x8e\x00\x00\x00E9>\x01\xf6'
b'\x8b\xcd\xa9F?')
Результат разбора:
'A1': 34,
{'A2': {'B1': 0.9111442565917969, 'B2': 2379296135},
'A3': [{'C1': 3493462182,
'C2': 0.7298536340568922,
'C3': 146,
'C4': 3523549996,
'C5': 'ftem',
'C6': [35002, 22809],
'C7': [15018, 21327, 29414],
'C8': 0.5864680409431458},
'C1': 2184135537,
{'C2': 0.39787116379499543,
'C3': 107,
'C4': 1286447441,
'C5': 'inwx',
'C6': [17806, 29448, 16138],
'C7': [19698, -6574, -1992],
'C8': -0.6124026775360107},
'C1': 306981088,
{'C2': 0.11768988066351782,
'C3': 178,
'C4': 3389493307,
'C5': 'xkma',
'C6': [57654, 19905],
'C7': [14661, 318, -29706],
'C8': 0.7760284543037415}],
'A4': 6,
'A5': {'D1': 1973619574, 'D2': 191, 'D3': 6},
'A6': 20453,
'A7': 61243,
'A8': 6026297828273566030}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x5a 0x53 0x47 0x8d
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
3 | float |
4 | Адрес (uint32) структуры B |
5 | uint32 |
6 | uint64 |
7 | double |
8 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур C |
2 | double |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint16) и адрес (uint32) массива int16 |
3 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int16, размер 5 |
2 | Массив uint64, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MZSG\x8d&\xb4\r\xd7>\xe4^>s\x00\x00\x00s\xe1=T\xae\x87\x97\xf7\xeb\xc5\xca'
(b'\xcdz\xee\xf9\xc2"\x80\xe3\xbf^Q\xe3\x0e,\x9b\xdaKn[\xc0\xf6\xeb\xeb>_\x0e6y'
b'[(\x1f\xaa\xf7z\xf4*\xce\xb6D\x1b\xb9\x87\x00\xa9\xf7\xa6\xdd\xb6'
b'\x0c\x00\x14\x02\x00G\x00\x00\x00\xf0\xad\xe2\x95\xc5\xd5\x81\xa2\xf9Gm'
b'\xc0\x02\x00Y\x00\x00\x00\xb3q*\rK\x00\x00\x00]\x00\x00\x00\x02\x00\x00\x00k'
b'\x00\x00\x00\xa8b[\xa0\x1e\xc7\xca?')
Результат разбора:
'A1': -19418,
{'A2': -10483,
'A3': 0.21766754984855652,
'A4': {'B1': [{'C1': 335547574, 'C2': [-2135, -8794], 'C3': -1780306448},
'C1': -1066579975, 'C2': [-10811, -23935], 'C3': 220885427}],
{'B2': 0.20920164899759652},
'A5': 1413341555,
'A6': 14828882340332668846,
'A7': -0.6093915756350292,
'A8': {'D1': [20830, 3811, -25812, 19418, 23406],
'D2': [3895155451572778688, 17616665202452355961, 38202648624025130]}}
Пример 2
Двоичные данные:
b'MZSG\x8d\x19\x17\xd3=\x9f\x141?s\x00\x00\x00v\xab\xcb\x04\x8fJ0LjvN'
(b'\x95z|\x838\x15w\xea?tL\xc6\xd9\xb4\xc0\xe6\x1f\xbbg\x7f\xff\x88\xa6\xd1'
b'\xed\xce3\x16\xf3i\x83\xd7A\x1d\xd2\xff\x9a\xc5\x14E|\xcb#<\x94\x82\xee\xd8'
b'\x0eP\x02\x02\x00G\x00\x00\x00\x1d\x11g\xd3z\xf7\xc33\xe5\x16\x13'
b'\xc0\x02\x00Y\x00\x00\x00\xb2W\xae8K\x00\x00\x00]\x00\x00\x00\x02'
b'\x00\x00\x00k\x00\x00\x00\x1cEH\xd9\x8d\x93\xe4\xbf')
Результат разбора:
'A1': 5913,
{'A2': 15827,
'A3': 0.6917209029197693,
'A4': {'B1': [{'C1': 38801112, 'C2': [-27588, -4478], 'C3': -748220131},
'C1': -1072490779, 'C2': [-2182, 13251], 'C3': 950949810}],
{'B2': -0.6430119746966372},
'A5': 80456566,
'A6': 10758666758751537807,
'A7': 0.8270364860326389,
'A8': {'D1': [19572, -9786, -16204, 8166, 26555],
'D2': [3733182625834663807, 15140329916168008470, 2579291847742823167]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x53 0x4f 0x6c
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
3 | int64 |
4 | Адрес (uint16) структуры B |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 3 |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур D |
3 | Структура E |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
3 | int64 |
4 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint32 |
3 | double |
4 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | Размер (uint32) и адрес (uint32) массива uint8 |
4 | Размер (uint32) и адрес (uint32) массива int16 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NSOl\xfb\xe2\x8a,F\xb7H?]b_]\xdcq\xfb\xecw\x00Ey\xec\xff4\x13\x88\xbe8\x1f'
(b'\x15\t\x15\xa9\xd7`\xb6Q\x9cU\xbc,\x07\x8a>&\x1a6t\xea25\xc0\x93\x7f)7\x00'
b'Y\x02M>\xde\xf2\x8eV\xad\x86\x82l\x9c\x90\x10\x014S\xc5\x08_O_\xf6'
b'\xd2\xe4\xbf\x0c\x1e\xbf\xc6\x0b\xfe\xc7\x9c\xf8\x1e\xfaRb\xe9\xbf2I'
b"\x00\x00\x00X\x00\x00\x00M\xef\x06}\x1aT~\xd5\x16\x00'\x008\x00\x02\x00\x00"
b'\x00g\x00\x00\x00\x06\xc0<\x02\x00\x00\x00o\x00\x00\x00\x03\x00\x00\x00'
b'q\x00\x00\x00\xe4')
Результат разбора:
'A1': 747299579,
{'A2': 0.7840465307235718,
'A3': -1370376470330908067,
'A4': {'B1': [{'C1': -1279675,
'C2': -0.2657715082168579,
'C3': 6978232055445659448,
'C4': 182},
'C1': -1135240111,
{'C2': 0.2695859670639038,
'C3': -4596711862108284378,
'C4': 147},
'C1': 3615103,
{'C2': 0.2002042680978775,
'C3': 7818959982108275422,
'C4': 156}],
'B2': [{'D1': 4240,
'D2': 3310564353,
'D3': -0.6507522450947087,
'D4': 12},
'D1': 48926,
{'D2': 3355315142,
'D3': -0.7932524571586046,
'D4': 50}],
'B3': {'E1': 6,
'E2': 15552,
'E3': [77, 239],
'E4': [32006, 21530, -10882],
'E5': -28}}}
Пример 2
Двоичные данные:
b'NSOl\x97q\xde\xf4"\xab\x16\xbfB\xf1\xc8\x7f?\x99\x01a\x9e\x00Q^2:\xe8\xdc'
(b'F?uw\x1c\xa3^ \x91\xb0CWzo\xb2a\xc7J\xbf\xeb3\xfc\xf9ii\xf9>l\\\x04\x12\x91'
b'\xe5\xe9S?d\xf8\x0cDO\x01\xda\xa0\xaaj\x0b\x96\xbe\xdd\xb3\x84k\xea\xf3h'
b'\xb9\xec\xbf\xdc\xac\x0b\xe0\xf2\xad\xf4~[rx\xd7\xa8\xe1?\x14[n|O?'
b'z\xee\xb3\xd48]%\xe1?A\xfb$\x98\x90X\xf7\x04L_2\xa4\xed\xe3?\xa5I\x00\x00'
b'\x00X\x00\x00\x00g\x00\x00\x00v\x00\x00\x004\xb8\x8a\xd7\x01:\x08'
b"\xac\x82\x16\x00'\x008\x00\x04\x00\x00\x00\x85\x00\x00\x00\x8d1\x93\x03"
b'\x00\x00\x00\x95\x00\x00\x00\x03\x00\x00\x00\x98\x00\x00\x00H')
Результат разбора:
'A1': -186748521,
{'A2': -0.5885487794876099,
'A3': 6990036594661585218,
'A4': {'B1': [{'C1': 976379473,
'C2': 0.7768082618713379,
'C3': -5723758060575623307,
'C4': 67},
'C1': -1301317033,
{'C2': -0.7921047806739807,
'C3': 4537774003439023083,
'C4': 108},
'C1': -1861090212,
{'C2': 0.8277876973152161,
'C3': -6856166042762413980,
'C4': 170}],
'B2': [{'D1': 2922,
'D2': 3017653910,
'D3': -0.8976330532053542,
'D4': 220},
'D1': 2988,
{'D2': 4105040608,
'D3': 0.5518605568384911,
'D4': 20},
'D1': 28251,
{'D2': 2050969468,
'D3': 0.5358110532739582,
'D4': 65},
'D1': 9467,
{'D2': 4149776536,
'D3': 0.6227589591820792,
'D4': 165}],
'B3': {'E1': -115,
'E2': -27855,
'E3': [52, 184, 138],
'E4': [471, 2106, -32084],
'E5': 72}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xec 0x4a 0x59 0x41
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int8 |
3 | Размер (uint32) и адрес (uint16) массива int32 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив char, размер 4 |
3 | Размер (uint16) и адрес (uint32) массива структур C |
4 | uint16 |
5 | double |
6 | Адрес (uint32) структуры D |
7 | Массив int16, размер 4 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив uint8, размер 2 |
3 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xecJYA\x00G\x0f\x00\x00\x00\x06\x00k<Z\xe2\xd9\xb6\x02)\xd5R\x9c\xb7^\xa0xW'
(b'\xaf+\\\x03\xa8\xe1\xe6\x99\x1f\x1b\xdaB\xce9\xd4\xee\xb97y\xa3$\x9a\xf2I'
b'\xbbw\x8e\xf5\xf1/\xae\x04\xf9\x17DeGX\x89\x82@\x8b\x82\xfa]\xab\xaalkhl\x00'
b"\x04\x00\x00\x00\r\x89\xea\xbf\xe8\x8a\xca'\xf1eV\x00\x00\x00=\x14p*\xbb\xc4"
b'\x15T\r\xfe\x7f\xbd*\x8d\x7fZ\xc3\xa2\xf1\x99pF\x85+ \xf9Z\x85?\x04'
b'\x89\x93\x8f')
Результат разбора:
'A1': {'B1': 4200442794,
{'B2': 'lkhl',
'B3': [{'C1': 15450, 'C2': [226, 217], 'C3': -5331653012662470818},
'C1': 41080, 'C2': [87, 175], 'C3': 3124376265367656735},
{'C1': 7130, 'C2': [66, 206], 'C3': 4167218034491630372},
{'C1': 39666, 'C2': [73, 187], 'C3': 8615093553442194681}],
{'B4': 35306,
'B5': -0.7669420986305038,
'B6': {'D1': 5956, 'D2': 7297899068796210050},
'B7': [5232, 10939, -15339, 21517]},
'A2': 15,
'A3': [-25182934, -1921033533, -1561224848, 1183132448, -111508161, 76125071]}
Пример 2
Двоичные данные:
b'\xecJYA\x00/\xf1\x00\x00\x00\x03\x00S\x9d\x05e\xe9i\xa5\x83\x03@\xef\x11'
(b'\x18\xc4\x94\x10\xa5\x9aOvh\xa6|\xfc\x02\x8b\xbf!\x84\xe3\xfas\x04Q3\x97'
b'\x9e\x8e\xf6zemw\x00\x02\x00\x00\x00\r\x99\xde\xbf\xd1A\rK0\xa9\x0c\x00'
b'\x00\x00%\x7f\xd0\xa75*\x82$\xfbf"`Ho\x8c\xc35\\\x86\x9d8')
Результат разбора:
'A1': {'B1': 2543750902,
{'B2': 'zemw',
'B3': [{'C1': 40197, 'C2': [101, 233], 'C3': 7612634795137241368},
'C1': 50324, 'C2': [16, 165], 'C3': -7327507876866622462}],
{'B4': 39390,
'B5': -0.2695954546239967,
'B6': {'D1': 35775, 'D2': 2415305964988420403},
'B7': [32720, -22731, 10882, 9467]},
'A2': -15,
'A3': [1713528904, 1871495989, 1552325944]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x48 0x4e 0x2b
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint16) и адрес (uint32) массива структур B |
3 | uint32 |
4 | int8 |
5 | uint16 |
6 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Структура D |
3 | int8 |
4 | float |
5 | Массив int8, размер 2 |
6 | Размер (uint32) и адрес (uint16) массива uint8 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint16, размер 4 |
2 | int64 |
3 | Адрес (uint16) структуры E |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | Массив double, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PHN+\x16\x82\x08\xda\xf2\xbc\x1fJ\x00\x04\x00\x00\x00<\xc5\xba\x13d>\x89'
(b"G\x05ik\xe9\x9f\xac\x1d\xd1\x81\xf5{\x8f\xd2\xa3':D_\xa2\x97\x00\\\x1c"
b'>\xc87\x01\x8d\xdf\x00\x00\x00\x04\x00w\xbf\x14\x98\x0e6\xec\xa2V'
b'\xbe\x82\x86G!\xa6\x1d;=n-\xd5\xc5T4\xe6>\x99\xae\x90\xbb\x19\xab\x1f}\x8b*?'
b'\xb8\xa6\xdc\x88\xb5\xf8P?\xcf\x1e\x13\xff\xda\x7f\x10\xbf\xec\xae\x18H'
b'\xc4\x10,KWl|')
Результат разбора:
'A1': 1621868552275107658,
{'A2': [{'B1': -0.5804451704025269, 'B2': 921477718},
'B1': -0.254930704832077, 'B2': 564534587},
{'B1': 0.058149177581071854, 'B2': 3310630118},
{'B1': 0.30015993118286133, 'B2': 3139021599}],
{'A3': 3317306212,
'A4': 62,
'A5': 35143,
'A6': {'C1': 90794985,
'C2': {'D1': [40876, 7633, 33269, 31631],
'D2': -3268725773332143465,
'D3': {'E1': 32139,
'E2': 42,
'E3': [0.09629610383669385,
0.24310541146132225,
-0.8962518140037949]}},
'C3': 28,
'C4': 0.39104464650154114,
'C5': [-115, -33],
'C6': [75, 87, 108, 124]}}
Пример 2
Двоичные данные:
b'PHN+\x1a\x95\xf7\x0b\xd6\xd1\xd3\xb2\x00\x02\x00\x00\x00<:\x1c\x90\x97\x1ez'
(b'\xf4\xfd\xbe\xc4w\xf8\xa1\x12S/D\x1ey\r\xf9\x8a\xf8\x13\xce~{\x00LM?-K\xec'
b'\xdd?\x00\x00\x00\x05\x00g=\xf7\xe2\xb6\xa1\xc7\xf3Z\xbfd6\x84\xee6\xa3='
b"'f\xdf\xbf\xbc;\xa16\rV0\xbf\xd5k\xdf\x9c\xe9i\xa0?\xacgm\xf8&\x0b Q"
b'-\xa2b\xc8')
Результат разбора:
'A1': 1915708846736790450,
{'A2': [{'B1': 0.12103788554668427, 'B2': 2714235738},
'B1': -0.8914568424224854, 'B2': 3996558141}],
{'A3': 974950551,
'A4': 30,
'A5': 31476,
'A6': {'C1': 4257137783,
'C2': {'D1': [63649, 4691, 12100, 7801],
'D2': 1006988789782838907,
'D3': {'E1': 10086,
'E2': -33,
'E3': [-0.11028487748748073,
-0.33470907519736137,
0.05547660497815898]}},
'C3': 77,
'C4': 0.6769397258758545,
'C5': [-35, 63],
'C6': [81, 45, 162, 98, 200]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x50 0x42 0x55
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | uint8 |
3 | Массив char, размер 5 |
4 | int32 |
5 | uint64 |
6 | Массив структур B, размер 3 |
7 | Структура D |
8 | Размер (uint32) и адрес (uint32) массива uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | uint16 |
3 | int8 |
4 | int8 |
5 | uint32 |
6 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | int32 |
4 | Размер (uint16) и адрес (uint32) массива int16 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint32) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UPBU\x15^v%\xd2qyctr\x083\xc9\xf8\xca"\xc4s\x10\x1e\xee\xaft\x05Tt\xd6\xb0'
(b'\xc0\r\xef\x00\x03\x00\x00\x00t\xd3\xe2\x96W\xfd\xb5q\xcd\xcc\x0e\xf1'
b'B"\x82\xf4\xea\xa4i\x00\x02\x00\x00\x00z\xac\xb8\xa8\x92\xb3\x8f\x90'
b'\x06N\xcd\xf5\x88E\x84X7\xa4\x92\x00\x03\x00\x00\x00~p\xa5\xc4\x99\xa3K\xdf'
b'\xcf\xcc\x18a\x00\x00\x00\x05\x00\x00\x00\x84\x00\x00\x00\x05'
b'\x00\x00\x00\x8e\xfc\xfb\xf7\xc6\x04\xb5Op\xee>\x03T>\xc3\x98\xdd'
b'\xfa\x96\x18$\xff\x13\x9d\x9c6\xd16EYA\xc1\x0b\xd8\r&\xc2')
Результат разбора:
'A1': 358512165,
{'A2': 210,
'A3': 'qyctr',
'A4': 137611768,
'A5': 14565420143340351151,
'A6': [{'B1': {'C1': 1946506356,
'C2': -42,
'C3': -1329590801,
'C4': [-773, -2106, 1205]},
'B2': 54242,
'B3': -106,
'B4': 87,
'B5': 4256526797,
'B6': 204},
'B1': {'C1': 250692130,
{'C2': -126,
'C3': -185949079,
'C4': [20336, -4546]},
'B2': 44216,
'B3': -88,
'B4': -110,
'B5': 3012530182,
'B6': 78},
'B1': {'C1': -839546811,
{'C2': -124,
'C3': 1480041618,
'C4': [852, 16067, -26403]},
'B2': 28837,
'B3': -60,
'B4': -103,
'B5': 2739658703,
'B6': 204}],
'A7': {'D1': 6241, 'D2': [64150, 6180, 65299, 40348, 14033]},
'A8': [13893, 22849, 49419, 55309, 9922]}
Пример 2
Двоичные данные:
b'UPBU\xe3\x8fN*\xeatduex\x8b\xb5\x1c\x80\x1e2\xe9\x98\xf5\x81ws\xb4\xfe'
(b'\x10\xa7 \\F\xe8\xe2\x00\x02\x00\x00\x00t\x9e\x17\xbc\x95hEG\x08\x06i$'
b'"\x0b\xaf\xb6\x86B\xe1\x00\x03\x00\x00\x00x\xdcE:\x7f^\x07\xa9'
b'\x9b\xb7\xa7\x82\x9a\x02\xe8\x07P/\x1e\x00\x02\x00\x00\x00~\x86<]\xfc{\xe1f'
b'b\xd8;\x00\x00\x00\x00\x03\x00\x00\x00\x82\x00\x00\x00\x04\x00\x00\x00\x88'
b'\xd9?\xa8Q\xf5b\x82w\xf9!%\x9c\xab:\x14\xf5<\xa0\x17\x10\xe8\x87\xc3\xde'
b'\xfb[Q+')
Результат разбора:
'A1': -477147606,
{'A2': 234,
'A3': 'tduex',
'A4': -1951064960,
'A5': 2176058413136574323,
'A6': [{'B1': {'C1': -1258418009,
'C2': 32,
'C3': 1548151010,
'C4': [-9921, -22447]},
'B2': 40471,
'B3': -68,
'B4': -107,
'B5': 1749370632,
'B6': 6},
'B1': {'C1': 1763975691,
{'C2': -81,
'C3': -1232715039,
'C4': [-2718, -32137, -1759]},
'B2': 56389,
'B3': 58,
'B4': 127,
'B5': 1577560475,
'B6': 183},
'B1': {'C1': -1484613118,
{'C2': -24,
'C3': 122695454,
'C4': [9628, -21702]},
'B2': 34364,
'B3': 93,
'B4': -4,
'B5': 2078369378,
'B6': 216}],
'A7': {'D1': 15104, 'D2': [5365, 15520, 5904]},
'A8': [59527, 50142, 64347, 20779]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x46 0x51 0x59
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур B |
3 | int64 |
4 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив char, размер 7 |
3 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint32) и адрес (uint32) массива uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива uint16 |
2 | uint32 |
3 | Массив int16, размер 2 |
4 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XFQY\xd2\x02\x00\x00\x00i\x00\x00\x00\x1b\xfe|\nV\x1cHY\x04\x00\x00'
(b'\x00m\x00\x00\x00\xf5\x0e#@#\x1d\xca\xf5\xb0J\x1b\xc0aF.HR\x19\xff\xa45wd'
b'vqtikc\x875\xbd\xb2_/\xc1\x02\x00\x00\x00)\x00\x00\x00\xaf\xe5\x1cpw`\xdf'
b'\x95\xf8eoyvkft\xca\xc6Hs\x7f"m\x12\x02\x00\x00\x00I\x00\x00\x001\x00Q'
b'\x00\xc8\x12\xd7l0\xa4\x1a\xa0')
Результат разбора:
'A1': -46,
{'A2': [{'B1': 53,
'B2': 'wdvqtik',
'B3': {'C1': -4526293879200839837, 'C2': [1210992225, 2768181586]}},
'B1': 248,
{'B2': 'eoyvkft',
'B3': {'C1': 1327755395934504650, 'C2': [1880941999, 2514444407]}}],
'A3': 6433423223567482395,
'A4': {'D1': [4808, 27863, 42032, 40986],
'D2': 1076039413,
'D3': [7459, -2614],
'D4': -1071953232}}
Пример 2
Двоичные данные:
b"XFQYj\x03\x00\x00\x00\x89\x00\x00\x00\x83'\xb0\x07+\xf3\xe83\x02\x00\x00"
(b'\x00\x8f\x00\x00\x00\xbf\x82\xc8\x93\xed\xf1\x8d\x8a\x19\xfb\xc7e\xa7!\xe6'
b'\xe7\x95\xe4=n%ljixbwxE6\x91-D\xd2J\x1b\x02\x00\x00\x00)\x00\x00\x00;XT'
b'm_\xcf\xa6\x05\xc2fwyrsqo6\xd1D!+7$\xc0\x02\x00\x00\x00I\x00\x00'
b'\x008\x8b\x9b\x1b\xc6\xfe\x0f\xeedhkhqjey\xcc\x1c\xa1\xe2\xa2@\x14'
b'\xfa\x02\x00\x00\x00i\x00\x00\x001\x00Q\x00q\x003K\x87\xdb')
Результат разбора:
'A1': 106,
{'A2': [{'B1': 37,
'B2': 'ljixbwx',
'B3': {'C1': 1966615377564743237, 'C2': [3890618791, 1849549973]}},
'B1': 194,
{'B2': 'fwyrsqo',
'B3': {'C1': -4601492260884524746, 'C2': [1834244155, 94818143]}},
'B1': 100,
{'B2': 'hkhqjey',
'B3': {'C1': -426644996362265396, 'C2': [463178552, 3994025670]}}],
'A3': 3740506856669325187,
'A4': {'D1': [19251, 56199],
'D2': 2479391423,
'D3': [-3603, -30067],
'D4': 1707604761}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4a 0x53 0x47 0x54 0x29
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 5 |
2 | Адрес (uint16) структуры C |
3 | Массив uint16, размер 6 |
4 | Массив uint32, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | float |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | float |
3 | Массив char, размер 5 |
4 | uint32 |
5 | double |
6 | uint8 |
7 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
3 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'JSGT)\xbfJ\xaf\xc3\xbf$\x80\xb5?"A\xa1>\xa8.%\xbe\x9a;\xa7?\x009'
(b'\xf7>\xe2\xad\r\xbe\xfdi\xc7?\n-\xf6>\xeb\x08m\x00C\x16\xf1\xd9\xcej'
b'\xc3K\xbed\xe2\x9c\x9c\x03\xcf\xbe\x11g\xbd]\x1e\x83?!M\xc0\xa0\xbe\x85\x0b'
b'!ilygk\xf42]$\xbf\xec\t\x122\x13\xcc`\xc0\x8a\x87\xa85S\xfd\xe9\x10')
Результат разбора:
'A1': [{'B1': -0.7917444109916687, 'B2': -0.6425889134407043},
{'B1': 0.6338139176368713, 'B2': 0.32847705483436584},
{'B1': -0.3012363612651825, 'B2': 0.500884473323822},
{'B1': 0.4427265226840973, 'B2': -0.4949476420879364},
{'B1': 0.5397638082504272, 'B2': 0.45904865860939026}],
{'A2': {'C1': {'D1': -31937, 'D2': 8525, 'D3': -16224},
'C2': -0.25985053181648254,
'C3': 'ilygk',
'C4': 4096941348,
'C5': -0.876107309157657,
'C6': 192,
'C7': 9982132046085875984},
'A3': [5873, 55758, 27331, 19390, 25826, 40092],
'A4': [63946257, 1740463390]}
Пример 2
Двоичные данные:
b'JSGT)?\x1c\xca\xf9\xbff\xff\xb1\xbf:\xa55\xbf\x1c\xec7>\xea\xb1;?9\xdc'
(b'l>/\xfd\xc1\xbe\x8a\xbe\\?\x08>|=\x18\xb3\xf0\x00C\xde\x14\\t\x12'
b'\x9eH\xd0\x0f\xe8\xbd\xf2\x90\xb7\xb7\xd2b\\u\x12\xddW\\\xac\xcb'
b'\x19\xbfr\x95\xd2dmusyy\xa5\xb4n?\xd92\x90\xe2O\xca\xcc\ny(EEd2O\xa4')
Результат разбора:
'A1': [{'B1': 0.6124721169471741, 'B2': -0.9023390412330627},
{'B1': -0.7290833592414856, 'B2': -0.6129793524742126},
{'B1': 0.4583834111690521, 'B2': 0.7260196208953857},
{'B1': 0.17186643183231354, 'B2': -0.27098357677459717},
{'B1': 0.5322034358978271, 'B2': 0.03728097677230835}],
{'A2': {'C1': {'D1': -8873, 'D2': 23724, 'D3': -13543},
'C2': -0.9475985765457153,
'C3': 'dmusy',
'C4': 2040902766,
'C5': 0.39371130085707473,
'C6': 10,
'C7': 8730304041993785252},
'A3': [56852, 23668, 4766, 18640, 4072, 48626],
'A4': [2427959250, 1650226450]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x16 0x52 0x47 0x4c 0x51
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Адрес (uint32) структуры B |
3 | double |
4 | Структура C |
5 | float |
6 | uint64 |
7 | Массив структур D, размер 4 |
8 | Массив int8, размер 6 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | float |
3 | Размер (uint16) и адрес (uint16) массива char |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | float |
3 | int8 |
4 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | int32 |
4 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x16RGLQQ\x00\x00\x00\x7f\xbf\xd9\x05-\x9d\x18\xf9\xa4>\xe1x\xc1>\xc5'
(b'\x12\x84\xa3\xf0&$\x8d\xefL|\xb2\xbf\x1co\xb9%\xb0\xd8\x0euFb\xcdm?\xe2c\xf0'
b'z\xce\x9e4~\x8e:\xd0\x92Q\xbc[\xb8?\xb2F\xa1\x03J\xf0\x90M\xe8b\xdfF\x95x'
b'\xf2\xaa\xbf\xb4\t\xbbq\x8b!\xa0\xff$\xd2i\x1d\xef\x8d\xf2\x82?\xe5\x1ez)'
b'v~\xbcv\x06\x07\xbf\x1bK\x17\xe5\\yV:Ayockley\x00\x04\x00y?4m\x17\x00'
b'\x02\x00}')
Результат разбора:
'A1': 81,
{'A2': {'B1': 'ockl', 'B2': 0.7047895789146423, 'B3': 'ey'},
'A3': -0.3909410509258129,
'A4': {'C1': 0.4403744041919708,
'C2': 0.3849068880081177,
'C3': -93,
'C4': -1142185263468086094},
'A5': -0.611079752445221,
'A6': 2715908131913097933,
'A7': [{'D1': 109,
'D2': 0.5746996306015206,
'D3': 2123250384,
'D4': -1840137125},
'D1': 184,
{'D2': 0.07139021234883303,
'D3': 1307075295,
'D4': 1184200946},
'D1': 170,
{'D2': -0.07827350160653745,
'D3': -14364055,
'D4': 502238706},
'D1': 130,
{'D2': 0.6599703607389169,
'D3': 1980106687,
'D4': 457906149}],
'A8': [92, 121, 86, 58, 65, 121]}
Пример 2
Двоичные данные:
b'\x16RGLQ\xf8\x00\x00\x00\x82\xbf\xe1V_.\x99\xad\xb2\xbc\xfa\xc8\x02\xbe\xa2'
(b'\xef7\xb9\x07\xee\x8b\xb1\xea\xe9Y\xfc\xbe\x1f\xef3F-\xa1\xa9{\xa7V\xf8\x1e'
b'?\xd8\xab\x13\x92\x17L\x18\x85Q\xbd\x17s\xfa0\xda\xda\xbf\xe8rW\x93\xde\xec'
b'\x8ezB\xa3\xf3+\x18&\xfc\xd2\xbf\xcc\x04N\x81\x8a\xfa\x00E6\x0f\xa4\x86k'
b'p\x86\x96?\xc1\x04Q\x17\xceg\xe0\xde\xda\xa8\xad\xec\x9f\x07\xeaE'
b'\xff=\x19\xf4\xe8qhiteljry\x00\x03\x00y=\x01\x8f\xb5\x00\x06\x00|')
Результат разбора:
'A1': -8,
{'A2': {'B1': 'qhi', 'B2': 0.031631190329790115, 'B3': 'teljry'},
'A3': -0.5417934332048644,
'A4': {'C1': -0.030612949281930923,
'C2': -0.3182313144207001,
'C3': -71,
'C4': 571547798989265404},
'A5': -0.15618591010570526,
'A6': 5056875705903044344,
'A7': [{'D1': 30,
'D2': 0.3854416777296037,
'D3': -2058240745,
'D4': 1945776346},
'D1': 218,
{'D2': -0.7639577758885865,
'D3': 2051187699,
'D4': 723003132},
'D1': 210,
{'D2': -0.21888142896018792,
'D3': 1161170852,
'D4': -2039779194},
'D1': 150,
{'D2': 0.13294423735061311,
'D3': -556095315,
'D4': -325122070}],
'A8': [69, -1, 61, 25, -12, -24]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x55 0x41 0xf5
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | Структура B |
3 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 3 |
2 | uint16 |
3 | double |
4 | uint16 |
5 | Структура D |
6 | Адрес (uint16) структуры E |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Массив int16, размер 6 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
3 | Массив int32, размер 4 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | uint8 |
3 | int8 |
4 | Массив int8, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UUA\xf5\x03\x00B\x00\x00\x00E\x00\x00\x00Y\x00\x00\x00m\x00\x00\x00\xdc<'
(b'p4\xba,\xd0\xc1\xcd\xbf\x1a\x96\xdem\xe8-\xae\xcf\xee?\xbb\xe9\x90 \x96\x8a'
b'-\xed\x1b\xde\x02\xfd*\x16\xcb\xb6\x1d\xfd\xad9\x81\x00Dwhfd\x00\xf1^'
b'\xb2\xab\xe3q\xbf\xde\xe2g9\xfd\xea\xf2M\xc3jn%\xdc\x90c^\x84@\xd0'
b'\xbf\x00#\x1aSw8fUQ\x99\xfe\xa2<\rA\xb06e\xdc?\xb6\xf4\x1bMq\xb5\x9d'
b'\x9c\xc3Q\x8a\xb9\xc3\xd4\xd4\xbdF\x02\rt\xde\xb7\xcd\x89\xea\x06')
Результат разбора:
'A1': 'hfd',
{'A2': {'B1': [{'C1': -0.0043675143151029605,
'C2': [-7458, 14695, -5379, 19954, 27331, 9582]},
'C1': -0.2539378091589819,
{'C2': [8960, 21274, 14455, 21862, -26287, -23810]},
'C1': 0.4436775895339513,
{'C2': [-2890, 19739, -19087, -25443, 20931, -18038]}],
'B2': 15580,
'B3': -0.23247720893815282,
'B4': 38426,
'B5': {'D1': 0.9628516098632038,
'D2': 546367931,
'D3': [-315782506, -50143717, -1228204502, 967703837]},
'B6': {'E1': -1110125373,
'E2': 70,
'E3': 2,
'E4': [13, 116, -34, -73, -51, -119, -22, 6]}},
'A3': 30532}
Пример 2
Двоичные данные:
b'UUA\xf5\x06\x00B\x00\x00\x00H\x00\x00\x00\\\x00\x00\x00p\x00\x00\x00Gn'
(b"\xd0dse#x\xb5\xbfg\r\x80-'\x0f\x1a\x90\xa1\xbf\xaad\x89\xa4\x00~N\x05a\xab"
b'C\x84\xce\x82\x8a\xb1IEsK\x84\x00W\x9cwyekvl\xc0I^\xf2\xa0a\xd0\xbf'
b'\xa9\x81HG\x04\xad\x02\xf9\\\xfa\x04RD\xa6\xfc\xe6\x9d4\xee?xjT|\xd4\x99=%'
b'N\xb5\r(Z\xac\x0fj\xb4\xab\xec\xbfc\x85\x9e|\xa0z\nW\xde\xce\xc8\xf8]<p>'
b'\xc5\xefC\x16\xe0\xf4B\xb8\x89L')
Результат разбора:
'A1': 'wyekvl',
{'A2': {'B1': [{'C1': -0.25595878285198737,
'C2': [-32343, 18248, -21244, -1790, -1444, 20996]},
'C1': 0.9439229499304891,
{'C2': [27256, 31828, -26156, 9533, -19122, 10253]},
'C1': -0.8959600516804003,
{'C2': [-31389, 31902, 31392, 22282, -12578, -1848]}],
'B2': 28231,
'B3': -0.0838644144709122,
'B4': 3431,
'B5': {'D1': -0.03430253443692788,
'D2': 2760467626,
'D3': [89030144, -2075939999, -1316322610, 1265845577]},
'B6': {'E1': 1047542877,
'E2': 197,
'E3': -17,
'E4': [67, 22, -32, -12, 66, -72, -119, 76]}},
'A3': 40023}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xf2 0x54 0x42 0x4a 0x58
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив uint16, размер 5 |
2 | Массив char, размер 5 |
3 | Структура B |
4 | Массив адресов (uint16) структур D, размер 3 |
5 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int8 |
3 | int32 |
4 | uint64 |
5 | int16 |
6 | uint32 |
7 | int8 |
8 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
3 | float |
4 | uint32 |
5 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int64 |
3 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | double |
3 | Массив int64, размер 5 |
4 | uint64 |
5 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xf2TBJXx{\x9e*:\xaf\xde\x06\xb9\xd5cqdrr\xe3\x93b\xc9\x997?\xcc?3JS'
(b'\x8bc\xdc\xef\xd6"\x18\t\x98\xd5Pa\xe0\x9dxk\x0b4\xbd\t\xa6\xb6\xd4['
b'\x7f\x00\x8c\x00\x99\x00\xfb4\xad\xde\xfc \xab\xd8\xbf\x88]\x97=G\xafd\xc7O'
b'\x86\xdb\x8e\xba\x9f\xb5Y]\xfcq\x17Z\xc8]v1\xce\xce\n\x87Q\x04\x83\xa1'
b"\xbc'a\x19\x9ee\x8f\xb4\xbe\xa7\x04\xcb\xfd\xb4\x94\xb4\x15\xc2\xda\xcf"
b'\xf8\x8b\x0b\x9d\x98\xca=\xfd\n#\xad\x90\x8b\xd4\x1c\x06X\r\xaf\xbe'
b'\xc7\x99\xf6t\x8e\xf5\x06\xaf<\xf0\x03l\xbf\x94\xe7\x84\x9f\x01\x84\x8b'
b'\xdaP')
Результат разбора:
'A1': [31608, 10910, 44858, 1758, 54713],
{'A2': 'cqdrr',
'A3': {'B1': {'C1': -29,
'C2': 25235,
'C3': 0.7171903252601624,
'C4': 1244872652,
'C5': 3697511251},
'B2': -17,
'B3': 152576726,
'B4': 7744113146294490520,
'B5': 13323,
'B6': 3064334781,
'B7': -44,
'B8': 91},
'A4': [{'D1': 0.09892389923334122, 'D2': 2077438781620947709, 'D3': 6},
'D1': -0.34189867973327637, 'D2': -5834706275015419449, 'D3': 60},
{'D1': -0.9219350814819336, 'D2': -2698918409172359276, 'D3': 80}],
{'A5': {'E1': -5,
'E2': -0.3854448766166627,
'E3': [-4078942641979957880,
6464248463769699919,
8529193558575545437,
-9005983714390389199,
-8113905321796715359],
'E4': 10715468461819543220,
'E5': 832032127792059828}}
Пример 2
Двоичные данные:
b'\xf2TBJX\xa3\x03\x1da1\xfc\x95\x8a\xef\xd9ixlwiA8\xde\xffj\x01>\xc0|L\x96S'
(b'\x89ct3\x91<)\xab\xb9\x1d\x17\xdb\xa6\xf1\xadO\xcd\xc4b\xf3\x0f\xe4\xcb\xc1'
b"\x7f\x00\x8c\x00\x99\x007\x82\xdf\xb1/\xd6+\xe2?\xa28\x86\xa4}\xcbR\x7f'"
b'\x10y\x8d\xdf\x83\xe8\xdc\xd5\x14\x13vD\xf6f@\x03\xf0\x86S\x98>\xc5\x05\xf7'
b'+b\x14d\xe8\xd4t8\xe8\xf6\xe1\xaf\xec\xc7\xdd\xc1\xf8\xdd\xa6n'
b'\xff\xb5\xba\xf1N]\xbe\xf9\xe1\x93\xa0K\xc2\x08\xf4\xda\x83\xd0\xad>'
b'(\xf0\xd121\xfaV\xdf\xcb\xf5L\xa5>-\xc9%\xe1\xcb\xda\xf3\xd2\x1a')
Результат разбора:
'A1': [931, 24861, 64561, 35477, 55791],
{'A2': 'ixlwi',
'A3': {'B1': {'C1': 65,
'C2': 56888,
'C3': 0.12638472020626068,
'C4': 2521595072,
'C5': 1952680275},
'B2': 51,
'B3': -1423360879,
'B4': 5741510798909840825,
'B5': -15155,
'B6': 3826250594,
'B7': -53,
'B8': -63},
'A4': [{'D1': -0.21612145006656647, 'D2': -862225698569068039, 'D3': 218},
'D1': 0.3394814431667328, 'D2': -2353418666041544664, 'D3': 203},
{'D1': 0.32285276055336, 'D2': -3246010337213429459, 'D3': 26}],
{'A5': {'E1': 55,
'E2': 0.5678511554278745,
'E3': [9174619131398731938,
-2528626194594066393,
4640667239951045845,
415807364558942211,
8418609119998651383],
'E4': 15981002042901981240,
'E5': 13453940312550275265}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x49 0x4f
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Адрес (uint16) структуры B |
3 | float |
4 | float |
5 | Размер (uint32) и адрес (uint16) массива uint32 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Адрес (uint16) структуры C |
3 | uint32 |
4 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | int64 |
3 | uint16 |
4 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур D |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива uint16 |
2 | uint8 |
3 | Массив int8, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DIO\x8b\xb2\x14\xc7{g\xd7\x8d\x00Y>\xab\x82Q>\xc0-\xbc\x00\x00\x00\x03\x00bJ'
(b'\x9f\x15\x83\xa5\xaad\x9c\xdcj\x00\x05\x00\x00\x00\x1b\xe9#\x04\x12h'
b'\xc5x\x00\x02\x00\x00\x00.\xec\xcb\xc2\x00\x00\x00%\x00\x00\x002\xbf'
b'\x03\xe7\xb2w\x17%\xe9E\xb3\xe0\xa4>\xd3\xb0\x03\xdfJ\x00\x02\x00;\xc87\x00'
b'C9\x18\xec\xfb\x13\xb4\x10\xaf\xb7\xed\xd0\x93[\r6\x7fN')
Результат разбора:
'A1': 10066130964127930253,
{'A2': {'B1': 51255,
'B2': {'C1': -4682644433846983191,
'C2': 5022605005481553923,
'C3': 57162,
'C4': [{'D1': [19103, 5507, 42410, 25756, 56426],
'D2': 233,
'D3': [35, 4]},
'D1': [4712, 50552], 'D2': 236, 'D3': [-53, -62]}]},
{'B3': 957934843,
'B4': 19},
'A3': 0.3349786102771759,
'A4': 0.37534892559051514,
'A5': [3020992439, 3989869403, 221675342]}
Пример 2
Двоичные данные:
b'DIO\xf1_\x7f"\xa3\xa1\xb3I\x00\x83<\xe7\xd8\xf3\xbf\x10rR\x00\x00\x00'
(b'\x02\x00\x8c;\xe4\xb0\x82\x00\x02\x00\x00\x00\x1bO\x17\xca%\x10\xfch'
b'\x01\x00\x00\x03\x00\x00\x00(\x92R\xb7B\xf0\xed\x1a;\x8aw|0\xa9\x00\x05\x00'
b'\x00\x007\xdaql\x07\xf4\xab/\xe0\xa9w\xe2u\xc4\x00\x05\x00\x00\x00J\xbb\xcd'
b'\xed\x00\x00\x00\x1f\x00\x00\x00.\x00\x00\x00A\x00\x00\x00T\xf5]\xb7'
b'\xaa\xdf"\x89;\xd7\x7fh\xf5,\xff"\xb4\xce\xc5\x00\x04\x00]h\x19\x00m\x11'
b'V\xbe\xcb\xe8b9Me\xa7y\xb6\x84')
Результат разбора:
'A1': 17392760072679043913,
{'A2': {'B1': 26649,
'B2': {'C1': -766254417067210437,
'C2': -2918498631281597772,
'C3': 52933,
'C4': [{'D1': [15332, 45186], 'D2': 79, 'D3': [23, -54]},
'D1': [9488, 64616, 256], 'D2': 146, 'D3': [82, -73]},
{'D1': [17136, 60698, 15242, 30588, 12457],
{'D2': 218,
'D3': [113, 108]},
'D1': [2036, 43823, 57513, 30690, 30148],
{'D2': 187,
'D3': [-51, -19]}]},
'B3': 290897611,
'B4': -24},
'A3': 0.028301691636443138,
'A4': -0.5642443895339966,
'A5': [1647922533, 2809771652]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x43 0x51 0x44
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | uint8 |
4 | uint32 |
5 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива структур C |
2 | uint8 |
3 | int32 |
4 | Адрес (uint32) структуры D |
5 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint32 |
3 | int32 |
4 | int16 |
5 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint16 |
3 | Размер (uint32) и адрес (uint32) массива float |
4 | Размер (uint32) и адрес (uint16) массива uint64 |
5 | Массив uint16, размер 2 |
6 | int32 |
7 | double |
8 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DCQD#\xc2\x07"\xbe\xb8dz\xe0Q\xe7N\xde\x00\x02\x00\x1fwHN\xf9\xda\x00\x00'
(b'\x00k\xd9\xa2\xf6c.+\x1c@k\xd1\x03\x083z\xed\xe5-\r\xa0\xac\xc24P\xd5\xf2{'
b'hd\x93\x83)\x91\xaa\x84\x16/\x96>\x8c\xcb\x81=\x85\xbf\x13\xf5\xd1\xae\xf8p'
b'\x0b\xffA"nx\xb5t\x17\x82\xdc\x84\xd6G\xbd\xc8\xe1\xdf[\x08\x1f\x80\xac^'
b'!a\xe5"\t\xab\x8b\x00\x00\x00\x02\x00\x00\x00C\x00\x00\x00\x04\x00KriW'
b'\xc3\x88\xd2$\x12?\xe6\xe7b\xae\x98~\xd2b\xe6\x8a\xa6,q4g')
Результат разбора:
'A1': 599918370,
{'A2': -0.3601415753364563,
'A3': 224,
'A4': 1374113502,
'A5': {'B1': [{'C1': 2734056238,
'C2': 723271787,
'C3': -788330445,
'C4': 31469,
'C5': -450032224},
'C1': 2898408528,
{'C2': 3589438312,
'C3': 1687388969,
'C4': -28246,
'C5': -2078920810}],
'B2': 119,
'B3': 1213135322,
'B4': {'D1': 8713,
'D2': 43915,
'D3': [0.27499011158943176, 0.06530585139989853],
'D4': [17713131191479828289,
2481053165459833564,
9571916938467204955,
585327954383430117],
'D5': [29289, 22467],
'D6': -1999494126,
'D7': 0.7157452974388099,
'D8': 7126535906675209319},
'B5': -39}}
Пример 2
Двоичные данные:
b'DCQD\x80K\xe2(>\x9deH|\x8bh\x16-\x00\x02\x00\x1fe\x03\xcb\xb5\xed\x00\x00'
(b'\x00[}a\xc4\x89q\xd30\xb510\t\xad\x00\\\xae\xd4Y@\x02U\xa6\xc4\xaam3X'
b'\xeei\xb2q\xd1\xce\x1aqR\xa1\x96?l\xbeG?sq\xb3x\xb6$\x91F\xd3\xc2\x15\xfc'
b'\xe3\x93|\xf6\x8a\xca\x12G\x1b\xect\x00\x00\x00\x02\x00\x00\x00C\x00'
b'\x00\x00\x02\x00K\xa2%.\xc9\x1e\xed???\xe8\xe5\xd5\xaf\x8aM\x18\xe9\x1d\xc9'
b'\x1d\xb4\x84*:')
Результат разбора:
'A1': 2152456744,
{'A2': 0.30741333961486816,
'A3': 124,
'A4': 2338854445,
'A5': {'B1': [{'C1': 1640270193,
'C2': 3543184689,
'C3': 805940480,
'C4': 23726,
'C5': -732348414},
'C1': 1436992682,
{'C2': 1832081646,
'C3': 1773302225,
'C4': -12774,
'C5': 1901240726}],
'B2': 101,
'B3': 63682029,
'B4': {'D1': 18203,
'D2': 60532,
'D3': [0.924778401851654, 0.9509536623954773],
'D4': [8698179936689832469, 18222570682192677394],
'D5': [41509, 11977],
'D6': 518864703,
'D7': 0.7780559948463717,
'D8': 16797803314581613114},
'B5': 125}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x55 0x4d 0x46 0x51
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Массив char, размер 6 |
3 | double |
4 | Массив uint16, размер 5 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | int64 |
3 | Массив char, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива структур D |
2 | int64 |
3 | uint16 |
4 | Структура E |
5 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint16 |
3 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | int32 |
3 | uint16 |
4 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RUMFQ\\\x00\x00\x00\x1a\xf0\xd5S\n9/\xbcehonbuqibD\\\xf8\xce\r\xb4'
(b'\xd3\xbf\x8e\xfc\xcc)\x93\x14\x98\x06\xae\x0c\xc4\x1a\x8a\xee-\xc18\xd2'
b'\xf5O0\x1a\xfe\x19\xb2\x98\xd1\xcfp\xde\xbfW>\xe1L\xbb\xdda\xc9PO\xda'
b'\x14=/\x8e_f\x16\xa9\xd9\x81\x84\xba{\xa6\xed\\\x04\x00\x00\x00,\x00\x07}'
b'\xa4\x8a\x97\xf5H:\xaa\xd9u\x82\xb0>\xa9\x133<\n\xb3\x92\x1f\x0f/}\xe6')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': 15148069749680380612, 'D2': 20469, 'D3': 6704},
{'D1': 16028539572928518654, 'D2': 22463, 'D3': 57662},
{'D1': 15730880849289001804, 'D2': 15636, 'D3': 36399},
{'D1': 13440009959825106527, 'D2': 42619, 'D3': 23789}],
{'C2': 4199876683737890055,
'C3': 55722,
'C4': {'E1': 117,
'E2': -1455509374,
'E3': 13075,
'E4': 9020445206926002748},
'C5': -26},
'B2': -4886624354154713062,
'B3': 'eho'},
'A2': 'nbuqib',
'A3': -0.3078646203225086,
'A4': [64654, 10700, 5267, 1688, 3246]}
Пример 2
Двоичные данные:
b'RUMFQ\x8c\x00\x00\x00S_R\xff\xb8^\x95\xefrbyrqyzlj\xe8\x82\xe9-\x10\xb3'
(b'\xd1\xbfR35#H\xaa\xf2\x979\x15s5r\x08\xb4d2\xd3)\x7fN\xf2\xb4[N\xcf'
b'\xb3!\x85\x91<\xee\xf4\xcc~\x13\xcc\t\xa3\xd7lcr\xd5I\x7f>[y\x1ex\xf8t\xf7'
b'7\x02\xc2\xabF\xd6lsP\xac(\xf6<\x9e\x92\x00\xf8[\xcf\x0e\x85\xaf\xc3~Q\xf3bo'
b'\x90\x9e^\xe5\xb59\x1b\xc2\xa6\x9f`\x94\x82\xe9\xdf\xd4\r\x87\xe5D'
b'\x0b\xa3\xacV\x08\x00\x00\x00,\x00\\\x971\xbc\xf1\x0bY\xf3\x19\x98*\x87\xe9K'
b'\xe7S\xe2\xbe\xa4G\x03{\xe0\xde\x17n')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': 15218336815236920691, 'D2': 32553, 'D3': 62030},
{'D1': 10485824363562949556, 'D2': 60988, 'D3': 52468},
{'D1': 7164338202483626878, 'D2': 54642, 'D3': 32585},
{'D1': 17831150019457669950, 'D2': 567, 'D3': 43970},
{'D1': 17737616593932572230, 'D2': 40508, 'D3': 146},
{'D1': 9134337455251479544, 'D2': 62289, 'D3': 28514},
{'D1': 13986836521129254544, 'D2': 40870, 'D3': 37984},
{'D1': 4964522657721608578, 'D2': 41739, 'D3': 22188}],
{'C2': -911684316693424292,
'C3': 38937,
'C4': {'E1': 42,
'E2': -414455417,
'E3': 57939,
'E4': 1720058926642734270},
'C5': 110},
'B2': -1182935178464305325,
'B3': 'rby'},
'A2': 'rqyzlj',
'A3': -0.27655415042504083,
'A4': [13138, 9013, 43592, 38898, 5433]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x55 0x53 0x80
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Адрес (uint16) структуры B |
3 | Массив int64, размер 8 |
4 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 3 |
2 | Массив адресов (uint32) структур C, размер 7 |
3 | uint8 |
4 | Размер (uint32) и адрес (uint32) массива uint32 |
5 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив int8, размер 2 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
3 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MUS\x80i\x89i\x00\x02\xef?\xb1\xc8\x8bP\xb9\x1f\xcf\xabtn\xcb\xab\x0f'
(b'\xce\xf8\x03us\x17\x9bs\xbc\x86\xf21`\xb0\x8d\x06\xe0\xd1\x08d\x97\x8b;X'
b'J\xc0ei\xa7\xa7\xacM\xad\x9f\x9b`\xf8\x1b\xa6\x91:\x89\\\x15d\xb1\x8b.'
b'H\x86rI\x8b\x9d\xddB\x1b`\x1d9\xd6\x84x\xd3\xf8Mw\xd1\xad\xf7\xa8\x1f'
b'\x18\x9f3?b\x17{}7cvbL\x00\x00\x00O\x00\x00\x00R\x00\x00\x00U\x00\x00\x00'
b'X\x00\x00\x00[\x00\x00\x00^\x00\x00\x00\xdc\x02\x00\x00\x00a\x00\x00\x00w_6'
b'=H\x00\xe3\x91}R\x8f\x8a?')
Результат разбора:
'A1': -30359,
{'A2': {'B1': 'cvb',
'B2': [{'C1': 139, 'C2': [-99, -35]},
'C1': 66, 'C2': [27, 96]},
{'C1': 29, 'C2': [57, -42]},
{'C1': 132, 'C2': [120, -45]},
{'C1': 248, 'C2': [77, 119]},
{'C1': 209, 'C2': [-83, -9]},
{'C1': 168, 'C2': [31, 24]}],
{'B3': 220,
'B4': [1648309151, 930970391],
'B5': {'D1': 0.04452463611960411,
'D2': 72,
'D3': 0.012968677956665342}},
'A3': [-5093417484472553726,
1129219806850699039,
8330277720403736782,
472227463145096892,
6357828781298209248,
5597032774384336970,
-7951637338489380947,
3353969390920698170],
'A4': 1232242248}
Пример 2
Двоичные данные:
b'MUS\x80[Di\x00\xb9Rc\xee\xa8\x81\x0c\xad\xbe\xc7m\xa6\xb0\xb8\x84Z>k\xee\x14'
(b'\x85\xa0I\xcb]\xdfe^\x81\xac\x8c\xaeu\x87l\xf1\x11\xbb\x87\xc3j\xe0\xf6\x92'
b'iPB\xb5@\x13,\x183\xd1\x14\xa3A\xe8\xab\r\x81\x12\x91\xfd\xdebVo\xe9[\x91-'
b'\xbb\xed)ql-\x04\xb4\xfc\x10\xf2\xbbe5\x92Ny\x91\x86\xba\xb0g\xc1\xaa%mvi'
b'L\x00\x00\x00O\x00\x00\x00R\x00\x00\x00U\x00\x00\x00X\x00\x00\x00'
b'[\x00\x00\x00^\x00\x00\x00\xd5\x02\x00\x00\x00a\x00\x00\x00\xf5{:?8\xfc\xd4'
b'\x03A/\xa1\xdd\xbf')
Результат разбора:
'A1': 17499,
{'A2': {'B1': 'mvi',
'B2': [{'C1': 233, 'C2': [91, -111]},
'C1': 45, 'C2': [-69, -19]},
{'C1': 41, 'C2': [113, 108]},
{'C1': 45, 'C2': [4, -76]},
{'C1': 252, 'C2': [16, -14]},
{'C1': 187, 'C2': [101, 53]},
{'C1': 146, 'C2': [78, 121]}],
{'B3': 213,
'B4': [2965014161, 631947623],
'B5': {'D1': 0.7284539341926575, 'D2': 56, 'D3': -0.46296292637937575}},
'A3': [-5977260042873515335,
6522541229185288126,
-3798328317268038850,
-5869126542736105635,
-4357308428718405771,
-5385653790014250902,
-6695496728614005952,
-175338565001287615],
'A4': 1867932382}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x42 0x48 0x25
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int64 |
3 | int8 |
4 | int8 |
5 | Структура D |
6 | float |
7 | Массив адресов (uint16) структур E, размер 6 |
8 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | Структура C |
3 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив char, размер 3 |
2 | float |
3 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив char, размер 7 |
3 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint16) массива int8 |
3 | uint16 |
4 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZBH%\x00.\x14\x06\xd1=\xe0\xe7\xbe\xf2\xce3u\x81dizgfvh\x04\xbf\x0e'
(b'\xea9\x00J\x00_\x00q\x00\x86\x00\x9a\x00\xaf\xb5>1\x9fU\x9b\xb9\x9a\x1a\xac'
b'\xb31nht?>\xfb\xe9\x19\x08\xe9I\xc2\x8a$\x86\xba\xf58\xc7\x8a<\xac'
b'W\xe4\x00\x00\x00\x07\x00C\xef\x9e\x1d\x1a:\xbc\x88K?\xd6\xee\xbe'
b'\x8dj\xc7\x00\x00\x00\x07\x00X3|\xdc7S\x8edK\xbfH\xae\xae\x00\x00\x00'
b'\x04\x00m\xa4\x80\xd4\xc5\xf7\xd0\x1a\xa8\x08/\x92\xbf7F\xd5\x00\x00'
b'\x00\x07\x00\x7fi\\<?\x1e\\\x0cR%\xce?B\xe7b\x00\x00\x00\x06\x00\x94'
b'r8\xac\xee\xde\xb4\xcaG,\x9er?\x11\x9a=\x00\x00\x00\x07\x00\xa8\x86N\xd4'
b'\xc3')
Результат разбора:
'A1': {'B1': 6168728186137654065,
{'B2': {'C1': 'nht', 'C2': 0.7460313439369202, 'C3': 6408},
'B3': 3913925258},
'A2': 1443070794315316978,
'A3': -50,
'A4': 51,
'A5': {'D1': 30081, 'D2': 'dizgfvh', 'D3': 4},
'A6': -0.5582614541053772,
'A7': [{'E1': 0.021038003265857697,
'E2': [36, -122, -70, -11, 56, -57, -118],
'E3': 61342,
'E4': 7450},
'E1': -0.27620527148246765,
{'E2': [58, -68, -120, 75, 63, -42, -18],
'E3': 13180,
'E4': -9161},
'E1': -0.7839154005050659,
{'E2': [83, -114, 100, 75],
'E3': 42112,
'E4': -11067},
'E1': -0.7159245610237122,
{'E2': [-9, -48, 26, -88, 8, 47, -110],
'E3': 26972,
'E4': 15423},
'E1': 0.7613431215286255,
{'E2': [30, 92, 12, 82, 37, -50],
'E3': 29240,
'E4': -21266},
'E1': 0.5687597393989563,
{'E2': [-34, -76, -54, 71, 44, -98, 114],
'E3': 34382,
'E4': -11069}],
'A8': 3040752031}
Пример 2
Двоичные данные:
b'ZBH%\x00.E\x84\x10\xd0\x9d\x18K\xc5\x96\xae\x12\x99shhfush^>3\xec\xb7\x00H'
(b'\x00X\x00j\x00}\x00\x93\x00\xa4\xbc\x82\xfc\xd3\xcc\xd0M\xb5\xbe\xbd'
b'\x86\x8fwgz>\x12\xdd\x07\xe4G\x92\x80R\xba\x8aS\x8a\xa6\xa2\xbf\x1cs\xd5'
b'\x00\x00\x00\x05\x00C\xf8\x92\x8b|\xe0\xb0\xbe\xdd\xc3T\x00\x00\x00\x02'
b'\x00V\xc2\x87\xb9W\x83\xd6\xce\xb6?tC{\x00\x00\x00\x04\x00f\x1fH\x84\x12'
b'\x05\xab\xd6\x8f\x83\xbf}`\x16\x00\x00\x00\x05\x00x\xb9GZ:\x9a\x1ew\x00\xbf'
b'\xc2\xdd\xb6\xbf8\x97k\x00\x00\x00\x08\x00\x8b/k\xb6\xef\xfb\x15\x9a'
b'?;\xfd\xc8\x00\x00\x00\x03\x00\xa1z\x142\xa8')
Результат разбора:
'A1': {'B1': -3688362651831925105,
{'B2': {'C1': 'wgz', 'C2': 0.14342127740383148, 'C3': -7097},
'B3': 2457883322},
'A2': 5009147173717691333,
'A3': -106,
'A4': -82,
'A5': {'D1': 4761, 'D2': 'shhfush', 'D3': 94},
'A6': 0.17570768296718597,
'A7': [{'E1': -0.6111424565315247,
'E2': [-118, 83, -118, -90, -94],
'E3': 63634,
'E4': -29828},
'E1': -0.4331308603286743,
{'E2': [-32, -80],
'E3': 49799,
'E4': -18089},
'E1': 0.9541546702384949,
{'E2': [-125, -42, -50, -74],
'E3': 8008,
'E4': -31726},
'E1': -0.9897474050521851,
{'E2': [5, -85, -42, -113, -125],
'E3': 47431,
'E4': 23098},
'E1': -0.7210604548454285,
{'E2': [-102, 30, 119, 0, -65, -62, -35, -74],
'E3': 12139,
'E4': -18705},
'E1': 0.7343411445617676,
{'E2': [-5, 21, -102],
'E3': 31252,
'E4': 12968}],
'A8': 3162701011}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x45 0x55 0x77
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Структура B |
3 | int8 |
4 | Размер (uint16) и адрес (uint16) массива структур C |
5 | Структура D |
6 | double |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 4 |
2 | Массив char, размер 7 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint16) массива int32 |
3 | int8 |
4 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CEUw\x16\x08\x1b\xe1\xe2:Tiiafzyolzotf\x16\x02\x007\x00\xe0u"\xa1'
(b'\xd3\xef\xaf?\x02\x00\x00\x00O\x00i\x96m\x1b>\xf0\x8bU\xae\xa0\x96\xed\xbf|'
b'Z\xabj\xa5\xf9t\xf7b2\xb4\xbc%\x07\nAo\x87C\xbaq\x00\xfe\x15\xee'
b'\xbe\x82\x18\xbbg\xee\xe7')
Результат разбора:
'A1': 7589756018139793430,
{'A2': {'B1': 'iafz', 'B2': 'yolzotf'},
'A3': 22,
'A4': [{'C1': 1789614716, 'C2': -4849195498131359323},
'C1': 1091176229, 'C2': 1584704607337285487}],
{'A5': {'D1': 0.062376607341530166,
'D2': [411221742, -403806277],
'D3': 105,
'D4': 0.1517852246761322},
'A6': -0.9246371655430021}
Пример 2
Двоичные данные:
b'CEUw\x02X\xb4%\xf2\x89sMyhdshhkpnwm\x94\x05\x007\x00`g\xaee\xca\xfb\xb2?'
(b'\x02\x00\x00\x00s\x00\r\xb4\x01m\xbet\xc9M\xcd\x1a\xde\xdc\xbf\x0c\xd4YYi'
b'\xc1y\x0b\xbdN\xc0W\xe8\xa46\xb6cY\xce\x902UG\x95\xb2D\xfbs]\xbe\x8fg\x95'
b'\xebE\x9f\xc3\x9f \xcbR\xabyR\x1e\x0fa[\xb8\x80\xdbB\xf8\xa5\x010@'
b'\xa0\x16\x00\x0f\x0f\x90\xfd2\x11\xb5\x9d')
Результат разбора:
'A1': 5580956036349843458,
{'A2': {'B1': 'yhds', 'B2': 'hhkpnwm'},
'A3': -108,
'A4': [{'C1': 1499059212, 'C2': 6323140450676490601},
'C1': -1237932824, 'C2': -7690084163045664413},
{'C1': 1945846962, 'C2': -6969905821365846435},
{'C1': -887054397, 'C2': 6584560753099516754},
{'C1': 1121681592, 'C2': 6368647031399928}],
{'A5': {'D1': 0.07415451986744648,
'D2': [-40890609, -1649077966],
'D3': 13,
'D4': -0.23145180940628052},
'A6': -0.4510561947746716}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xac 0x56 0x45 0x47
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Адрес (uint16) структуры B |
3 | Адрес (uint16) структуры D |
4 | int32 |
5 | Размер (uint32) и адрес (uint16) массива uint8 |
6 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | float |
4 | Размер (uint32) и адрес (uint16) массива структур C |
5 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int16 |
2 | float |
3 | Размер (uint32) и адрес (uint32) массива uint32 |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int64 |
3 | uint16 |
4 | Размер (uint16) и адрес (uint32) массива int16 |
5 | int8 |
6 | uint16 |
7 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xacVEG\xa7xp\x18f\x00\x8e\x00v$\x7fn\x03\x00\x00\x00\xa6\x00\xf5\x1euN\x07m'
(b'\x0f\x06\xde@k\xd9n{\xf3\xabD4~>J\x94\xf0\xc9*4lN\x92A\xc0d\x90\x8e'
b'\xe1o\x08\xd2\x08E\xdb\x00\x02\x00\x1e\x00\x00\x00!\xe6w\xbf\x03\x00'
b'\x00\x00"\x00\x00\x00\xdf\x03\x00.\x00\x00\x00\x1f\xbd\x0b\xbf\x03\x00\x00'
b'\x004\x00\x00\x00\x95<\xbe\x8ex"\x89\xf0Kk\x80\xee\xbf\x13\x02\x9c>\x02\x00'
b'\x00\x00@\x00>l\x0e\xac\xe3^2\x18\xcf\x81I\xd3@\xe1\xf5\xa7\xf6~\xc8}'
b'\xa9\xf7xIG\xcf\x19A\x81\x07\x00\x80\x00\x00\x00sw]\\\x8eYvNh\x19')
Результат разбора:
'A1': 410024103,
{'A2': {'B1': 2022620732,
'B2': -0.9531761630244413,
'B3': 0.30470332503318787,
'B4': [{'C1': [16606, -9877],
'C2': -0.9683552384376526,
'C3': [2884860782, 1048458308, 3387987018],
'C4': -33},
'C1': [13354, 20076, 16786],
{'C2': -0.5458545088768005,
'C3': [2391827648, 3523768289, 14370056],
'C4': -107}],
'B5': 2886626366},
'A3': {'D1': 200,
'D2': 1859783552014985597,
'D3': 33089,
'D4': [24291, 6194, -32305, -11447, -7872, -22539, 32502],
'D5': 115,
'D6': 23927,
'D7': 1985580636},
'A4': 1853826166,
'A5': [78, 104, 25],
'A6': 436687567026724597}
Пример 2
Двоичные данные:
b'\xacVEG#\x1ec\xb8d\x00\x82\x00+-+\xe5\x02\x00\x00\x00\x9a\x00\x92D'
(b'e\xba\xb0\xc9,\xfe13\xcfo\x9bC\xba\xaca\x95\xe6\xc6\x8d3\x9fd \xf0'
b'\xed\xffS\x89\xcbX\xdfB"4zm1\xf2\x03\x00\x1e\x00\x00\x00\xb9\x8e\xd5\xbe'
b'\x03\x00\x00\x00$\x00\x00\x00(\x03\x000\x00\x00\x00oI\xe2\xbe\x02'
b'\x00\x00\x006\x00\x00\x00\x91\xe8\xce\x80\x04(\xf9\xf2\xe48\xa6\xc1?'
b'p\xd2w\xbf\x02\x00\x00\x00>\x00\xef\x97]"\xcf\'\x1c\xc0\xf9_\x90a\xa3<'
b'OU\xa6\xef\x90\x02\x00~\x00\x00\x00q4\r\xa2kL\x95\xe9\x80')
Результат разбора:
'A1': 3093503523,
{'A2': {'B1': 75550440,
'B2': 0.13788520030170415,
'B3': -0.9680547714233398,
'B4': [{'C1': [13105, 28623, 17307],
'C2': -0.4171045124530792,
'C3': [2506206394, 864929510, 4028654751],
'C4': 40},
'C1': [-19, -30381, 22731],
{'C2': -0.4419665038585663,
'C3': [874660575, 4063325562],
'C4': -111}],
'B5': 576559087},
'A3': {'D1': 249,
'D2': -6461170968535396257,
'D3': 37103,
'D4': [10191, -16356],
'D5': 113,
'D6': 3380,
'D7': -1790153822},
'A4': -450155221,
'A5': [233, 128],
'A6': 18315235545487590546}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xd 0x51 0x59 0x58 0x50
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | Массив float, размер 2 |
3 | int32 |
4 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур D, размер 2 |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | Массив double, размер 3 |
2 | uint32 |
3 | double |
4 | float |
5 | double |
6 | Массив int64, размер 2 |
7 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\rQYXP\x00\x00\x00\x9af\xdc\xed\xd9?\xb3l[\xf3\xc6\x80\xd0?\xe5u5\x02xG'
(b'\xde?\xdb\x97\xc1\x9dg\x9d\xb0\x15\xcdb\x16\xbf\xd0\xab\x1d\x05\xd7\xd7'
b'\\\xbfU\xa4V\xbf\xe6^\x1eN\xc9\xea`v\x0e}\xe4z=\xbaFK\x88\xb8\xdesx\x99'
b'0<\xc2\xbf\xdeB<#\xc1\x04\xa4\xbf\xca|\x1f\xe2\x03,\x00\xbf\xeb\x9fadEs&\xcc'
b'$\x8d\xcd\xbf\x9c\xccJ\x9b\xab\xef\x00\xbe\x8bb>?\xec\xfe\xb5+\x97Z\xf2\xa5'
b'\x95\x9a^\xb0Y\xf45\xd7\xd3W\x1ale?\x98\xe7\x96\x00\x00\x00\r\x00\x00\x00'
b'O\xd1\x00\x00\x00\x91\xbfR\\\xbf>\xe4\xde\xa1C\x1f\xea\xd6w\x0f')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': [0.07587217999980855,
{0.6705575035323326,
0.4311374699741135],
'D2': 365781526,
'D3': -0.2604439312993827,
'D4': -0.8345388174057007,
'D5': -0.6989890612451966,
'D6': [8506875166406326854, 5442803415236778288],
'D7': 15554},
'D1': [-0.47279265872573206,
{-0.2069129804206966,
-0.8632056196616744],
'D2': 3424947661,
'D3': -0.02812305998939646,
'D4': -0.27223390340805054,
'D5': 0.9060922480956306,
'D6': [-6515131554445265867, -2894874364469756008],
'D7': -6250}],
'C2': -47},
'B2': [-0.8217276930809021, 0.4470110237598419],
'B3': 1126165206,
'B4': 30479},
'A2': 1725754841}
Пример 2
Двоичные данные:
b'\rQYXP\x00\x00\x00\x9a\xab1\xba\xa3?\xe2\x15V\x9c\xb9\xd8b\xbf\xd6\x9b'
(b'-\xa59\n\xd4\xbf\xcf\x1cJ>c5\x88\xf9\x96-;\xbf\xe5\xe9\xb9\x0f\x06 '
b'\x08>\xaeD\x8c\xbf\xe4\xcf\xd4\xa9\xf3\xe7\xf6\xfe\x17\xd1\xf0\xac\x18\x89'
b'\xb9\x9b\x08s\x8c\xce\xc2+$O\x8d\xbf\xd0\x8cS\xffm\x07\xb4\xbf'
b'\xd1\xc1\x91\x8b\x03\xa8\x90\xbf\xda\xc6\xc5\xa6\xddB\x9c\x07N\x8e\xc4\xbf'
b'\xe9^\xaf5\xda\x8f\xbe\xbe\xfb{G\xbf\xd5\x94\x85~\x18h\xd4\x91X\x01p\xe9'
b"\x02+\xd8\x1f\xceo\x10?\x99\xd4'>N\x00\x00\x00\r\x00\x00\x00O\x17\x00\x00"
b'\x00\x91?f\xca\xcc=\xc0 c2\xf9\x0b\x86a\xb4')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': [0.5651047764829509,
{-0.35322133193055305,
-0.24305084272638688],
'D2': 4187368763,
'D3': -0.684780625671011,
'D4': 0.3403667211532593,
'D5': -0.6503699607267197,
'D6': [-137410432001865287, -7275438149415589084],
'D7': 20365},
'D1': [-0.2585649485009711,
{-0.27743948531736695,
-0.4183820848020703],
'D2': 122588868,
'D3': -0.7928081561881226,
'D4': -0.4911749064922333,
'D5': -0.3371900302314661,
'D6': [-7973621555802264616, 2291891375955366951],
'D7': 15950}],
'C2': 23},
'B2': [0.9015319347381592, 0.0938117727637291],
'B3': 855182214,
'B4': 25012},
'A2': -1422804317}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x36 0x4d 0x4a 0x4f
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
3 | int16 |
4 | Адрес (uint16) структуры B |
5 | uint32 |
6 | int8 |
7 | uint64 |
8 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | Адрес (uint32) структуры C |
4 | Массив адресов (uint16) структур D, размер 3 |
5 | Размер (uint16) и адрес (uint16) массива float |
6 | Массив int32, размер 3 |
7 | Структура E |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int32, размер 2 |
2 | uint32 |
3 | int16 |
4 | int8 |
5 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'6MJO#/\xbe|`3\x80J`\x00n\xa2E\xea\xb4\x02\x05\xce\x0c\x17\xc8\x05\x89\x8b'
(b'\xd8YK;\xe2J\x80\xe0 \x1e\xd44gj\x19\xca8\xb2\x96\xd1\xe6&\x86C\xfe\x06\x03:'
b'\n\x8c$R\xd9\x12peg\x05*\n5aa\xddBv~\t\x99\x7f\xad\x19\xea$y\xd7'
b'A\xfb\x80\xadj,$\xbf`\x94Q\xbee,\xe3>\x87\x11\xbe\xb2\x1c\x00\x00\x00'
b'(\x008\x00H\x00\x02\x00X\x00\x91L\xbf?\xdc;\xc0\xdb\xa0g\x90GN\xed'
b'\xe1\x0fl\x10\x03\xe0\x11\xc2')
Результат разбора:
'A1': 12067,
{'A2': 861961406,
'A3': 19072,
'A4': {'B1': 0.44369807839393616,
'B2': -1296166521,
'B3': {'C1': 16177012197032679896, 'C2': 886316576},
'B4': [{'D1': [-904304025, -778653128],
'D2': 1132865254,
'D3': 1790,
'D4': 3,
'D5': 58},
'D1': [1378126858, 1701843673],
{'D2': 170526055,
'D3': 24885,
'D4': 97,
'D5': 221},
'D1': [159282754, 430800793],
{'D2': 3615040746,
'D3': -1215,
'D4': -128,
'D5': 173}],
'B5': [-0.6413027048110962, -0.2046675682067871],
'B6': [1069501585, -608158756, 1200646048],
'B7': {'E1': -2304980527974585010, 'E2': -15855}},
'A5': 3930432110,
'A6': -76,
'A7': 9873517759404311810,
'A8': -117}
Пример 2
Двоичные данные:
b'6MJO(\x84\xb4"ag\x89\x07`\x00\xd8\x85\xbef\xb48Z\xc2\x0ej\xcf\xe9\x84\x92'
(b"nZ\xab\x04frKJ\xa2R\xfe\xd1\x9c\r\x1dW\x1cG\xc7'n\xfd\xbc\\\x08\xf7E\x9e"
b"z\xcfN\xf4\x9f\x85'\xff\x13\xe4\xee\xfd\x0b\x02\x1a,\x90\xe6\xe97"
b'\xe3\xe2\x8a6\x1c#\xc0z\x9e\x91\xa1\x8c\x81it?j\x8fF\xbd\xdc\x17\xf3>'
b'\x89\xd3yb\x1c\x00\x00\x00(\x008\x00H\x00\x02\x00X\x00\xe3Y\xf0\x98\xefq'
b'N|X\xfb\x8ey\x06\x8b{d\xc2\x87\xf2\x9d\x19\x9d')
Результат разбора:
'A1': -31704,
{'A2': 1734419124,
'A3': 1929,
'A4': {'B1': 0.47479140758514404,
'B2': 1652151177,
'B3': {'C1': 5353498364550535790, 'C2': -771861854},
'B4': [{'D1': [1461521820, 667371292],
'D2': 1555889518,
'D3': -2296,
'D4': 69,
'D5': 158},
'D1': [-196161670, -14187105],
{'D2': 4260291603,
'D3': 523,
'D4': 26,
'D5': 44},
'D1': [938075792, 915071715],
{'D2': 2059412252,
'D3': -28258,
'D4': -95,
'D5': 140}],
'B5': [0.9547348618507385, -0.04847661405801773],
'B6': [-1729078813, 2085515759, 2039413592],
'B7': {'E1': -7065435596411663610, 'E2': -25319}},
'A5': 1723762136,
'A6': -76,
'A7': 9577414137001171512,
'A8': -110}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xf4 0x55 0x54 0x41 0x42
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int16 |
3 | uint8 |
4 | Размер (uint16) и адрес (uint32) массива int32 |
5 | float |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint16 |
3 | Массив структур D, размер 2 |
4 | Размер (uint32) и адрес (uint16) массива int32 |
5 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int8 |
3 | uint16 |
4 | Размер (uint32) и адрес (uint32) массива uint16 |
5 | uint64 |
6 | Массив int16, размер 2 |
7 | uint64 |
8 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xf4UTABg\x8fe\xca\xd7\xde\xe2\x9a\xf8\x9c\x0f\xa7\xfa \x1f\x98*\xe6\x02'
(b"\x00\x00\x00o\x00\x00\x00\x8d\xb2\xe6\x97\x16bG\xea\xdaXn\x855^_\xd0\xe1'ni "
b'\x7f\xab=0\xad\x95z\x06\x00\x00\x00s\x00\x00\x00\xc7~\x1f\xee5'
b'\xfc\x19\x11\xbd>\xce\x85}\xa1\x80\xe0Fu\x92\xa1\xea^\\?\x04\x00\x00\x00\x7f'
b'\x00\xe0u\x0c\x19\x02\x00\x8f\x00\x00\x00\x13\x80`\xbe\xb7\xbe5\xac\xe3'
b'\x11\x01\xc4\xa2\xd9\x8bnnp\xef\xb2\x9bc\xc5R\xcc\x0c\x98\x1cx&(n\xbb'
b'ix\xeb\xa5OE\xe2\t\xa2\n\xcc')
Результат разбора:
'A1': -899313817,
{'A2': {'B1': {'C1': 12038012920549007063,
'C2': 8442,
'C3': [{'D1': 31,
'D2': -104,
'D3': 58922,
'D4': [48823, 44085],
'D5': 16881569577398874765,
'D6': [22746, -31378],
'D7': 7597053472237641269,
'D8': 0.08373856544494629},
'D1': 48,
{'D2': -83,
'D3': 31381,
'D4': [4579, 50177, 55714, 28299, 28782, 45807],
'D5': 1232293281621049031,
'D6': [16061, -31282],
'D7': 11642496933980840317,
'D8': 0.8608232736587524}],
'C4': [1388667803, 479726796, 1848125048, -344430149],
'C5': -32},
'B2': 3189,
'B3': 25,
'B4': [-498774107, -871718391],
'B5': -0.21923856437206268}}
Пример 2
Двоичные данные:
b'\xf4UTAB\x83\x80\xe7b\xd09}i\xe9\x16\xd0dP\xed\xb8z\t\xff\x02\x00\x00\x00o'
(b'\x00\x00\x00\xcd\xe5\x17\x99aS\xb1&\xe1V/\xf4\x85bPf\xf3\xaf\xac\xc0\x93'
b'*\xba\xbe\xee\xd4\xdc}\x04\x00\x00\x00s\x00\x00\x00\xca\x8f\xc7\xa6\x9a'
b'\xc7\xf2\xa2\xa3\xe5~q\xf47r\x0c\x97\xaa\xbaF\x0f\xf0\xa3\xbe\x03'
b'\x00\x00\x00{\x003\xd1mO\x04\x00\x87\x00\x00\x00\x10W\x0f\xbf3\xbb\xe98\xd4'
b'\x1a\x197\xeb\xef\xd5\xb0\x8a~\xc9\xbb\x94w\xefcAp\x7f\x91\xf7'
b'\xc9\xc4\xdf\x02X\xd3\xe8\xacx\x96:<\x80\x1e\x83')
Результат разбора:
'A1': 1659338883,
{'A2': {'B1': {'C1': 7264331390701615568,
'C2': 60752,
'C3': [{'D1': -72,
'D2': 122,
'D3': 65289,
'D4': [47923, 14569],
'D5': 2788101322964461005,
'D6': [22241, -3025],
'D7': 13883665211204854405,
'D8': -0.3636060655117035},
'D1': -18,
{'D2': -44,
'D3': 32220,
'D4': [6868, 14105, 61419, 45269],
'D5': 11741666645545291722,
'D6': [-6749, 29054],
'D7': 5096573494048733172,
'D8': -0.3201908767223358}],
'C4': [-1144422774, 1676638100, -1853919167],
'C5': 51},
'B2': 28113,
'B3': 79,
'B4': [-540751369, -388802558, 982939820, -2095153092],
'B5': -0.5599222183227539}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc1 0x47 0x49 0x57 0x4d
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив char, размер 8 |
3 | Структура B |
4 | float |
5 | Размер (uint32) и адрес (uint16) массива int16 |
6 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив структур C, размер 4 |
3 | Размер (uint16) и адрес (uint32) массива int8 |
4 | Адрес (uint16) структуры D |
5 | int8 |
6 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | uint8 |
3 | int32 |
4 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | double |
3 | float |
4 | uint16 |
5 | Размер (uint32) и адрес (uint16) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xc1GIWMJifcffkkqc\xae\x0b\xb5\xbf\xe1+\x99\n\xfbR0>e\x1bv\xe89\xc7\xbf\xe76'
(b'Q\x9d\xfa\x86\x04!5\xa7~\xbe\x978?\xb5I\xf6\x86b,\xc0\xba\x18"\x0e'
b'\xc9|\xa9\xbf\xe8\xc1\xea\xc0\xac\xa2hm^\x92\x85}JB\x00\x02\x00\x00\x00j'
b'\x00rk\x9e\x03\x89\x19P\xf4I,\xbd\xa2w\xa6\x00\x00\x00\x05\x00'
b'\x8e\xda\x9c\x9c\xd4\xbe@\x9d\xf2\xb3\x8b*\xa4Qk\x1c\x86b\xbf\xeb'
b'\xc7=\x1e\x01I\x98?\x14\x16\xc0$\xa2\x00\x00\x00\x03\x00l\x1c\xee\xd6+\xd0w'
b'\xb0vY\xe0')
Результат разбора:
'A1': 74,
{'A2': 'ifcffkkq',
'A3': {'B1': 1672350645,
'B2': [{'C1': -0.5365719999777578,
'C2': 62,
'C3': 1696298728,
'C4': 14791},
'C1': -0.7253807149429012,
{'C2': 33,
'C3': 900169406,
'C4': 38712},
'C1': 0.08315983563277296,
{'C2': 186,
'C3': 404885193,
'C4': 31913},
'C1': -0.7736715090914688,
{'C2': 109,
'C3': 1586660733,
'C4': 19010}],
'B3': [-100, -100],
'B4': {'D1': -8418735883819383198,
'D2': -0.8680711351428725,
'D3': 0.5784721374511719,
'D4': 9378,
'D5': [54462, 16541, 62131]},
'B5': 107,
'B6': 11386095024748120364},
'A4': -0.07932977378368378,
'A5': [7406, -10709, -12169, -20362, 23008],
'A6': -38}
Пример 2
Двоичные данные:
b'\xc1GIWM\xe0wmigywxx\xcb2GY\xbf\xe5\xacp\x1f\xe7\xd4\\;\x89\xc4\x7f\xfc_'
(b'\xf0?\xe0\x01,\xa6\xa7}\x1a\xaa\x04\xfa4\x05P\xed\xbf\xe1\x8a\xbc'
b'\xc8\x9c\xfb\xd2BW3\x12xxA?\xe3w\xab\xad\xba+\x10\x10\x9f@\xe3\x04'
b'\x1cq\x00\x03\x00\x00\x00j\x00s\x0c\xca\x8b{\xee\x1cM\xe0\x9b>\xc6*\x8c\x00'
b'\x00\x00\x02\x00\x8f\x151]^\xa5\x8bg\xd7]R\xd2\xd39~8\xc0\xd26?\xeeu/\x8b'
b'g\x95&\xbe_\x0c\xe2\xde*\x00\x00\x00\x03\x00m\x1b\xa4\xe0H')
Результат разбора:
'A1': -32,
{'A2': 'wmigywxx',
'A3': {'B1': 3409069913,
'B2': [{'C1': -0.6772995589405002,
'C2': 59,
'C3': -1983610884,
'C4': 24560},
'C1': 0.5001433615651962,
{'C2': 170,
'C3': 83506181,
'C4': 20717},
'C1': -0.5481857221819786,
{'C2': 66,
'C3': 1462964856,
'C4': 30785},
'C1': 0.6083582299337156,
{'C2': 16,
'C3': -1623137532,
'C4': 7281}],
'B3': [49, 93, 94],
'B4': {'D1': -3255194891377913290,
'D2': 0.951804897570274,
'D3': -0.2178225815296173,
'D4': 56874,
'D5': [42379, 26583, 23890]},
'B5': 12,
'B6': 14594895280031522971},
'A4': 0.3870433568954468,
'A5': [7076, -8120],
'A6': 21}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x8 0x46 0x4b 0x5a 0x53
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Структура B |
3 | int8 |
4 | uint16 |
5 | Структура E |
6 | int32 |
7 | Адрес (uint32) структуры F |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура C |
3 | Размер (uint32) и адрес (uint32) массива структур D |
4 | Массив int8, размер 5 |
5 | Размер (uint32) и адрес (uint16) массива int8 |
Структура C:
Поле | Описание |
---|---|
1 | Массив char, размер 2 |
2 | float |
3 | uint64 |
4 | uint32 |
5 | uint32 |
6 | uint64 |
7 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | double |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | int8 |
3 | uint64 |
4 | int16 |
5 | double |
Структура F:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | Размер (uint32) и адрес (uint16) массива float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"\x08FKZS>.tg\xbbgp>\xf4^\xb3\xf2'*N!\x8e)GxU+\x00\xa2]\x8d\x9d}\xe7\x99T"
(b'\xf0Z\xfb\xec\xe1\x00\x00\x00\x00\x03\x00\x00\x00\\Q\x00r\x9e\xa6\x00'
b'\x00\x00\x05\x00\x80Px\x06Wt\xc4|\x9d\x06\xc8\xe8/\x18\xffU?z\x1b2'
b'\xf1U\x05\x00\xbe\x04\xfdi\x00\x00\x00\x8d\xbfl.\x11?\xe3\xc4\xe9\x99\x8c7 '
b'\xbd+S\x03?\xea"\xb8\xd2\x91u\xe4\xbfx\x00\xae\xbf\xebB\xfc\xda[\xd9h'
b'Ed\xc0\xc5\xf1?Uh\xdc\xbf[\xaf\xab\xb0\xdf\xe6\x0f6]&\xb2^\x0b\xf3'
b'M\x00\x00\x00\x02\x00\x85')
Результат разбора:
'A1': 0.17036591470241547,
{'A2': {'B1': 187,
'B2': {'C1': 'gp',
'C2': 0.4772849977016449,
'C3': 17448961796329056583,
'C4': 2018847488,
'C5': 2724040093,
'C6': 9072388564449950700,
'C7': -7936},
'B3': [{'D1': -0.9225779175758362, 'D2': 0.61778717031277},
'D1': -0.041827213019132614, 'D2': 0.8167385208759552},
{'D1': -0.9687603712081909, 'D2': -0.8519272103138009}],
{'B4': [81, 0, 114, -98, -90],
'B5': [69, 100, -64, -59, -15]},
'A3': 80,
'A4': 30726,
'A5': {'E1': 87,
'E2': 116,
'E3': 14158363981012021016,
'E4': -171,
'E5': 0.006373595232902263},
'A6': -1106969239,
'A7': {'F1': 2967463439,
'F2': 3917329798406075213,
'F3': [0.8336312770843506, -0.8581492304801941]}}
Пример 2
Двоичные данные:
b'\x08FKZS\xbeTs8\xd8ky\xbd\x07\x0c\x9c\xa7dN\xf1E$\xc3\x96\x96?\x7f\xe3\\&Hy'
(b'f\x80\xb2\xe8\xf4iO\xa3\x90\xc4\x00\x00\x00\x02\x00\x00\x00\\*\x05'
b'\x980\x81\x00\x00\x00\x05\x00tb?\xb5\x9d\xf6\x8b57\x9b\xc8\x0ek\x9aY\x92'
b'?\xd98\x93K|:<\x7f\xfa\xfe\x9c\x00\x00\x00\x85\xbe\x00\xd5\xe3?\xd3\xf5\xed'
b'\xe2h\xec\xd4?l?\x99?\xe9l\x9e\xb8\x1c\xc3\x86\x96\xc4\xec\xe1\xa0?/\x08'
b'G\xbeK\xc2c\xbf\x15\x8a\x0f\x87\x8bo\x82\xdc\xcd\x9c\x8a\xe9\xf3\xa6'
b'z\x00\x00\x00\x03\x00y')
Результат разбора:
'A1': -0.20747077465057373,
{'A2': {'B1': 216,
'B2': {'C1': 'ky',
'C2': -0.032971009612083435,
'C3': 12061852500159153046,
'C4': 2520743907,
'C5': 1546012793,
'C6': 7386100102490312611,
'C7': -28476},
'B3': [{'D1': -0.12581591308116913, 'D2': 0.31188532934511426},
'D1': 0.9228454232215881, 'D2': 0.7945092769569875}],
{'B4': [42, 5, -104, 48, -127],
'B5': [-106, -60, -20, -31, -96]},
'A3': 98,
'A4': 16309,
'A5': {'E1': -99,
'E2': -10,
'E3': 10030984887253494682,
'E4': 22930,
'E5': 0.39407808658225796},
'A6': 2147155612,
'A7': {'F1': 2274062210,
'F2': -2536198894695242118,
'F3': [0.683720052242279, -0.19898371398448944, -0.5841378569602966]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x43 0x49
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Массив адресов (uint16) структур C, размер 7 |
3 | int8 |
4 | int16 |
5 | Массив char, размер 3 |
6 | Адрес (uint32) структуры D |
7 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | float |
4 | uint8 |
5 | double |
6 | uint64 |
7 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Адрес (uint16) структуры E |
3 | Размер (uint32) и адрес (uint16) массива uint32 |
4 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | Массив int8, размер 5 |
2 | uint8 |
3 | uint8 |
4 | Размер (uint32) и адрес (uint32) массива int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UCI\x00\x1e\x00>\x00C\x00H\x00M\x00R\x00W\x00\\\x9c\x08olqi\x00\x00\x00'
(b'\x83\xe2{;U\\e\xef\xf6\xdc\x86\xbf\x0eb\xa5\xd9\xbf\xc6\xe8\x1c\x93w\xddx'
b'\x15\x92\x9ey\xe6)fX\xdf<\xf1\t\xa3\xfb\x9eb\x05V\xe1i\xb2\xbf\xb4\xf9'
b'\xc9\x9f\x9f\x86V(\x1a$\xe4\xcch\x84\xd7!\x13$\xd0\xear1\x0f\r6\xc2'
b'|\x0e$\x1c]"\xd6\x00\x00\x00\x03\x00\x00\x00a\xb7\xbd\xb3\xablP]\xd3\xc3'
b'\x17.\x1a\xf0\x01\xf6\xa8\x94z\x93\x9a\xe0\xbf\xf3\xf4\x00d\x00\x00\x00'
b'\x04\x00s\xca\xbfjb')
Результат разбора:
'A1': {'B1': 123,
{'B2': 4275425014145539206,
'B3': -0.5561926960945129,
'B4': 217,
'B5': -0.17895848465535003,
'B6': 1554479067785946712,
'B7': -8388},
'A2': [{'C1': 4043940859, 'C2': 158},
'C1': 1644517089, 'C2': 105},
{'C1': 2998908153, 'C2': 201},
{'C1': 2678031958, 'C2': 40},
{'C1': 438625484, 'C2': 104},
{'C1': 2228691219, 'C2': 36},
{'C1': 3505025585, 'C2': 15}],
{'A3': -100,
'A4': 2159,
'A5': 'lqi',
'A6': {'D1': 10699026158176957428,
'D2': {'E1': [124, 14, 36, 28, 93],
'E2': 34,
'E3': 214,
'E4': [13, 54, -62]},
'D3': [3082662827, 1817206227, 3273076250, 4026660520],
'D4': 3401542242},
'A7': 226}
Пример 2
Двоичные данные:
b'UCI\x00\x1e\x00>\x00C\x00H\x00M\x00R\x00W\x00\\?\x1c2gfp\x00\x00\x00'
(b'{3\xdd\xb5-\x17=\xe1\x1c\x9d\x99\xbf\x05\xe2\x86\xf8?\xd6\x9f\xb1'
b'v\xe4\x03\xc8$\xc2\xe0\xc02\x8d#*\xec\x1e\xbci\rma\x83\xf3\xf7\xed\xfb'
b"[\xa73?\xc9\xbe\x94)b\x16\x92'\x10:\xfc;\xfe\x97\x884M\x18\xdet"
b'\xb1\xad\xed\xcb0\x1dM\xea`5\xfa\x00\x00\x00\x03\x00\x00\x00a\x067b\x07\x98'
b'\xc3\xcd05\xb6\xd9\x1fz[\xdd\xec\x00d\x00\x00\x00\x02\x00s%\xc8|\xf9')
Результат разбора:
'A1': {'B1': -35,
{'B2': 13055116449354128793,
'B3': -0.5229877233505249,
'B4': 248,
'B5': 0.3534969006578277,
'B6': 2648926646933725994,
'B7': -5090},
'A2': [{'C1': 3161001325, 'C2': 97},
'C1': 2213804013, 'C2': 251},
{'C1': 1537684287, 'C2': 201},
{'C1': 3197380962, 'C2': 22},
{'C1': 2452033594, 'C2': 252},
{'C1': 1006540680, 'C2': 52},
{'C1': 1293475444, 'C2': 177}],
{'A3': 63,
'A4': 7218,
'A5': 'gfp',
'A6': {'D1': 3870519658991574508,
'D2': {'E1': [48, 29, 77, -22, 96],
'E2': 53,
'E3': 250,
'E4': [-83, -19, -53]},
'D3': [104292871, 2562968880],
'D4': 633896185},
'A7': 51}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x42 0x56 0x41
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint32 |
3 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | uint16 |
3 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур E |
4 | int32 |
5 | int32 |
6 | Структура F |
7 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры D |
2 | uint32 |
3 | Размер (uint16) и адрес (uint16) массива char |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
3 | int64 |
4 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | Массив uint16, размер 6 |
2 | uint16 |
3 | Размер (uint16) и адрес (uint32) массива float |
Структура F:
Поле | Описание |
---|---|
1 | uint16 |
2 | double |
3 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'IBVA\x00HK\xe0\x00\x00\x00\x02\x00\x00\x00\x92\x11!\xeb|\x02\x1cq\x0e'
(b'9\x1d?\xee\xc5\xd2&\xcd\xfc\xe8\xbf\xefH(\xbf\xeb\xb8P\xf1H\x96\xa5\xcd\xdb'
b'\xa0\xc8\xd5\x08\xaa\x1f\xb1\x95\xf9(*\x8e\xd2\r{l\xb9\x94\x13\xea\x00Awe'
b'\x004\xb4-:\xfb\x00\x02\x00F\xbf(P\x1f?\x14\xc1\xe6>\xa6j::\x0fP\xc1=\x18'
b'\xd0\x1dd\x80\xce\xdab\x8f\x00\x03\x00\x00\x00R\xbeY\xfa\xd7\xbe\xb9'
b'\x05\xde\xbfV\xc1\x00m\xdb\xb7\xae\x96\x03\xaal\xe7W\x84\xf9\xbc\xb3'
b'\x00\x03\x00\x00\x00r\x00\x00\x00^\x00\x00\x00~')
Результат разбора:
'A1': {'B1': {'C1': {'D1': 43551,
{'D2': -1315571416,
'D3': 3066619351633017236,
'D4': 334102593},
'C2': 3022863099,
'C3': 'we'},
'B2': 19424,
'B3': [{'E1': [14863, 20673, 15640, 53277, 25728, 52954],
'E2': 25231,
'E3': [-0.657472550868988,
0.5810836553573608,
0.325029194355011]},
'E1': [28123, 47022, 38403, 43628, 59223, 34041],
{'E2': 48307,
'E3': [-0.21287094056606293,
-0.3613728880882263,
-0.8388824462890625]}],
'B4': 287435644,
'B5': 35418382,
'B6': {'F1': 14621,
'F2': 0.9616480596449977,
'F3': -0.9775584934666401},
'B7': 61768},
'A2': 2527448539,
'A3': -1597451000}
Пример 2
Двоичные данные:
b"IBVA\x00H\xcaW\x00\x00\x00\x02\x00\x00\x00\x92~\x00\x1e(-0\x9a\xfbf'?\xdc"
(b'\xe0\xcb\x97pq\x0c\xbf\xdc`\xcd\xe1oD\xd8\xbf\x1c\xfc{\x9aKR\xdd`\xef'
b"\x97\xec\xd8\x1f'\x17\xd8\ts\xa7#S\x94\\\x11\x99\xd1Myu\x004>\x02"
b'\xe1\xb1\x00\x02\x00F\xbe\x0ex5\xbft\x89-\xa7\x05\xb5\x08\xcd\xf8V\xe7\x19 '
b'\x12\x162\xae\x00\x02\x00\x00\x00R\xbe\x83\x03P\xbf\x03PL?:\xc9w\xbe\xe0'
b"7\xd8\xf0\xd3\x7f\x15\xb6\\\x89\xc6'\x87\xc1\xc0YL\x00\x04\x00\x00"
b'\x00n\x00\x00\x00Z\x00\x00\x00~')
Результат разбора:
'A1': {'B1': {'C1': {'D1': 38892,
{'D2': -669047017,
'D3': -2879643325037308836,
'D4': 295293261},
'C2': 1040376241,
'C3': 'yu'},
'B2': 51799,
'B3': [{'E1': [42757, 46344, 52728, 22247, 6432, 4630],
'E2': 12974,
'E3': [-0.13913042843341827, -0.9552181363105774]},
'E1': [61651, 32533, 46684, 35270, 10119, 49600],
{'E2': 22860,
'E3': [-0.25588464736938477,
-0.5129439830780029,
0.7296366095542908,
-0.4379260540008545]}],
'B4': 2113936936,
'B5': 758160123,
'B6': {'F1': 26151,
'F2': 0.4512204150103265,
'F3': -0.4434084607610891},
'B7': 48924},
'A2': 4235958859,
'A3': 1390239983}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x52 0x45
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Структура B |
3 | Структура D |
4 | Размер (uint32) и адрес (uint32) массива float |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 5 |
2 | int16 |
3 | Массив uint16, размер 5 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива int8 |
2 | Размер (uint32) и адрес (uint32) массива int8 |
3 | int64 |
4 | int16 |
5 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CRE\xe9g\x003\x00R\x00q\x00\x90\x00\xaf\xa8%(kn\x0c\x1dwYF\xae\x11?'
(b'\x95T^\xf3\xdfI@I\xef>\x0e\x00\x00\x00\x06\x00\x00\x00\xca\xd3'
b'\xe4\xda\xe7\x00\x00\x00\x02\x00\x00\x00/\x00\x00\x00\x02\x00\x00\x001\xed'
b'T/GE\xc6\x00m*\xaa\x0c\x1eA\xe4\xa1\x00\x00\x00\x02\x00\x00\x00N\x00\x00'
b'\x00\x02\x00\x00\x00PD3\xb2j\xe0\xd3\x19\x8e\xfc,F\x96\x1d\xfb'
b'\xf0\x00\x00\x00\x02\x00\x00\x00m\x00\x00\x00\x02\x00\x00\x00o\xc9\x8c\x1d'
b'\xdaM\xf0\xb9&\n\xb2\xed\xa3\xa4\xdaB\x00\x00\x00\x02\x00\x00\x00\x8c'
b'\x00\x00\x00\x02\x00\x00\x00\x8e\xc5Y\xdc\x0c_\xa6\xc6g\xc5\x94\x8b\xeb'
b'\x82\xe1\xc8\x00\x00\x00\x02\x00\x00\x00\xab\x00\x00\x00\x02\x00'
b'\x00\x00\xad\x8b\x13\t7\x949\x04I\xc8\xad\xea\xbf\x18\xabq>\x95\x0f\xe6=\xde'
b'\xff\r\xbc\x0f,x?#\xed\x85\xbe\xfa\x84\xa3')
Результат разбора:
'A1': -5785,
{'A2': {'B1': [{'C1': [-45, -28],
'C2': [-38, -25],
'C3': -1345398405517148051,
'C4': 10922,
'C5': 12},
'C1': [30, 65],
{'C2': [-28, -95],
'C3': 4914467790499551630,
'C4': -980,
'C5': 70},
'C1': [-106, 29],
{'C2': [-5, -16],
'C3': -3923728351898846938,
'C4': 2738,
'C5': 237},
'C1': [-93, -92],
{'C2': [-38, 66],
'C3': -4226104829608016281,
'C4': -14956,
'C5': 139},
'C1': [-21, -126],
{'C2': [-31, -56],
'C3': -8425380343565450167,
'C4': -14163,
'C5': 234}],
'B2': -22491,
'B3': [10347, 28172, 7543, 22854, 44561]},
'A3': {'D1': 0.020829661974695712, 'D2': 1240415758},
'A4': [-0.5963659882545471,
0.2911369204521179,
0.10888490825891495,
-0.008738629519939423,
0.6403430104255676,
-0.4892931878566742]}
Пример 2
Двоичные данные:
b'CRE\xf8\xb1\x003\x00R\x00q\x00\x90\x00\xaf\r\xbbO\xdb!\xe9\xea$M'
(b'\x93\xc9\xc6?\xd3\x96\xa7\xc7\xe8\xe1\xf4\xab(6"\x00\x00\x00\x08\x00'
b'\x00\x00\xca\xf8\xc1V\xd9\x00\x00\x00\x02\x00\x00\x00/\x00\x00\x00\x02\x00'
b'\x00\x001\x96\x13}\x173s;5\xd6f\xb2\x9c\xee\xbe\xe7\x00\x00\x00\x02\x00\x00'
b'\x00N\x00\x00\x00\x02\x00\x00\x00P\x91\x9f?M\xbb|a\xd7\n\xac \x08C\xa5'
b'Y\x00\x00\x00\x02\x00\x00\x00m\x00\x00\x00\x02\x00\x00\x00o7\xcbn\xfb0\x02v'
b'5\xfaLM\xd9\x06W\n\x00\x00\x00\x02\x00\x00\x00\x8c\x00\x00\x00\x02'
b'\x00\x00\x00\x8es\xdc\x927\xce\x08\xf7\xeaz\xdd&\x99\x80Q\x94\x00'
b'\x00\x00\x02\x00\x00\x00\xab\x00\x00\x00\x02\x00\x00\x00\xad\x0c'
b'O\xd9\x02\xb0\xb0\xa3\xf5)\xd0\xcf\xbe\xde\n\xf5\xbe\x8c\xael>\xc3\xc6?\xbf>'
b'\x9e\xdf\xbe\x15\xb3X>\xc4\x0eu?cj\xe0\xbf\x1f\xd9\xb2')
Результат разбора:
'A1': -1871,
{'A2': {'B1': [{'C1': [-8, -63],
'C2': [86, -39],
'C3': -7632619404861949131,
'C4': -10650,
'C5': 178},
'C1': [-100, -18],
{'C2': [-66, -25],
'C3': -7953568813822484009,
'C4': 2732,
'C5': 32},
'C1': [8, 67],
{'C2': [-91, 89],
'C3': 4020429117479614005,
'C4': -1460,
'C5': 77},
'C1': [-39, 6],
{'C2': [87, 10],
'C3': 8348708577615607786,
'C4': 31453,
'C5': 38},
'C1': [-103, -128],
{'C2': [81, -108],
'C3': 887166257192805365,
'C4': 10704,
'C5': 207}],
'B2': 3515,
'B3': [20443, 8681, 59940, 19859, 51654]},
'A3': {'D1': 0.3060702755206244, 'D2': -1423428062},
'A4': [-0.4336773455142975,
-0.27476823329925537,
0.3823718726634979,
-0.7446116805076599,
-0.14619195461273193,
0.38292279839515686,
0.8883495330810547,
-0.6244155168533325]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x42 0x41 0x67
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint64 |
3 | Структура C |
4 | Массив адресов (uint32) структур F, размер 4 |
5 | Массив int16, размер 7 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | Структура D |
4 | Массив char, размер 4 |
5 | Адрес (uint16) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | float |
3 | int16 |
4 | float |
5 | double |
6 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | Массив uint64, размер 3 |
2 | int16 |
3 | uint16 |
4 | uint8 |
Структура F:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'IBAg\x12\x95B\xd4n\xce\xb2\xe4!\xc4}/|\xa9\xbf\xb3\x8b\xb9]?\x9e\xc0\xa6\x9b'
(b'\x1d\xc5?\xd2\x95e\x91\xde*\xf4\xbfZ\xda\xdfC\xf0\xbd\xc45\xd7\xbf\xecwN'
b'\xe0\x8f|\xe4\xcdFf\xfcbqhz\x00`\x00\x00\x00}\x00\x00\x00\x83\x00\x00'
b'\x00\x89\x00\x00\x00\x8f\t\r\xe5w6R\x99?.w\n\x0b\xf3\xe0\x90\xad8\xda'
b"\xd1lG\x05\x17Y\xc8\r\xa3b\xf1\xf6'\x12\xb7<:P|\xd9X\x0b\\\x98Bu\\\xe0"
b'\xf6\x14(\xd3\xec\xb6\xe9\x85z\xd9!\xa4<\xdb\xc3\xb6\x83T\xb7\xed\xa4')
Результат разбора:
'A1': {'B1': 4757, 'B2': 1121218254},
{'A2': 12890465161238772905,
'A3': {'C1': -0.07635077025008297,
'C2': -1499783739,
'C3': {'D1': 0.2903684544077543,
'D2': -0.8549022078514099,
'D3': 17392,
'D4': -0.0958058163523674,
'D5': -0.8895639787623648,
'D6': -851024132},
'C4': 'bqhz',
'C5': {'E1': [10425051224900126469,
1682595896700891638,
2815514186364255449],
'E2': 22539,
'E3': 23704,
'E4': 66}},
'A4': [{'F1': 30044, 'F2': 3774223400},
'F1': -11284, 'F2': 3068757370},
{'F1': -9951, 'F2': 2755451843},
{'F1': -18813, 'F2': 1421340068}],
{'A5': [2317, -6793, 13906, -26305, 11895, 2571, -3104]}
Пример 2
Двоичные данные:
b'IBAg\x91\x17hh\x9dR\xba\n\x9a\x9eO\x83\x0e\x87?\xd0\xaa\xa1\xaf\xc3'
(b'\xfe\x98\x1a\xcfO\x10\xbf\xd9</8Y\xa8\xa8>\xd4\x8b\xab\x83\xe6?2\xbb+?\xdbq.'
b'["\x80 \n\xbc\xdf~dxbn\x00`\x00\x00\x00}\x00\x00\x00\x83\x00\x00'
b'\x00\x89\x00\x00\x00\x8f\xba\xf7\xaad3\xe4e~jU\xc3\x11\xf3\xd1\t\xb5\xbbp'
b'\x0e\xc2\xe3b\xc2\xd7g\x10 \xe2\x99YBQ\xef\xa2\xe5\x97\xba&(\xb9k+,:\xf1\xf2'
b'K\xbd\x1c\xbe\x15\x15\xd0\xaay)p\xa3<i\xf4\xdeO\x18\xcbpW')
Результат разбора:
'A1': {'B1': -28393, 'B2': 1751686482},
{'A2': 13405697245551201927,
'A3': {'C1': 0.26041452564820977,
'C2': 449793808,
'C3': {'D1': -0.3942983675284588,
'D2': 0.41512808203697205,
'D3': -31770,
'D4': 0.6981684565544128,
'D5': 0.428783024786755,
'D6': 180150142},
'C4': 'dxbn',
'C5': {'E1': [699671407084364642,
14039803682319669593,
4778864162532473382],
'E2': 10425,
'E3': 27435,
'E4': 44}},
'A4': [{'F1': 15089, 'F2': 4065049884},
'F1': -16875, 'F2': 365996665},
{'F1': 10608, 'F2': 2738645492},
{'F1': -8625, 'F2': 415985751}],
{'A5': [-17673, -21916, 13284, 25982, 27221, -15599, -3119]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x57 0x4e
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Адрес (uint32) структуры C |
3 | int32 |
4 | Адрес (uint16) структуры D |
5 | Массив структур E, размер 7 |
6 | float |
7 | uint64 |
8 | double |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | uint32 |
3 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив int8, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VWNsiuijckx\xdc\xde\xd0\xd0~\xb8#|\x00\x00\x00w\xd2ra\xd0\x00\x80\xbe\x1d%'
(b'\xe2\x16\xdc\xd0\xe0\xbar\x07\xe6\xe7\xe7\x9c\x19\xbf!4e\xa9\xa5,'
b'\x81\xe5\x18H\xffYs\xeeO\xe2\x14;6\xa5\rF\xa7E\xbeK\x0c\xe7\xc0c'
b'\xeb\xf4\xe4\x91\x1c\xf5\xec\x02S\x84\xda?l^\xa2\x12C19\xd3\xa2\xd9{\xbe'
b"\xb7\x0c\x009\x0b\xa3\xab!z\x0f\x81?\xb6\x1b\xda\x83D\x04\xa0\xf1\xb0>''"
b"\x17gzz\x00\x03\x00\x00\x00}R\xd5;\xc1\xf0U\xb7'm\x0f\xe4\xfd")
Результат разбора:
'A1': {'B1': 'siuijckx', 'B2': 15915387727071683452},
{'A2': {'C1': 4054859303, 'C2': 10007},
'A3': -764255792,
'A4': {'D1': 'gzz', 'D2': 1389706177, 'D3': -1128794751625075459},
'A5': [{'E1': 48669, 'E2': [37, -30, 22, -36, -48, -32, -70, 114]},
'E1': 2022, 'E2': [-25, -25, -100, 25, -65, 33, 52, 101]},
{'E1': 43429, 'E2': [44, -127, -27, 24, 72, -1, 89, 115]},
{'E1': 61007, 'E2': [-30, 20, 59, 54, -91, 13, 70, -89]},
{'E1': 17854, 'E2': [75, 12, -25, -64, 99, -21, -12, -28]},
{'E1': 37148, 'E2': [-11, -20, 2, 83, -124, -38, 63, 108]},
{'E1': 24226, 'E2': [18, 67, 49, 57, -45, -94, -39, 123]}],
{'A6': -0.357513427734375,
'A7': 4110559040302092161,
'A8': 0.08636251167992492}
Пример 2
Двоичные данные:
b'VWNgwkvxsnl\xf9\xa4\x99bt\x9e\x96\x03\x00\x00\x00wu\x83\x8b\x94\x00'
(b'\x7f\xa0\x9e,x*\x1c\x86\x98\xb2\\\xa1\xe3\xea\xe8$M\xd0\xbf-\xff\xa3\xdf\xad'
b'\x88n\xc2\x1e:@\xf9L\xe27\xba\x06\x92{\x1d\x8d5\xeb\xce\xbf\xfd\xb7\xd3\xcf'
b',G$!\xce\xa7\\nVIkP\xadc\xebg\xa1\xa2\xb6\xf1\x9a\xb0\xb4\xbe\xf8\xb0\xc1['
b'\x01\n\xef\x85\x05P\x93?\xdf\xb9\x12k\x8f\x1d\x98\xc4Cf0\xf3\x0clc\x00'
b'\x02\x00\x00\x00}\xa2\xfbm\xd5\xa9|\t@w\xad\xa7\x06')
Результат разбора:
'A1': {'B1': 'gwkvxsnl', 'B2': 17988671459766998531},
{'A2': {'C1': 3292751408, 'C2': 62220},
'A3': 1971555220,
'A4': {'D1': 'lc', 'D2': 2734386645, 'D3': -6234097611697182970},
'A5': [{'E1': 41118, 'E2': [44, 120, 42, 28, -122, -104, -78, 92]},
'E1': 41443, 'E2': [-22, -24, 36, 77, -48, -65, 45, -1]},
{'E1': 41951, 'E2': [-83, -120, 110, -62, 30, 58, 64, -7]},
{'E1': 19682, 'E2': [55, -70, 6, -110, 123, 29, -115, 53]},
{'E1': 60366, 'E2': [-65, -3, -73, -45, -49, 44, 71, 36]},
{'E1': 8654, 'E2': [-89, 92, 110, 86, 73, 107, 80, -83]},
{'E1': 25579, 'E2': [103, -95, -94, -74, -15, -102, -80, -76]}],
{'A6': -0.4857235252857208,
'A7': 6557534556273332371,
'A8': 0.49567089561284083}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x50 0x54
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int8 |
3 | int8 |
4 | Массив char, размер 4 |
5 | Размер (uint32) и адрес (uint16) массива float |
6 | uint8 |
7 | int32 |
8 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | double |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | uint8 |
4 | Размер (uint32) и адрес (uint32) массива int8 |
5 | uint32 |
6 | double |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | int64 |
3 | int8 |
4 | uint8 |
5 | int32 |
6 | Размер (uint16) и адрес (uint16) массива int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BPT\x005\x96)zqyg\x00\x00\x00\x02\x00w`\x1a\xb5n\x81Z\x85\xcc\xa5\x8b\xbc'
(b'\x7f\x1bI$\xc2\x8cH\xf8Y)C\xd3\xc2H\x1d\xd3\x00\x04\x00\x7f\xc73\x1ez<?K\xfb'
b'\xd7?\x15\x10(e\x00\x00\x00\x03\x00\x00\x000\xa0\xb8/\x8a\xbf\xe0'
b'X\xb7\x7f\xd8xz=\xc2\xeb\xe3+\xb1|\xa3\xf8\x00\x00\x00\x02\x00\x00\x0036'
b'm\x19 \xbf\xee\xa8\xce\xab~=>\xbf\xbf\x89\x18\xddj\xc3\xc0\xbf\x1f\xdf\xb0?'
b'nxn\x85\x862S6\xd6\xdc\x9d')
Результат разбора:
'A1': {'B1': [{'C1': 0.7968115210533142,
{'C2': 1058345000,
'C3': 101,
'C4': [-57, 51, 30],
'C5': 2696425354,
'C6': -0.5108296868309161},
'C1': 0.09517648071050644,
{'C2': 733052067,
'C3': 248,
'C4': [122, 60],
'C5': 913119520,
'C6': -0.9581063603854216}],
'B2': -0.12318568616571124},
'A2': -106,
'A3': 41,
'A4': 'zqyg',
'A5': [-0.624506950378418, 0.9315251111984253],
'A6': 96,
'A7': 448097921,
'A8': {'D1': 6522844646702087963,
'D2': 5270551371705768233,
'D3': 67,
'D4': 211,
'D5': -1035461165,
'D6': [-31354, 12883, 14038, -9059]}}
Пример 2
Двоичные данные:
b'BPT\x006\xba\xacxruv\x00\x00\x00\x03\x00xv\x05\xd1\xa29\xf5n\x93,\xa8\xec'
(b'CQ\xe6\x9f\xd1\xa6\xee\xd8=i\x1a\xb1\xc6\xc6k\x9e\x00\x04\x00\x84w 9o'
b'\x982\xbfY\x9er4\xfb\xcc\x13V\x00\x00\x00\x03\x00\x00\x000\r\x9e\tW?'
b'\xea\xe7=*\x87\xf5J\xbe\xe9\xf4\x91:K&n\xd5\x00\x00\x00\x03\x00\x00\x003'
b'\xca\x9e\x81?\xbf\xea\x82= >\xbb\x8e\xbf\xcb\xbc>e\xc8}\x00\xbf\r\x1b\xe8'
b"\xbe\\\x8eQ>\xd1\x03'D3\xe7\x897\xbe\xb2\xc2")
Результат разбора:
'A1': {'B1': [{'C1': -0.8500739336013794,
{'C2': 888917011,
'C3': 86,
'C4': [119, 32, 57],
'C5': 228460887,
'C6': 0.8407274084744725},
'C1': -0.4569440186023712,
{'C2': 978003566,
'C3': 213,
'C4': [111, -104, 50],
'C5': 3399385407,
'C6': -0.8283982877527352}],
'B2': -0.21668224305992823},
'A2': -70,
'A3': -84,
'A4': 'xruv',
'A5': [-0.5512070655822754, -0.21538664400577545, 0.40822717547416687],
'A6': 118,
'A7': 97624633,
'A8': {'D1': 17685234606752416593,
'D2': -1828512408787206807,
'D3': 26,
'D4': 177,
'D5': -960074850,
'D6': [17459, -6263, 14270, -19774]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x23 0x50 0x55 0x55
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива структур B |
2 | Адрес (uint32) структуры C |
3 | Структура E |
4 | uint32 |
5 | uint32 |
6 | uint8 |
7 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint16) массива int8 |
3 | int64 |
4 | double |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | Структура D |
3 | Массив int8, размер 2 |
4 | Массив uint32, размер 3 |
5 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int32 |
3 | uint32 |
4 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'#PUU\x03\x00\x00\x00)\x00q\x00\x00\x00\xb9\x8c\xfch?\x15\xf9F\xa7\x05'
(b'\x1f\x9bMa\x1a\xe7Zw\x97 \xce\xed\x08\xbeq}\x0c\xb42\xc4\x11\x04\x00\x1e'
b'\x002a\x8b\xf4c5\x15\xfc\x90\xa5\x87\xc2\xaf\xa9\xd2?\xa1\x17w\xb6\x04\x00"'
b'\x00C\xdc\xb6\xda\x9f|~a\xbe9\xa9\xa5rZ\xe3\xbfg\x9a\xc7\x87\x03\x00&'
b'\x00\xcaP\x15:\xf0\xc1\xf6D\xcegi\x1d\xf0\xdc\xef?\xfc\xd0\x87\xe0&\xb8P'
b'\xdb\xb0\xb8e\x95\x86\xb3u\x0bW\x04\xc3\xde\x90\xcf\xb1S\x18\xce\xfd'
b'\xbb\xa5\xef\xc0\xf9\xe0\xcf\xfe[\xa3\xe2\x16\xa4}')
Результат разбора:
'A1': [{'B1': 298070708,
{'B2': [90, 119, -105, 32],
'B3': -282260698219978446,
'B4': 0.2916068458276522},
'B1': 3061258145,
{'B2': [-50, -19, 8, -66],
'B3': 7025189494755613763,
'B4': -0.6047909961287627},
'B1': 2278005351,
{'B2': [113, 125, 12],
'B3': 4969372476360708298,
'B4': 0.9957199644516039}],
'A2': {'C1': 15803333569558335740,
'C2': {'D1': 176, 'D2': -2037029448, 'D3': 1460368819, 'D4': -15612},
'C3': [-34, -112],
'C4': [408138191, 2780560846, 3774464239],
'C5': 9053386313580674767},
'A3': {'E1': 185, 'E2': 0.9101035594940186},
'A4': 2806446357,
'A5': 1302011653,
'A6': 97,
'A7': -6374}
Пример 2
Двоичные данные:
b'#PUU\x04\x00\x00\x00+\x00\x8b\x00\x00\x00q\xfd\xc8\xce\xbe\x81'
(b"\x04\xd5\xcd\x15\xb1\xd7w\xbe\x93'\x8c\x12Ti\xcd\xf76\xc7\x98\xa2&W\x96p"
b'\xa1\x9e&\x03\x00\x1e\x00G6D`n\x08\xae\xebb\xfbb\x89\xa6\xe9\xeb\xbfl'
b'L\xf6e\x03\x00!\x00\xc3\xc9\x18\x96Q.\xf5m\x90\xa6)\xe9R\x97\xc1?\xb6'
b'$\xf1~\x04\x00$\x00e\x9ex~\xd1p\r\xa5H\x19\x06\x85+\xce\xd6?\x94'
b'\x88p\xbc\x03\x00(\x00G5\xc3\x14\xbc8#!\x0c\x8dBC\x07<\xe6\xbf\x0f'
b'\x9bB\x00\xe1i]\xdf\x9d\xf1J\x93#O0\xb8\xc2\xef\x02\x17\x1d\x83\xb2d\xf2'
b'\xca$\x81\xe0&\x01\x854g\xf8\xa5\xe6\x19\x83\x8fu')
Результат разбора:
'A1': [{'B1': 647930224,
{'B2': [-116, 18, 84],
'B3': -1464223558694324665,
'B4': -0.8722717936833357},
'B1': 1710640236,
{'B2': [105, -51, -9],
'B3': 7923290047373691331,
'B4': 0.13743053803346017},
'B1': 2129732790,
{'B2': [54, -57, -104, -94],
'B3': -6553457837681893787,
'B4': 0.35633361807449093},
'B1': 3161491604,
{'B2': [38, 87, -106],
'B3': 2387814607889839431,
'B4': -0.6948276818915544}],
'A2': {'C1': 16095137058384943887,
'C2': {'D1': 157, 'D2': 596855537, 'D3': 3266850895, 'D4': 751},
'C3': [23, 29],
'C4': [4066685571, 3766559946, 881131814],
'C5': 8471133571374250087},
'A3': {'E1': 113, 'E2': -0.4038771688938141},
'A4': 3453289601,
'A5': 2010624277,
'A6': 190,
'A7': 10131}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x6c 0x56 0x58 0x4f
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint32) и адрес (uint16) массива float |
3 | uint8 |
4 | uint16 |
5 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив структур C, размер 5 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив int16, размер 3 |
3 | uint16 |
4 | uint32 |
5 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | double |
3 | int32 |
4 | int16 |
5 | uint64 |
6 | float |
7 | Массив int8, размер 2 |
8 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'lVXO\xb0\x82\x06\xdf0\xbf5\xe2\xb1[\xedT\x8d\xa7TL\xdf\xfe\xff\xdd'
(b'\xd2\xc5<\x80\xaf\xda\x01F\xac\x1c\xa8=\x86E\xe4\x0c\x103\xfa\x89\xae<0\xc1'
b'\xd4\x8a\xeeh\x95\xb8\xd1\xb1\xc9:\xa3\xb0\x0c|f=\xd1\xf2[\x18'
b'\x12\x0e\x13\x81\xa0\xcbz1\xa8%\xbfh8d\xcb\x03\x00\x00\x00\x82\x00=5K'
b'X\xc5\x11t\x0b\x14\xdc\xbf\x1c\xae\x1dut\x10\xe8\xbfm\xcb\xed#\xc3ap\xd1'
b'\x1a\xd5\x1d\xe1\xbc\xbc2.L\xbe\xcd\xbc\xfa\xdex*A\xbf\xd0\xc0\x91>\x83\xce'
b't?')
Результат разбора:
'A1': {'B1': 3741745840,
{'B2': [{'C1': 48,
'C2': [13759, -19998, -4773],
'C3': 36180,
'C4': 3746321575,
'C5': -2},
'C1': 221,
{'C2': [-14894, -32708, -9553],
'C3': 17921,
'C4': 1034427564,
'C5': 17798},
'C1': 228,
{'C2': [4108, -1485, -20855],
'C3': 12348,
'C4': 4002075841,
'C5': -27288},
'C1': 184,
{'C2': [-20015, 15049, -20317],
'C3': 31756,
'C4': 4073799014,
'C5': 6235},
'C1': 18,
{'C2': [4878, -24447, 31435],
'C3': 43057,
'C4': 946388773,
'C5': -13468}]},
'A2': [-0.754554271697998, 0.28467416763305664, 0.9562761187553406],
'A3': 61,
'A4': 19253,
'A5': {'D1': -0.43872343382743884,
'D2': -0.7520086562557853,
'D3': 602786669,
'D4': 25027,
'D5': 13599992492997661040,
'D6': -0.19939497113227844,
'D7': [-51, -68],
'D8': -8454}}
Пример 2
Двоичные данные:
b'lVXOU"\xaaL5iQ\x81\x15\xbc\x01\xab\xd0&\xe0\xd2r(\xb5u\xc6\xa4\xe7\xe7\\d}?'
(b"\xe7\x93\xf6\x99\x13=\x84\x0e'\xa5\x90{\xf8\x89/\xc7\xadh\x9d\xb0\xab&0\xb4"
b'k\xda1\xa6?A\x95\xa5\xa7a\x8b\x85u\xf0\xf0\xa2\xd1\xa2f2\x05\x83\x8e|'
b'\xe7\x97\xc1\x04\x00\x00\x00\x82\x00\xb1\x89j\xa4J\x04\xfa\x1d\x0e\xd6?'
b'\x98C\x9d\xdcUM\xc9\xbf\xda!z>\x05\xbe\x18\xd7\xadN\xc9\x85\xbf\xee\x0eY'
b'%\xbf+l\x08\x00\xecD\x94\xbd\x80\xe2G?\xae\x05|\xbf\x89\xf9\x08?')
Результат разбора:
'A1': {'B1': 1286218325,
{'B2': [{'C1': 53,
'C2': [20841, 5505, 444],
'C3': 53419,
'C4': 1926422566,
'C5': -19160},
'C1': 117,
{'C2': [-23354, -6169, 25692],
'C3': 16253,
'C4': 2583073767,
'C5': 15635},
'C1': 132,
{'C2': [9998, -28507, -1925],
'C3': 12169,
'C4': 2640883143,
'C5': -21584},
'C1': 38,
{'C2': [-19408, -9621, -22991],
'C3': 16703,
'C4': 1638376853,
'C5': -31349},
'C1': 117,
{'C2': [-3856, -11870, 26274],
'C3': 1330,
'C4': 3883699843,
'C5': -15977}]},
'A2': [-0.07239708304405212,
0.7807998657226562,
-0.9844616651535034,
0.5350576043128967],
'A3': 177,
'A4': 27273,
'A5': {'D1': 0.3446116391725502,
'D2': -0.19767258903678164,
'D3': 1048191450,
'D4': -16891,
'D5': 17203616201233520408,
'D6': -0.6458901166915894,
'D7': [43, 108],
'D8': 8}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x51 0x48 0x4e 0x70
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Адрес (uint16) структуры B |
3 | int8 |
4 | Адрес (uint16) структуры C |
5 | int16 |
6 | Массив int8, размер 8 |
7 | uint64 |
8 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | double |
3 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур E, размер 8 |
2 | int8 |
3 | Адрес (uint32) структуры F |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
3 | Размер (uint32) и адрес (uint32) массива uint8 |
Структура F:
Поле | Описание |
---|---|
1 | double |
2 | Массив uint8, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UQHNp\xdf\xc9\x00 g\x00\xc0\t\xf1+\x1a\xe7\xbc\xba\xa9\xc6\xc1e.'
(b'\xd1\xd0\xc9/m/\x192\xb0\x0c\xe1\xf8\xbf\xee\xd2h\xcaa\x92<m\xa3\xb9\xe8@?D3'
b'\x18\xac\x1b\x00\x00\x00\x05\x00\x00\x00,\xe8%\xbfC\xbe\xdf\x0f\xea\x00'
b'\x00\x00\x02\x00\x00\x00?]\x00\xaa\xf1\xbe\x91a~:j\x00\x00\x00'
b'\x04\x00\x00\x00O\xeb\x96\x90=\xce\xfcBe\xe8\x00\x00\x00\x03\x00\x00'
b'\x00a\x05\xe0\xbfaO\xc2\xe4\x88\x00\x00\x00\x02\x00\x00\x00rTj\xbe\xb0-\x15'
b'{M\x00\x00\x00\x02\x00\x00\x00\x82\x83\xea\xd2k<\xb2\x91\x14)\x97'
b'\x00\x00\x00\x04\x00\x00\x00\x92\x8c?\xf6\xbe\xbf\xea\x8b[V\x00\x00\x00'
b'\x03\x00\x00\x00\xa4?\xe2&7\x1d\nn\x02\x1c\xda \xcd?\xe8\x8a\x92b\x1ab'
b'\x9e\x00\x00\x001\x00\x00\x00A\x00\x00\x00S\x00\x00\x00d\x00\x00\x00'
b't\x00\x00\x00\x84\x00\x00\x00\x96\x00\x00\x00\xa7G\x00\x00\x00\xb5')
Результат разбора:
'A1': 57289,
{'A2': {'B1': 2953634296, 'B2': -0.9631847336536974},
'A3': 103,
'A4': {'C1': -51,
'C2': 0.7669155040813,
'C3': {'D1': [{'E1': 0.7664046287536621,
'E2': 44059,
'E3': [109, 163, 185, 232, 64]},
'E1': -0.7646312117576599, 'E2': 4074, 'E3': [232, 37]},
{'E1': -0.2839469313621521,
{'E2': 14954,
'E3': [93, 0, 170, 241]},
'E1': 0.10106708109378815,
{'E2': 26088,
'E3': [235, 150, 144]},
'E1': -0.8801232576370239, 'E2': 58504, 'E3': [5, 224]},
{'E1': -0.3440939486026764, 'E2': 31565, 'E3': [84, 106]},
{'E1': 0.021797694265842438,
{'E2': 10647,
'E3': [131, 234, 210, 107]},
'E1': -0.3748362958431244,
{'E2': 23382,
'E3': [140, 63, 246]}],
'D2': 71,
'D3': {'F1': 0.5671649520112967, 'F2': [28, 218, 32]}}},
'A5': 2545,
'A6': [43, 26, -25, -68, -70, -87, -58, -63],
'A7': 7290995541418143023,
'A8': 6450}
Пример 2
Двоичные данные:
b'UQHNpej\x00 \xbf\x00\xc8JPV\r\x84%2\x87\xa0M0\xca\x0b!\x87\x82\x87\xaa|$'
(b"'\xa7\x1e\xcf?\xed\x05\x05\x18\xf0\x90\xa2\xce\xc5\xcf?\x16\xe2\x05\xf2"
b'\xbd\x00\x00\x00\x03\x00\x00\x00,/\xdc\xff\xe0?\x19\x1b\xf6\x98:\x00'
b'\x00\x00\x04\x00\x00\x00=3\xb89\xa9zl=_\x19&K>\x00\x00\x00\x06\x00'
b'\x00\x00O\xb8\xfc\xc6\xa6 \xbd\xd3 N\x1a\xa0\x00\x00\x00\x05\x00\x00'
b'\x00c\xed\xd2\xb5\xe3\xfd\xde\xbe\xd0\xa8\xad\x03\x16\x00\x00'
b'\x00\x06\x00\x00\x00v\x1cA;7\xc8a\x1b\xd2\x00\x00\x00\x02\x00\x00'
b'\x00\x8aQ\xa5\xbfq\x87\xc9\xc3W\x00\x00\x00\x02\x00\x00\x00\x9a\xefQp\x08X?'
b'c0m3\xb5\x00\x00\x00\x05\x00\x00\x00\xaa\xbf\xdcc\x9f\xcc\xb8\x9f\xd4T7\xa4'
b'\xa1\xbf\xd95k\x00\x04\\(\x00\x00\x00/\x00\x00\x00A\x00\x00\x00U\x00\x00\x00'
b'h\x00\x00\x00|\x00\x00\x00\x8c\x00\x00\x00\x9c\x00\x00\x00\xafM\x00\x00'
b'\x00\xbd')
Результат разбора:
'A1': 25962,
{'A2': {'B1': 665263823, 'B2': 0.9068627822021151},
'A3': -65,
'A4': {'C1': -95,
'C2': -0.3938853740850754,
'C3': {'D1': [{'E1': 0.5893862843513489,
'E2': 62141,
'E3': [206, 197, 207]},
'E1': 0.5980829000473022,
{'E2': 38970,
'E3': [47, 220, 255, 224]},
'E1': 0.0544673427939415,
{'E2': 19262,
'E3': [51, 184, 57, 169, 122, 108]},
'E1': -0.10308896005153656,
{'E2': 6816,
'E3': [184, 252, 198, 166, 32]},
'E1': -0.40753689408302307,
{'E2': 790,
'E3': [237, 210, 181, 227, 253, 222]},
'E1': 0.0028043019119650126, 'E2': 7122, 'E3': [28, 65]},
{'E1': -0.9434781670570374, 'E2': 50007, 'E3': [81, 165]},
{'E1': 0.8874576687812805,
{'E2': 13237,
'E3': [239, 81, 112, 8, 88]}],
'D2': 77,
'D3': {'F1': -0.44358057968429176, 'F2': [84, 55, 164]}}},
'A5': 19024,
'A6': [86, 13, -124, 37, 50, -121, -96, 77],
'A7': 3515634697751398314,
'A8': 31780}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x48 0x51 0xbc
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 3 |
2 | Структура C |
3 | uint16 |
4 | Массив double, размер 6 |
5 | Адрес (uint32) структуры D |
6 | double |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив char, размер 2 |
3 | uint8 |
4 | uint64 |
5 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint32) и адрес (uint16) массива int32 |
3 | int8 |
4 | Массив uint16, размер 4 |
5 | double |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BHQ\xbc\xb5\x00g\xb8dup\x92\xd4Z\xd9\xc4\xc7`\xcb\xf2Ib\xc5\num*\xf8'
(b"\x94&M\x15\xcb\\'\xf7\xa6\x87\xc8\x0bfsF\xf2l\x7f\x8cB\xb3I\xa8\xf0"
b'Z|\xa8\xb2\x04\x00\x00\x00\x8d\x00uP\x9c\x1f\xf1\x1d\xfe\xdf\xd2>`[\xdf5'
b'\xe7\xe0?p\x92\xf0\xad\xf7}\xdf\x1b\xd1?\xbc\x96\xb7DX_\xe7?"Z\x8a'
b'l\xe4\x15\xea?\x80\x8fD\xb9g\xe6\xad?\xc2\xb1\xb4?{\xdb\xe4\xbf\xa8\xa8\x1f'
b'-\xb3\xbe\xe6?\x9d\x00\x00\x00 \x8ehtF/\xbe?\x1b\x89\x9a]F\xce\x07(\x91N\xf5'
b'\xf9\xad\xfd7\xc3\xcbC\xe5\xea\x8bW')
Результат разбора:
'A1': [{'B1': 3093758133,
{'B2': 'du',
'B3': 112,
'B4': 14654932835737719954,
'B5': -14},
'B1': 180707913,
{'B2': 'um',
'B3': 42,
'B4': 2836365157685695736,
'B5': -9},
'B1': 197691302,
{'B2': 'fs',
'B3': 70,
'B4': 12126420570078145778,
'B5': -16}],
'A2': {'C1': -1297580966,
'C2': [1570408731, 671600198, -101364079, -1019740755],
'C3': 117,
'C4': [40016, 61727, 65053, 53983],
'C5': 0.5282239305916006},
'A3': 37488,
'A4': [0.26732623387826404,
0.7303887693530764,
0.8151723976068903,
0.0583984769494057,
-0.6517921680693279,
0.7107787972756983],
'A5': {'D1': -354073653, 'D2': 22411},
'A6': 0.11790886251451882}
Пример 2
Двоичные данные:
b'BHQ\xbc\x1dx\xd7\x11tn\xbd<\x9d\x81\x05@\xa6\x03\xfc\x01\x1d\xb2Q>xz~a'
(b"\xd2Q\x94'm=9\xf0q\xafy\xbbdy\x0e\xfc\x06x\x98\\\xc7_\xa6\x06"
b'\xb2\xb5\x9e\xbd\x05\x00\x00\x00\x8d\x00\xd8\x11\xb8\xd8\xac\np\xdd\\\xda'
b'\t)\xae\xf5<\xeb?\xd4\x8b\xcc\xfaE\xf5,\x1f\xe2?\xceo\xdd\xe0\x07\x1f\xeb'
b'?\x1c\xc0\x12\xe8ih\xe1?`t-\x17\xb8\t\xa6?\xe8q\xf2\x89;\xec\xcc'
b'?\x0c\xde\xa5[\xf1?\xe9\xbf\xa1\x00\x00\x00\x12-o\xa2E\x9e\xe0\xbf\x14\xcfM'
b'u\x8a\x90%\xe8\xe1\x02\x1c7\x9e\xa8G\xa17\xb2X`\x9f0\xb5\xa8>\x85')
Результат разбора:
'A1': [{'B1': 299333661,
{'B2': 'tn',
'B3': 189,
'B4': 18159540916388470076,
'B5': 1},
'B1': 1045541405,
{'B2': 'xz',
'B3': 126,
'B4': 4124572850500784737,
'B5': -16},
'B1': 3145314161,
{'B2': 'dy',
'B3': 14,
'B4': 11988519933592471292,
'B5': 6}],
'A2': {'C1': -1113672270,
'C2': [1968033556, -400191350, 924582625, -1589139298, 1616425527],
'C3': -40,
'C4': [47121, 44248, 28682, 23773],
'C5': 0.85119136825261},
'A3': 35796,
'A4': [0.5663056173796917,
0.8475379363912852,
0.5439958126717133,
0.04304290087632334,
0.22595924602218465,
-0.7890555181501795],
'A5': {'D1': -1464520545, 'D2': -31426},
'A6': -0.5193203136963425}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x51 0x4a 0x55 0x7e
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива структур B |
2 | Структура C |
3 | uint64 |
4 | int32 |
5 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива int32 |
2 | double |
3 | Массив float, размер 5 |
4 | Адрес (uint32) структуры D |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int64 |
3 | int64 |
4 | Массив int8, размер 6 |
5 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'EQJU~\x02\x00L\x00\x00\x00\x07\x00\x00\x00f\x00\x00\x00\xb4$\xf11\xc3'
(b'^\xe1\xbfT\xae\x06?8 U?\xd1&.?\x1b\x81l\xbfb\xa5\xc1<\x82\x00\x00\x00>'
b'\xf64\x9a\xf7|\x1d\x9c\xab\x81z\xe4\x85qqfheaqspbii\x01\x06\x00\x00'
b'\x00@\x00\x00\x00\x8a\x9a\xb2\xb2\x1a\x06\x00\x00\x00F\x00\x00\x00\xac>'
b'\x1a\x98\x97\xbe)j\x82\xe4\xe3\x8f05<\x80\xfa\x7f\xf2\xc8\xc4\x1fz\xb9\x116'
b'8D\xde\xe3\x7f\x8fS\xd0\x14\x17\x99\x8e\x13(\xbd\xcd\x953\x9e\xd1Tc5h'
b'\xc8\xdf\xb1G\xb6\xab\x02\xc7\x8c\x02\x81t\x86')
Результат разбора:
'A1': [{'B1': 1, 'B2': 'qqfhea', 'B3': -1296917878},
{'B1': 26, 'B2': 'qspbii', 'B3': -1743110484}],
{'A2': {'C1': [1781120663,
-1880890238,
-2143537872,
-923631622,
-1183178812,
1144534545,
-1887444002],
'C2': -0.5428176856450109,
'C3': [0.5260975360870361,
0.8325228691101074,
0.6802797913551331,
-0.9238449931144714,
0.02363843098282814],
'C4': {'D1': 83,
'D2': -4816578298298034992,
'D3': 3847011765983614413,
'D4': [104, -56, -33, -79, 71, -74],
'D5': -8758233527377001813}},
'A3': 11249284847127295550,
'A4': -461733461,
'A5': 133}
Пример 2
Двоичные данные:
b'EQJU~\x03\x00K\x00\x00\x00\x06\x00\x00\x00r\x00\x00\x00\xf4\xd2\xde\x04Y'
(b'\xd5\xdb?+\xa3^\xbfg\xc0\xd8>\xa2\x87\xda\xbd\xff\x82&\xbf<Y\x04?\x8a'
b'\x00\x00\x00\x85\xe7\x92`\x19\x1d*q\x83\x1b\x9f\xb5\xa5fzxzulafpyy\x85'
b'\x04\x00\x00\x00@\x00\x00\x00\x1aRZ\x08\xf6\x04\x00\x00\x00D\x00\x00'
b'\x00\xfc=\xe4BR\x03\x00\x00\x00H\x00\x00\x00\x03\xc2.7\xffw\xa2\xd9Ph'
b'aR\x9b\x93M\rb\x15\xd3\x02\xdcz\xf3{+\xf5iJ\xba\xab\x8e8\x96L'
b'\x18\x0f\xe9\x80\xf4^\xd3z\x18v\xdc\x0b\xd7\xf9\x850!`ntF=\xfa\xf0\xc3')
Результат разбора:
'A1': [{'B1': 133, 'B2': 'fzxz', 'B3': 140136986},
{'B1': 246, 'B2': 'ulaf', 'B3': 1122254332},
{'B1': 82, 'B2': 'pyy', 'B3': 925811203}],
{'A2': {'C1': [-643663873,
1382115408,
223187867,
47388002,
2079554268,
1248458027],
'C2': 0.43489671207070946,
'C3': [-0.8696772456169128,
0.42334291338920593,
-0.10670401155948639,
-0.6504363417625427,
0.516986608505249],
'C4': {'D1': -70,
'D2': -1653075821004812629,
'D3': -2560832422302256000,
'D4': [11, -41, -7, -123, 48, 33],
'D5': -4327684100821062048}},
'A3': 8154362070139332485,
'A4': -1247863933,
'A5': 165}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x52 0x41 0x52
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint16) и адрес (uint32) массива структур E |
3 | int16 |
4 | Адрес (uint16) структуры F |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | Структура C |
3 | uint16 |
4 | double |
5 | Адрес (uint16) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint16 |
3 | uint64 |
4 | Размер (uint16) и адрес (uint16) массива int16 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
3 | float |
4 | uint32 |
5 | int8 |
6 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
Структура F:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint16) массива uint8 |
3 | uint8 |
4 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LRARhefdqpte\xe68\xdf\x12\xd3R\x02\x13\xc2-\xd5\x00\x03\x001\xc7'
(b'\x02?\xeb\x9c\x01\xbc\xdf\x02~\x007\x00\x02\x00\x00\x00G\x92\xef\x00'
b'S\xc1}\x04\x8f2UL\xdc\x10V\x92\xe1\xbe\x06\x07\xe0S\xf7%\x06\xb0T6\n\x02rW'
b'\x1f\x14#B\xda\xba\x9e_\x00\x00\x00\x02\x00Q]b\xe9\x96\xf6')
Результат разбора:
'A1': {'B1': 'hefdqpte',
{'B2': {'C1': 230,
'C2': 14559,
'C3': 1356518081643556309,
'C4': [-16003, 1167, 12885]},
'B3': 50946,
'B4': 0.8627937973870556,
'B5': {'D1': 1289490518,
'D2': -27935,
'D3': -0.1308894157409668,
'D4': 1408705798,
'D5': -80,
'D6': 84}},
'A2': [{'E1': 906625650, 'E2': 87}, {'E1': 521413442, 'E2': -38}],
'A3': -27921,
'A4': {'F1': 95, 'F2': [186, 158], 'F3': 93, 'F4': 1659475702}}
Пример 2
Двоичные данные:
b'LRARpwopjdexJ\xa4\x05\xee\xec\x92I\x14)\xc4\x8b\x00\x03\x001\t'
(b"\xb9\xbf\xd5\x17\xd8\x0e'_\xcc\x007\x00\x04\x00\x00\x00G\x1f\xe1\x00"
b']\x9e\xed\xd6/\xb3\x07\x10\xae\x8e\xa1f\x1c?\x14]r\xd5\xbab\x82\x81Tf'
b'\xb4\x82\xd8!\xe2\xb2\xbf\t\xa0\x0f\x91\xbb\xac\x1e\xa6f\xb8s\x16N'
b'\xd6\xca\x00\x00\x00\x02\x00[P\xc2\xdcH!')
Результат разбора:
'A1': {'B1': 'pwopjdex',
{'B2': {'C1': 74,
'C2': 41989,
'C3': 17216296318099113099,
'C4': [-24851, -10705, -19705]},
'B3': 2489,
'B4': -0.3295803201885945,
'B5': {'D1': 279875233,
'D2': 26140,
'D3': 0.5795508623123169,
'D4': 3585761922,
'D5': -127,
'D6': 84}},
'A2': [{'E1': 1723106008, 'E2': 33},
'E1': -491602167, 'E2': -96},
{'E1': 261209004, 'E2': 30},
{'E1': -1503217549, 'E2': 22}],
{'A3': 8161,
'A4': {'F1': -54, 'F2': [78, 214], 'F3': 80, 'F4': 3269216289}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x51 0x58
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Адрес (uint16) структуры B |
3 | double |
4 | double |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | Массив float, размер 4 |
3 | Массив int64, размер 7 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint64 |
3 | int8 |
4 | Массив структур D, размер 2 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
3 | float |
4 | uint8 |
5 | int32 |
6 | Размер (uint32) и адрес (uint32) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PQX=\xb1\x85\xa1_\x00\xc0*\xfd8\x0cS\xa4?\\_\x08\xc6\x0b\xf8\xdd?\x9dq.'
(b'\xa4U\x83\xc2\xd4.\xb6\x12\xedW\x1f\xbb\xe8\xf0\xfa\x97\r\x99\x1c\xb7'
b'n9\xc3\xde\xe6\xa3\xa1\x1c=\x02\xb6\xda\xea\xf4\x02\x00\x00\x00\x19\x00'
b'\x00\x00\xe5%\xdd\xc4\xbcO)}\xfb\xf8\x0e?\xe6Q\xbf\xc9\xdf\x03'
b'\x00\x00\x00\x1d\x00\x00\x00#\x00ir\x0b\xbfU\xd6\x13\xbf\xdb\xbfM?\xb1\xbeP'
b'?\xee=\xc0\x7f\x99qN\x0b\x98v\xa5\xa1G\xd0\xdd\x98\x80;\xafE\x91\xa8\r'
b'\x94f\xc0\xf0\xb1\xb4\xd7\xa1\xdb[\x03\xa1\xee\xe6\xff\xd7\xe0"s\xc2'
b'\xf3\xf6\xb9*\xb4c\xa7_\xc9v\xbd\xd2m')
Результат разбора:
'A1': 2709893437,
{'A2': {'B1': {'C1': 18,
'C2': 10951330326267254765,
'C3': 13,
'C4': [{'D1': 1857494169,
'D2': -421608647,
'D3': 0.038240086287260056,
'D4': 2,
'D5': -185935178,
'D6': [29085, 42030]},
'D1': -992139803,
{'D2': 2099859388,
'D3': 0.5584866404533386,
'D4': 230,
'D5': -540426415,
'D6': [33621, 54466, 46638]}]},
'B2': [-0.5447145104408264,
-0.5774891972541809,
0.8037087321281433,
0.8154097199440002],
'B3': [814713486687878638,
-7431554804018219368,
-7778375639506142336,
-2620576337073487770,
-2245044521909812389,
-5464350727557975262,
7913595813125662563]},
'A3': 0.039696104008347444,
'A4': 0.46826452578669886}
Пример 2
Двоичные данные:
b'PQX\x11e\xc7\xf2a\x00\x08h\x7f\x04\x04\x11\xdc\xbf\xd4]52.\xfd\xd0?&\xe5W'
(b'g\xf0\xfd\xcf\xe9q\x81[\x99\x1a\xe5g\x07&\x08\x99\x10\xe2\x9e\xf3\x8e\\(\xeb'
b'\xfa\xed+\x1a\xec\x1c\xbfJM\x89}u\x03\x00\x00\x00\x19\x00\x00\x00'
b'-\x98\x80\xb2\x0fL~\xa3\xacX\xe1\xbea\xeew\x90\xdc\x03\x00\x00'
b'\x00\x1f\x00\x00\x00%\x00\xb0\x0et?\x9c\x82&>\xb4\xae6?\x8d,Y\xbfM'
b']\xd1\xee\xc4\x10\x89\xd2\xc4\xeeRT\xb8&\xff\xae\xcb\xdf\x86\x9b\x8a'
b"\xa2\xc0\xc7Fvo\xba> \xfdM\xf2.x\xd9\x91\xde\xe5'\xec\x90\x16bP\t8\x95\xa8"
b'\xfbe\xff\xe7E\x8b\xbf')
Результат разбора:
'A1': 4073153809,
{'A2': {'B1': {'C1': 26,
'C2': 16289688112475891685,
'C3': -98,
'C4': [{'D1': 677154547,
'D2': 737016555,
'D3': -0.6129776239395142,
'D4': 74,
'D5': 1971161421,
'D6': [58662, 26455, 65008]},
'D1': -1300195283,
{'D2': -1552004081,
'D3': -0.4401296377182007,
'D4': 97,
'D5': -594511890,
'D6': [59855, 33137, 39259]}]},
'B2': [0.9533491134643555,
0.1626076102256775,
0.7136032581329346,
-0.8483360409736633],
'B3': [-3276068815928992435,
-5836904018918314300,
-4053060948434952245,
5619683363816175174,
2874948655146086130,
-7694389722514812692,
-4644541727977899096]},
'A3': -0.4385385555193584,
'A4': 0.26545290854616366}