Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xce 0x51 0x52 0x44 0x4a
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint16 |
3 | float |
4 | uint8 |
5 | Адрес (uint32) структуры B |
6 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Адрес (uint16) структуры C |
3 | float |
4 | Массив структур D, размер 4 |
5 | Массив int16, размер 7 |
6 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint32) массива char |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива int16 |
2 | Массив int8, размер 7 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xceQRDJ\xe3\x93@7\xbf\x0c\xf74\xb5\x00\x00\x00Qan\x17\x08\xeczM\x1evd'
(b't\xab]\x00\x00\x00\x03\x00\x00\x00\x1a\xaeB\xb13\xb3\xca\x0f\xfbT\x1a:M\xfe'
b'*\x08\x1e\xc1\xe5\x1f\xa3\x84\x91\x1cB\xf4\x10\x99\xfa(;\xc62\xf9\xe8b\xa6<'
b'\x81fE\xd2\xe6+N2\xa4\xef\x07\xfe+\x00\x1d\xbfB\x9b\t\x00\x00\x00\x06\x00'
b"\x00\x00'j\x14\xf1R\x0e\xf4\x9e\x00\x00\x00\x02\x00\x00\x003\x80G\xed=\xd6V"
b'\xdb\x00\x00\x00\x06\x00\x00\x007\x1f\x1f\xaa\x82\x82\x85\xef'
b'\x00\x00\x00\x07\x00\x00\x00CV\xcb\xaf\x18\xf7\xf6$:4\x86\x0c\xfd,\xd9=\x9b'
b'R\x12\xd7\xc5\x9b\x06LW\xac')
Результат разбора:
'A1': 58259,
{'A2': 16439,
'A3': -0.5506470203399658,
'A4': 181,
'A5': {'B1': 3120487275780636203,
'B2': {'C1': -21667, 'C2': 'vdt'},
'B3': -0.7601781487464905,
'B4': [{'D1': [-20926, -20173, -19510, 4091, 21530, 14925],
'D2': [106, 20, -15, 82, 14, -12, -98]},
'D1': [-470, 2078], 'D2': [-128, 71, -19, 61, -42, 86, -37]},
{'D1': [-15899, 8099, -31599, 7234, -3056, -26118],
{'D2': [31, 31, -86, -126, -126, -123, -17]},
'D1': [10299, -14798, -1560, 25254, 15489, 26181, -11546],
{'D2': [86, -53, -81, 24, -9, -10, 36]}],
'B5': [14900, -31220, -724, -9923, -25774, 4823, -14949],
'B6': 105666476},
'A6': 7020574196211797278}
Пример 2
Двоичные данные:
b'\xceQRDJ\xff-;\x1b>\x99dv&\x00\x00\x00R\xd8\x19\xe4\x08q\xbc\x8c\xaeqa'
(b'ef\xc9\xd1\x00\x00\x00\x04\x00\x00\x00\x1a;o\x8d\xdb\xaf\x90\x83&'
b'\xda\xba+\xd3\x83@\x119~\xde #>\x95\xdea\xbe\x9c\xfb\x1c\xfc\x0e\xe5l'
b'\xd6\xc7\xe5\x808\x88m\xdfI4\xe8y\xde\xd6\xc9D\x1dE\x00\x1e=Q\xc6^'
b'\x00\x00\x00\x07\x00\x00\x00(\xd9\xe9\x0e\xd8\xad\xdd&\x00\x00\x00\x06\x00'
b'\x00\x006e`\xf0N\x93\x84\xcd\x00\x00\x00\x06\x00\x00\x00B\x06\xf4}\xbcy\xec'
b'm\x00\x00\x00\x02\x00\x00\x00N\xfd8\xd2V\x84\xe2~\x1e<\xa60\xc1\xa1\x02\xf1'
b'FQ\x19\xb5\x83GOo\x9d\x0f')
Результат разбора:
'A1': 65325,
{'A2': 15131,
'A3': 0.29959458112716675,
'A4': 38,
'A5': {'B1': 16751665303062322501,
'B2': {'C1': -13871, 'C2': 'qaef'},
'B3': 0.05121456831693649,
'B4': [{'D1': [15215, -29221, -20592, -31962, -9542, 11219, -31936],
'D2': [-39, -23, 14, -40, -83, -35, 38]},
'D1': [4409, 32478, 8227, 16021, -8607, -16740],
{'D2': [101, 96, -16, 78, -109, -124, -51]},
'D1': [-1252, -1010, -6804, -10553, -6784, 14472],
{'D2': [6, -12, 125, -68, 121, -20, 109]},
'D1': [28127, 18740], 'D2': [-3, 56, -46, 86, -124, -30, 126]}],
{'B5': [7740, -22992, -15967, 753, 18001, 6581, -31929],
'B6': 1332714767},
'A6': 15571727911529254062}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x52 0x45 0x43 0x33
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Массив int32, размер 6 |
3 | Массив int64, размер 6 |
4 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 6 |
2 | Структура D |
3 | int16 |
4 | uint64 |
5 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int16 |
2 | Размер (uint16) и адрес (uint32) массива uint8 |
3 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZREC3\x82\x00\x06J\xfaj?\x95\xf84\xe4P\xb6$\x9e\xc1;B\x98\xb4\xec\xbdT'
(b'`\xc1\x01\xc9\xe8\xb4\xa2\x1c\x99\xf7\xdd\xbfP\xbe\x15\xda\x15\x99\x13\x1e'
b'\xf3\xec\x002\x08\xe4\x96\x92\xd6\x14m^u\xd11\xb4R@\xae@\x0c\xcc\\\xf8'
b'\xf9j\n>\x0c\xc0\x99\xba@\x93\xfa\xd9)\x90\xe8N\x95\xb7\xee\xb9\xb17\xef\xdc'
b'\x01\xa8\rZ\xbd\xc8>\xf4\xdc\x05\t\xc7&I\x92\x9e\x15L\xcc\x89\xfc\x84\x94c'
b'\xb3\x15\x90\xa2\x8f\xde\x12\xd5\\*\x02\x00S\x00\x00\x00\x02\x00W\x00'
b'\x00\x001\x02\x00Y\x00\x00\x00\x05\x00]\x00\x00\x00A\x02\x00b\x00'
b'\x00\x00\x04\x00f\x00\x00\x00\xe7\x02\x00j\x00\x00\x00\x03\x00n\x00\x00'
b'\x00\xb1\x02\x00q\x00\x00\x00\x04\x00u\x00\x00\x00]\x02\x00y\x00\x00'
b'\x00\x05\x00}\x00\x00\x00y\xe0\xe2\xfa>)?\x15\xd2\x98\xa2\xf1\x8f<\x16(TH')
Результат разбора:
'A1': {'B1': [{'C1': [10713, -6000], 'C2': [78, 149], 'C3': 49},
{'C1': [-4425, -20039], 'C2': [55, 239, 220, 1, 168], 'C3': 65},
{'C1': [23053, -14147], 'C2': [62, 244, 220, 5], 'C3': -25},
{'C1': [-14583, 18726], 'C2': [146, 158, 21], 'C3': -79},
{'C1': [-13236, -887], 'C2': [132, 148, 99, 179], 'C3': 93},
{'C1': [-28651, -28766],
{'C2': [222, 18, 213, 92, 42],
'C3': 121}],
'B2': {'D1': 58080, 'D2': 0.6611171960830688},
'B3': -11755,
'B4': 6064121347623199384,
'B5': 72},
'A2': [1794787846, 888706367, 615928036, 1111212446, -1108560744, 29450324],
'A3': [-2452323123812046647,
1412183984569209023,
-7573919662473415906,
3589779426408453778,
6686733018679235252,
-7367875529775842824],
'A4': -91012934}
Пример 2
Двоичные данные:
b'ZREC3\x81\x00\r\xc2\x19\xbb3\x94g\xb4\\\xc2:\xec\x04w;\r\xf8a{\xea@'
(b'\x1d}\xd5\xe1\xed\n\xf6%\xbfw#\xf9\xd2$\xdb\xc4O\x88W"\xd1V\xb2\xa5Z\x010b'
b'\xdb\xd6\xf99rVp\xdd\xa4B\x17\xa3\x13\xbe\xcb\xc6\r\x05]?\xe8s\xe8\xb5'
b'|3\x0b5\xc3Gy\xc7\x19\xc1\x1ci\xaad\xbb\xb7Z\xb21\xef\xed\xb4n[\xbf2gF'
b'\xc4\xd3\xf1UfC6\xea\xb7\xd4*\x82|\xfd=\x16\xc9\x93I\x9bh\x02\x00S'
b'\x00\x00\x00\x03\x00W\x00\x00\x00\xfa\x02\x00Z\x00\x00\x00\x05\x00^\x00'
b'\x00\x00\xb4\x02\x00c\x00\x00\x00\x02\x00g\x00\x00\x00\xc0\x02\x00i\x00'
b'\x00\x00\x04\x00m\x00\x00\x00\x85\x02\x00q\x00\x00\x00\x03\x00u\x00\x00'
b'\x00\x8c\x02\x00x\x00\x00\x00\x05\x00|\x00\x00\x00,\x7f\x92\x99"\x85'
b'\xbe?\xea?<[5\x032S\xdf\xca')
Результат разбора:
'A1': {'B1': [{'C1': [-15563, 31047], 'C2': [199, 25, 193], 'C3': -6},
{'C1': [26908, 25770], 'C2': [187, 183, 90, 178, 49], 'C3': -76},
{'C1': [-4625, 28340], 'C2': [91, 191], 'C3': -64},
{'C1': [26418, -15290], 'C2': [211, 241, 85, 102], 'C3': -123},
{'C1': [13891, -18454], 'C2': [212, 42, 130], 'C3': -116},
{'C1': [-644, 5693], 'C2': [201, 147, 73, 155, 104], 'C3': 44}],
{'B2': {'D1': 37503, 'D2': -0.2600295841693878},
'B3': -5569,
'B4': 16092260882886376511,
'B5': -54},
'A2': [-1155939827,
-1268280269,
-331693476,
222000900,
-361012744,
-713220800],
'A3': [2555721483318652385,
6307378985041187577,
3459145656505389346,
8094782973575355234,
-3765550647244315427,
-1696757275747349050],
'A4': 187923637}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x92 0x42 0x51 0x57 0x55
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Структура D |
3 | double |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | Массив char, размер 2 |
4 | Размер (uint32) и адрес (uint16) массива структур C |
5 | Массив int8, размер 5 |
6 | float |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
3 | int16 |
4 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint32 |
3 | int8 |
4 | Размер (uint32) и адрес (uint16) массива uint64 |
5 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x92BQWUB\x00\x00\x00|\x84p\xf0\x9bd\x03\x00\x00\x00_\x00\n\xfaU'
(b'\xef\x0e\xd8\x96\xe1?\xcc\xf0\xc1s\x9d!\xe5\xbf\x8bD\xfbl\x82\xba'
b'\xb9X\xe8\xe1\xe8,\x9ch!|\xc8\xbfm\x16\xaa\x92CZ\xe7j\x14]Kv2h\x0cc'
b'\xeb\xc5\xa6\xeb\xd2\xbfoq\x02\x00\x00\x00\x1e\x00\x03\\\xbb\xf8Sd\xc82\xbfA'
b'\xcfnL\xc9\x81 \x08\xc91\xa6\xdaJ\xce\xe8\xd9\xa1h\x85a\x9f\xaa3a')
Результат разбора:
'A1': {'B1': 1748137547,
{'B2': -0.2956330235297606,
'B3': 'oq',
'B4': [{'C1': -0.6603533993616337,
'C2': 1828406411,
'C3': -17790,
'C4': -504866631},
'C1': -0.19128816230691048,
{'C2': 2460620397,
'C3': 23107,
'C4': 1561619175}],
'B5': [3, 92, -69, -8, 83],
'B6': -0.6983702182769775},
'A2': {'D1': 124,
'D2': 2616225924,
'D3': 100,
'D4': [585610653128904513, 15702026921718460873, 7004129447003908257],
'D5': 10},
'A3': 0.5496635715196014}
Пример 2
Двоичные данные:
b'\x92BQWUB\x00\x00\x00\xb9H\x91\xe7\x18\\\x02\x00\x00\x00_\x00,`X/)\x0f\xbe'
(b'\xd6?`s\xcc\x00\xb4q\xa2\xbfj\x0c\x89\xa7\x87\xebC\x16o \xb82e\xd1a\xb9\xe1?'
b'\xe8\xe1\xf0\xb0\xf68!\x80\xf7\xc8\x8f\xb6a\xdd\x96\xe8\xcd\xc7\xd8$'
b'\xe2\xbfdl\x02\x00\x00\x00\x1e\x00\xde6\x94\xe5\x96\xd5u\xc0>\xe1F\xfd\xb97'
b'\r\xbfCp4\x17[U\t\xbd!')
Результат разбора:
'A1': {'B1': -580798833,
{'B2': -0.5669979002407384,
'B3': 'dl',
'B4': [{'C1': -0.03602373609303444,
'C2': 2810776682,
'C3': -5241,
'C4': 544151107},
'C1': 0.5538796510459951,
{'C2': 2968576488,
'C3': 14582,
'C4': -923303903}],
'B5': [-34, 54, -108, -27, -106],
'B6': 0.37589898705482483},
'A2': {'D1': 185,
'D2': 417829192,
'D3': 92,
'D4': [4881635054087653089, 2431109636055053424],
'D5': 44},
'A3': 0.35535029432265297}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4a 0x50 0x57 0x4f 0x6f
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
2 | Массив структур C, размер 5 |
3 | Массив float, размер 4 |
4 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 3 |
2 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | float |
3 | Размер (uint32) и адрес (uint16) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'JPWOo\x02\x00\x00\x00G\x00\x00\x00wC\xb0\xb0\x08DEg[\x8f\x88\xfb\x05\x8aL'
(b'\x9b\xe1\xffz\xb1\xed\xe2a\xe8.>w;-\xbf\x8191\xbfy\xdc:\xbeH\x95\x0c?\x9b'
b'p\x0e\xbfQ\x00ymdW\x96tfbaq=\x00\x00\x00B\x00\x00\x00\xb5\xcbT>\xe8'
b'\xf1\x90\x9c\xdf?\xbaC;\xbf\x02\x00\x00\x00O\x00')
Результат разбора:
'A1': [{'B1': 'ymd', 'B2': 38487}, {'B1': 'tfb', 'B2': 29025}],
{'A2': [{'C1': -1330625673, 'C2': 17416},
'C1': -1889835195, 'C2': -1144},
{'C1': -1689482747, 'C2': -31},
{'C1': -487739014, 'C2': -6047},
{'C1': 997670446, 'C2': -16595}],
{'A3': [-0.6922836899757385,
-0.18248166143894196,
0.5491528511047363,
-0.5564057230949402],
'A4': {'D1': 0.4939310419440279, 'D2': -0.7315021753311157, 'D3': [181, 203]}}
Пример 2
Двоичные данные:
b'JPWOo\x03\x00\x00\x00L\x00\x00\x00\xceQ\x08\xafeh\x14|B\xa7z\x9e6\x10\xa2'
(b'l\xb9c\x1d|\xa9\xfd\xe8\x86G\x84\xf72\x18rl\xc2\x80\xbe\x1eb\x82>\xc3'
b'ec\xbf\x14Q\x13?[\x00uwbZRxqxm\xa2ekr\x167=\x00\x00\x00B\x00\x00\x00'
b'G\x00\x00\x00\x12\xf6Z\x081!\xc9\x16\x9f\xda?p\xd2U?\x03\x00\x00\x00X\x00')
Результат разбора:
'A1': [{'B1': 'uwb', 'B2': 21082},
{'B1': 'xqx', 'B2': 41581},
{'B1': 'ekr', 'B2': 14102}],
{'A2': [{'C1': -1358409266, 'C2': 26725},
'C1': -1488815084, 'C2': -24966},
{'C1': 1822560310, 'C2': 25529},
{'C1': -39224291, 'C2': -31000},
{'C1': 855082055, 'C2': 29208}],
{'A3': [-0.25148332118988037,
0.25465482473373413,
-0.8882715106010437,
0.575455904006958],
'A4': {'D1': 0.4159600223690778,
'D2': 0.8352422714233398,
'D3': [18, 246, 90]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x55 0x52
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | Массив структур B, размер 2 |
3 | float |
4 | double |
5 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив int16, размер 2 |
2 | Структура C |
3 | Адрес (uint32) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | uint8 |
4 | int64 |
5 | uint32 |
6 | double |
7 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | Массив int8, размер 6 |
4 | Размер (uint32) и адрес (uint32) массива uint16 |
5 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GUR\x02\x00\x00\x00s\x00\xf7\xcf\x11\xe0q<\x93E\xf0 0\x9b\xb5\xb6\xc9'
(b'\xbf\xf6\x88\x12M\xa4\xf7q\xa6E*\x05\xeaT\xba\xa3qkPu\xec?\x8d\xee'
b'y\x00\x00\x00\xe4\x14\xbdGBP\xbcu\xde\x19GzQ[\xe3\xbf\x8a\x8e\xb6!'
b'\xda\x18\xbb\xe7\x7f\xdb \x8f1\xdes\x13\x11\x12\x99\xe8?\xb3\xa3\x9b'
b"\x00\x00\x00\x1e'\x95\xbe\xfe\xcfK\xe7;k\xe0\xbf;6\xff\xc35h1{vp\xc5\xfe\xd0"
b'\x10\xdc\xfe\x90\x82\xf4\xaa\x9a\x05\xa1#\x84\xe9\xf5\x1a\x9c\x07\xb5X\x02'
b'\x00\x00\x00u\x00\x00\x00\x85Y\x05\x9e\xe1Y/\xa5\xc3\x05\xde\x03L'
b'A\xc8\xd0\x9fv\x18Kwq\xa1\xa3\xee\xb6\x02\x00\x00\x00\x97\x00\x00'
b'\x00\xbc\xecjP')
Результат разбора:
'A1': 'vp',
{'A2': [{'B1': [-12297, -8175],
'B2': {'C1': 1167277169,
'C2': -0.20088834836520375,
'C3': 246,
'C4': 5018824143178371720,
'C5': 1424622890,
'C6': 0.8893205736650238,
'C7': -4467},
'B3': {'D1': 2190540508,
'D2': -1620130791455806732,
'D3': [-11, 26, -100, 7, -75, 88],
'D4': [65221, 4304],
'D5': -1643816571}},
'B1': [5348, 18365],
{'B2': {'C1': 1975275586,
'C2': -0.6048972500073508,
'C3': 138,
'C4': 9216540877850261134,
'C5': 831463643,
'C6': 0.7686853726878515,
'C7': -23629},
'B3': {'D1': 64882115,
'D2': 5411205381060313420,
'D3': [119, 113, -95, -93, -18, -74],
'D4': [23009, 42287],
'D5': 1349184700}}],
'A3': -0.2913140654563904,
'A4': -0.5130900876524718,
'A5': 8876990920654796347}
Пример 2
Двоичные данные:
b'GUR\x02\x00\x00\x00s\x00\x03;=\xd3\xee\xa0\x99z\xbe\x9f\xde\xad\x12{\xed'
(b'\xbf\x08\xff\x08\xac\xff\x00\x0f\x9cS\xf5(\xca\x9a0\xeb\x16\xc8\x9aF'
b'\xd8?\x1a\xf4y\x00\x00\x00\x1f\xd9O\xb9\xa2V\xd0r\xd0\xf1\xc4X\xd7\x1b\xba?'
b'\x02\x94\x03\x95\xdb"\x82\x84\xb1^h\xcf\xb5@m\xf1x\x12\x11\xb0'
b'\xbf\xd1\xa2\x9b\x00\x00\x00\x8b\xfcd?\x18\x89a\x8a\xc6T\xdf\xbfQ[\t&\x99'
b'E-\xc1gnI\x81No\xf5\x87?\x18v\x7f\xd0\xac&\\\xcb70\xbb\x13\x8a\xaf\xfc\x02'
b'\x00\x00\x00u\x00\x00\x00e\x1f-)te&\xe3F?\xe3\xf4\xeb\x80\xfc&\x91\x02?\x1bp'
b'~So\xc5\x12\x02\x00\x00\x00\x97\x00\x00\x00?\x8f\x82\xa0')
Результат разбора:
'A1': 'gn',
{'A2': [{'B1': [15107, -11459],
'B2': {'C1': 2056888558,
'C2': -0.9212735553637612,
'C3': 8,
'C4': 6024706898478762239,
'C5': 2596940021,
'C6': 0.3793093637465743,
'C7': -3046},
'B3': {'D1': 406816757,
'D2': 4020408413536157558,
'D3': [48, -69, 19, -118, -81, -4],
'D4': [33097, 28494],
'D5': 690823013}},
'B1': [-9953, -18097],
{'B2': {'C1': 1926256290,
'C2': 0.1019873229715309,
'C3': 2,
'C4': -5655252145846025324,
'C5': 3050268766,
'C6': -0.06276050045692205,
'C7': -23855},
'B3': {'D1': 4108533574,
'D2': 1963290785004421355,
'D3': [112, 126, 83, 111, -59, 18],
'D4': [25972, 58150],
'D5': -1602056385}}],
'A3': 0.8944784998893738,
'A4': -0.48954928888100957,
'A5': -4526885526367020207}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x4e 0x59
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | uint16 |
4 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур B |
5 | Адрес (uint16) структуры C |
6 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | Массив double, размер 4 |
2 | Массив uint64, размер 7 |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int32, размер 3 |
2 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CNYP\xda\xbb:\x1a\x9d>\xf5\x00\x00\x00\x05\x00\x00\x00\x1d\x02r\x00\x06\x00'
(b'F\x00R\x00\xaeuqnjy>Pn\xad\nf\xbfB\xaf\x04\\\xf2\xbfsZ\xe6\xb5\x08\xbeI{\x14'
b'\xb7O?1\xa6\xc9\x19\x95\xbfSf\x829R\x00"\x00(\x00.\x004\x00:\x00@\xbf\xee'
b'\xcf\n\x0fz<j?\xe6\x9d\xd3\\P\x0c\x88\xbf\xbdn\xadTS\xdd\x10\xbf\xe1'
b'\xd8\xf9\x90\x1d\x9e\x08\xe3\x13\xa5NJR+&\x7f\x9c{\x96\xf5\xa2GK\x05F'
b'\xcdl\xe8 \xee\x14.\xff\xe6\x8e\xdd\xcf\x85\xd8\xf3\x98d\xe9Df'
b'\xae\x0e\xf4\xc4(c\xaf\xc7\x9fI=2EW\x1fE\x99\x17\xc9\xbf\xac\x9f\xc8>ta_\xcf'
b'\xb6\x1f\x84>Ohk\xfe\x12\xfb')
Результат разбора:
'A1': 5826174926186168053,
{'A2': 'uqnjy',
'A3': 626,
'A4': [{'B1': 0.20354719460010529, 'B2': 2662},
'B1': -0.7604830265045166, 'B2': 23794},
{'B1': -0.9506057500839233, 'B2': -19192},
{'B1': -0.19675856828689575, 'B2': -18609},
{'B1': 0.6939511895179749, 'B2': 6549},
{'B1': -0.8257828950881958, 'B2': 14674}],
{'A5': {'C1': [-0.9627733518881432,
0.7067658236486674,
-0.11497004803446864,
-0.5577361883887884],
'C2': [16362603626840075046,
9195360427480074059,
380217086194019860,
3386678946087011800,
17552890500714245646,
17637266449305673545,
4409663225638263063],
'C3': 3384781983},
'A6': {'D1': [-935431071, 1607448095, -2076291224], 'D2': 1811813115}}
Пример 2
Двоичные данные:
b'CNY\xedJ\xa8m\xa1e#\xa6\x00\x00\x00\x05\x00\x00\x00\x1d\x85B\x00\x05\x00'
(b'@\x00J\x00\xa6ioxfa\xbfw\xaa\x1a\x01_\xbekc^,\xba?:\xa7\xfcF\xc9>\x91\x9d)'
b'~\x00\xbe\xbc51\x84\xe6\x00"\x00(\x00.\x004\x00:\xbf\xe3\xccT0('
b'\x13\xf8\xbf\xa4\x9f4z\xf2\x9f\x00\xbf\x86\xe4\xf7N\xb0\xd4\x00?\xef'
b'7\xa15\x86\xbf\xe2\x02^Oj\x1b\xe9\xf3\xb2\x9d\x93{\xa3\xd5f\xab\xc9\xfch'
b'9I\xee\x02u+i\xb3\xf2jf*\x12\xfa\xa6wdC\xaf\x864\xc6`\x0cK\x88\xb6\x03'
b'm\xe6\xe4\xd4\xaa\xc8\x13\xf3k\xa3DP\x12\xebI\xd34\xc8\xb5\x0f'
b'\x13\xda\x9f\x97\xcc\x981\xa8\xd7\xfb')
Результат разбора:
'A1': 17098664124078171046,
{'A2': 'ioxfa',
'A3': 34114,
'A4': [{'B1': -0.9674392938613892, 'B2': 351},
'B1': -0.2298712432384491, 'B2': 11450},
{'B1': 0.7291257381439209, 'B2': 18121},
{'B1': 0.28440216183662415, 'B2': 32256},
{'B1': -0.36759331822395325, 'B2': -31514}],
{'A5': {'C1': [-0.6186924877698621,
-0.04027713776423347,
-0.011178905571890496,
0.9755407376705956],
'C2': [170661153040102322,
11354555029121313737,
18187850084824282411,
7616697933608129274,
11995166374395000006,
6920989777902923238,
16488991912015129507],
'C3': 1146098411},
'A6': {'D1': [1238578376, -1257303078, -1617441640], 'D2': 833148923}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x47 0x46 0x59 0xe
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | Адрес (uint32) структуры B |
3 | int64 |
4 | uint16 |
5 | int8 |
6 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | Адрес (uint32) структуры D |
3 | Массив int32, размер 3 |
4 | float |
5 | Массив uint16, размер 5 |
6 | Массив uint32, размер 7 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint32) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PGFY\x0e\xae\xf5\xd9P\x1f)\xde-+\x00\x00\x00\x86\x91\xac\xc1ce\x07'
(b'\xabX\x1c\x8aw\x92\xb9h(p\xaa\x02\x00\x00\x00\x1d\x00\x00\x00\x8b\xbfJp\xae'
b'L\xd8L\xf8w\xfe\xd9\xfd~\xc4}\xf9N\x03\xbfd\x9dy\xa8!\x00\x00\x00\x10'
b'\x12}\x12(\x99\xc0{O\xb5\x85!\xcdJi\xbfA\xa0*\x18\xfe\xee\xc9IQ\xfce\x117'
b'\x92\x1b\x98\xa7\xfa\x9a\xa5UQ\xdc\xc5\xb0\xd7\x83)\x9c\xdby\x87\xd7'
b'\x18\xe1\x93\xe3w')
Результат разбора:
'A1': 3305124391013709230,
{'A2': {'B1': [{'C1': 1883946891, 'C2': 15708124458639707310},
'C1': 2110029565, 'C2': 12139907326580838137}],
{'B2': {'D1': -21904, 'D2': [47506, 10344]},
'B3': [310186512, 2076219688, 562410831],
'B4': -0.911297619342804,
'B5': [41025, 6186, 61182, 18889, 64593],
'B6': [2453082469,
4205287451,
1364567450,
3618686428,
3684444547,
416778105,
2011403233]},
'A3': -6122813689261420154,
'A4': 7256,
'A5': -118,
'A6': 119}
Пример 2
Двоичные данные:
b'PGFY\x0edD\xa6\xbc\x89jH\xc0-\x00\x00\x00=r@\xb6\xa5\xc0\xcc\x9b\x1a}\xef'
(b'@\x94\xed\x11\xe4}\xe1\xef\xac\x03\x00\x00\x00\x1d\x00\x00\x00\xae\x9a\x8e'
b'\xdd\xc9\x9a \xad\x98\x80^\xe8\xbe\x89\x98\x0fX\x00;J\xf1\xe8\xb9'
b'\xbc#\x00\x00\x00L\x83\xfb\x10\x8a74\xf4\x1f\xc2M\x05\x8d\x83e?p\xf2\xc4'
b',\x02\x90\x9d\rU\xe2\x9a\xcf\xf1\x02oe\xa7\x9d\xe4m\x9eB.<\xcb\xccBm]b\x0f'
b'P\x9d\x10\x05\x00W\xf7')
Результат разбора:
'A1': -4591302680296143772,
{'A2': {'B1': [{'C1': 3717110446, 'C2': 16743961857838062281},
'C1': 261654974, 'C2': 13599156672852066392}],
{'B2': {'D1': -21265, 'D2': [60820, 58385, 57725]},
'B3': [284918604, -197904502, 88982047],
'B4': 0.8965385556221008,
'B5': [62064, 11460, 36866, 3485, 57941],
'B6': [49401754,
2644993391,
1117679076,
3435871278,
1650289986,
278745103,
4149673989]},
'A3': -7220184284621934019,
'A4': 32026,
'A5': -17,
'A6': 64}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x48 0x44
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int32 |
3 | int16 |
4 | uint64 |
5 | Размер (uint16) и адрес (uint16) массива uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | int16 |
3 | int8 |
4 | int64 |
5 | Массив int16, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив структур D, размер 2 |
3 | Массив float, размер 7 |
4 | uint32 |
5 | Массив uint8, размер 3 |
6 | uint8 |
7 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BHD*\x00\x00\x00W>\xdc\xa5\xc2\xdf\x9cc#\x82Y\n\x122FI\xe1Y\x9a\xe5\xc9'
(b'\x92:\xa1\\\xde\xdd\xcd\x16\x9c\xcf\x02\x00b\x00\x81\xbf:\x99X\xba'
b'\x19\x13\xba\x9f\xa8\x91\xe53\xa9\xce}\xc7>>l\xbe[\xbb\xa7\xbe\xa4\x804\xbf'
b'B\r\\\xbf\xe0\xd6\x07?\xc7\x00\x84\xbe\x82\xfa\xb2>\x1e\xee;\xefQ:J\x88'
b'\x9c\xc0\xffY5\x18\x03\xe8\xf0\x92')
Результат разбора:
'A1': {'B1': {'C1': 49025,
{'C2': [{'D1': -1168598726, 'D2': 2679771929},
'D1': 870683048, 'D2': 3346910889}],
{'C3': [-0.23070618510246277,
-0.32760128378868103,
-0.7050879001617432,
-0.8595772981643677,
0.5306224822998047,
-0.25781843066215515,
0.3495674729347229],
'C4': 4013682206,
'C5': [81, 58, 74],
'C6': 136,
'C7': -16228},
'B2': 15959,
'B3': -36,
'B4': 6449756527088616101,
'B5': [4618, 17970, -7863]},
'A2': -907699623,
'A3': 14994,
'A4': 14959857135664389281,
'A5': [406149631, 2465261571]}
Пример 2
Двоичные данные:
b'BHD*\x00\x00\x00\xd7\t\xf0\x89\xadkA\r\x1b\xe0R\xabJs\x0eJd>G\xe1\xcb'
(b'\ra\xc1\xf8B\xea\xf8\xf0\x13P\x03\x00b\x00B\x07h\xb7b3\x07\xd0JD'
b'\xe9C\x87\xd3\x83\xa1\x9b\xffb\xe9z?\xc03Q\xbe[\xd3\xfc\xbe\xa9x0?'
b'\xa6\x9by\xbf\x04\xedA?\xcd\x00S\xbe\xc1\x10~K`\xcd\x88\x1b]!\x87\xf0'
b'fg\xc5\x91+u\x00\xf0\\\xc3')
Результат разбора:
'A1': {'B1': {'C1': 1858,
{'C2': [{'D1': 862107496, 'D2': 1145753607},
'D1': -746109975, 'D2': 4288389507}],
{'C3': [0.9801236391067505,
-0.2042989730834961,
-0.49380001425743103,
0.689341127872467,
-0.9750312566757202,
0.7575228214263916,
-0.20605774223804474],
'C4': 1266553025,
'C5': [96, 205, 136],
'C6': 27,
'C7': 8541},
'B2': 2519,
'B3': -16,
'B4': 5971802849639378313,
'B5': [19115, 3699, 25674]},
'A2': -874428610,
'A3': 24845,
'A4': 5770220499464550593,
'A5': [1734799495, 1965789637, 3277647872]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x56 0x4a 0x4b 0x84
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | int64 |
3 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур B |
4 | Структура C |
5 | int64 |
6 | Массив int32, размер 2 |
7 | double |
8 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив char, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
3 | uint64 |
4 | int32 |
5 | Структура D |
6 | uint8 |
7 | uint32 |
8 | Массив uint16, размер 3 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива int16 |
2 | uint32 |
3 | int8 |
4 | int16 |
5 | int8 |
6 | uint32 |
7 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'TVJK\x84\xbe\xc0\x97\xad#\xf4fz\xc1N\xf20\x00\x02\x00{\xbf}\xd2\xb3G\xf2\x88'
(b'@\x80\xa5\xba7\x84\x15\xd3\x8f\xa6>\x00\x00\x00\x04\x00\x83\xe8\xb6\x1a'
b'N{\xed\xee\xa1\x8e\x95g\xb2!\xc3\xebyu\xe7\xa4\x00\x02Wc\x92\xbfkj'
b'\xbd\xf5\x10\xa3F\x05R\x84\xf6\xcb;\xb6*\xbcCm6\x94\xf6\xad?\xe8\x8a\x1f'
b'``\x7f\xe6\xf0R\r\x05z\xf6\xc7UXkfs@vJ\x19\x7f:\x9bTchq\x00\x00\x00e\x00'
b"\x00\x00p\xa7\x13\xf2s\x0b\xc1'\xfe")
Результат разбора:
'A1': -0.3761571943759918,
{'A2': 2590808363060097584,
'A3': [{'B1': 5912387911491736920, 'B2': 'kfs'},
'B1': 4644981539048430420, 'B2': 'chq'}],
{'A4': {'C1': -0.9914962649345398,
'C2': 18418,
'C3': 9817988636949840917,
'C4': -745560514,
'C5': {'D1': [-22765, -3469, 3009, 10238],
'D2': 3904248398,
'D3': 123,
'D4': -4626,
'D5': -95,
'D6': 2392156082,
'D7': 2433047130611885056},
'C6': 2,
'C7': 1466143423,
'C8': [27498, 48629, 4259]},
'A5': 5045529688568183734,
'A6': [716981101, 915732141],
'A7': 0.7668606645929656,
'A8': 240}
Пример 2
Двоичные данные:
b'TVJK\x84>[J\x83v8+\x85\xab\x9f\tr\x00\x02\x00{?M\x1biV]\x00)\xdb\xe2\xe5'
(b'\x06\x9e\x82\xf0\xf3\xd9\xd5\x00\x00\x00\x04\x00\x83\xda\xcd>P\xe1}\x05'
b'\xfd\xa9C\x18\x94\x87Z\x0cH\x8a\xe0(\x9d3\xb1V\xb1\xc91\xbb\x91\x8e\xca\xcd'
b'\xd3\xb3\xd4\xf9mG.\x9c\xdc\xbe={/\xec\xfd;\xbf\xc5\xbf,\xcd ]\xa8'
b'\xa4\x85\xabO\x1d\xc3G\xc62veu\xe1\x13AG)\xe3\xbe\xdbcde\x00\x00\x00e\x00'
b'\x00\x00p\xe7~A^\x08\xaak\xe2')
Результат разбора:
'A1': 0.21415142714977264,
{'A2': 8518606548281264498,
'A3': [{'B1': 9631879217310844466, 'B2': 'veu'},
'B1': 16218378456992562907, 'B2': 'cde'}],
{'A4': {'C1': 0.8011994957923889,
'C2': 22109,
'C3': 11782241596644994,
'C4': -252454443,
'C5': {'D1': [-6274, 16734, 2218, 27618],
'D2': 3670883920,
'D3': -31,
'D4': 32005,
'D5': -3,
'D6': 2839746708,
'D7': 9753121448731355293},
'C6': 51,
'C7': 2975248841,
'C8': [12731, 37262, 51917]},
'A5': -3191973543130222948,
'A6': [-591512197, 804060475],
'A7': -0.16989669815005226,
'A8': 164}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x4a 0x4e 0x53
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 3 |
2 | int8 |
3 | float |
4 | int8 |
5 | Структура D |
6 | Структура E |
7 | int8 |
8 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | uint64 |
3 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | double |
3 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | int16 |
3 | float |
4 | uint32 |
5 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | Размер (uint16) и адрес (uint32) массива char |
4 | Размер (uint16) и адрес (uint16) массива float |
5 | Массив uint8, размер 6 |
6 | int16 |
7 | uint8 |
8 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'SJNSt\x00\x00\x00\x89\x9a\xe1\x90\xf9\x8a\xc0\x0fY\x18\x97\xa2'
(b'\x81\x00\x00\x00\xdc\xe6\xff+\x07\x17\xf2\n\xe7\xb3\xe4\xc0\x8e\x00\x00\x00'
b'\xbf=G\xee&\xd2\xe6\xdb\x0cU\xf2=&\x88\x0fA\xbf\x18&\x86\xd8\xa3f"'
b'\xa3\x94\xfaR,\xe4h\xbfV\t{\xdb \xd2Q#\\}~>\x02\x00\x9b\x00\x00\x00\x03\x00'
b'\x9d\x00>r\x7f\xe9\xf5s( [\x94T\x1c\xbf)\xea\xbb\t_j\xd8\xe9\x7f~\x92d\xbf'
b'\x00P\x8b\x15\xc2\xf0\xe5?\xe9\xde;-\xbf\x96\x00\xc4u\xb6#\xee\xbft$D'
b'+?\x12\x92\xf4uz\xcc\xef\xbf\xd3jzN)O\xbe\xa8\xfaB\xbf\xad\x0b\xf1\xbe')
Результат разбора:
'A1': [{'B1': {'C1': -0.8928602933883667, 'C2': 0.6856394215378714, 'C3': -23},
{'B2': 1135059910579559049,
'B3': 2727811161},
'B1': {'C1': -0.6766947507858276,
{'C2': -0.9418594646558798,
'C3': 116},
'B2': 788718204313659100,
'B3': 3236213735},
'B1': {'C1': 0.6690084934234619, 'C2': -0.9937107375922685, 'C3': -45},
{'B2': 15845583403597905343,
'B3': 1039291660}],
'A2': 38,
'A3': -0.754143238067627,
'A4': 24,
'A5': {'D1': 10710442163048056358,
'D2': 21242,
'D3': -0.9097316265106201,
'D4': 3682273622,
'D5': 53792},
'A6': {'E1': 9041,
'E2': 0.24852508306503296,
'E3': 'jz',
'E4': [-0.20230600237846375, -0.7616372108459473, -0.4707922041416168],
'E5': [62, 114, 127, 233, 245, 115],
'E6': 8232,
'E7': 91,
'E8': -0.6106655597686768},
'A7': 41,
'A8': 9217136063763037162}
Пример 2
Двоичные данные:
b'SJNSt\x00\x00\x00>\xb5\xbbe\x89\x0bs\xbd\xe1\x83>@\x81\x00\x00\x00'
(b'\x98\xe1\x9c\x80b\x80\xd9\xd2\x07\xa0\x95B\x8e\x00\x00\x00\x11\x9e\xfa\x14'
b'x\xe4\xaa_\xef\x1ao\xa7\xae\xf4\x0e\x12?\xb5\xe4\xcd\xc2\x048\xee'
b'\xed\xd0\xea\xf5\x19CF=\x96F\xf2x\x8f\xc8\xab\xa7U\x16\xf2=\x02\x00\x9b\x00'
b'\x00\x00\x04\x00\x9d\x00\\\xd1\x07n\xae\xff\xe8(g)\x95\xcb\xbeS?\xba\x18T'
b'0(\x9a\xce\x06\xa2~\xbf\x10\x8d\x18\xf8U\xed\xd7\xbf\xc2n]I?X\xac{'
b'\x03\xa4\xf2\xec\xbf\xd6\x19\x96P\xbf\x8e\x01`\xb6d\xb2\xe3?\x82q'
b'q\xe1\x1b\x07?\xf7\x1a\x1b?\x9c\x19\x10?\xfb\xdc-\xbf')
Результат разбора:
'A1': [{'B1': {'C1': -0.9946597814559937,
{'C2': -0.37386082866778825,
'C3': -62},
'B2': 13651267580235330878,
'B3': 1077838817},
'B1': {'C1': 0.7865818738937378, 'C2': -0.9046192234067219, 'C3': -42},
{'B2': 15193315978463994264,
'B3': 1117102087},
'B1': {'C1': -0.8147903084754944,
{'C2': 0.6155265390407736,
'C3': -126},
'B2': 6893573384043142673,
'B3': 2809076463}],
'A2': -82,
'A3': 0.5705406665802002,
'A4': -75,
'A5': {'D1': 15054951053734890980,
'D2': -2582,
'D3': 0.04840383306145668,
'D4': 2029143702,
'D5': 51343},
'A6': {'E1': 42923,
'E2': 0.11820665746927261,
'E3': 'qq',
'E4': [0.527769148349762,
0.6058802008628845,
0.5628907680511475,
-0.6791531443595886],
'E5': [92, 209, 7, 110, 174, 255],
'E6': 10472,
'E7': 103,
'E8': -0.39762237668037415},
'A7': 83,
'A8': 14887255706261043775}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x70 0x42 0x50 0x50
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | uint64 |
3 | Адрес (uint16) структуры C |
4 | double |
5 | int64 |
6 | uint64 |
7 | Размер (uint32) и адрес (uint32) массива int16 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива структур D |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | int64 |
4 | Размер (uint16) и адрес (uint32) массива float |
5 | int8 |
6 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'pBPP\x000h\xaf\xa6{\x0b\xf40\xd5\x00X?\xd0;\xec\xf4\x03\x94D\xbb\xff\xc5\xce'
(b'c4\xbf\xe1\xe8\xc0\x08\xb6\xef\xa1\xaci\x00\x00\x00\x03\x00\x00\x00u'
b'^\xc3\xd6T\xc4\xfb\x8a\x8c\x13Ic\xbb\xf9\xf9$Ib\xe2\xc8\t6.P\x7f\x97\xcb=v'
b'tzvu>\xe1\x81e\xbe\xe9#\x99\x00\x00\x00\x05\x007\x00\x05\x00\x00\x00K'
b'\xd7\xebr_6\x1e\x84D\x00\x02\x00\x00\x00P\x8b&9#uv\x02\xacn')
Результат разбора:
'A1': {'B1': 24259, 'B2': -42, 'B3': 1422195594},
{'A2': 7543430948280611029,
'A3': {'C1': [{'D1': -29677, 'D2': 73, 'D3': 99},
'D1': -17415, 'D2': -7, 'D3': 36},
{'D1': 18786, 'D2': -30, 'D3': -56},
{'D1': 2358, 'D2': 46, 'D3': 80},
{'D1': 32663, 'D2': -53, 'D3': 61}],
{'C2': 'vtzvu',
'C3': -2888088982772612028,
'C4': [0.4404403269290924, -0.45534971356391907],
'C5': -117,
'C6': 9785},
'A4': 0.2536575682591471,
'A5': -4899980379337474079,
'A6': 16771414594125147241,
'A7': [9077, 30210, -21394]}
Пример 2
Двоичные данные:
b"pBPP\x000B\x8d\xcd4O\xdf.\xd0\x00Q\xbf\xdd\x05.\xffp\xa4\xa0\xc4~O'"
(b'\xb1[\xa9i\x13\xec\xcb\x9a\x92\xeeAC\x00\x00\x00\x04\x00\x00\x00n\xd2\x13zD'
b'^\x8f\x9e\xff\xf3\xf9\xc91\xb6;\xc0mp\xbf\x11\xaa\xe7\xbe\x91\xa4'
b'\xa7\xbe~\xd9\x18\xbfS\x9e\xa9\x00\x00\x00\x02\x007\x00\x02\x00\x00\x00'
b'?\xe2-\xdbF\xeb\x9b\xc5Q\x00\x04\x00\x00\x00A\xde\x96\x10\xa8zE\xfdE\xef'
b'\xe0\xf9')
Результат разбора:
'A1': {'B1': 53779, 'B2': 122, 'B3': 1147047838},
{'A2': 4795714802781466320,
'A3': {'C1': [{'D1': -13, 'D2': -7, 'D3': -55},
'D1': 12726, 'D2': 59, 'D3': -64}],
{'C2': 'mp',
'C3': -2148820349538810543,
'C4': [-0.5690140128135681,
-0.28445932269096375,
-0.24887502193450928,
-0.826639711856842],
'C5': -34,
'C6': 38416},
'A4': -0.4534413809329383,
'A5': -4287902763312240279,
'A6': 1435746245974835523,
'A7': [-22406, 17917, 17903, -7943]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x50 0x56 0x56 0x31
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур C |
3 | uint16 |
4 | Размер (uint32) и адрес (uint32) массива uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 6 |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | int16 |
4 | uint64 |
5 | uint8 |
6 | Массив int16, размер 4 |
7 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VPVV1\x17\x00\x02\x00\x00\x00_\x00jT\x02\x00\x00\x00c\x00\x00\x00zefin'
(b"i\xd8X\x9f\x1a\xd8.\x1by\xe7\xa14\xc8\x1a#\x7f\xbf\x88'\xfb\x80\xe2\xb6\xc9"
b'3hi,\xcb\x86\xd6\xf9G\x0fH{\x10\xfb\xa0\xc9q\x15\x92\xcdd\xbf\x03\x90'
b'\x8ar\x8b\x90\xafVI\x9a\xac\xc6DE\xb3"\xc7(q\xff\xf2%\x00B\x00\xc2'
b'\x9dD\x97\x18\xfb\xe1:')
Результат разбора:
'A1': {'B1': 'zefini', 'B2': 8726620208654932184},
{'A2': [{'C1': {'D1': 3358892519,
'D2': -0.9966293573379517,
'D3': 10120,
'D4': 7595377713010082043,
'D5': 44,
'D6': [-31029, -1578, 3911, 31560],
'D7': 16},
'C2': 251},
'C1': {'D1': 359778720,
{'D2': -0.8937617540359497,
'D3': -28669,
'D4': 11117512467185103498,
'D5': 172,
'D6': [17606, -19643, -14558, 28968],
'D7': -1},
'C2': 242}],
'A3': 21610,
'A4': [2537856450, 987888408]}
Пример 2
Двоичные данные:
b'VPVV1\x17\x00\x03\x00\x00\x00|\x00\x90\x95\x03\x00\x00\x00\x82\x00\x00\x00k'
(b'rgauwmpXp/0\xe3\xf5\xe3\xe2\x06\xdb=\xf9.=\x80\xd7kx\xcd\xd9\xa6\x07\xc2Op'
b'}\x95\x00\xeb\x18\x97K\xc0t\xfcy\xd5\xb6%\xb2s\x80>\xf1\x13\x02O\x06%'
b'\xbb\x18p\x9b\x8a\xbdv\x8e\xd4\xe2\xf8\xf1\x7f\x9a\xd9jDfyr\xdf\xd2\xbe\xdd'
b'\x10T\x8co\xbb\x9cZ\xe6\xc1-\xae*\xc6U\x99\x02r\x8b\x05n%\x00B\x00_\x00,\x92'
b'\x1b\xd4v\x8c2\x88`\xc8rs')
Результат разбора:
'A1': {'B1': 'krgauw', 'B2': 17718058339312103533},
{'A2': [{'C1': {'D1': 3674661603,
'D2': 0.04271816089749336,
'D3': -10368,
'D4': 5747164487678261355,
'D5': 112,
'D6': [-27267, -5376, -26856, -16309],
'D7': 116},
'C2': 252},
'C1': {'D1': 632739193,
{'D2': 0.25088268518447876,
'D3': 5105,
'D4': 11200479465329544962,
'D5': 138,
'D6': [30397, -11122, -1822, 32753],
'D7': -102},
'C2': 217},
'C1': {'D1': 2036745322,
{'D2': -0.41186100244522095,
'D3': 4317,
'D4': 13971954523169590356,
'D5': 45,
'D6': [10926, 21958, 665, -29838],
'D7': 5},
'C2': 110}],
'A3': 38288,
'A4': [3558576684, 2285014134, 1936902240]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x56 0x4e 0x4b 0x44
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива структур B |
2 | Массив uint8, размер 5 |
3 | Адрес (uint16) структуры C |
4 | uint8 |
5 | Массив uint8, размер 4 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | int16 |
4 | Размер (uint16) и адрес (uint32) массива uint8 |
5 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int8 |
3 | int8 |
4 | Размер (uint16) и адрес (uint16) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NVNKD\x04\x00\x15\x00\x17\x04\xa6\xee\xaf9\x00\xc2\xa20\xf3\xd3L\xb1\x86'
(b'\x94\x0e<\xc3\xc6jT\\\xe0\xc2\x7fIl\xd6\xe10["3o\xbe\xa4\x8cK~\xec;V'
b'\xb9\x9f\xc8\xa8\xd6\xd9\x9b\xed5.\xbf\xea/\x02\x00-\x00\x00\x00t'
b'g\xb9\x05\x00/\x00')
Результат разбора:
'A1': [{'B1': 45388, 'B2': 1007588486},
{'B1': 50883, 'B2': 3764147306},
{'B1': 32706, 'B2': 3788926025},
{'B1': 23344, 'B2': 3194958626}],
{'A2': [23, 4, 166, 238, 175],
'A3': {'C1': 39897,
'C2': -0.6805103421211243,
'C3': 12266,
'C4': [164, 140],
'C5': {'D1': 116,
'D2': 103,
'D3': -71,
'D4': [32331, 15340, 47446, 51359, 54952]}},
'A4': 194,
'A5': [162, 48, 243, 211]}
Пример 2
Двоичные данные:
b'NVNKD\x08\x00\x15\x00j\xd9\x17"\xb6M\x00J\x08\xb6\x0e\xa3\xdb\x8er'
(b'\xb4\x1b\xbc\xed\xc1\xf2\x04\xe0eh\x91\x8e\xea\xe6\x8f\xa7H"\x9a\x8e'
b'\r\xd4\x95U5\x93\\T\xc6\x95\xbaS\xd8\xe7\x80*\xf8\xf7}"Y\x98.\xa9e\xae\xedp'
b'\xae\xcfs\xf57/ \x12\xfcG?~H\x02\x00E\x00\x00\x00\xef0\x8b\x03\x00G\x00')
Результат разбора:
'A1': [{'B1': 36571, 'B2': 3155932274},
{'B1': 49645, 'B2': 1709180146},
{'B1': 37224, 'B2': 2414275214},
{'B1': 18599, 'B2': 227449378},
{'B1': 38356, 'B2': 1553151317},
{'B1': 50772, 'B2': 3629365909},
{'B1': 32999, 'B2': 2113402922},
{'B1': 22818, 'B2': 1705586328}],
{'A2': [106, 217, 23, 34, 182],
'A3': {'C1': 8239,
'C2': 0.781190037727356,
'C3': 18558,
'C4': [174, 237],
'C5': {'D1': -17, 'D2': 48, 'D3': -117, 'D4': [44656, 29647, 14325]}},
'A4': 74,
'A5': [8, 182, 14, 163]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xfd 0x4d 0x44 0x59 0x49
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | uint16 |
4 | Адрес (uint32) структуры B |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 5 |
2 | int8 |
3 | float |
4 | float |
5 | Адрес (uint32) структуры D |
6 | Размер (uint16) и адрес (uint16) массива uint16 |
7 | float |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | float |
Структура D:
Поле | Описание |
---|---|
1 | Массив int64, размер 3 |
2 | int16 |
3 | double |
4 | float |
5 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xfdMDYI\'\xa6"?\x02\x00\x15\x00\x00\x00L\x96\x9a\x00\x00\x00voe\nA8\xc0'
(b'\xfc\xa0l\x92\x9b\xbc,\xa8Ny\xbecn\x96.\x98}\xcd\x94\xc2?\xc7\t\xe8'
b'\xdas=\xdc\xae\x8b\x16C\xd8\xee\xdd~\xc3\xe8\xe6\x04\x9d\x13\xbfR'
b'\x7f\xc4%\x9a_\xd74gP*\xda\xc9\xf6o\xbf\xa4?&X\xb8b\xb4\x8a\xbd\x1b"\xb2S'
b'\xaa:?,\x06\xb5\xb5A\x87vNk\xe1\x1a\xe0p.\x0b\xde\x06E\x97B\\p\xa91\xd4'
b'\xf7@%\xb4,3\xc9\x96\xbf\xb1\x94\x8d>\x86\x89f\xcb\x83\x10\x88\xeb\x15\x1e]'
b"\xfcO\x17\x00\x00\x00'\x00\x00\x007\x00\x00\x00G\x00\x00\x00W\x00"
b'\x00\x00\x81O\xea.?\xa9\xc8\xbf>g\x00\x00\x00\x06\x00\x8e\x00\x93F\x8f\xbe')
Результат разбора:
'A1': 0.6353477835655212,
{'A2': 'vo',
'A3': 38476,
'A4': {'B1': [{'C1': 7827534054877629029,
'C2': 750558098,
'C3': -0.24346411228179932},
'C1': -7724379693300421021,
{'C2': 164052930,
'C3': 0.059534937143325806},
'C1': -2454786964217680164,
{'C2': -420953218,
'C3': -0.5766146183013916},
'C1': 3807617125628280658,
{'C2': -634761113,
'C3': -0.9373593926429749},
'C1': -8452022056775172188,
{'C2': -1306387523,
'C3': 0.7291614413261414}],
'B2': -127,
'B3': 0.6832627654075623,
'B4': 0.3745777904987335,
'B5': {'D1': [5653855098501400108,
-2446810910214659733,
3578514920479081734],
'D2': -2092,
'D3': -0.022251891711708938,
'D4': 0.2765250504016876,
'D5': 134},
'B6': [26249, 33739, 34832, 5611, 23838, 20476],
'B7': -0.2798353135585785}}
Пример 2
Двоичные данные:
b"\xfdMDYI1\xcd'\xbf\x02\x00\x15\x00\x00\x00\xe8*\x9e\x00\x00\x00jyF"
(b'}\x14\xd6\xf72P)t\xady\xc5\xb5\xbe\x92\xbe[\x17|x\xfb\x82\xdd0\x85'
b'7\xac\xcc\x91\xeaG?\x8d\xd4\xd5\xf73\xdbO\xc7\xe9\x8fY\x0f\x9f\xd66?\x8f'
b'\x8b\x9d\x02z\x8e\x1c2\xe0\xde\xdcH\xfa]\xa8\xbe\x7f>\x08c#\xac(\xfb\xc9'
b'4\xe5\xc9s\x97\x04?\xae\x87a\xb6\xa1\xcb\xba\x15\xa6h\xe6\xa7\x9e\x7f\x0f$6'
b'\x1c\xcd\x0en\x03\xaf,4\xeb \x01\xfbf\xaed\xcd\xbf*\xf1\xa2\xbe4\x8e\xe8'
b"ou\x85,\rY 1\xff2\xd6\x05I\xa5\x17\x00\x00\x00'\x00\x00\x007\x00"
b'\x00\x00G\x00\x00\x00W\x00\x00\x00\x82\xb1\x91\x16\xbf\x91\xa7\x8c\xbeg'
b'\x00\x00\x00\x08\x00\x8e\x00\xcb\x9aY?')
Результат разбора:
'A1': -0.6554747223854065,
{'A2': 'jy',
'A3': 10984,
'A4': {'B1': [{'C1': 2976935393721875782,
'C2': -981881484,
'C3': -0.2866112291812897},
'C1': 3521114500243396443,
{'C2': -861128827,
'C3': 0.7809229493141174},
'C1': -4084805320753949555,
{'C2': 257527785,
'C3': 0.7142123579978943},
'C1': 3610917655925328783,
{'C2': 1222434528,
'C3': -0.3288419842720032},
'C1': -348839703135895937,
{'C2': -907725623,
'C3': 0.5179359316825867}],
'B2': -126,
'B3': -0.5881605744361877,
'B4': -0.27471593022346497,
'B5': {'D1': [1565787715874686894,
2598435829414520998,
3219796029822802998],
'D2': -5324,
'D3': -0.22963504818290748,
'D4': -0.31824618577957153,
'D5': 52},
'B6': [59534, 30063, 11397, 22797, 12576, 13055, 1494, 42313],
'B7': 0.8500182032585144}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x56 0x4b 0x49 0xc0
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Адрес (uint16) структуры C |
3 | int8 |
4 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур D |
5 | Структура E |
6 | Размер (uint16) и адрес (uint16) массива uint64 |
7 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | uint32 |
4 | int16 |
5 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | Массив char, размер 7 |
2 | uint8 |
3 | double |
4 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | Массив double, размер 3 |
3 | uint8 |
4 | uint16 |
5 | int64 |
6 | int16 |
7 | int64 |
8 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LVKI\xc0L\x00b\x00\xdb\x02\x00\x89\x00h\xf5\x89FT/\xdc\xbf\xec\xaf'
(b'\x1d6\xc7\x9c\xef\xbf\x8aZ\x18a\x16\x88\xe8\xbf>\xf0\x9d\x14\xeeL\xe2?>\x8f'
b'\xeb\x04\xa9\xa7@\xf3\x91\x84h\xaa6Ak\xaf\x89\x14\x07s\xa4\xee'
b'\x04\x00\x91\x00\x9e{\xe9\xaa)\x17\x89>\xe2\x1d\x81!\x9d\x11\x14|P \x9e\xfc'
b'a\xd3<8\xa8\xf48(\x89\xbd\xe0dqkjoipH\xc4~\x8e\xbe\xcd\r\xde\xbf\x9afbtq'
b'uau\xd4\xe8z\xcew\x13\xbc\xdd?bg\x00\x00\x00x\x00\x00\x00o@\x15S\xd7\x14j'
b'\xcf\x0b\xecvm\x07:\x89\xa4r\xc6\xdc\x0b\xfa\x07-\xe4\xdc\x9a\x99'
b'\xca\x84^\x12q')
Результат разбора:
'A1': {'B1': 0.26775482296943665,
{'B2': 562109922,
'B3': 2081690013,
'B4': 8272,
'B5': -817341498472137570},
'A2': {'C1': -0.06697124242782593, 'C2': -32},
'A3': -37,
'A4': [{'D1': 'dqkjoip', 'D2': 72, 'D3': -0.46959251030964944, 'D4': 154},
'D1': 'fbtquau', 'D2': 212, 'D3': 0.46460425090655955, 'D4': 98}],
{'A5': {'E1': -0.4403887451988653,
'E2': [-0.9878879601433233, -0.7666122337712562, 0.5718908693957088],
'E3': 62,
'E4': 60303,
'E5': 7531304950818121988,
'E6': 13994,
'E7': -6596921244376929471,
'E8': 238},
'A6': [14945781228426838127,
11856071297605233675,
16441806585121785458,
8147678600294406876],
'A7': -1427539042}
Пример 2
Двоичные данные:
b'LVKI\xc0L\x00b\x00+\x02\x00\x89\x00\xda\xf5_\x95a1\xe4\xbf \xba\xc4\x82i\x99'
(b'\xa5\xbf\x98\xde\xe6\x96h~\xda\xbf\x80(\xd9\xc1f_\xa5\xbf\xd8rS\x0b\xaap'
b'\xfdvT\xa1\xad\x8da\xcd\xe8zi\xa5m\xe1\xbd\xea\x02\x00\x91\x00\xbe]\xb3\xbb'
b'~%e\xbf\xc0\xff\n\x1c\x9c3nM\x96m\x1e\x93\x9cS\xb4\x8a\x06\xbb\xf9\xb8'
b'\x90>\x14zpjmtsyf>\xa2\x88\x07A\x07\xe4?4cmifaud\x9f2Gv;\x06%\xe1?'
b'\x11g\x00\x00\x00x\x00\x00\x00r\xc0\x83`\x9e\xad\x1e8\xb2,\xf3\xfbdc\xc1'
b'\x9d')
Результат разбора:
'A1': {'B1': -0.8951033353805542,
{'B2': 470482880,
'B3': 1299067804,
'B4': 28054,
'B5': -4970132631655247074},
'A2': {'C1': 0.28266122937202454, 'C2': 20},
'A3': 43,
'A4': [{'D1': 'zpjmtsy', 'D2': 102, 'D3': 0.6258855006354407, 'D4': 52},
'D1': 'cmifaud', 'D2': 159, 'D3': 0.5357695733420995, 'D4': 17}],
{'A5': {'E1': -0.6310279767491764,
'E2': [-0.0421860668305849,
-0.41396536575801113,
-0.041743479884261525],
'E3': 216,
'E4': 21362,
'E5': -5935369963862709749,
'E6': 24973,
'E7': -4764406373574580019,
'E8': 234},
'A6': [4043860411160969330, 11367476219834739890],
'A7': -1145872962}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x48 0x47 0x58
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | float |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | Адрес (uint16) структуры C |
3 | Массив структур D, размер 3 |
4 | Размер (uint16) и адрес (uint16) массива uint16 |
5 | uint32 |
6 | float |
7 | uint8 |
8 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
3 | int8 |
4 | Размер (uint16) и адрес (uint32) массива char |
5 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив uint8, размер 5 |
3 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XHGX2\x00\xfb\x1e\xbd>iypz\xcd\x8c)\x9b\x8e\xeb#-\x1e\xc8\xfe?\x03\x00'
(b'\n\x00\x00\x00\xd6ctt\x18\x83\xa0\x89\xe1\xc9\x93u\xd3[|\xe2\xba\xca\xfe\xb9'
b'\xb3\x1a \xad\xde\x84\r\x00k\xdb\xfe\x94\xf0\x8d\xc7h\x13K\xaf_.\xe9\xbf\xc6'
b'\x05\x8eVY\x08\xbez\n\xc8T\x1f\x88\xed\xbf|\xd5\x1edv\xb6\x84\x00{\x1d'
b'8\x95\xa5\x90\xbf\x08\x00"\x00L\x17M\xc2\x88r\t\xbf\'\x03')
Результат разбора:
'A1': {'B1': -8872463862474753538,
{'B2': {'C1': 697093498,
'C2': 18358957060200828571,
'C3': 63,
'C4': 'iyp',
'C5': 25558},
'B3': [{'D1': -9365,
'D2': [254, 148, 240, 141, 199],
'D3': -0.7869108604141788},
'D1': 1478,
{'D2': [142, 86, 89, 8, 190],
'D3': -0.9228665023695861},
'D1': -10884,
{'D2': [30, 100, 118, 182, 132],
'D3': -0.016256648588178102}],
'B4': [29812, 33560, 35232, 51681, 30099, 23507, 57980, 51898],
'B5': 3259832140,
'B6': -0.5369038581848145,
'B7': 39,
'B8': 3},
'A2': 0.3693769872188568}
Пример 2
Двоичные данные:
b'XHGX(\x00\xfc\x90u>xwhras\x82\\bRb9\x15\x06j,L\x90\x05\x00\n\x00'
(b'\x00\x00e\xa8,Z\x7f\xa5P\xbeTZ\x9fk\xd4\xe8\x0f\x00\xce:\xaf\x02\xe0#G@<\x82'
b'\xcca@\xab\xbf\x19\x83\x1b\xaa\xaa\\\xd0\xe2?\xea\x9c\xd8X\xed? l\xf24'
b'\x8aG\x85\xe8\x1a\xf5[\xa9\xd8\xc7\xbf\x02\x00$\x00\xcci\xccb\xf9\xafp?\x1b'
b'p')
Результат разбора:
'A1': {'B1': -1669591229688136112,
{'B2': {'C1': 1650229875,
'C2': 5488878620216222290,
'C3': -112,
'C4': 'xwhra',
'C5': 43109},
'B3': [{'D1': 15054,
'D2': [175, 2, 224, 35, 71],
'D3': -0.05322557088322144},
'D1': -31975,
{'D2': [27, 170, 170, 92, 208],
'D3': 0.9170954766032049},
'D1': 27680,
{'D2': [242, 52, 138, 71, 133],
'D3': -0.1862994860659548}],
'B4': [23084, 42367],
'B5': 1657563596,
'B6': 0.9401851296424866,
'B7': 27,
'B8': 112},
'A2': 0.23981088399887085}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x59 0x41 0x55
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int16 |
3 | float |
4 | double |
5 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | Массив адресов (uint32) структур D, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива int16 |
2 | Массив int64, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'YAU\x07\x00"\x00\x08N\xeei1\x00\x00\x00I\x00\x00\x00\xe5l\xbb\x8f+?H\x17S'
(b'\x11\xdd\xda\xcb?\x82mulidybD\x18\xc8\xc3n\xbf\xeeB\x04\x00)\x00\xdf\xe4\xad'
b'\xf1\x9c\x14\xf3\xb1[\x93\x98\xe4\x06\x18\xdai\xbc\xf9\xcd\xf4\x02\x00E'
b'\x00\xf1\xb3\x06\x07\xb3,e\xa8\xf3u\xfdt\xb2\xda\xa60')
Результат разбора:
'A1': {'B1': {'C1': 'mulidyb', 'C2': 1777225224},
{'B2': [{'D1': [6212, -15416, -16530, 17134],
'D2': [-5624128845353458465, 7627435336789431131]},
'D1': [-1604, -2867],
{'D2': [-6312590155261234191, 3505729819956311539]}]},
'A2': 27877,
'A3': 0.6701619029045105,
'A4': 0.21761668535162415,
'A5': -126}
Пример 2
Двоичные данные:
b'YAU\x02\x00"\x00p\x19\x8fA,\x00\x00\x00F\x00\x00\x00\x97,\xfctg'
(b'\xbf\xa0\xc2\xf2\xbe\xe5\x1f\xad\xbf\xbced\xcc\xa0\xb6\xc6\xea:\xbf\x82'
b'\x04\x00$\x00M\x91\xe1\xf9\xe0\x13\t\x7fU\xce(\x82T\x9e\xd4\x027\xe9\xf8\x08'
b'\xe0W\x03\x00@\x000I\xdb\x037\x07\x9e[n\x84\x87s4\xcf\x1f&')
Результат разбора:
'A1': {'B1': {'C1': 'ed', 'C2': 1099897200},
{'B2': [{'D1': [-24372, -14666, 15082, -32065],
'D2': [9153869574593155405, 203961968936668757]},
'D1': [-5833, 2296, 22496],
{'D2': [6601722036641024304, 2747142121902802030]}]},
'A2': 11415,
'A3': -0.9041287899017334,
'A4': -0.05688398319160126,
'A5': -68}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x4f 0x59 0xb1
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив структур B, размер 4 |
3 | Размер (uint16) и адрес (uint32) массива структур C |
4 | Массив uint32, размер 5 |
5 | uint16 |
6 | int8 |
7 | Структура D |
8 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int32 |
3 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int16 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | int16 |
3 | uint64 |
4 | uint16 |
5 | Массив uint16, размер 5 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BOY\xb1Ac\xc9\x11\x8c-\x9c3a\x00\x169\xcb\xbf\xbb\xbedU-\x98X\xa1\x8aP'
(b'\x02;6TF\xe7\x8db\xd4\x00\xb9\x90\r\x03A\xd1\xd4\xba\x9d\x18\xe9\x15\x1d\x82'
b'\xfe\x9f\x0c\xa1Q2\x9fi\xef\xf6\x04\x00\x93\x00\x00\x00\xb9\xec\xed\xd9'
b'K\xf7;\xbf\x8cn>&;\xfd\xbbz\xc8a\x88;z\xd1s\xf5\xcb]\xc3\xe4\x9bA;\x92'
b'%6\xedo\x81\xd0 d\xa7\x9e\x07\xd9\xb6\xe0\x1c\x1f\x98\xaaDdXw[,\xde\x19\xb6$'
b'(ziW\xfew\xacPh\xd0\x1e?\xe1k\n\xdb.\x87\x9a\x03\x00}\x00\x00\x00\x11\x07K'
b'\xbf\x03\x00\x83\x00\x00\x00d(\xd1\xbe\x03\x00\x89\x00\x00\x00x\xd0Y'
b'?\x02\x00\x8f\x00\x00\x00\x821{\xbf')
Результат разбора:
'A1': 25409,
{'A2': [{'B1': 4553, 'B2': 865873292, 'B3': -4702954506301341599},
'B1': 21860, 'B2': -1588029395, 'B3': -1781644010683477878},
{'B1': 25229, 'B2': -1866923820, 'B3': 1773779251460375309},
{'B1': 5609, 'B2': -1610710499, 'B3': -653187288480505588}],
{'A3': [{'C1': [-18919, 10276, 27002], 'C2': -0.7930765748023987},
'C1': [-425, -21385, 26704], 'C2': -0.40851128101348877},
{'C1': [7888, -7873, 2667], 'C2': 0.850837230682373},
{'C1': [11995, -25977], 'C2': -0.9812241792678833}],
{'A4': [3656248505, 3208378187, 641625740, 2059140411, 998793672],
'A5': 53626,
'A6': 115,
'A7': {'D1': 4269865328556493813,
'D2': 9618,
'D3': 12061801781901913398,
'D4': 1950,
'D5': [46809, 7392, 38943, 17578, 22628]},
'A8': 3727448951}
Пример 2
Двоичные данные:
b'BOY\xb1\xa5\xc7\xea\x82Q3\xa8\xbb\x9eNY(M&\x97\xae\xb8$Q\xb6\x8a\x05\x94\x85'
(b'\xe8>\xffdb\xb9\x17\xf1\xff>\xdf\xbf\x13\xf7\x8c\xe2l\xc0\x08\xc6\xa8)]\xc0'
b'\xeeJ\xd0^\x9e\xa1#\x05\x8a^\x03\x00\x89\x00\x00\x00\x99\xcc\xa2M'
b'\x9c\xde\xb0c\xa4\x9b|9\x94\xbb\xb6\xdad\x82\x0f\x01GJ\x90\xbb\x8e\xf3`4'
b'\x9b\\\xea\xb2\xfb\xbd\xd8\x85\xbf\x9bn(\x8e\t\xab\xe0[w\xcf&i\xe0N\xd0'
b'Ia\x97\x0b\xdc\x86\xefo\x00\xd2$ \xd6\xc8c\xa2K\x02\x00}\x00\x00\x00\x84'
b'\x10\x15?\x02\x00\x81\x00\x00\x00\x8c\x99\xb4>\x02\x00\x85\x00\x00\x00\xb1'
b'\xb7\xc9\xbd')
Результат разбора:
'A1': -14427,
{'A2': [{'B1': -32022, 'B2': -1146604719, 'B3': -5866177876795502946},
'B1': 9400, 'B2': 92976721, 'B3': -5088393581540375148},
{'B1': -3817, 'B2': -1075888385, 'B3': -4176877080496244973},
{'B1': 10664, 'B2': 1257160797, 'B3': 6812263036944801488}],
{'A3': [{'C1': [-4218, 111], 'C2': 0.5822832584381104},
'C1': [9426, -10720], 'C2': 0.3527339696884155},
{'C1': [25544, 19362], 'C2': -0.09849489480257034}],
{'A4': [1302514841, 1672535708, 964467620, 3669408660, 17793636],
'A5': 19015,
'A6': -112,
'A7': {'D1': 16887543351999696571,
'D2': -1102,
'D3': 10243558967666399421,
'D4': 43785,
'D5': [23520, 53111, 26918, 20192, 18896]},
'A8': 3691747169}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x5a 0x58 0x4b 0x57
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint64 |
3 | Адрес (uint16) структуры C |
4 | Размер (uint32) и адрес (uint32) массива структур E |
5 | int8 |
6 | uint8 |
7 | float |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | uint8 |
3 | Размер (uint16) и адрес (uint32) массива char |
4 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Структура D |
3 | Массив char, размер 6 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива int32 |
2 | Размер (uint32) и адрес (uint16) массива uint8 |
3 | float |
4 | uint32 |
5 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'SZXKW\x9c\x93OO\xc4\x02\xc5\xc0o\x04\x004\x00\x00\x004\xce%m<\xeeK\x0f'
(b'cS\x9b\xe38M\xf9\xd78\x00\x02\x00\x00\x00x\x00\x00\x00\x895I\xb5\r\xbfnigi'
b'p\x1f\xa6\xa2\xf61\xe3?V\x1cg\x8dE.\x87pkkfzs#\x87/t*\xe9=#\x81F\xfb'
b'\xc1\x05\xee\xd4qp\xec\x13^\x1eB!5\x90\xaap{~\xcdt\xc3\xb9\xc22'
b'\x9a\xba\x97\x9av\x95\xad\xfc\x04\x00M\x00\x05\x00\x00\x00]\x00\x90\xc8'
b"\x1c=\xd5\xc46}\xa5\xc8\x13K\xec\xbe'\xfd\x04\x00b\x00\x06\x00\x00\x00r\x00"
b'\x07\xb9\x1e=\xc1_\x17\xd4\x1bzX\x81\xd5\xef\xb6<')
Результат разбора:
'A1': {'B1': -4556232405847927908,
{'B2': 111,
'B3': 'nigi',
'B4': 1102236477118860852},
'A2': 15562554894087574371,
'A3': {'C1': 0.5998490502106346,
'C2': {'D1': 7254, 'D2': 103, 'D3': 2267956621},
'C3': 'pkkfzs'},
'A4': [{'E1': [1949271843, 591259946, -1040497023, 1909779973],
'E2': [112, 236, 19, 94, 30],
'E3': 0.03827720880508423,
'E4': 2100741333,
'E5': -204985335940921179},
'E1': [-1875566270, 2122018986, -1178372915, -1164299582],
{'E2': [151, 154, 118, 149, 173, 252],
'E3': 0.038750674575567245,
'E4': 3558301633,
'E5': 4374947788314147355}],
'A5': -119,
'A6': 53,
'A7': -0.5535474419593811}
Пример 2
Двоичные данные:
b'SZXKW\x86\x88\x8b\x00U\xe5-\x08\xb0\x06\x004\x00\x00\x00\x18)+\xac\x7f\x8c+1'
(b'&\xcb\xd0\x0f\x87\xc7\xd4\xc4:\x00\x02\x00\x00\x00t\x00\x00\x00\t\x9b5:I\xbf'
b'vmvfnsL8:\xe1\x8e\x89\xda?\n^\xd1T\x9c@|fdguuo\xc6p\xb42\xec\xc13w\x94'
b'\rM{\x8e\xaa\x04\xf5f4f\x8d\xf0\x1a\xf6\xafg,Q=\x01\x1fPJ&`\x1e\x97c'
b'\x03\x00O\x00\x03\x00\x00\x00[\x00y\x97K?\x89\xb33\x16\xb1SU\x9f\xb9\x13'
b'\xe5}\x04\x00^\x00\x06\x00\x00\x00n\x00\xa8V?\xbf\xc5\xc6\xaa\x82'
b'\x16\xb4\xb8\xf1\xb6<\xc9\x0e')
Результат разбора:
'A1': {'B1': 589379279499528326,
{'B2': 176,
'B3': 'vmvfns',
'B4': 3543080011834272024},
'A2': 14183180509396388646,
'A3': {'C1': 0.4146458816038645,
'C2': {'D1': 24074, 'D2': -47, 'D3': 2084609108},
'C3': 'fdguuo'},
'A4': [{'E1': [850686150, 1999880684, 2068647316],
'E2': [142, 170, 4],
'E3': 0.7952800393104553,
'E4': 372487049,
'E5': 9071678712370779057},
'E1': [1714710261, -166006643, 1361864623, 1344209213],
{'E2': [74, 38, 96, 30, 151, 99],
'E3': -0.7474160194396973,
'E4': 2192230085,
'E5': 1065449543286961174}],
'A5': 9,
'A6': 155,
'A7': -0.7860444188117981}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x51 0x54 0x56 0x81
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | float |
4 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C |
5 | uint16 |
6 | Адрес (uint16) структуры D |
7 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint8, размер 4 |
2 | uint32 |
3 | float |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint16, размер 5 |
2 | Массив uint8, размер 7 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'EQTV\x81\x00\x00\x00<\xf5\xdaL\xc4zI\xee\xff2w\xbex\xb6\x93\x9b\xd9n\xeb\x89'
(b'\xb0\xc6\x06\xbf;;\xa4\x00\x00\x00\x0b\x00\x00\x00\x17\xe1\x03\xe7\x99\xf1'
b'N\x08\x19)\xe3M?\xd1\x89\xd9\x94}?\xd8\xcb\xf91\xc73t\xe0\xd3`\xfb\xbfQ_\x07'
b'\x00\x02\x00#\xa1\x1b\x00+\x92\xc2\x0eW')
Результат разбора:
'A1': {'B1': 0.3874495493044414,
{'B2': -523017989,
'B3': -0.8178562521934509,
'B4': [{'C1': [76, 196, 122, 73],
'C2': 4009702007,
'C3': -0.24288396537303925},
'C1': [155, 217, 110, 235],
{'C2': 2310063622,
'C3': -0.7313787937164307}],
'B5': 41243,
'B6': {'D1': [57603, 59289, 61774, 2073, 10723],
'D2': [77, 63, 209, 137, 217, 148, 125]},
'B7': 2462191191},
'A2': 62938}
Пример 2
Двоичные данные:
b"EQTV\x81\x00\x00\x00<\x8eV\xa4\x07MdB'\xe6\x9f\xbe5\x98n\x1a\xda\xd5r\x9a"
(b'/\xaa\xaa>\xc26J\x00\x00\x00\x0b\x00\x00\x00\x17=\xf2\x07dvd\xe8\xcd\xdc'
b'n\x19\x87\xd7C\x032\xd3?\xe7 ]\xe5\x9f\x0e\x0c\xc4A\x8dl?\x0f\xcb\x84'
b'\x00\x02\x00#\xb5\x9e\x00+\x18\x83m!')
Результат разбора:
'A1': {'B1': 0.7227010235587286,
{'B2': -1002336916,
'B3': 0.5616991519927979,
'B4': [{'C1': [164, 7, 77, 100],
'C2': 1109911199,
'C3': -0.17733928561210632},
'C1': [26, 218, 213, 114],
{'C2': 2586815146,
'C3': 0.3793204426765442}],
'B5': 46494,
'B6': {'D1': [15858, 1892, 30308, 59597, 56430],
'D2': [25, 135, 215, 67, 3, 50, 211]},
'B7': 411266337},
'A2': 36438}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x4c 0x59 0x51
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
3 | Структура B |
4 | Размер (uint32) и адрес (uint32) массива char |
5 | uint32 |
6 | Массив адресов (uint32) структур D, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int16 |
3 | double |
4 | Массив char, размер 4 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив uint32, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XLYQ\xd8\x9e\xf0bBW\xcf\xbf\xe9\xe6aR\xabCA\x97\xb2s|p\x89\xc6\xe7W'
(b'\xff\xc4?jzcb\x04\x00\x00\x00;\x00\x00\x00\xf8GK\xbb?\x00\x00\x00O'
b'\x00\x00\x00_\x00\x00\x00wlew#\xf7\x00\x18\xccQ\x7f\x06\xe0\xa6\x03\x8fL'
b'<p\xe5\x12\x07\xa09\x1c*j\x9a}\x89Z\x86\xacE\xefk\x92\xa0I0a\xe2)\xd6\xd1'
b'#\xd2\xf5\xca\x1bI\xdd')
Результат разбора:
'A1': -0.24485044318247762,
{'A2': 1382147817,
'A3': {'B1': 2537636779,
'B2': {'C1': 178,
'C2': 31859,
'C3': 0.16404246155895974,
'C4': 'jzcb'}},
'A4': 'wlew',
'A5': 3142273016,
'A6': [{'D1': 468182823287715619, 'D2': [2399381216, 3849337932]},
'D1': 11126752130086471442, 'D2': [2254080381, 1810843052]},
{'D1': 15432114505211551890, 'D2': [4124189649, 3712555978]}]} {
Пример 2
Двоичные данные:
b'XLYQ\x80hxW\x87\xcf\xd9?\x80"\x01\xc7R\xaa\xcf\xfa\x9f\xb8\xd8\x04\x945@\xda'
(b'&\xe0\xbfmwaa\x02\x00\x00\x00;\x00\x00\x00t\xd9\x01!=\x00\x00\x00M'
b'\x00\x00\x00]\x00\x00\x00byy\x11\xc3\xa4\x94\xb9.N\xf7\x0c|\xee\x15My'
b'7\x8cj\x1e\xc9\x8a\xd0\t\x01\xcat\x9bGW\xdbQE\x82\xbc|J\xc1\xfe\xa5'
b"d\x80\xf1\xc2\t'5N\xc0")
Результат разбора:
'A1': 0.4032915453150352,
{'A2': 3338740352,
'A3': {'B1': 4207913554,
'B2': {'C1': 159,
'C2': -10056,
'C3': -0.5047427419746104,
'C4': 'mwaa'}},
'A4': 'by',
'A5': 553769332,
'A6': [{'D1': 5633644231957614969, 'D2': [4001107191, 930696469]},
'D1': 74820163326601868, 'D2': [1201370314, 1162992471]},
{'D1': 7252482881081883778, 'D2': [163770752, 3226350887]}]} {
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x45 0x4d 0x27
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int32 |
3 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | Массив структур C, размер 6 |
3 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int8, размер 5 |
2 | double |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | uint64 |
3 | Размер (uint32) и адрес (uint32) массива uint64 |
4 | int8 |
5 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"UEM'\x00\x02\x00\x00\x00{L\xefx\x86\xda\xbf\xe1<\x1e\xb0\xb7aL\xbf"
(b'\xe3\x83\xbeT?\xc5\xe3\x8e\x92\x84\xfe`\x92\xbb\x9e\xea4?\xe67>\xdai\x7f'
b'\xfc&\x8cy*\x1c?\xedG\x81\xdfD\xee\xfc\xe3\x13\x8f\xbb\xaf\xbf\xe3 \xb1\x99'
b'\xab0\x0e\xae4\x87\x12~?\xc8\xfc2D=\x84p\x9b+>\xe4\x8c\xdc\x1e\x1d'
b'\xbf\xd5\xa14%\xd3\xcc@3\x8f\x15x\xbb\x16\xa1y\x00\x00\x00\x02\x00\x00\x00}'
b'<K\xaagf\x92)^\xc0\xd8\xa1\x9c\x91\t\x8c\xb7uxIu\xea')
Результат разбора:
'A1': {'B1': 'gf',
{'B2': [{'C1': [76, -17, 120, -122, -38], 'C2': -0.538588853024558},
'C1': [-65, -29, -125, -66, 84], 'C2': 0.1710069861819532},
{'C1': [-110, -69, -98, -22, 52], 'C2': 0.6942438379155642},
{'C1': [38, -116, 121, 42, 28], 'C2': 0.9149789200523339},
{'C1': [-29, 19, -113, -69, -81], 'C2': -0.5977409364072643},
{'C1': [-82, 52, -121, 18, 126], 'C2': 0.19519642192884445}],
{'B3': 2603302628},
'A2': -1931731427,
'A3': {'D1': -0.33796409315181464,
'D2': 3715211825883029881,
'D3': [10532053385943817361, 688126558237980138],
'D4': 60,
'D5': 19370}}
Пример 2
Двоичные данные:
b"UEM'\x00\x02\x00\x00\x00{n\xd3U2k\xbf\xcc\xb9\x97z\x96-x\xe7:W\xfdy"
(b'?\xe6\xff\xfe\x90K\x1c\x02>e!1(\xbf\xdd\xc49\xa1\xd5?\x04o\xd6\x129\x89?\xd7'
b'\xe1T\xa7\xa6{\x1c\xb1\xd7\xc3%\xd3?\xe7\xe1m\xe9\xda\x0cdX\xda>~t'
b'?\xd1\x08\xa8\xa7\x10@4\x87\xfc\xf1-\r\xf3S\xd5\xbf\xe4\x1d\xea\xca\xe5\xbd>'
b'WM\xfc\xee\xe5\xc4O\x0f\x00\x00\x00\x02\x00\x00\x00}4\xbb\x14fishN\xbej\xd4b'
b'\x93Fm\x1a\x7f\x19\r\xe4\r')
Результат разбора:
'A1': {'B1': 'fi',
{'B2': [{'C1': [110, -45, 85, 50, 107], 'C2': -0.2244138096396957},
'C1': [-25, 58, 87, -3, 121], 'C2': 0.7187493150930779},
{'C1': [62, 101, 33, 49, 40], 'C2': -0.4651016312027283},
{'C1': [111, -42, 18, 57, -119], 'C2': 0.37312809345341846},
{'C1': [-79, -41, -61, 37, -45], 'C2': 0.7462682311455748},
{'C1': [88, -38, 62, 126, 116], 'C2': 0.26615349116127907}],
{'B3': 2281500973},
'A2': 234050517,
'A3': {'D1': -0.6286519968834126,
'D2': 6290962357493714703,
'D3': [8315983291682677395, 5074741488299926541],
'D4': 52,
'D5': -17644}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x55 0x55
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | int32 |
3 | float |
4 | uint64 |
5 | int16 |
6 | float |
7 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | int8 |
4 | Структура C |
5 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур D, размер 4 |
2 | Размер (uint32) и адрес (uint32) массива uint16 |
3 | Адрес (uint32) структуры E |
4 | int16 |
5 | uint64 |
6 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива float |
2 | int8 |
3 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | Массив uint64, размер 2 |
2 | int32 |
3 | int64 |
4 | uint16 |
5 | int32 |
6 | Размер (uint32) и адрес (uint16) массива uint8 |
7 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MUU\x00\x00\x00\xb0\xa9Fe3?\x0c&\x9d\x96\x00\xc1\x1e\xa7\xe6\xcc\xb1\x13'
(b'\xbb\xbc;\x8d\xf45\xf7#\xb0>\xa9\xfe\xef?h\x92-\x00\x00\x00\x02\x00\x00\x00'
b'!\x17\xfa\xe0\xd6+\xbf:\x0eK\xbfzt@\x00\x00\x00\x02\x00\x00\x006\xc1\x93'
b'\x11\xcb\xf3\xbf\x07v@\xbf!W5\x00\x00\x00\x02\x00\x00\x00K\x14\xe5\x9a~\xf4'
b'?s\xd5\xcb=\x8d\xa1\xbd\x00\x00\x00\x02\x00\x00\x00`\xd9\xe5\xc7M.\xe2e\x1b'
b'\xea\xa8\xe3\x934\xa3\xa6\xb5\xa0\xb3E\x834m\xcdrq\xb3\xb8\x90J%7I'
b'e\xaa\xe8\x07]$d#N\x07<\xae<\x96Q\x0b\x99\xbfl#\x17%\x00\x00\x00\x03\x00\x81'
b'\x8e\xa5\xed\xd4\x86*\x8e\x00\x00\x00)\x00\x00\x00>\x00\x00\x00S\x00'
b'\x00\x00h\x00\x00\x00\x06\x00\x00\x00u\x00\x00\x00\x84i\x1b@p\xc3'
b'\xb1^\xc0\x9f5\xbf|\xc5\xc5A\xe8!\x0f\x94')
Результат разбора:
'A1': {'B1': 134,
{'B2': 42,
'B3': -114,
'B4': {'C1': [{'D1': [0.33202311396598816, 0.9084804654121399],
'D2': 23,
'D3': -85928405},
'D1': [-0.7267805933952332, -0.9783363342285156],
{'D2': -63,
'D3': -1827550221},
'D1': [-0.5291481018066406, -0.6302369236946106],
{'D2': 20,
'D3': -442859788},
'D1': [0.9524809718132019, 0.06915614753961563],
{'D2': -39,
'D3': -439923410}],
'C2': [57957, 7146, 43235, 37684, 41894, 46496],
'C3': {'E1': [3777901553851283600, 5342737321322801159],
'E2': 1562666019,
'E3': 5622529378833813771,
'E4': 39359,
'E5': 1814239013,
'E6': [179, 69, 131],
'E7': -1901728300},
'C4': 26907,
'C5': 4643426382385291061,
'C6': -65},
'B5': 8990809117973090196},
'A2': -1455004365,
'A3': 0.5474641919136047,
'A4': 10808851443099290801,
'A5': 5051,
'A6': -0.011447418481111526,
'A7': 905388976}
Пример 2
Двоичные данные:
b'MUU\x00\x00\x00\xac\x83\xbc,{<\x88b)\x18\xf9%\xd4G\xe3\x07\x06m\xed\xbc\xdc3'
(b'\x98\xd4#&\xe4\xbf5\xd9\x1e\xbfc^\xa5\x00\x00\x00\x02\x00\x00\x00!_\xce\x16'
b'\x1f_\xbe\x8d\x0fl>y\xbco\x00\x00\x00\x02\x00\x00\x006\xfd\x8eu\xe9\xb0\xbf'
b'\x14*!\xbfD\xaf>\x00\x00\x00\x02\x00\x00\x00K^\xe3\xd8\x9b\x8f=\xc1\x9cD'
b'\xbf}\xfar\x00\x00\x00\x02\x00\x00\x00`\x0e@\xcbV\x90\x98\xa4\xa0\xfcY?\xb2'
b'\xeb\x01\x9a\xcc\xc5\x95|\xc0\x8ft\x83\xef\x99\xb5\xe4\xff\xb68\xfeY'
b'\x82T\xd0\xbah4\xd8\xffVT\xeb\xa5\xd9\\E#\xed,\x00\x00\x00\x03\x00}'
b'b\xe2\xd6\xa30A\x18\x00\x00\x00)\x00\x00\x00>\x00\x00\x00S\x00\x00\x00h\x00'
b'\x00\x00\x04\x00\x00\x00u\x00\x00\x00\x80g#\x86d\x91\xe8\x81;\x83\xafqS\x93'
b"F\xf1LO'\xc8")
Результат разбора:
'A1': {'B1': 48,
{'B2': 65,
'B3': 24,
'B4': {'C1': [{'D1': [-0.7103441953659058, -0.8881629109382629],
'D2': 95,
'D3': -837410977},
'D1': [-0.2755082845687866, 0.24388287961483002],
{'D2': -3,
'D3': -1904875088},
'D1': [-0.5787678360939026, -0.7682989835739136],
{'D2': 94,
'D3': -472343665},
'D1': [0.09453633427619934, -0.9921027421951294],
{'D2': 14,
'D3': 1087067792}],
'C2': [39076, 41212, 22847, 45803],
'C3': {'E1': [14237422963484034031, 11076010645512584793],
'E2': -2108370758,
'E3': 7508865069910125477,
'E4': 55644,
'E5': 1159982380,
'E6': [1, 154, 204],
'E7': 1659033251},
'C4': 26403,
'C5': 9684025526540010415,
'C6': 113},
'B5': 6022235128905803720},
'A2': -2084819845,
'A3': 0.016648368909955025,
'A4': 1799511119780579078,
'A5': 28141,
'A6': -0.026880070567131042,
'A7': -735893788}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x54 0x50 0x5a
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | Адрес (uint32) структуры B |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 5 |
2 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур C |
3 | uint8 |
4 | Структура D |
5 | Структура E |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint64 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
3 | uint16 |
4 | Размер (uint32) и адрес (uint32) массива uint64 |
5 | double |
6 | double |
7 | double |
8 | Размер (uint32) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WTPZ"g\xfa\xe5\x04,\xe6?m\xa0\x9czg\x00\x00\x00\xacb\x80\x8a\r\x02\xa2\xb8'
(b'\x99-\x82Jo\x04\xdeM\x14\x00\x00\x00\x1c\x00\x00\x00=K\xa4QN\x9d\xbc\xb7'
b'F>\xad,\xf2iJt\xe7k\xffE\xb3AHz\xc4%\x9f\xc2\xa5\xeeq2\xdd\xc8\x92\x88'
b'\x1c\xbbD\xf9\xf3\x14\xa6\x83\x01\x1b!B\xd5\xdb(\xa1a=\xb8a\\\x05\x0fixpjz'
b'\x02\x00\x00\x00$\x00O\xfd.\xb9\xc8\xcb\xeb+\xc3\xfaw\x85=7\xc9\x15c\xac'
b'\xfb\xdd\x14\x07\x00\x00\x00,\x00\x00\x00\xe0\n7\x8e\xca7\xcd\xbf\x8e'
b'\xbc \x130T\xe2?\x1c]`\xec\xbf0\xd4\xbf\x03\x00\x00\x00d\x00\x00\x00')
Результат разбора:
'A1': 0.6928734294662926,
{'A2': 2057085037,
'A3': {'B1': 'ixpjz',
'B2': [{'C1': 2323669676, 'C2': 3097625101},
'C1': 1250045337, 'C2': 1306395759}],
{'B3': 79,
'B4': {'D1': -927387907, 'D2': 4433081327116086219},
'B5': {'E1': 1662372151,
'E2': -1108,
'E3': 5341,
'E4': [13239629964265147197,
8379626545528782406,
8811364909179694055,
3634948769966925252,
17961686945085180125,
4765119574052312307,
7041445506918702037],
'E5': -0.22826511329738874,
'E6': 0.5727768300620413,
'E7': -0.31547544559130514,
'E8': [92, 5, 15]}}}
Пример 2
Двоичные данные:
b'WTPZ\x00`\xdf\x9c\xb4\xbb1\xbfo\xa9C\xfcW\x00\x00\x00\xdb\x91\xfb\x1e'
(b'\xe8\x14\x97O\x16c#\x92$w\xe2\xbb\x14\x00\x00\x00\x1c\x00\x00\x00'
b'\xc6\x19\xd1\xc9\xb4\xbb\xf20\xcat\x03\xbb\x1e\xe5X\x91\x94u\xc1M\xdd\\P\x00'
b'\xa3n\x9f;\x19\xd8_\xd2?g=\xd0\x97}\xf8\x16\xab)Mapkeh\x02\x00\x00\x00'
b'$\x00P/I\xdb\xe9\xa5\xb8\xb0 7Q0\x08\xc2\xf4k3\x1f\xe6f\t\x05\x00\x00\x00,'
b'\x00\x00\x00\xb0\x02\xdb\xacEp\xc1?\x80}\xc9X\x14d\x9f?\x8c\xe4\x9b\xb49'
b'\xe2\xde\xbf\x03\x00\x00\x00T\x00\x00\x00')
Результат разбора:
'A1': -0.00027058753482611664,
{'A2': -62674577,
'A3': {'B1': 'apkeh',
'B2': [{'C1': 519803355, 'C2': 1335301352},
'C1': 2451792662, 'C2': 3152181028}],
{'B3': 80,
'B4': {'D1': -371504849, 'D2': 590060848399038629},
'B5': {'E1': 862713026,
'E2': -6625,
'E3': 2406,
'E4': [3527087843338951110,
10473372853599433930,
22620103698904468,
15159072473638465187,
1655210954045876031],
'E5': 0.1362387746830982,
'E6': 0.030655210417874112,
'E7': -0.4825577033767068,
'E8': [171, 41, 77]}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x58 0x4d 0x47 0xe
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив char, размер 4 |
3 | Размер (uint16) и адрес (uint32) массива структур B |
4 | Адрес (uint16) структуры D |
5 | int32 |
6 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | Адрес (uint16) структуры E |
3 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | uint64 |
2 | int64 |
3 | Массив int32, размер 7 |
4 | Массив int16, размер 2 |
5 | double |
6 | int16 |
7 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PXMG\x0eU\xd7Z\x8a\xfeW}\x82icjh\x02\x00/\x00\x00\x00v\x00&\x08\x92'
(b"'\xbbe\xcfZ\xd74\xe6\x9b\xa0\xa2J/\xf9l|k\x7f\xb5\x1f\x00\x1f\xac\r"
b"\xf3'\x00e\x87\xe7\x9e\xbd\x1du\x1b\xf5\xceN\x80\xe8?2\xb4\xc7S\xe4JF"
b'\xf0k\xd6\xf1\x15\xc3\x9eC\xe0\x8bPS\x0e\xe0\x9ek\x9c\xdau\xe2\x15mV\xe0'
b'\xa3\xc7\xc0D\xfc)\xa9^_J\x1chs\xe0\xbf\x15;\xd8\xccGI\xd0\x08\x1a'
b'\xde\x10;\x00f')
Результат разбора:
'A1': 9402768347773982549,
{'A2': 'icjh',
'A3': [{'B1': {'C1': 886528719, 'C2': 2728434662}, 'B2': -217207777},
'B1': {'C1': 1828269898, 'C2': 3045026684}, 'B2': -1628993691}],
{'A4': {'D1': 1215437574593136588,
'D2': {'E1': 9245554637161176509,
'E2': 5396530370683486184,
'E3': [-697569210,
-1631382031,
1351344195,
-1629483437,
1977261163,
1449989602,
-1060658208],
'E4': [-956, -22231],
'E5': -0.5140877296971487,
'E6': 15125,
'E7': 216},
'D3': 102},
'A5': 663881766,
'A6': 26043}
Пример 2
Двоичные данные:
b'PXMG\x0e<dBr\xe8\xf4!\xf1gqwu\x02\x00/\x00\x00\x00v\x00f\x14\xcd'
(b'\xa4\x1f\x01I\xb0\xc0\x97mE)FclC\xf4\xc1\x82%\x1c\x1f\x00n\n\xed'
b"\xd1'\x00\x0f,#P$\xd6\xfb\xd2r\xf3\x9cD\xe8<\xdduL\x0cA\xd4\xf3\xa8\x806f"
b'\xa6VFB7v+G\xcb\xe0\x04_\xa8\xe8\x9a9:;~\xc2\x83i\xff\x8au%\xf2\xd0'
b'\x9c~\xbey\xb0\xd3?_2\x88[\xffl\x7f\xd5Z\x12\xdc;\x00\xa1')
Результат разбора:
'A1': 17375438116558627900,
{'A2': 'gqwu',
'A3': [{'B1': {'C1': 2545987657, 'C2': 1177109869}, 'B2': -772994450},
'B1': {'C1': 4098059363, 'C2': 472220353}, 'B2': 1344482319}],
{'A4': {'D1': -2588906962772230309,
'D2': {'E1': 4944094165437503012,
'E2': -3152224741648155416,
'E3': [914401523,
1180083814,
729167682,
81840967,
-1696028577,
2117810745,
-9862206],
'E4': [30090, -3547],
'E5': 0.30764621355997424,
'E6': 12895,
'E7': 136},
'D3': 161},
'A5': -1530063770,
'A6': 287}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4a 0x57 0x4f 0x57 0x79
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Массив int16, размер 4 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур D |
3 | Структура E |
4 | int8 |
5 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | double |
Структура E:
Поле | Описание |
---|---|
1 | Массив int8, размер 2 |
2 | Массив int32, размер 5 |
3 | uint8 |
4 | double |
5 | uint16 |
6 | Размер (uint16) и адрес (uint16) массива float |
7 | uint8 |
8 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'JWOWy\x004\xa6\x11\x00\ns\xef\xf9\xe9{\xe9?G?\xeb\xd1b\x92$\x80\x9e\xc8'
(b'?\xdfYv\xe5G\x19\x04\x00\x00\x00\x12\x00\x00\x00\x1b?+\xee\xa5\xbbB\xd2$'
b'\x00\x0f\x00\x00\x00\x02\x00\x00\x00$\xac\x8b\xe6t\xfb`os\xaa@'
b"\xfb\xc5\xb6\xcc\xc9\xb2\x9f'\xed\xf6\xa5\x8b|\xbf\xd5\xfdl\x14\xe7m"
b'\xf0\xc1\xfb\x00\x02\x00,J0X+')
Результат разбора:
'A1': {'B1': {'C1': 31721, 'C2': 63},
{'B2': [{'D1': 71, 'D2': 0.8693096975657857},
'D1': -56, 'D2': 0.48983547583010556}],
{'B3': {'E1': [-84, -117],
'E2': [-428541088,
1869851200,
-70928692,
-911040729,
-302602869],
'E3': 124,
'E4': -0.34359266320617987,
'E5': 49659,
'E6': [0.6716101765632629, -0.0029727304354310036],
'E7': 74,
'E8': 48},
'B4': 88,
'B5': 43},
'A2': [-23023, 10, 29679, -1559]}
Пример 2
Двоичные данные:
b'JWOWy\x004\x17\xc2\xc9\x7f\x8c\xc7\xa7\x7f\xd3>\xa1>\xbf\xd63\xc1\x8f'
(b'\xe1$\x80\xc2?\xcdq\xf6\x89\xe6w\x00\x00\x00\x00\x12\x00\x00\x00\x1b'
b'>\xc3\xde\xf3?Q @\x00\x0f\x00\x00\x00\x02\x00\x00\x00$\xa5@aq\x1e.\xb1\x10Q-'
b'\xa5\x94Q.be\xb5f\xcb\x8d;\xe7\x96?\xc2,\xcb\xa4F\xe9\xb8\xfet\x00\x02\x00,.'
b'\xab\r\x9c')
Результат разбора:
'A1': {'B1': {'C1': -11458, 'C2': 161},
{'B2': [{'D1': 62, 'D2': -0.3469089417527087},
'D1': -62, 'D2': 0.23004037602816396}],
{'B3': {'E1': [-91, 64],
'E2': [1634803246,
-1324330707,
-1517006546,
1650832742,
-879936537],
'E3': 150,
'E4': 0.14199204942071986,
'E5': 65140,
'E6': [0.3825603425502777, 0.8168983459472656],
'E7': 46,
'E8': 171},
'B4': 13,
'B5': 156},
'A2': [6082, -13953, -29497, -22657]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x51 0x4f 0x4a
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint16 |
3 | Массив float, размер 4 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив адресов (uint32) структур C, размер 3 |
3 | Массив int32, размер 3 |
4 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint16) и адрес (uint32) массива int16 |
3 | uint64 |
4 | double |
5 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XQOJ\x00\x00\x00\x92\x92\xfb\xbc#\xce\xc5>\xf0\xca\x15?\x16\x88\xf0\xbe\xd8'
(b'\xcf`\x89\xda\x92\xb6\xddZ\xbf\xe0\xfb\x19\xed\xb0\xd8\x06\x00\x03\x00\x00'
b'\x00\x1a\x11N\x19\x8eL\x1c\x8c\xda\xbf\xe7\xae\xdcP\xc4\x93\xdc\xbb\xce'
b'\x95L\r9\x19\xa6"t?\xd4\x1fw=\xb5~\xa4\x00\x03\x00\x00\x00BH\xb4'
b'\x1a\xca\x0ff]\xbe\xbf\xe4\xe4\xf5y\x9e\xad~\x87\xa6\xe8\x1f8\x94'
b'\xb3\x87\x11a?\xd3s\x8c\xa4\x1f\xde`\x00\x03\x00\x00\x00jv\xc4G\xd4\xa9N'
b'\x8c[?\xeb\x1e\x98\xb2\xe2\x8a\x18\xa9\x7f\x06`\x03\x0c\x00\x00\x00 '
b'\x00\x00\x00H\x00\x00\x00p\x0f\x8fD\xdf\x06\x7f\xc2T6e\x8f\xe2\xee\xd0\xf0')
Результат разбора:
'A1': {'B1': 780,
{'B2': [{'C1': -0.5306520121000637,
'C2': [-30246, -27978, -8870],
'C3': 1246962245781195994,
'C4': -0.7400952889917067,
'C5': -1144089268},
'C1': 0.314420519125614,
{'C2': [3385, 6566, 8820],
'C3': 5238841721682812350,
'C4': -0.6529490828883551,
'C5': -2019104737},
'C1': 0.30392757442266394,
{'C2': [14484, -19577, 4449],
'C3': 8558044170609921115,
'C4': 0.8474849218221747,
'C5': -1451293088}],
'B3': [261047519, 109036116, 912625634],
'B4': {'D1': 61136, 'D2': 240}},
'A2': 37627,
'A3': [-0.009998028166592121,
0.47029176354408264,
0.5880270004272461,
-0.42345714569091797]}
Пример 2
Двоичные данные:
b"XQOJ\x00\x00\x00\x92D\x08\xbfN_\x88\xbfVU\xfd\xbft\n\x1c?'\nV\xa3<p\xf5[\xb7"
(b'?\xdd\x8a\xa5\xa1,D\xa8\x00\x03\x00\x00\x00\x1a\xc0\xea\xa3\xce\xda\x83'
b'I\xfe\xbf\xc5\xa2\xa6\x9f\x90\xf5h\x9eiKxv\xd5\xc9^\xc3\xf5\xbf\xe8Y\xed'
b'\x00\xf3\\T\x00\x03\x00\x00\x00B\xc3\x1f\xda1m\xee\xe8\xd0?\xd35\xe4\xe1\xe1'
b'\x1b\xc8\xf0!A0\xfc\xce\x92\x89\x9d\xe9?\xd1\xd0\xc6n0R\x94\x00\x03\x00\x00'
b'\x00j|m\xd4\x9a\xfd\xdf\xbe\xee?\xd8\xa5{j\xca\xe2|\x16\xb38\xa7\x9f\x08'
b'\x00\x00\x00 \x00\x00\x00H\x00\x00\x00p{\x12J\xf1B9\x99\xd2\xfb\xfc\xd0_'
b'\xaa r')
Результат разбора:
'A1': {'B1': 40712,
{'B2': [{'C1': 0.461587340732033,
'C2': [-23748, 28917, 23479],
'C3': 13901103308657084926,
'C4': -0.1690262107021383,
'C5': -1637266568},
'C1': -0.760977269989676,
{'C2': [30421, -13986, -15371],
'C3': 14060196467506604240,
'C4': 0.30016443308380447,
'C5': -266256080},
'C1': 0.2783676219999418,
{'C2': [-818, -28023, -25111],
'C3': 8966056195313876718,
'C4': 0.38510022572476266,
'C5': 380844199}],
'B3': [2064796401, 1111071186, -67317665],
'B4': {'D1': 43552, 'D2': 114}},
'A2': 17416,
'A3': [-0.806145191192627,
-0.8372495770454407,
-0.9532792568206787,
0.6525014638900757]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x43 0x4b 0x56 0xb9
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Структура B |
3 | uint8 |
4 | int16 |
5 | Массив адресов (uint32) структур E, размер 5 |
6 | Размер (uint32) и адрес (uint32) массива int32 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | uint32 |
3 | Структура D |
4 | uint16 |
5 | double |
6 | int32 |
7 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | Размер (uint16) и адрес (uint32) массива char |
4 | uint16 |
5 | uint64 |
6 | float |
7 | uint8 |
8 | Массив uint16, размер 2 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
3 | int16 |
4 | double |
5 | float |
6 | int32 |
7 | int16 |
8 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DCKV\xb9<g\x00\x00\x002e/C\xf1gB?\x1b1M\xd1.#\xb1Oi\xc5\xba\xacm\xe9'
(b'.F\xec\xbf)s\x97\xbeY\xdc\xa0\x9b\xcf\xa00({DD\xec\x8aa\xc1\xe1?=\xd6\xf7'
b'\xd3\x88\x80\x99\x1a\xa9Q\xf0\x14\xfe\x9d\xea\x89\x00\x00\x00'
b'\x8c\x00\x00\x00\x8f\x00\x00\x00\x92\x00\x00\x00\x95\x00\x00\x00'
b'\x03\x00\x00\x00\x98\x00\x00\x00cma\x94\x05P@\xe4\x8f\xec\xbf\x03'
b'\x03\x00d\x00\x00\x00\x07\xef\x10@\x00L\xc5\xcb\x0c\x122\xden?,g\x95Y/&7C'
b')\xabu\x1e\x8c,\xa3\r\xc3\xf6h!W\xd7\x9dV\x83\xc99\x067\x89\xea\xb2')
Результат разбора:
'A1': 60,
{'A2': {'B1': {'C1': -0.892564893351095,
'C2': 3,
'C3': 'cma',
'C4': 61191,
'C5': 1300638440647311376,
'C6': 0.9330779314041138,
'C7': 44,
'C8': [38247, 12121]},
'B2': 1127179570,
'B3': {'D1': 0.7593985199928284,
'D2': 5742409683861057819,
'D3': -14999,
'D4': -0.8835672911785857,
'D5': -0.29580047726631165,
'D6': -1683956647,
'D7': -24369,
'D8': 48},
'B4': 31528,
'B5': 0.5548560822809425,
'B6': -738732483,
'B7': 1508795661906706568},
'A3': 254,
'A4': -5475,
'A5': [{'E1': 38, 'E2': 17207},
'E1': 41, 'E2': 30123},
{'E1': 30, 'E2': 11404},
{'E1': -93, 'E2': 49933},
{'E1': -10, 'E2': 8552}],
{'A6': [1453184855, 104450435, -1293252297]}
Пример 2
Двоичные данные:
b'DCKV\xb9mf\x00\x00\x00\x14w\xea$*T6?\xe7\xd2\x93g"\xca\xeav1\xb1'
(b'6\x13\xdf\x86\x06\t\xe8?\x0c\xfc1\xbf\xd1&\xf9,\xeb S\xa8\xa2\xea\xd7 '
b'\x90\r\x07\xe6?\x8dEsP^\xe4\x93pA`~\x1fUD:\x88\x00\x00\x00\x8b\x00\x00\x00'
b'\x8e\x00\x00\x00\x91\x00\x00\x00\x94\x00\x00\x00\x05\x00\x00\x00'
b'\x97\x00\x00\x00fc\xbc\x8b\xe4\x8fA\x9a\xe1?\xaa\x02\x00d\x00\x00'
b'\x00"\xb3\x95kii<\\\xf4\xd7t\xeab>\x1e\x0fJ\xe6\x7f\t\x98<\xa2\xba\x11~\xdb'
b'm\xe3Px\x89U\xda\t\xd8TA\xbc\xc2\x04\x9bh\xe5y\xd5\xde\x17\xd1\xa8(\x9bv!')
Результат разбора:
'A1': 109,
{'A2': {'B1': {'C1': 0.5500800905614294,
'C2': -86,
'C3': 'fc',
'C4': 45858,
'C5': 15561164027008215957,
'C6': 0.22159749269485474,
'C7': 30,
'C8': [18959, 32742]},
'B2': 619345684,
'B3': {'D1': 0.7122217416763306,
'D2': 8568883490141229799,
'D3': -20175,
'D4': 0.7511017450529838,
'D5': -0.6952521800994873,
'D6': 754525905,
'D7': 8427,
'D8': 83},
'B4': 41640,
'B5': 0.6883609595304254,
'B6': 1349731725,
'B7': 2269357096419189854},
'A3': 85,
'A4': 14916,
'A5': [{'E1': 9, 'E2': 15512},
'E1': -94, 'E2': 4538},
{'E1': 126, 'E2': 28123},
{'E1': -29, 'E2': 30800},
{'E1': -119, 'E2': 55893}],
{'A6': [1096079369, -1694186820, -713431704, -1462691874, 561421096]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x4c 0x59
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint64 |
3 | float |
4 | Адрес (uint32) структуры B |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | int16 |
4 | int16 |
5 | Размер (uint16) и адрес (uint16) массива структур C |
6 | uint64 |
7 | uint64 |
8 | Адрес (uint16) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint16) массива uint16 |
3 | uint8 |
4 | double |
Структура D:
Поле | Описание |
---|---|
1 | Массив int32, размер 8 |
2 | int8 |
3 | uint16 |
4 | int32 |
5 | Размер (uint16) и адрес (uint16) массива int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CLY\x08\\W\xa2?\xc0u\x15\xa5\xf36q\t?z\x00\x00\x00zuD\xae\x9f:\xbb'
(b"\xc6\xa3{\x0c\r/(\x08#\x10_' \xbb7g\xbe\x05\x00\x17\x00\xac\xa8\x1d"
b'3B\xe5\x08\xc8?\x1c\xd2t\xbf\x04\x00!\x00\x9f\xe0eHxUY\xac\xbf\x01P\xc6\x0ci'
b'\xb7\xac\xb2*/x\x07V\xdb\xddf*\xef\xfb\xe5\xcf*\xe3\x14\xbc|\x92\xe7k\xa1k?S'
b'\x0bql\xa4\xd5\x0e~;V\xcb\x04\x00K\x00\xf6}\x02\x00\x15\x00\x92e\x17\xfc'
b'\x02\x00)\x00bm%\x1cb\x7f:\xb5x\xa3\xc0\xdf\xd6(\xb8$O\x00')
Результат разбора:
'A1': 23560,
{'A2': 17556462317854499415,
'A3': 0.5368837118148804,
'A4': {'B1': 32246,
'B2': 'zu',
'B3': 26002,
'B4': -1001,
'B5': [{'C1': -0.22579853236675262,
'C2': [44612, 15007, 50875, 31651, 3340],
'C3': 172,
'C4': 0.18777147037893127},
'C1': -0.9563310146331787,
{'C2': [10287, 8968, 24336, 8231],
'C3': 159,
'C4': -0.0553690633134456}],
'B6': 13058890128869911906,
'B7': 2645909684422222712,
'B8': {'D1': [-1297303703,
125316906,
1725815638,
-436474070,
350431951,
-409830212,
1064018283,
1819347795],
'D2': -92,
'D3': 3797,
'D4': -883541122,
'D5': [1, 80, -58, 12]}}}
Пример 2
Двоичные данные:
b'CLY-\xa1c{J{\xb7\xbeo\x11\xe9\xa0p\xbe\x8e\x00\x00\x00cd\x8bP\x86v\xca'
(b'\xf1\xf9wZ\x93r\xe8\xbe\xf5\xcb\xac\x9c\xe5^>\xd9\xdd\xfa\xb1='
b'\xbf\x03\x00\x17\x00t\xe2\x0e\x83_-\xc8\xe6\xbfw\xf5\xbf\xbe\x05\x00'
b"\x1d\x00\xa0PI~\xb2\xdf\x07\xee\xbf$\xfeA>\x03\x00'\x00s\x88\x9a\x08\x9c"
b'\x0b\xc5\xc8?y\xc8\xdc\x95\xf1\xc0\xf0(\x9e\xf5]jq\xe8\x85D\xde9^\xdb'
b'\xa0\xdb\xef,\xcb\xf7\x1a\x96"[\x82X\xb0\x1c1\xd3\x91\x1dMv>\xa6\x03\x00'
b'`\x00.\xfa\x02\x00\x15\x00\x0b\xf2Nt\x03\x00-\x00b\xb9\xb8\xfbB\xb12w'
b'\xe8\xea \xfd\x1c\x0f8 c\x00')
Результат разбора:
'A1': 41261,
{'A2': 1256432516316429155,
'A3': -0.23498882353305817,
'A4': {'B1': -1490,
'B2': 'cd',
'B3': -3573,
'B4': 29774,
'B5': [{'C1': -0.7409969568252563,
'C2': [20619, 30342, 61898],
'C3': 116,
'C4': -0.7119356980769818},
'C1': -0.3749196231365204,
{'C2': [30713, 37722, 59506, 62910, 44235],
'C3': 160,
'C4': -0.9384611593434702},
'C1': 0.18944603204727173,
{'C2': [58780, 15966, 56793],
'C3': 115,
'C4': 0.1935133468516208}],
'B6': 8589122340598102370,
'B7': 2321622225089784552,
'B8': {'D1': [-255790699,
1576377896,
-2048364182,
1580850756,
-270819109,
452447020,
-2107956586,
823963736],
'D2': -45,
'D3': 7569,
'D4': -1505855923,
'D5': [121, -56, -36]}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x2c 0x46 0x41 0x48 0x50
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Адрес (uint32) структуры B |
3 | uint32 |
4 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур C |
2 | uint32 |
3 | uint16 |
4 | Адрес (uint32) структуры D |
5 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int64, размер 2 |
2 | float |
3 | int16 |
4 | uint16 |
5 | Массив int16, размер 8 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
3 | Массив int32, размер 4 |
4 | uint32 |
5 | uint32 |
6 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b',FAHP\xc6KE\xcf\x00\x00\x00\x8cL\xcd\xc6\xba\x10y\xedn\x93\x10bc\xde4C'
(b"\xea`@\x1f*\xd9\x06W'\x0fyp\xc7\xbd\x84\xfc\xce\xc1M\xba;\xfdW\xf3\xe8\xb0Y}"
b"\xdfx\xb8\x8a\x84\xd1\xd4M\x85>\xf0X'D\x94z\x86\xc8oFH\x8e{\x8dr?\x11\x1a"
b'\xc8~\xebb\xdb\xa7\xe8\xd1\x16\xc3\x18\x08\xbf\x8cS&\x00\xd9\x99e'
b'\xb8\x00\x19\x00A\t\x1b\xd83\xdc\xe2\x041\x88\xc9u~\x7f\xe6\xed\xcc\xa2}!'
b'\xb5\xb5=\xc0\xc5\xcf\x82\xb98\xf1\xfb>\x00\x02\x00\x00\x00i\xa2\xaf'
b'\xd7\xbcM\x02\x00\x00\x00m)')
Результат разбора:
'A1': -968145457,
{'A2': {'B1': [{'C1': [-2435246824584372438, -2808461492343967545],
'C2': -0.06493531167507172,
'C3': -16051,
'C4': 47675,
'C5': [-681,
-3096,
-20391,
32223,
30904,
-30076,
-11820,
19845]},
'C1': [4535221750439639686, -4003904266267030158],
{'C2': 0.5668148994445801,
'C3': 32491,
'C4': 25307,
'C5': [-22552,
-12010,
-15592,
2239,
-29613,
9728,
-9831,
26040]}],
'B2': 2729433020,
'B3': 19714,
'B4': {'D1': 152819763,
'D2': 56546,
'D3': [70355145, 1971224550, -305356163, 565556541],
'D4': 3234189186,
'D5': 3107516923,
'D6': 62},
'B5': 41},
'A3': 1288554170,
'A4': 1187241035958346339}
Пример 2
Двоичные данные:
b",FAHP\xaf\xf3J`\x00\x00\x00\x8c\xd8\xc1\xbd\x0cA\xc7r-'l\x02_0\xb1c"
(b'*\x90N\xd46~ \x1c\xb3\xd9\xbf\x1e\xa8\xbe\x06\xe9Z=w"\tA\xeb\xa6'
b'G\xa9\xdb\xc2\xc6\xcf\xd3}\n\xa0\x0c(y\x9d\xca!\x81OE>[\xa1\xc1\xf7'
b'Z\xda@\x1b?\xbd\xcd_\xcf\xa1QXl\x0e\x18\x16\xcf"\xce[\xd0\xefy\x8b'
b"\xac\xd8\\V\x00\x00\x19\x00AE>\xa9\xd6\xaas\xf8p'G\xfcX!Z\r\x07\x0e\tJ"
b'\x03]~\xa9\xa5\xe9\xe5\x93X\x8a\xd5J\x00\x02\x00\x00\x00i\x1b\xc8'
b'\xe2\x8a\xfa\xdd\x00\x00\x00m\x14')
Результат разбора:
'A1': -1343010208,
{'A2': {'B1': [{'C1': [3508694619159188534, 9088295606811565736],
'C2': -0.13174954056739807,
'C3': 15735,
'C4': 8713,
'C5': [16875,
-22969,
-22053,
-15674,
-12333,
32010,
-24564,
10361]},
'C1': [-7076807025194877349, -6790874793517245633],
{'C2': -0.10028039664030075,
'C3': -24239,
'C4': 22636,
'C5': [3608, 5839, 8910, 23504, -4231, -29780, -10148, 22016]}],
'B2': 466150026,
'B3': 64221,
'B4': {'D1': 1161734614,
'D2': 43635,
'D3': [-126867641, -61333158, 218566153, 1241734526],
'D4': 2846222821,
'D5': 2472053461,
'D6': 74},
'B5': 20},
'A3': 3636575500,
'A4': 4739882671091221087}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x41 0x49
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
3 | Адрес (uint32) структуры B |
4 | Адрес (uint16) структуры C |
5 | int64 |
6 | Структура E |
7 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 5 |
2 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Массив адресов (uint16) структур D, размер 4 |
3 | Массив uint8, размер 5 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 2 |
2 | int64 |
3 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | int16 |
4 | int16 |
5 | int8 |
6 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AAI5u\xd6#p\x08{\xf9TH\xb5?/\x00\x00\x00~\x00iB!\xa3e9\xb7P\xb3V\x81'
(b'\x89:\xfa\xb4\xbeI\xdei\x8c\xe9\xe1@I\xd4Bovdbo\xd5\xac\xb3w\xcc \\\x9f'
b'\x11\xa7\x15\xf2\xf06W\x8c\xf0\x9b(\x06-\x85\x9bn\xebR\xe6H)\x9e\x0ft'
b'\xf4\xe9\x86\xa7\xf0\x83g\xe3\x19M\xd5\x8a#nMXi\x82\xb5$\xde\xb1)aV1t\x90'
b'\xa0`J\xe1\xaa\xc6\xbf\x7f\x89\x116/\x1a\xac\xce\x8e\xac\nKy\xe3?6\x00'
b'H\x00Z\x00l\x002\xb2\xe8\xd8:')
Результат разбора:
'A1': 601257269,
{'A2': 0.08313494768938923,
'A3': {'B1': 'ovdbo', 'B2': 44245},
'A4': {'C1': 0.6085562904813402,
'C2': [{'D1': [550270899, 2802949980],
'D2': -7210108697208360427,
'D3': 1576},
'D1': [1855685933, 1223054059],
{'D2': -6375150986367885783,
'D3': 33776},
'D1': [1293542247, 1847823061],
{'D2': -5630022122170918835,
'D3': 24873},
'D1': [2423533910, 3779748000],
{'D2': 3401925850776454826,
'D3': 44058}],
'C3': [50, 178, 232, 216, 58]},
'A5': 5816180552463630953,
'A6': {'E1': -1988012365,
'E2': 58,
'E3': -19206,
'E4': 18878,
'E5': -34,
'E6': 3790179433},
'A7': 1121208640}
Пример 2
Двоичные данные:
b'AAI\xe9\x96\n\xddX\xdf@\x93r1\xcc\xbf/\x00\x00\x00~\x00R\xd2O\t1\xc2\xb6'
(b'w\xff-27I\xd2\xb2d\x10\xedj##\xf1\xe5\xd5Z\x8cpitdb\x85\xd2Cl\xc0W.\xa8(b$S'
b'\xaf#T\x81y\x91A\x10\xb5.\x9d\xdfj\xef\x87\x1c\xceVQ\x7f\xb2\x8a\xb6\xef'
b'\xc6\xff\xf3\xf2O9\xf9\x00\x96\x18\xb0\xa4\xc4\xb8\xcf\xad|}\x10M+K|\xba'
b'\x10~\x9ea\xdbO\xcf\xfa\x96\x7f0\xea(\xe8\xa8Uqkx\xba\xee?6\x00H\x00Z\x00'
b'l\x00\xb4-\xc9\x1f\x83')
Результат разбора:
'A1': 3708458729,
{'A2': -0.2202590197573453,
'A3': {'B1': 'pitdb', 'B2': 53893},
'A4': {'C1': 0.960262498711633,
'C2': [{'D1': [1472228419, 1646831662],
'D2': -7964192267652082908,
'D3': 4161},
'D1': [3751620277, 478670698],
{'D2': -1173598153638586674,
'D3': 65478},
'D1': [961540851, 412483833],
{'D2': 9042293259522843824,
'D3': 19728},
'D1': [3128707883, 1637776912],
{'D2': -1571615983522590757,
'D3': 59432}],
'C3': [180, 45, 201, 31, 131]},
'A5': 8626295652140175954,
'A6': {'E1': 926035455,
'E2': 73,
'E3': -19758,
'E4': 4196,
'E5': -19,
'E6': 4045611882},
'A7': 2354763237}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x69 0x55 0x42 0x48
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив адресов (uint16) структур B, размер 3 |
3 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint32 |
3 | Массив char, размер 4 |
4 | uint8 |
5 | uint32 |
6 | Структура D |
7 | Структура E |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив uint8, размер 2 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив int32, размер 6 |
3 | float |
4 | double |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'iUBH\x12\xb2gc~\x06\xf9mP\x00X\x00`\x00\xe2Z\xb0\x9c\xd2\xd4xshe'
(b'\xa2K\x99\x0c\x8e\x88\x97\x1b\xf9\xads-0\xd2\t3\n\x03XKZ.iY\x15?\xf1\xed'
b'\x84%\x1f\xe4\xb4TA\x8b\x16k#\xf1\xbft?\x80\x1b2{K\x01\xed\xbf0{\xca\xe6\xca'
b'FQ\x81\xfaXT\x06G\x08\x06\xb1\n\xcd\x105\xebM:\xd2m')
Результат разбора:
'A1': 7924372159238484498,
{'A2': [{'B1': -890844549, 'B2': 4202778950},
'B1': 1191597144, 'B2': 179373576},
{'B1': -348843827, 'B2': 1842494029}],
{'A3': {'C1': 23266,
'C2': 3570572464,
'C3': 'xshe',
'C4': 162,
'C5': 2383190347,
'C6': {'D1': -115632248, 'D2': [173, 115]},
'C7': {'E1': 164769837,
'E2': [1476594227,
1764645451,
-247524007,
522552557,
1096070372,
594220683],
'E3': 0.9560537934303284,
'E4': -0.9064080625692981,
'E5': 48}}}
Пример 2
Двоичные данные:
b'iUBH\xf3\xf3\x90\xf9\xeb\xa7\xde\xa1P\x00X\x00`\x00\xddj\xde\x9f\xe8\xf5evhg'
(b'P\x90\xf5\xcf\xed\n\xd8#T\x13\xfel\xb8\xf3<\xed\x88y\xd8\xf3\xab\xf1\xbc\xb3'
b'c\xb4\x0c\x8f\x8ep\xc7\xf9_\xaeE\xc2\xa6\xb3\x92\x19(2\xbf\xa0J\x900\x8b'
b"\xf5\xca\xbf&\x10\xdfFoF\x05\xe9\n\xfc\x16\x8f\x80'\xff\xe6\xf0"
b"\xb3\xe2\xcb\xd4X\x837'")
Результат разбора:
'A1': -6782799356827208717,
{'A2': [{'B1': 1866915600, 'B2': 183043398},
'B1': -2138106116, 'B2': 4041670439},
{'B1': -724835661, 'B2': 657949528}],
{'A3': {'C1': 27357,
'C2': 4125663198,
'C3': 'evhg',
'C4': 80,
'C5': 3989829008,
'C6': {'D1': 1411635210, 'D2': [19, 254]},
'C7': {'E1': 1022605420,
'E2': [-663123731,
-1125012493,
213148595,
-948924785,
1169055737,
-1833720126],
'E3': -0.6959243416786194,
'E4': -0.21061839934607907,
'E5': 38}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x4d 0x44 0x55 0x7d
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Структура B |
3 | uint64 |
4 | double |
5 | uint16 |
6 | Адрес (uint32) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | double |
3 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур D |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | Структура E |
4 | double |
5 | Массив uint64, размер 2 |
6 | int8 |
7 | Адрес (uint16) структуры F |
8 | Адрес (uint16) структуры G |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | int16 |
4 | float |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | double |
3 | Массив int8, размер 2 |
4 | uint16 |
5 | uint8 |
6 | Массив uint16, размер 8 |
7 | uint32 |
Структура F:
Поле | Описание |
---|---|
1 | float |
2 | float |
3 | uint32 |
4 | uint16 |
Структура G:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WMDU}\x97\x03\x82i\xbb\xd6\xa3U\x06\x98I\xea\xf0\x9aA\xe6\xbf\xb6\xf5'
(b'\xb6A\x99\xec\xddi\xaf\x820\x08/Z\xbeV\xc8?\xc2\xfel\x00\x00\x00/\xe2'
b'\xc0\xdb\x8b\x9a\\?\x11\xa4\xdcn\xfb\x03\xad>\x12W\xbce\x00#>\xbf\xbf*'
b'\x89f\xb6\xa7n>.\x006\x00>\x00F\x00nzbm\xf2.?\xd7\nI\xbe\x7fb\x97'
b'\x13\xcce\x03\x90\x90*\xa7\x04\x00\x00\x00N\x00\x03\x00\x00\x00V\x00'
b'\x00\x00\xd4\x97W\xf2/\xd5\xe6\xbfd\x82d\xc6\xf6\xa7\xd6?\xcc\xdb'
b'\xbb0\x9a\xf6\x11\xeel\xec\xb7ag\x92\xa2\xc4\xe7\t6\xfex6&P\xce\xc8'
b'~\xad\x87W\x85\xc1\xbf$\x83f)\x99\xe3\xe5\x0b2\x00\t\x96\xc4\x04\xde\xd0\r'
b'Y\x00g\x00')
Результат разбора:
'A1': -105,
{'A2': {'B1': 456451079910556163, 'B2': -0.6955084519743648, 'B3': -2634},
'A3': 9416861747733152182,
'A4': 0.19014720347883118,
'A5': 65218,
'A6': {'C1': [{'D1': 47, 'D2': 226, 'D3': -9280, 'D4': 0.8617331385612488},
'D1': 17, 'D2': 164, 'D3': 28380, 'D4': 0.33792099356651306},
{'D1': 18, 'D2': 87, 'D3': 26044, 'D4': -0.7427215576171875},
{'D1': 191, 'D2': 42, 'D3': 26249, 'D4': 0.23306164145469666}],
{'C2': 'nzb',
'C3': {'E1': -0.7135238393063852,
'E2': 0.3540017068317296,
'E3': [-52, -37],
'E4': 12475,
'E5': 154,
'E6': [4598, 27886, 47084, 26465, 41618, 59332, 13833, 30974],
'E7': 3461359158},
'C4': -0.1368817722786757,
'C5': [857341551048033060, 15050472247096049714],
'C6': 13,
'C7': {'F1': 0.6833866238594055,
'F2': -0.19633041322231293,
'F3': 328688255,
'F4': 26060},
'C8': {'G1': 3, 'G2': 2804584592}}}
Пример 2
Двоичные данные:
b'WMDU}\xe3S\xc8\xd4\x8a\x11\xc2\x18\x9d,\x9c\xeb\x04\xff\xd3\xdf?l\xeb'
(b'\xcc\x8fn7o\xc9\x02\xb7\x9aF\x16I\xf0\xae\xea?JIb\x00\x00\x00^\r'
b'\xa3\x05\xb9\xc3\x04?\x8d\x05I\x1eK\x11\x80>@u\x1b5\xc6\xbfE?.\x006\x00>\x00'
b'ktv\x85\x94O?\x18[\xc5>mlNk\xd4r?jWJ\x15\x03\x00\x00\x00F\x00'
b'\x03\x00\x00\x00L\x00\x00\x00\n\xdfz\xc1\xa0-\xe7\xbf\xc8\xe4b\x9b'
b'\x06+\xe5\xbf\xb7\xde&\xd8\xd5[K\xe2\xba\xd5\xbc\x8b\xf8\x9d\x87\xc9LP\r\xae'
b'\xa0MH\xa2%\x88\x9a\xa4\x8e\xcfR\xd8\xbf\x0e\x92N;1\x83`\xa9\xc4b\xd9'
b'\x08\x0f\xb6\x0b\xc2\xdaO\x00]\x00')
Результат разбора:
'A1': -29,
{'A2': {'B1': -7126733029714376621, 'B2': 0.49731421928885555, 'B3': -5268},
'A3': 13187324138402779084,
'A4': 0.8338548114281423,
'A5': 18762,
'A6': {'C1': [{'D1': 94, 'D2': 13, 'D3': 1443, 'D4': 0.518611490726471},
'D1': 141, 'D2': 5, 'D3': 7753, 'D4': 0.2501319348812103},
{'D1': 64, 'D2': 117, 'D3': 13595, 'D4': 0.772457480430603}],
{'C2': 'ktv',
'C3': {'E1': -0.7243198183923323,
'E2': -0.6615021738899935,
'E3': [-73, -34],
'E4': 55334,
'E5': 213,
'E6': [19291, 47842, 48341, 63627, 34717, 19657, 3408, 41134],
'E7': 631392333},
'C4': -0.38005436830500416,
'C5': [12204899237645685262, 13982469643791065796],
'C6': -38,
'C7': {'F1': 0.8108599781990051,
'F2': 0.38546061515808105,
'F3': 1800301677,
'F4': 29396},
'C8': {'G1': 63, 'G2': 357193578}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x8 0x56 0x51 0x5a
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | Массив char, размер 4 |
4 | int16 |
5 | Структура B |
6 | Адрес (uint32) структуры E |
7 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива структур C |
2 | Массив uint8, размер 6 |
3 | int16 |
4 | Адрес (uint16) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
3 | float |
4 | uint8 |
5 | int64 |
6 | uint32 |
7 | Размер (uint16) и адрес (uint32) массива uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x08VQZ\xb4L\xbfM\x8f\xba\x0c\xb6\x1ccgbn\x8dH\x02\x002\x00\x00\x00!2o'
(b'\n\x8e)\xd7xh\x00m\x00\x00\x00^\x1d<\xae G\n\x88\x98\xb4\xeevsp\x81.\xe2'
b'\x86=lfJ=#\xf1\xdd\x1c\xfa3o\x80\xf3\x04\x00+\x00\x00\x00\x15\xc4\xd0P>\xe8A'
b"\xbe3\x0f\xb9\x89\xe8\xda\xb5~\xc9\xd0'I\x00\x03\x00/\x00\x00\x00\t\x91\x83:"
b']6\xd2\xc1G')
Результат разбора:
'A1': -76,
{'A2': 2068855074231009100,
'A3': 'cgbn',
'A4': 18573,
'A5': {'B1': [{'C1': 29558,
'C2': 33136,
'C3': 0.06586109101772308,
'C4': 108,
'C5': -424220237131593114,
'C6': 4085280563,
'C7': [32, 71, 10, 136]},
'C1': -15339,
{'C2': 20688,
'C3': -0.18936249613761902,
'C4': 51,
'C5': -3927501873211655921,
'C6': 4794320,
'C7': [152, 180, 238]}],
'B2': [33, 50, 111, 10, 142, 41],
'B3': 30935,
'B4': {'D1': 981700873, 'D2': 93}},
'A6': {'E1': 54, 'E2': -15918, 'E3': 71},
'A7': 2923175262}
Пример 2
Двоичные данные:
b'\x08VQZ}\xf3\xd5a$\x04u\xf16myzktL\x03\x003\x00\x00\x00T\xbc\xe2'
(b'\x05.\xf0\xb8\x9e\x84\x00\x89\x00\x00\x00I\xa5\xdb\xb3\x83\xa6\x9e\xe1\x8c'
b'\xa9\xc8\xed\xe4z\xb2j\xad\x90_?^\xd49\xdd;\x11\x89&\x91d\x12\x85\x89'
b'\x02\x00+\x00\x00\x00\xa8\xe9<o\x7f\xa5\xd2>>Ke\n\x8d*\xea+\x94\xa7'
b"\x86\xd2'\x03\x00-\x00\x00\x00\xeeu\xc5\xee\x81\xc6;?\xd1\x17 (\xed\xc8'"
b'\xbe2J\x8e \xba\x03\x000\x00\x00\x00P\x9d\xbc\x05\xef\xb1\x1a&\x9f')
Результат разбора:
'A1': 125,
{'A2': 3959074208086087155,
'A3': 'myzk',
'A4': 19572,
'A5': {'B1': [{'C1': 31460,
'C2': 27314,
'C3': 0.8733013272285461,
'C4': 94,
'C5': -7987546181983192620,
'C6': 2307199588,
'C7': [131, 166]},
'C1': -5720,
{'C2': 28476,
'C3': 0.4114188849925995,
'C4': 62,
'C5': -7769859263621864117,
'C6': 668108455,
'C7': [158, 225, 140]},
'C1': 30190,
{'C2': 61125,
'C3': 0.733497679233551,
'C4': 209,
'C5': 3656403691397193751,
'C6': 3122695754,
'C7': [169, 200, 237]}],
'B2': [84, 188, 226, 5, 46, 240],
'B3': -24904,
'B4': {'D1': 96247120, 'D2': -17}},
'A6': {'E1': -79, 'E2': 9754, 'E3': -97},
'A7': 3017516361}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x59 0x51
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | uint64 |
3 | double |
4 | int16 |
5 | Структура D |
6 | Массив float, размер 7 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | Массив char, размер 3 |
3 | uint64 |
4 | double |
5 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint8 |
3 | float |
4 | Размер (uint16) и адрес (uint16) массива uint16 |
5 | Массив uint32, размер 7 |
6 | int32 |
7 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'SYQ\x00d\x02w\xd5\xb7)>\x1e\xe6\xbf\xe5\xad\x02O\xfdI`\x18C\x978\xa5&\xa5'
(b'>\xef\x0b\x1b\x00\x02\x00\x83\xd2\xd0\xb8-\xfa@9\xfc\xc7\xdf[""+\x12w'
b'\xb0D\x83\xe3\xf7\xa9\x8bMF\xbb:\x85\x83\xb3\xf6\xf6?0\x85V\xbd(\x7f\x91'
b'?c&\x93=\x8a<\xde\xbeF\xc3\xce?~cQ\xbeY\x82C>)\xe9 \xf1\x9d\x08J'
b"\xccf\xb2\x9erzz\x05\xfd\x8e\x06\xd3\x87Lt\xbf\xe7\x91!'5\x17\xc63"
b'\xcf\xa7\xf6e\xdeyi')
Результат разбора:
'A1': {'B1': [{'C1': 61853, 'C2': 2122}, {'C1': 52326, 'C2': -19810}],
{'B2': 'rzz',
'B3': 431657299267243124,
'B4': -0.736466003968183,
'B5': 869246966},
'A2': 177845692952092390,
'A3': -0.6773692667286859,
'A4': 6211,
'A5': {'D1': 2537071910,
'D2': 165,
'D3': 0.4668816030025482,
'D4': [26078, 31081],
'D5': [3536893997,
4198513148,
3353303842,
573248119,
2957280227,
4155083597,
1186675333],
'D6': -2085357834,
'D7': 0.6895345449447632},
'A6': [-0.04113728180527687,
0.887307345867157,
0.06749890744686127,
-0.1941063106060028,
0.9937029480934143,
-0.21241097152233124,
0.16592836380004883]}
Пример 2
Двоичные данные:
b'SYQ\x00d,\xf0\xfc\\\x96D\x02\x0b?\xdc\xf7\x9a\xee\xaa\xb9\xec\x97mD'
(b'\xd4W\xebS\xbf\r\xbe\xec\x00\x02\x00\x83\x9ao\x06oT\x98\xd1tB\xf7\xf6\x0f'
b'\x1a\xdc\x9c?uB\x92F\xd0\r\xbd\x1d\x90.;|j\xe2\x88\x8e\xbe\xb7\xf9\xeb'
b'>\xf9\xb1\x96>\x0bG\x06\xbe\xa1I\xd4>\x87z\xe3>4\x1aN>\x84,\x00\xbf7\x1c\xfe'
b'^\xdcpk+\x82\\EuijSU\xeb\xba\x11\xf4\x93K?\xbe>\xf3\xba\x85k\xe0\xc2'
b'\xe7V\xbb\xef\xad\x11\x9e')
Результат разбора:
'A1': {'B1': [{'C1': 24284, 'C2': 28779}, {'C1': 11138, 'C2': 23621}],
{'B2': 'uij',
'B3': 6004964862566110027,
'B4': 0.11814807227840118,
'B5': -1025026373},
'A2': 3238365606667616779,
'A3': 0.4526126223308029,
'A4': -26771,
'A5': {'D1': 1154766827,
'D2': 83,
'D3': -0.553694486618042,
'D4': [61357, 4510],
'D5': [2590967407,
1419301236,
1123546639,
450665535,
1967297094,
3490561309,
2418948988],
'D6': 1793230990,
'D7': -0.35932859778404236},
'A6': [0.4876829981803894,
0.13601312041282654,
-0.31501638889312744,
0.2646094262599945,
0.17588159441947937,
0.258148193359375,
-0.715286135673523]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x4b 0x56 0x41 0x31
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint16) массива uint8 |
3 | Адрес (uint16) структуры B |
4 | int64 |
5 | double |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint32) массива структур C |
3 | int8 |
4 | uint32 |
5 | uint8 |
6 | Структура D |
7 | Размер (uint32) и адрес (uint32) массива int8 |
8 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | float |
3 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив float, размер 8 |
2 | uint16 |
3 | int32 |
4 | float |
5 | float |
6 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UKVA1\xbf\xe5\x9f@)R\xfd\x12\x00\x00\x00\x04\x00%\x00K\xcaPZ\xd7\xe8<s'
(b'\xce\xbf\xe9\xf1\x01G\x089(\xcd\xc9\x1f\x8c\xc6\xff>\xae\xce\xee\xad'
b'U\x9b\xc3\xd4\xe8\x8e\xa4sx?S\xdcZ\xfe\xcf\x86\xea\xd8\xf6)\xdb\xe9\x1d\xdc'
b'5\xcd\xba/\x00\x00\x00\x02\x00\x00\x00)\xff\x7f\xd7y\xd3\x10?q\xffh>\x96'
b'_\xd7=\ts\x13\xbfFT\x9f>yX\x87>\xce\xd8\xaa>\xe2\xe6X\xbf\x14\x8d\x87\x81`'
b'\xea\x13\xc9]\xbeE\xdd\xf5?~\x01\x17\xccR\xa0\x8e\x00\x00\x00\x06'
b'\x00\x00\x00E\xb8#\x16\\\xf5\x01\xf8\xc3')
Результат разбора:
'A1': -0.6756897742378973,
{'A2': [205, 201, 31, 140],
'A3': {'B1': 47,
'B2': [{'C1': -14593,
'C2': 0.34142249822616577,
'C3': -5956683666734674268},
'C1': 29560,
{'C2': 0.8275810480117798,
'C3': -85701524676269605}],
'B3': -1,
'B4': 2144827859,
'B5': 16,
'B6': {'D1': [0.9453034400939941,
0.2936999499797821,
0.03355700895190239,
-0.7747287154197693,
0.24350176751613617,
0.4039967656135559,
0.4431636333465576,
-0.5802845358848572],
'D2': 33120,
'D3': -367802019,
'D4': -0.19322951138019562,
'D5': 0.9922041296958923,
'D6': 3427967118},
'B7': [-23, 29, -36, 53, -51, -70],
'B8': 13268473515666962627},
'A4': -3868492196550511666,
'A5': -0.8106695544572959}
Пример 2
Двоичные данные:
b'UKVA1\xbf\xa0\xbe\xc1[\x99)\xe0\x00\x00\x00\x04\x00%\x00L\xb2\x8dX'
(b'\xd1\x98\xfe\xd0\xda\xbf\xe6\xe6\xb3\xcc!\xc5r\xff q\xe2\x95\xd9?'
b'b\xae\xd3\xd7\xd9j\xe2\x9d^\xc6G\xf1\x18>\xd0t\xc9U\xd1\xdc\x9e\x87\rw'
b'\x85\xd3\xf6\x1ei&\x9d\x8a\x1e\x00\x00\x00\x02\x00\x00\x00)\x16\xe1\xb0'
b'\xae\xb8\xb3>\x85\x82@\xbfj\x06i\xbe%\xceZ\xbe\xa6yE\xbe\xf7E\xe3\xbe\xfb#%?'
b'K\xc8\x16>\x92\x8d\x9d\xf5\xb2\x87\xc2\xad\x98\xbf%\xd5b>.\xda'
b'\x9f\xc8\xcc\x8cd\x00\x00\x00\x07\x00\x00\x00E\xcf8\x02\xee\xddTBz')
Результат разбора:
'A1': -0.03270534747260334,
{'A2': [255, 32, 113, 226],
'A3': {'B1': 30,
'B2': [{'C1': -27175,
'C2': 0.8854801058769226,
'C3': -2893163764073445817},
'C1': -3816,
{'C2': 0.4071410000324249,
'C3': 6183966336785151877}],
'B3': 22,
'B4': 3786452664,
'B5': 179,
'B6': {'D1': [0.2607593536376953,
-0.9141603112220764,
-0.1619199812412262,
-0.325143963098526,
-0.48295506834983826,
-0.4905025064945221,
0.7960218191146851,
0.2862366735935211],
'D2': 62898,
'D3': -2017284712,
'D4': -0.6477872133255005,
'D5': 0.17075584828853607,
'D6': 3368848484},
'B7': [-45, -10, 30, 105, 38, -99, -118],
'B8': 14931687789485638266},
'A4': -5580706706003930918,
'A5': -0.7156619059516471}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x50 0x43 0x4a
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 4 |
2 | uint16 |
3 | Размер (uint16) и адрес (uint16) массива структур C |
4 | double |
5 | int64 |
6 | Адрес (uint16) структуры D |
7 | int16 |
8 | Адрес (uint16) структуры E |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int32 |
3 | Размер (uint16) и адрес (uint32) массива uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
3 | int8 |
4 | uint8 |
5 | Массив int16, размер 8 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | uint32 |
3 | int16 |
4 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"MPCJ\xfb-q\nH'\xf7|egso\xf7c\x00\x02\x00X?\xccm\xfeG\xee\x19\x88\xe5'"
(b'3\xdc\xd5\x11GT\x00nCt\x00\x8c\xc9\x0eQ\xd7\xbe\xd3\xa5 \xbc\x03\xb4\x1d'
b"6\ro5(\xeb\x96\x94\xcb-t\xee\xe2\xb0\xa5\t\xab\xaelFe\x14\xa2\x01j'x0"
b'G_\xc7\x8c\xe9K\x9a\x9f\xc3\x00\x07\x00\x00\x00,\x9b5\x1cx\xd4'
b'\x00\x04\x00\x00\x00H\x14\x99\x8c\xe2\xbf\xe6\xa1\xfdZ\x1c\xd0r\xfe\xca'
b'\x84\xab[\x01xi:\xe4\xe7\xb5L\xdd\x81^\xa2\x9a\xf9\x85/P\xee\xd69a\xf7\x9e><'
b'\xf1L')
Результат разбора:
'A1': 18099246766446081916,
{'A2': {'B1': 'egso',
'B2': 63331,
'B3': [{'C1': 233,
'C2': 1268424643,
'C3': [3373158871,
3201541408,
3154359325,
906850101,
686528148,
3408753902,
3803227401]},
'C1': 155,
{'C2': 891058388,
'C3': [2880334918, 1695851009, 1780971568, 1197459340]}],
'B4': 0.22210672867022319,
'B5': -1934520491371837612,
'B6': {'D1': 345607394,
'D2': -0.70727412796124,
'D3': -2,
'D4': 202,
'D5': [-31573,
23297,
30825,
15076,
-6219,
19677,
-32418,
-23910]},
'B7': 17268,
'B8': {'E1': -108712112,
'E2': 4007016801,
'E3': -2146,
'E4': 0.18451422452926636}}}
Пример 2
Двоичные данные:
b'MPCJ\x9a\x7fl\t\xe64>Huvrt\x0f#\x00\x02\x00D\xbf\xcf\x00\x0cT\x9b'
(b'\xd4\xc0\\\x01\x06\xbe\x05\x89m\x1c\x00Z\xfee\x00x[\xe7\xff\xc6'
b'\xdc\xd0\xf9\xb5\xb1\x12\x8c\xfd(\xcf\xe0wg\xc9\xfe&\x9e\xb6\x8b\xe8i|n\x84'
b'b\x00\x03\x00\x00\x00,7\xbd\x01\x03M\x00\x03\x00\x00\x008\xcd\x98'
b'\x19\xba?\xd1\xba\xf24v\xaa\xc8\x8d\x01b\x04C[\x90\xaf\xee\x8d\xa1\x17?\xa8'
b'a\xf2,\xafPk\xd0\xec\xbcX\xa5\xe2\xf0\x98\xbe\xb1\x95\xe5')
Результат разбора:
'A1': 11132735593655844424,
{'A2': {'B1': 'uvrt',
'B2': 3875,
'B3': [{'C1': 105,
'C2': 2087617634,
'C3': [1541930950, 3704682933, 2970782973]},
'C1': 55,
{'C2': -1124007091,
'C3': [684712055, 1741291046, 2662763496]}],
'B4': -0.24218896991047778,
'B5': 6629587539672526108,
'B6': {'D1': 3449297338,
'D2': 0.2770352852191249,
'D3': -115,
'D4': 1,
'D5': [25092,
17243,
-28497,
-4467,
-24297,
16296,
25074,
11439]},
'B7': -411,
'B8': {'E1': 1349243116,
'E2': 3159926242,
'E3': -3944,
'E4': -0.34684672951698303}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x41 0x57 0x46
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур B, размер 2 |
2 | float |
3 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | Размер (uint32) и адрес (uint16) массива int16 |
3 | Массив uint8, размер 3 |
4 | Адрес (uint16) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | uint64 |
4 | Размер (uint16) и адрес (uint16) массива int8 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GAWF5\x00c\x00\x8c,(\xbf\xbaD\xea\xc9\x92\x97WT\xe1\x86q\xa4\x83\xa8+$'
(b"\x1c\xc1v\x139\xbf\xc8\x02\x00\x14\x00\r\x00\xf4\x19\x9c\xc3O\xc0\xa0'}?\x8a"
b"z\x16\x00\x04\x00\x00\x00'\x00W[:/\x00l\xeb\xf4\x89r\xa0B\x9c:\x98\xb5?B\xa3"
b'\x1d\x02\x00B\x00\xd5\x14\x98\xe0\n\xcc x h\x97>\x89.D\x00\x04\x00\x00'
b'\x00U\x00\x81\x1e\t]\x00')
Результат разбора:
'A1': [{'B1': {'C1': 113,
{'C2': 732464036,
'C3': 14465343283896851492,
'C4': [-31, -122]},
'B2': [13, 6644, -15460, -16305],
'B3': [87, 91, 58],
'B4': {'D1': 0.9888858795166016, 'D2': 31370}},
'B1': {'C1': -12,
{'C2': 1117811337,
'C3': 2135623489700772508,
'C4': [108, -21]},
'B2': [5333, -8040, -13302, 30752],
'B3': [129, 30, 9],
'B4': {'D1': 0.2957162857055664, 'D2': 11913}}],
'A2': -0.6569297313690186,
'A3': 6077492878868366522}
Пример 2
Двоичные данные:
b'GAWF:\x00j\x00\x1c\xc0l?\xa0\x8d\x94\xd6\xed4[\x89"\x1fN+/:\xc9\xce'
(b"\xf5'@\x1b\x0e\xbe\xa3'\x03\x00\x14\x00\xf9y\xbf\x92e\xe8f\xdc\x8el\xaeg"
b'\x8dK`?\xff]\x17\x00\x06\x00\x00\x00(\x00\x1f\xb1\xdc4\x00A\x9f\x03\xe6\xf8'
b"\x98's\xce/Y(\xdaO\x82\x02\x00G\x00\x839\x041\xbce$\x88,\xfc\x1bI\x19\xbf"
b'bWI\x00\x05\x00\x00\x00Z\x00\x93R\xe8d\x00')
Результат разбора:
'A1': [{'B1': {'C1': 43,
{'C2': 3469294127,
'C3': 2856335556479035381,
'C4': [34, 31, 78]},
'B2': [31225, -27969, -6043, -9114, 27790, 26542],
'B3': [31, 177, 220],
'B4': {'D1': 0.8761528134346008, 'D2': 24063}},
'B1': {'C1': 3,
{'C2': 664336614,
'C3': 9389963614920625779,
'C4': [65, -97]},
'B2': [14723, 12548, 26044, -30684, -980],
'B3': [147, 82, 232],
'B4': {'D1': -0.5987717509269714, 'D2': 22370}}],
'A2': 0.9248063564300537,
'A3': -8549181271520801376}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x42 0x51 0x44 0x5b
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
3 | int8 |
4 | Массив int16, размер 7 |
5 | Адрес (uint32) структуры B |
6 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур C |
2 | Адрес (uint32) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | uint8 |
4 | Размер (uint16) и адрес (uint32) массива uint64 |
5 | uint8 |
6 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint32) и адрес (uint16) массива int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZBQD[\xbf\xd7^\x8cb\xd9\xf1\xecio\xf08\x1c\x04\xac\xf3\xe8*\xd0\xda\rC\n'
(b'\xf6\x82\xc4\x9c\x00\x00\x00}\xd7Q\xff\n\xd1\x98\xa6O\x00\x00\x00\x02'
b'\x00\x85v;\xef\\h\x98\xeaeMu.\\\xc2\x9f\xde\x002\x005\x008\x00;\x00>\xb8'
b'\xce\xc0q\xbe\xe2>\x02\x8b\xa5\x0c\xdcI\xaadY,\x0f\xd6\xe1\xd0\xe5\x05\x8f='
b'\xb8G\x99H\xcc\xf7\xa7\xed?\xb4\xdd{\x8a&\xd4\xed\x1a\x00\x04\x00\x00\x00K*'
b'j\x00\x05\x00A\x00\x00\x00k*%9\x8c')
Результат разбора:
'A1': -0.36514577535106585,
{'A2': 1768943672,
'A3': 28,
'A4': [1196, -3096, 10960, -9715, 17162, -2430, -15204],
'A5': {'B1': [{'C1': 118, 'C2': 15343},
'C1': 92, 'C2': 26776},
{'C1': -22, 'C2': 25933},
{'C1': 117, 'C2': 11868},
{'C1': -62, 'C2': 40926}],
{'B2': {'D1': -19,
'D2': 4590537442865894637,
'D3': 26,
'D4': [13316792742947470850,
10062463082697483353,
3174992527680144783,
4447383355705325479],
'D5': 42,
'D6': 106}},
'A6': {'E1': -2931281460510284209, 'E2': [10789, 14732]}}
Пример 2
Двоичные данные:
b'ZBQD[?\xe0\xfd{?{/\xba\x19:S\xdd\x8bJ\xf2\x93\xf5\rd\xf2\xa6\xe0\x14'
(b'!\x1f\xeb\xb8\x00\x00\x00uA\xee\xe5\x89\xb1\xd5\xe7L\x00\x00\x00\x02'
b'\x00}\x92)\xd2\xec\xff\xeb\xf8\xb5HX\xe3\xaf\x8e\x8f+\x002\x005\x008\x00'
b';\x00>\xbet\x9a%\xba\xbb\xfe\xd5\x07y\x87Q\xeb\xf7-\xdc\xc4L\x07\xa3\xec'
b'\xbdS\x81\xc75\xces\\SC9\xa6\xd0\x00\x03\x00\x00\x00K\xe1\x18\x00\x05\x00'
b'A\x00\x00\x00c\xf5buc')
Результат разбора:
'A1': 0.5309425582759026,
{'A2': 423252957,
'A3': -117,
'A4': [19186, -27659, 3428, -3418, -8172, 8479, -5192],
'A5': {'B1': [{'C1': -110, 'C2': 10706},
'C1': -20, 'C2': 65515},
{'C1': -8, 'C2': 46408},
{'C1': 88, 'C2': 58287},
{'C1': -114, 'C2': 36651}],
{'B2': {'D1': -57,
'D2': 3877163169583675814,
'D3': 208,
'D4': [13723763451342094037,
538610416368430556,
14144688930296779649],
'D5': 225,
'D6': 24}},
'A6': {'E1': 4750987036479317836, 'E2': [-2718, 30051]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x85 0x50 0x57 0x50
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Адрес (uint32) структуры B |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | Массив char, размер 2 |
3 | Размер (uint16) и адрес (uint32) массива структур D |
4 | float |
5 | int16 |
6 | Адрес (uint32) структуры E |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив uint16, размер 5 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
3 | Размер (uint16) и адрес (uint16) массива float |
4 | int64 |
5 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x85PWPLA6\x98\x00\x00\x00R\xfbX\xf5\xd2\xd1\x80!\xc1[\xe6\x03\xef'
(b'\x98\xa7c\xaa\xc3;z\xd8~\xedw\xc2?\x1dj/?\x1e\t\x1f\xbfy\x8c^\xbe\xb0\x97j'
b'?Y\x96$\xc8\xe1\xde\xfe?\xef\xd9]%\xfd>d\x00\x05\x00$:\x8bOY6\xbc\x00"'
b'y\xe0@A3\xa4\xdd\xbe\x7f8\x9d@yr\x00\x02\x00\x00\x00\x0c>\xca\xd3~'
b'\x13\x8e\x00\x00\x008')
Результат разбора:
'A1': 1279342232,
{'A2': {'B1': {'C1': 16449, 'C2': 3721343002362813760},
'B2': 'yr',
'B3': [{'D1': -1192, 'D2': [62930, 53632, 8641, 23526, 1007]},
'D1': -26457, 'D2': [25514, 49979, 31448, 32493, 30658]}],
{'B4': 0.3961448073387146,
'B5': 5006,
'B6': {'E1': 3370245886,
'E2': 0.9952836744286739,
'E3': [0.6149014830589294,
0.6173266768455505,
-0.9747980833053589,
-0.34490519762039185,
0.8499472141265869],
'E4': 4218552720551575586,
'E5': 31200}}}
Пример 2
Двоичные данные:
b'\x85PWP/\x84;\x0f\x00\x00\x00JC\xc7W\xd8L\xed\xcd_\x93\xe0\x1d\xd86?\xffT'
(b'\x96\x1aR\xf4\xf17K&=A\x1a\xc1="f\x85\xbf,w\xb9g\xfet\xe6\xbf\xd0\xf8\xfa'
b'"\xf7\x95\xa8\x00\x03\x00$\x18\xfcPY_\xb8\x91\xdb\x81\xa1\x80m%X\x1b\xdc'
b'\x86{JViv\x00\x02\x00\x00\x00\x0c?\x1e\x94*\xc7\xab\x00\x00\x000')
Результат разбора:
'A1': 797195023,
{'A2': {'B1': {'C1': 32877, 'C2': 2690931411316853334},
'B2': 'iv',
'B3': [{'D1': 17351, 'D2': [22488, 19693, 52575, 37856, 7640]},
'D1': 13887, 'D2': [65364, 38426, 21236, 61751, 19238]}],
{'B4': 0.6194483041763306,
'B5': -14421,
'B6': {'E1': 1744729318,
'E2': -0.26519635596045044,
'E3': [0.047144655138254166,
0.03964855149388313,
-0.673701822757721],
'E4': 1800402295829598683,
'E5': -32351}}}