Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x6d 0x43 0x42 0x56 0x55
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | Массив int8, размер 7 |
3 | float |
4 | uint64 |
5 | int32 |
6 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Массив структур D, размер 2 |
2 | int16 |
3 | int16 |
4 | Структура E |
5 | uint8 |
6 | uint16 |
7 | Размер (uint16) и адрес (uint16) массива int32 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | float |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив uint8, размер 7 |
3 | Массив int16, размер 6 |
4 | uint16 |
5 | uint8 |
6 | uint16 |
7 | uint8 |
8 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'mCBVU.\x00\x9d\xa9\xb8\x0cwV\x08\xaa\x81\xa2>Z\xb6X\xab\x96b\xc8le\xb9'
(b'\x9cwo\xf8*\xb0\xf9\xe8\xbf8\x18\xc7\xdec\xb6/\xe9\xeal\xca;6\xcaw'
b'\xdc\xbf\xcfSI?$;Vt\x84\x00\xe2\xbf\xc7\xc5I>4\xc3\xf3\x9b9Ww/\xf3x'
b'\xb4V\xd7\xa8!\x1a\x17\x8a\x01_\x84\x8cU\x01*9\x02\x16\x1dB\xb1\x945\xbc'
b'\xa0\x84L\x03\x00"\x00')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': -0.4448113946556649, 'D2': 0.786435067653656},
{'D1': -0.5625631591991334, 'D2': 0.1970435231924057}],
{'C2': -15564,
'C3': -25613,
'C4': {'E1': 57,
'E2': [87, 119, 47, 243, 120, 180, 86],
'E3': [-22313, 6689, -30185, 24321, -29564, 341],
'E4': 14634,
'E5': 2,
'E6': 7446,
'E7': 66,
'E8': -0.011082814075052738},
'C5': 160,
'C6': 19588,
'C7': [952101113, 1675544344, -353816650]},
'B2': [-99, -87, -72, 12, 119, 86, 8],
'B3': 0.31739550828933716,
'B4': 7838623550697682522,
'B5': 2006759781,
'B6': 63599},
'A2': -20438}
Пример 2
Двоичные данные:
b'mCBVU*\x00\xfd\xd4\xfa\xb7\xaa\t\x8e\xcb@\xca=\x00\x1ek\xd5*\xb7V\xa7%\xf3'
(b'\xdc\xf6\xc4\x00W\xb7\x89\x8e\xa7b\x18\xd9\xe8:\x0e\x0fE\x9d\xd6k'
b'\xea?\x9c\xb9\xea\xbc\xaaS}-m1\xe9\xbf\x8b\xbc[\xbf\xa7\x06\xcb\x19\x03\x17'
b'\x04\xea\xa1-q\x8eF\xe4OS\xcd\xedm\xa0\x82\xd2\xab\xda)\x93M\xd1G\xeb'
b'\xb5\xa3\x86\xbe\xd5\xf0\xa9\x02\x00"\x00')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': 0.8256638595271129, 'D2': -0.028652958571910858},
{'D1': -0.7872835052936484, 'D2': -0.8583456873893738}],
{'C2': 1703,
'C3': 6603,
'C4': {'E1': 3,
'E2': [23, 4, 234, 161, 45, 113, 142],
'E3': [-7098, 21327, -4659, -24467, -11646, -9557],
'E4': 37673,
'E5': 77,
'E6': 18385,
'E7': 235,
'E8': -0.2629677355289459},
'C5': 213,
'C6': 43504,
'C7': [1655148169, 988338456]},
'B2': [-3, -44, -6, -73, -86, 9, -114],
'B3': 0.09875639528036118,
'B4': 12058026446928158208,
'B5': -153291995,
'B6': 196},
'A2': -18601}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x44 0x43 0x11
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур B |
2 | Структура C |
3 | int8 |
4 | Массив double, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | uint32 |
3 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив float, размер 4 |
3 | uint16 |
4 | Адрес (uint16) структуры D |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | Размер (uint16) и адрес (uint32) массива int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CDC\x11\x00\x00\x00\x02\x00\x00\x00A\xe2+/\xcf\xfb\xe9\xe1\\\xbfvF\xb8'
(b'?\x19\xc7\xb2\xbe\xe2\r\x8a?\x01\x121\xbfH\x00s\xb3\xbf\xd3\x01\xfaU+\xbd'
b'\xf4\xbf\xc1s\x0b\xe2\x03t`?\xd1\xcf\x9e\xc3W4\xc8<\x80\x94\x8bm\x8b\x99'
b'\xcaj\xdb8\xc7+\xa6n\x85ZoH\x0b\x16\x04\xe3\x04\xb6\x9f4&\xcb\xd4\xdf'
b'\x92S\xf0\x1dD\xc3Zu W\xce\n\xc1)\x8a\xaa"\xda\x959\xe0\x18.\x96'
b'\x00\x08\x00\x00\x00S')
Результат разбора:
'A1': [{'B1': 1015059595, 'B2': 1837865418, 'B3': 106},
{'B1': -617035989, 'B2': 2792260954, 'B3': 111}],
{'A2': {'C1': -2149571826808135332,
'C2': [-0.9620165824890137,
0.6007033586502075,
-0.44150954484939575,
0.504183828830719],
'C3': 48968,
'C4': {'D1': 970987566,
'D2': -106,
'D3': [1208686084,
-486230369,
874957780,
-544058384,
491045722,
1965053902,
180431242,
-1440556395]}},
'A3': -77,
'A4': [-0.2969957191225767, -0.13632343803229485, 0.2782971294044043]}
Пример 2
Двоичные данные:
b'CDC\x11\x00\x00\x00\x02\x00\x00\x00A\xa4\xfb\xda\x84\xd3\x8a\x98X'
(b'\xbe\xb0\x12(\xbe\xec%\xa1>\xd5\x88\xc8?\n\x0c \xea4\x00k&?\xa7\xeb'
b'\x19\xb7\xff\xf3`?\xe8\x8c\x02\x83R\xb5\x16?\xee\xf1*\x11\xbbL'
b'\xb6\x08\x1f\xba\x99|@\x91#\x9e\x9d\xc6$,c\x11a\x9c\xa7>\xec_\x85\xd5'
b'\x12\x9b\x1d\x99\xe3\xb1\x8f\xbb\xa3\x87nHB\xaah\xe1\x1c\x8c\xcb\xcd'
b'\xf6\x07\x15}\x00\x06\x00\x00\x00S')
Результат разбора:
'A1': [{'B1': 136297113, 'B2': 2084606243, 'B3': 158},
{'B1': -1647958996, 'B2': 1662083484, 'B3': 167}],
{'A2': {'C1': -6558408168315381672,
'C2': [-0.343888521194458,
-0.46122458577156067,
0.41705918312072754,
0.5392475128173828],
'C3': 59956,
'C4': {'D1': -839514347,
'D2': 125,
'D3': [1055678341,
-720200931,
-1713131121,
-1146910866,
1212328552,
-518222645]}},
'A3': 38,
'A4': [0.04671554919330023, 0.7670910420326063, 0.9669390055008964]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xd9 0x53 0x53 0x4d
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив адресов (uint16) структур B, размер 5 |
3 | int8 |
4 | int32 |
5 | int8 |
6 | uint32 |
7 | Адрес (uint16) структуры C |
8 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | Размер (uint32) и адрес (uint16) массива int32 |
3 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | uint32 |
4 | Массив double, размер 7 |
5 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"\xd9SSM\xec\xa6$\x00'\x00*\x00-\x000\x00Uo\x04nqrX\x93|\xd6?\x00\x88\xa6<^"
(b"'\xc9\xf7x\xe3\x83\xbeX\xbb\xa7\xd5\xc0\x0f\x9f\xf1\x87\x9f.l\xb8"
b'\xd1\xfc\xf6\xd0>#jrD1\x8bayggrmgp\x03\x00\x00\x003\x00\x05\xb7.\x8ef\xc6U'
b'\xcb@\xb8\x91\xf9\x04\x9c\x97\xcf\xf4\xe3g\x9d\x1c\x94\xd6?\xe0\x94\n'
b'\xed\xb5\xb5\xb3\xbfT\x84\xff\x06oA\xd5\xbf\xdc\xad\xee,P\x99\xea'
b'\xbf\x8e\xd2U!\x01G\xe4?\xacjI?\xbcf\xe5\xbf\xa0\xca\x14D6\x82\xd5?\x1fx\xc5'
b'[\xc45\xafp')
Результат разбора:
'A1': 42732,
{'A2': [{'B1': -31773, 'B2': 190},
'B1': -17576, 'B2': 167},
{'B1': -16171, 'B2': 15},
{'B1': -3681, 'B2': 135},
{'B1': 11935, 'B2': 108}],
{'A3': 85,
'A4': 1903035503,
'A5': 114,
'A6': 3598488408,
'A7': {'C1': 'ayggrmgp',
'C2': [-151203400, 1780694736, -1959705486],
'C3': {'D1': -3794908967215384827,
'D2': -107890624,
'D3': 3482819588,
'D4': [0.3527900254408103,
-0.07699143445150325,
-0.3321187561360308,
-0.8312149884781621,
0.6336675311163888,
-0.6687909351415633,
0.3360725083213456],
'D5': 8119767770641823775}},
'A8': 8716656774720824968}
Пример 2
Двоичные данные:
b"\xd9SSM\x12\xcf$\x00'\x00*\x00-\x000\x00\xcfl\x97<\x81^\x85v\x1f&C\x00"
(b';\xf3\xfaaXG>s\xe6\xc7U\x83yiz+\xaa\x8a\xa2\xb0^\xa1\x9e\xef\xd5\x96\xcf\xa7'
b'\x08\xddY\xd8\xb8\xd8\x81F\xa0,-wmxaluok\x04\x00\x00\x003\x00\x8d\xc7\xca'
b'\xfc\x812\x8c\xa4{\x04-\xebU\xa8\xe4\xc80\x98o\xc3\xc5\x05\xb2?\xfe\x96\xce'
b'\x9b\x85\xfa\xe0?\x80\xec\xbc?\\g\xa0?\xc8\xa6dh\x8a\x90\xd8?@\xc3:'
b'\xab\xd0\xb8\xda?\xb0\xb8(h\xdd\xf5\xea\xbf\xc0\xabR\x96\x8f.\xcb?K\xc9\xec'
b'\x89s\x98\x1f\x92')
Результат разбора:
'A1': 53010,
{'A2': [{'B1': -14362, 'B2': 85},
'B1': 31107, 'B2': 105},
{'B1': 11130, 'B2': 170},
{'B1': -23926, 'B2': 176},
{'B1': -24226, 'B2': 158}],
{'A3': -49,
'A4': -2126735508,
'A5': 94,
'A6': 639596165,
'A7': {'C1': 'wmxaluok',
'C2': [-812198417, 1507657895, -2116503336, 757899334],
'C3': {'D1': -6589836620876560499,
'D2': -349371269,
'D3': 3370428501,
'D4': [0.07040058156380335,
0.5305812876801779,
0.0320385768704563,
0.38382206148763176,
0.4175302192843908,
-0.8425128015858458,
0.21235842552172635],
'D5': -7917441997891385013}},
'A8': 8304153207844303675}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x41 0x59 0x57 0x57
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | uint64 |
3 | int16 |
4 | int16 |
5 | Массив структур B, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | Структура D |
3 | uint32 |
4 | int16 |
5 | uint32 |
6 | Массив float, размер 5 |
7 | double |
8 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint16 |
2 | uint8 |
3 | Размер (uint32) и адрес (uint32) массива uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NAYWW\x00\x03\x00w%MR\xe1\xdb\xfd\xbe\xd5O[\x01\x1a\x00\x00\x00\x84U\xad\x03'
(b'\x18\x8b\x88\x05sF\xbd\xcd1u\x8e\x96\xf7\xbf\x08\x1c,?z^B?QP\xf3\xbd\x90\xb0'
b'\xc2\xbe-\x86&\xbf\xea|\x9b3>\xd0\xf8?\x00\x00\x00\x9b\x1c\xe7\xe1JU6t\xb1Vp'
b"\xafwHA\xb7\xec>H\xd2\x06\xbfL\xeaM<\x8e\x7f'?~\x14\xac?\x1f\xe4\x8e\xbf\xe2"
b'\xad\x0c\xe9!\x92\xf6\xf8oyb\x04\x1e\xbe\x18L\x8arE\x90\xb0\x00\x03\x00z'
b'u\x00\x00\x00\x02\x00\x00\x00\x80P{\xce\x88\xd3\xac\xc0\xd0\xbd\xa3\x00'
b'\x03\x00\x91\x15\x00\x00\x00\x02\x00\x00\x00\x97')
Результат разбора:
'A1': 'oyb',
{'A2': 2687895682622013141,
'A3': 20315,
'A4': 282,
'A5': [{'B1': {'C1': [1054, 48664, 19594], 'C2': 117, 'C3': [29253, 37040]},
'B2': {'D1': 21933, 'D2': 51940232},
'B3': 91440829,
'B4': -13007,
'B5': 1972279031,
'B6': [-0.5316798686981201,
0.9780007600784302,
0.8176414370536804,
-0.0706496387720108,
-0.16945704817771912],
'B7': -0.8277107239614727,
'B8': 63},
'B1': {'C1': [20603, 52872, 54188], 'C2': 21, 'C3': [49360, 48547]},
{'B2': {'D1': 7399, 'D2': -515222218},
'B3': 1957779056,
'B4': -20617,
'B5': 1212266476,
'B6': [0.1961136758327484,
-0.8004501461982727,
0.017394615337252617,
0.9925029277801514,
0.6245812177658081],
'B7': -0.5836243203490017,
'B8': -8}]}
Пример 2
Двоичные данные:
b"NAYWW\x00\x03\x00w\xe2E\x1b\xf4\x8f\xb7\xae'a\x97\xd3\x8a\x00\x00\x00"
(b'\x82\x8e\xd1\x8e\xa7\xb3\xa8\xce\xcc\x15\x05\xca\xf7|\xea\xc5\x02\xbf`^'
b'/?\x05fO\xbd\x00\x90\x9a?o\xc0O\xbfB\x1d[?\xca\xbe\xe1\xdc\xfbm'
b'\xf8\x1c\x00\x00\x00\x97/\x80\xb1db\xe7\xf0\x8eB\xfd\x97\xf2u\xa5u+\xbf\x13'
b'i\x9d>\xe8L\xaf?`\xf8\xfe\xbe\xd4]%\xbd\xd51\xec?\xe0Y\xc0z\xf2@\xfa\x11c'
b'fpP\x15id\x95\xd2\xc8t\x00\x02\x00z\xbb\x00\x00\x00\x02\x00\x00\x00~P'
b'\xf7\x86\xea\x822\xf2\x8b\x00\x02\x00\x8fC\x00\x00\x00\x02\x00\x00\x00\x93')
Результат разбора:
'A1': 'cfp',
{'A2': 16304468763161898535,
'A3': 24983,
'A4': -11382,
'A5': [{'B1': {'C1': [20501, 26980], 'C2': 187, 'C3': [38354, 51316]},
'B2': {'D1': 36561, 'D2': -1901612120},
'B3': 3469481221,
'B4': -13577,
'B5': 2095760642,
'B6': [-0.8764371275901794,
0.5210923552513123,
-0.03138790279626846,
0.9365281462669373,
-0.7582604289054871],
'B7': 0.20895026483672985,
'B8': 28},
'B1': {'C1': [20727, 34538], 'C2': 67, 'C3': [33330, 62091]},
{'B2': {'D1': 12160, 'D2': -1318821145},
'B3': 4035855101,
'B4': -26638,
'B5': 1973777707,
'B6': [-0.5758302807807922,
0.45371004939079285,
0.878799319267273,
-0.4147731363773346,
-0.10409912467002869],
'B7': 0.5109560395522117,
'B8': 17}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x59 0x4e 0x52
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
3 | int16 |
4 | uint8 |
5 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | float |
3 | int8 |
4 | Размер (uint16) и адрес (uint32) массива адресов (uint32) структур C |
5 | double |
6 | Структура D |
7 | Массив float, размер 3 |
8 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint16 |
3 | uint8 |
4 | double |
5 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | Структура E |
2 | Массив uint8, размер 6 |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
3 | Массив uint16, размер 4 |
4 | Размер (uint16) и адрес (uint16) массива int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UYNRXD\x8a\x91,\x0f\xda\xd9\xb4+Gxs@\xf9\xbe\x01R\xdbs\x00\x02\x00\x00'
(b'\x00|\xbfc\xe5\xc8(\x05\x06\x00\x1a\xfa\xee\xbc\x14\x8a@{\xe6\xc7N\xca-\xa3'
b'\x9a\xde\x81\xf5\x00\x04\x00\x84\xce\xd9\x88r\x1e5\xbf\\.e\xbe\xd7\x8eP\xbfz'
b'RI\xc6\x0b\xa5,\xcc\xd3"p\x05\xbf\xcc\xe6\x98b_:\x08\xdcy\xdas\x89'
b'\xd7\xce\x93e\x19\xc3\xb2\x83\xbf\xc02A \x0c\xa2p\x1b[\xda%Sl\x18\x88'
b'\x00\x00\x00R\x00\x00\x00g\x96\xab(l5i\xaeA')
Результат разбора:
'A1': 22596,
{'A2': -30063,
'A3': 11279,
'A4': 218,
'A5': {'B1': -2759533085707779847,
'B2': -0.1262926310300827,
'B3': 115,
'B4': [{'C1': 52435,
'C2': 8816,
'C3': 5,
'C4': -0.2257872085887842,
'C5': 15886969350294851219},
'C1': 25881,
{'C2': 50098,
'C3': 131,
'C4': -0.12653364243421406,
'C5': 1971409115752962184}],
'B5': -0.002428904466939441,
'B6': {'D1': {'E1': 6906,
'E2': 17202647260668356295,
'E3': [20170, 11683, 39646, 33269],
'E4': [-26965, 10348, 13673, -20927]},
'D2': [206, 217, 136, 114, 30, 53]},
'B7': [-0.8600829243659973, -0.4210076332092285, -0.9778180718421936],
'B8': -972315348}}
Пример 2
Двоичные данные:
b'UYNRS\x16\x90\xac\\\x9f0e\xe3J\xae>vg\xe6\xbe/C%\xbd\x00\x02\x00\x00'
(b'\x00|?\xea\xc6\x8c\xaa\r\x08\x0c\xa4\x15\xb45N\xc3* }/@\xb2\xeb\xd1'
b"\xc0\xcfM<\x00\x02\x00\x84L\xf7\xd2\x97+y?b,#?/\xe9\x1d\xbe*@\xc4Z'"
b'\xd1\xc3qm\xab\x02\x8c?\xe6\x19sk\xefE\x02\x96z\xfe\x05\x08\xdc\xfb3\x96'
b'\xc6\xb9\xeb\xbf?\xcd\xcc\x9d\xb8\x1ct\x982r\xcb_\x05\xd8\xcb\xee'
b'\x00\x00\x00R\x00\x00\x00g\xa9g]q')
Результат разбора:
'A1': 21270,
{'A2': -28500,
'A3': 23711,
'A4': 48,
'A5': {'B1': 7341793929776752614,
'B2': -0.17115457355976105,
'B3': -67,
'B4': [{'C1': 29037,
'C2': 43778,
'C3': 140,
'C4': 0.6906067951296395,
'C5': 10843258350424881971},
'C1': 38598,
{'C2': 47595,
'C3': 191,
'C4': 0.2328068875293965,
'C5': 3635191458221837294}],
'B5': 0.83673699582164,
'B6': {'D1': {'E1': -23531,
'E2': 12985371700725054767,
'E3': [16562, 60369, 49359, 19772],
'E4': [-22169, 23921]},
'D2': [76, 247, 210, 151, 43, 121]},
'B7': [0.8834859728813171, 0.687150776386261, -0.166262686252594],
'B8': 1512559043}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x57 0x4a 0x50 0xc2
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | float |
4 | float |
5 | Размер (uint16) и адрес (uint32) массива char |
6 | Адрес (uint16) структуры D |
7 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 8 |
2 | int32 |
3 | uint8 |
4 | int64 |
5 | int64 |
6 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint32 |
3 | Массив int64, размер 7 |
4 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZWJP\xc2J\x00O\x00T\x00Y\x00^\x00c\x00h\x00m\x00\xb1\xe1\xa7b\x13sO'
(b'\x03;\xba6\xdb\x07\xc6\xe7C\xcf\xea\xca\xda\xdd\xc6\x8a\xc5\x07\x8a\xac'
b'0\xe1\x07\x00r\x00\x00\x00\xa3\xc5\xe3>\x1al<?\x02\x00y\x00\x00\x00{\x00'
b'e}\xa8#\x89,uMZzl\xa4\xd0\xba\xb0\x1e\x1a\xb3\x0c\xf6\xbf\x83C\xed\xa57+\xbb'
b'K\xdf,\x8celoQZw\xcc\xc8\xe5mjaglcgvrf\xf3\xed_Lp\xb4\x8d\xe4j\xeep\x8d\xa2'
b'\xde\x85\x0b\x01\xfd\x87\x80\xf6pMw\xad\xee\xe9\x0c\xfe\xa3u9\xb12y\xf9\x9c'
b'\xbd\x9eV\xf7\x0e\xb0pX0\xa1\x16\xc8~f4R\xd0Y\x06\x9e\xb5O\xbb\xea\x81}f\x91'
b'++o')
Результат разбора:
'A1': {'B1': [{'C1': 747185064, 'C2': 117},
{'C1': 1819957837, 'C2': 164},
{'C1': 514898640, 'C2': 26},
{'C1': 3220573363, 'C2': 131},
{'C1': 933621059, 'C2': 43},
{'C1': 752831419, 'C2': 140},
{'C1': 1366256741, 'C2': 90},
{'C1': 3855142007, 'C2': 109}],
{'B2': 1655169457,
'B3': 19,
'B4': 566106351647018867,
'B5': -2460431136556062778,
'B6': -2220084907457803578},
'A2': 'jaglcgv',
'A3': 0.44486722350120544,
'A4': 0.7360244989395142,
'A5': 'rf',
'A6': {'D1': 1281355251,
'D2': 3834492016,
'D3': [830314496058781290,
8596651467740806401,
4140395743970717357,
6241634615480103601,
1630637696490671863,
457625888639844040,
7385201809122375070],
'D4': 1865100177},
'A7': 32101}
Пример 2
Двоичные данные:
b'ZWJP\xc2J\x00O\x00T\x00Y\x00^\x00c\x00h\x00m\x00`\xf2\x00\xff\xc3\x84e^7}F'
(b'p\x16x\xa5\xd3\x12\x82h\xde\xdd\xba\xab\x16\xf8z\xb1\x07\xb8\x06\x00'
b'r\x00\x00\x00\rj\xc5\xbe\x07e\xc0\xbe\x02\x00x\x00\x00\x00z\x00\x03HK\xde'
b'\x1d+,[Y\xcf"\xb6dtS)\xc2\x07\x8701Xu8^/w~H\x95K/\x92\xcb\xaa\x95'
b'y\x9c\xbd\xf6\xd5lsczbiqrs\xe0nM$@\x1f\xed\xe6+\x93P\xe2eO\xd2A\xd9.'
b'\xf3Y\x9aY\x84Yd$\x1eZ\xbeA\x96\xde^\xfd_\xa1\xb8s\x93\x1a,\xd3'
b'\xda\xee\r\x8d\xfaI{\xda\xf6\x00\xd3Pn\xe9\xb0\xa7\xcc\x8d\x82\xf4'
b'\xe3\x12\xe8\xce\xc1\x9e')
Результат разбора:
'A1': {'B1': [{'C1': 723377739, 'C2': 44},
{'C1': 584014171, 'C2': 182},
{'C1': 693335140, 'C2': 194},
{'C1': 825263879, 'C2': 88},
{'C1': 794703989, 'C2': 119},
{'C1': 1268074622, 'C2': 47},
{'C1': 2510998418, 'C2': 121},
{'C1': 3589717404, 'C2': 108}],
{'B2': -16715168,
'B3': 195,
'B4': 1616869769839797636,
'B5': -2459413438626814600,
'B6': -5185981304187475014},
'A2': 'sczbiq',
'A3': -0.38557472825050354,
'A4': -0.37577077746391296,
'A5': 'rs',
'A6': {'D1': 609054432,
'D2': 3874299712,
'D3': [4742940656581776171,
6450379085770338009,
-2407664664971434908,
1915001503381192030,
5330728199927812908,
-1626273548249671045,
1361200353957947312],
'D4': -1631465752},
'A7': 18435}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x49 0x48 0x86
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | uint8 |
3 | Размер (uint16) и адрес (uint32) массива uint32 |
4 | int8 |
5 | Адрес (uint32) структуры F |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | uint16 |
4 | Адрес (uint16) структуры D |
5 | int16 |
6 | uint8 |
7 | Адрес (uint16) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
3 | double |
4 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint32) массива int32 |
3 | int16 |
4 | uint16 |
5 | Размер (uint32) и адрес (uint32) массива float |
6 | uint8 |
Структура F:
Поле | Описание |
---|---|
1 | uint16 |
2 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CIH\x86\x00\x00\x00\x9c\x1d\xf0\xaa\xf8\xd5?\xea\xdc\x844\xb4\x9c'
(b'\xe8\x91\x13\xe0\xc5\x1fc+3N-f\xb8\xdaQ>\x8e\xf4I>\x03y\xf4\xbfl}\x84\xbe'
b'\xa5\xbfx=\xef\xce`\xe3\xcd\x00\x00\x00\x03\x00\x00\x00\x175\x1d\x8c'
b'\x8a\x00\x00\x00\x05\x00\x00\x00#\x07\xcdj\x86\xbf\xb6\xbd\xae\xcd\xe0\xc2'
b'\xe0,%\xd9S3\xb8i\xe3\xe6\x9d\xbe\x9fz\xba\xbf\x06*\x8a?Jw4\xfbz\x00\x00\x00'
b'\x02\x00\x00\x00[\xd7\xbe29\x00\x00\x00\x03\x00\x00\x00c\xe8\xb29-\x8eN\xd7'
b'\xa6\xa0\x9b\xa3\xf5\xd7\xc6>?\xd0\x12\x88\xa9X\xbf\xc4CxJ\x12\x00\n\x95\xd8'
b'J\x007E\x07Jo\x00N%\x8d\x97\x00o^\x00\x03\x00\x00\x00\x86\xab\x00\x00'
b'\x00\x92')
Результат разбора:
'A1': {'B1': [{'C1': 67,
{'C2': 120,
'C3': 18962,
'C4': {'D1': 43768,
'D2': 213,
'D3': 0.8394185094265625,
'D4': -28397},
'C5': -27176,
'C6': 74,
'C7': {'E1': -7219,
'E2': [-523952285, 724782637, 1723390545],
'E3': 13597,
'E4': 35978,
'E5': [0.2792074978351593,
0.12839490175247192,
-0.9237902164459229,
-0.3237264156341553,
0.11709284782409668],
'E6': 7}},
'C1': 69,
{'C2': 7,
'C3': 19055,
'C4': {'D1': 52586,
'D2': 134,
'D3': -0.08883183027570452,
'D4': 11301},
'C5': 9613,
'C6': 151,
'C7': {'E1': -1158,
'E2': [-648858696, 1776543389],
'E3': -10306,
'E4': 12857,
'E5': [-0.3114832043647766,
-0.524086594581604,
0.7908813953399658],
'E6': 232}}],
'B2': 94,
'B3': [2990091662, 1322755744, 2611213783],
'B4': -85,
'B5': {'F1': 50750, 'F2': 0.2511312154556402}},
'A2': 7664}
Пример 2
Двоичные данные:
b'CIH\x86\x00\x00\x00\x8c\xd2\x93^hJ\xbf\xeb\xc8\r\xf9G\x1c\x00\xaa\xbf\x99'
(b'=\xb2\n[%\xb1\x85\xbe\xf8q\x07\xbe\xfc\xab\x9e\xa8\xbf\x00\x00\x00'
b'\x02\x00\x00\x00\x17Z\xc4J\xa7\x00\x00\x00\x02\x00\x00\x00\x1f\xfa\xcds'
b'\xac\xbf\xbd\xbb\xd0\x8a\xbes\xb0\x11y\xfa/G\x8d/Ros\xbf|\x15\r\xbf~v@?'
b'g\x0f\xa7\x81+\x00\x00\x00\x02\x00\x00\x00K\xfc7\x99\xa0\x00\x00\x00'
b'\x03\x00\x00\x00Sj4\xdf\xcb\xae\x8e\xb8\xf6\xb2\x0e\xa5\x89\xbfQ\xfc'
b"\xbf\xe0(\xc7\xd5\xea\xa3\xc4/\xbf \x88\x00\n\xd4O\xda\x00'\x8e\x11\x1b2\x00"
b'>\xe8\xf9\x8d\x00_\x1e\x00\x03\x00\x00\x00vm\x00\x00\x00\x82')
Результат разбора:
'A1': {'B1': [{'C1': 47,
{'C2': -65,
'C3': 8328,
'C4': {'D1': 24168,
'D2': 74,
'D3': -0.8681707256990876,
'D4': -21825},
'C5': -11185,
'C6': 218,
'C7': {'E1': -22337,
'E2': [-1724009974, 1529196933],
'E3': 23236,
'E4': 19111,
'E5': [-0.48523733019828796, -0.493496835231781],
'E6': 250}},
'C1': 142,
{'C2': 17,
'C3': 6962,
'C4': {'D1': 52595,
'D2': 172,
'D3': -0.1161470736246446,
'D4': 4473},
'C5': -5895,
'C6': 141,
'C7': {'E1': -32469,
'E2': [-97564787, 793931635],
'E3': -969,
'E4': 39328,
'E5': [-0.9846962094306946,
-0.9939918518066406,
0.902582585811615],
'E6': 106}}],
'B2': 30,
'B3': [887081902, 2394486450, 245729727],
'B4': 109,
'B5': {'F1': 20988, 'F2': -0.5049781015451278}},
'A2': 53907}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xee 0x44 0x4b 0x5a 0x48
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
3 | Адрес (uint32) структуры B |
4 | int8 |
5 | Размер (uint32) и адрес (uint32) массива int16 |
6 | float |
7 | double |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | double |
4 | Массив структур C, размер 5 |
5 | float |
6 | Размер (uint32) и адрес (uint16) массива uint8 |
7 | Структура D |
8 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
3 | uint64 |
4 | Массив uint32, размер 7 |
5 | uint32 |
6 | int32 |
7 | uint64 |
8 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xeeDKZH\x9caT?\x15:\x17\xa3\xd4\x9f\xdb\xeb.\x00\x00\x00z\x03\x00'
(b'\x00\x00\xb1\x00\x00\x00u:\xa9>\xa8\x9b\xd2\xbb\x08\xb1\xe0?df6\xb1\xe0\x02'
b'\x00\x00\x00*\x00\x00\x008\xd5uJW\x9b\xda\xbfm\xa8\x81$\xf9\x9e\x84\xbe<'
b'\xfc]l$\xc6\x90\xbe\xddv\xc0\x7f\xb2\xce\xa3>\x91\x9eN\xc5\x8d\xf8_\xbf\xa1'
b'\xa5\xfb\x16j\xfc\x03?Dx\xec\xbe\x02\x00\x00\x00,\x00\xea\xa4R.\xa2\x84\t'
b'\x0cj\x92`\xcd}O\xbb\xf2l\t1\x13K\xe7\x9f3Pc\nA\x8dc\xbc\x05\xde\xd9x'
b'E\xfd<\xe9\x14\xae\xb3\xc3^;*\xde\xac\x99\xe6\xf9!!\x82\x0e\xe2\xc7D\xeb'
b'\xfa|\xe5YI\xcd\x81\x9c\x88\xb5\x96')
Результат разбора:
'A1': 0.8296144008636475,
{'A2': 16995353354430790165,
'A3': {'B1': -32,
'B2': 'df',
'B3': -0.4157312609816759,
'B4': [{'C1': 612477037, 'C2': -0.25902536511421204},
'C1': 1818098748, 'C2': -0.28276169300079346},
{'C1': 2143319773, 'C2': 0.3199363350868225},
{'C1': -984703343, 'C2': -0.8748863339424133},
{'C1': 385590689, 'C2': 0.5155702829360962}],
{'B5': -0.46185505390167236,
'B6': [54, 177],
'B7': {'D1': 42218,
'D2': -2069746094,
'D3': 5727960115742116873,
'D4': [158134971,
3880457009,
1666200479,
1670201610,
3655206332,
1023231352,
3014530281],
'D5': 708533955,
'D6': -426136354,
'D7': 4956178466885149177,
'D8': 64235},
'B8': 1230628220},
'A4': 122,
'A5': [-32307, -30564, -26955],
'A6': 0.33052411675453186,
'A7': 0.5216106098567836}
Пример 2
Двоичные данные:
b'\xeeDKZH\t\xc9\xb3\xbd\x9byo\xc0\x1b\x876\xe2.\x00\x00\x00\xf8\x03\x00'
(b'\x00\x00\xb1\x00\x00\x00\xb7z\x9e\xbe<\xc6\xf7P\xef\xed\xdd?qnj\xf8\xc7\x02'
b'\x00\x00\x00*\x00\x00\x008\xf7\xeb\xc2e\x02\xe4?\xf1\xcb<\xa2\xb9{\x03\xbfk'
b'\xce\x95\x8d\xa5\xbc\x8a>\x12Jv\xaea\x10F?xM\xc9y\xe2[$\xbf3\x02\x97O\xe3'
b'WQ?iI\x84\xbd\x02\x00\x00\x00,\x00#\x97\xd5\xd1\x8dA\x8a\x9cNu\xd2'
b'\xf42\xe8\xe5\xf95\x11\xaa(h?\xcb\x8epZ\xd4\xc1D\xd0;\xb8\xb8\x01\x1d'
b'\x03\x16\x95\xb9\xc5\x99\xb0\x8b\x855\xe8$\x01W1\x8eigO/\xc3+\x95\x9c'
b'\xac\x15\xb9s#w\x80HRT\x86')
Результат разбора:
'A1': -0.08778578788042068,
{'A2': 16300364454576486811,
'A3': {'B1': -57,
'B2': 'qn',
'B3': 0.6252926642480139,
'B4': [{'C1': -1573073935, 'C2': -0.513606607913971},
'C1': -1919562133, 'C2': 0.27097049355506897},
{'C1': -1367979502, 'C2': 0.7736874222755432},
{'C1': 2043235704, 'C2': -0.6420270204544067},
{'C1': 1335296563, 'C2': 0.8177472949028015}],
{'B5': -0.06459314376115799,
'B6': [106, 248],
'B7': {'D1': 38691,
'D2': 1099813333,
'D3': 16731704750383209610,
'D4': [288750053,
1063790762,
1517326027,
3494166996,
28883003,
2501247773,
2962867641],
'D5': 3895821707,
'D6': 827785508,
'D7': 10748899543612877198,
'D8': 44188},
'B8': 594786581},
'A4': -8,
'A5': [-32649, 21064, -31148],
'A6': -0.30952998995780945,
'A7': 0.4676473894788591}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x7 0x47 0x47 0x43 0x56
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Адрес (uint32) структуры B |
3 | int16 |
4 | Структура D |
5 | Размер (uint32) и адрес (uint32) массива uint8 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | uint8 |
4 | uint16 |
5 | Размер (uint16) и адрес (uint32) массива структур C |
6 | int16 |
7 | uint32 |
8 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | int16 |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | double |
3 | int16 |
4 | Адрес (uint16) структуры E |
5 | uint16 |
6 | double |
7 | Размер (uint32) и адрес (uint32) массива float |
8 | float |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
3 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x07GGCV*\x1b\x00\x00\x00[>\x0f?\x19\xa1\xa1\xbf\xcduC\xc5\xcd)p\x8aC\x00'
(b'tf\x97\xbf\xd84\xa4\xf4\xf9#\xb4\x00\x00\x00\x02\x00\x00\x00\x81\xbf'
b'*\x83\xc4\x00\x00\x00\x06\x00\x00\x00\x89gicshufb\x07\xbf\xd68\xb9\x15\x87-X'
b'>\x9c&Q\xbf\xe95\xc28\xda\xc0r\xb0\x86!\xefy\x00\x08\x00\x00\x00;\x06'
b'\xb8M\x00\x02\x00\x00\x00C\xafE\xec\x06F\x9a\x13a\xbe\xa9\xd1+N{\xdcs'
b'\xc7\xef)M4>\xa6z\xbf\xbfO\xac$\xa3j\x97^\xaf\xa1')
Результат разбора:
'A1': 10779,
{'A2': {'B1': 61305,
'B2': 'gicshufb',
'B3': 6,
'B4': 47181,
'B5': [{'C1': 7, 'C2': -0.34721209623667937, 'C3': 16028, 'C4': 38},
'C1': 81, 'C2': -0.7878123388709481, 'C3': -20346, 'C4': 33}],
{'B6': -20667,
'B7': 3959834266,
'B8': 4961},
'A3': 15887,
'A4': {'D1': 0.6001225113868713,
'D2': -0.23014113577148576,
'D3': -30141,
'D4': {'E1': -0.3316739499568939, 'E2': 78, 'E3': 8925135864089627956},
'D5': 26263,
'D6': -0.37821315692104496,
'D7': [0.32515522837638855, -0.8112204074859619],
'D8': -0.6660730838775635},
'A5': [163, 106, 151, 94, 175, 161]}
Пример 2
Двоичные данные:
b'\x07GGCV,\x14\x00\x00\x00X\xe5\x0c\xbe7>\x80\xbf\xe2\xf4\xe3r\xf6^2\x12m\x00'
(b'q\xcb\x1f?\xe7\xba\xfe\x94\x86\xead\x00\x00\x00\x02\x00\x00\x00~?r\x97S\x00'
b'\x00\x00\x04\x00\x00\x00\x86zurde\x87\xbf\xe9\xb4\x9e-\xb4\x15\x16\xf8^S'
b'\xc7?\xde-,_\x0c\x9f\x10\x05\xd5\x96\x11%\x00\x05\x00\x00\x00;'
b'\x8d\xe6\xd3\x00\x02\x00\x00\x00@GU:+a\xe1\x80\xdd?9\x81\x95\xf3Aa'
b'\x9d\xde\x1f\xa6\x10\xc6\xbf\x01\x17#\xbc\xa8G\xb8_\x1f\x14\xce')
Результат разбора:
'A1': 11284,
{'A2': {'B1': 4389,
'B2': 'zurde',
'B3': 141,
'B4': 59091,
'B5': [{'C1': 135, 'C2': -0.8032980816502995, 'C3': -1954, 'C4': 83},
'C1': 199, 'C2': 0.4715071609702912, 'C3': 1493, 'C4': -106}],
{'B6': 18261,
'B7': 975921633,
'B8': 32989},
'A3': -6900,
'A4': {'D1': -0.17894935607910156,
'D2': -0.5923936124190219,
'D3': 4717,
'D4': {'E1': 0.724633514881134, 'E2': -13, 'E3': 4711220262545526982},
'D5': 51999,
'D6': 0.7415764714163058,
'D7': [-0.5042592883110046, -0.02054201066493988],
'D8': 0.9476215243339539},
'A5': [95, 31, 20, 206]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x89 0x4a 0x45 0x50 0x58
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint64 |
3 | uint64 |
4 | int32 |
5 | Массив структур C, размер 2 |
6 | Адрес (uint32) структуры D |
7 | Размер (uint32) и адрес (uint16) массива uint8 |
8 | float |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 5 |
2 | int8 |
3 | int64 |
4 | Размер (uint16) и адрес (uint32) массива int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x89JEPX?gE\x80\x00\x00\x00\x02\x00\x00\x00O2\x0b\xdeQ\x7f\x17\xa3'
(b'\xb7\x17\xce\xdfSz\x8e\xff\x95\x0cR\x0e\x191\xf2 x\x9b.)\xe7~\x9f\x8b'
b'\x89\xc2\x16\xf2\xe6\xa3\xb6\xc9Vt\xcd\x17\xb8\xb1u\xb7\xe3\x00\x00\x00'
b'W\x00\x00\x00\x02\x00z\xbe\x1f\x18Lmj\xc7\xb3\xdbV?k\x11\xd3\xcb:\xad'
b'\xfdE\xec\xe4\xf7 \x03\xdd\x06\x97N\xbb$\xcf#\x1d=\xd9\x80g\xbd\x7fb\xb9'
b'\x00\x03\x00\x00\x00Q\x0e\xea')
Результат разбора:
'A1': {'B1': 0.9034042358398438, 'B2': 'mj', 'B3': 3606220368246186935},
{'A2': 1715554057706209173,
'A3': 887787577920331896,
'A4': -1691473433,
'A5': [{'C1': 9124164793858978534, 'C2': -23626},
'C1': 14507911673835729269, 'C2': -18461}],
{'A6': {'D1': [299092794, 2919056876, 3841400835, 3708196686, 3139751715],
'D2': 29,
'D3': 4456734489309045433,
'D4': [-14413, -9386, 16235]},
'A7': [14, 234],
'A8': -0.15536612272262573}
Пример 2
Двоичные данные:
b'\x89JEPX\xbf\t\xac\x92\x00\x00\x00\x02\x00\x00\x00O\xc5\xd8\xbf\\f\xf94'
(b'\xa8\x1e\xab\xdfc\xb4\xf6\x8bw\xe51\xd6\xe0\\N\xff<\xf4H`4hr\x8b'
b'\xd3\x0e\x1f\xe1A\xe8+ZeK\xeb\xe3h\xa76$\x05\x00\x00\x00Y\x00\x00\x00'
b'\x02\x00|>\xe3Nvuu\xf96\xb1\x1a\xaa<X\x16\x9c\xe3\x07\xbcp\x9f\xd2'
b'\xc3\r\xdab,\x0cJ\x17\xa8g^\xfb&\x06\xbd\x08H\xa6\xce[\xcab\x00\x04'
b'\x00\x00\x00Q\x90C')
Результат разбора:
'A1': {'B1': -0.5377894639968872, 'B2': 'uu', 'B3': -4190389049682742104},
{'A2': 2210105661486173047,
'A3': 16515217567654018876,
'A4': -196583372,
'A5': [{'C1': 7526231665880850753, 'C2': -6101},
'C1': 6513695912565974838, 'C2': 9221}],
{'A6': {'D1': [2632124348, 1889522371, 232415788, 206182312, 1734277926],
'D2': 6,
'D3': -4825527119463593374,
'D4': [-1738, -20198, -21956, 22550]},
'A7': [144, 67],
'A8': 0.44395798444747925}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x59 0x59 0x54
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
3 | int8 |
4 | Структура C |
5 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив int8, размер 3 |
3 | uint16 |
4 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int8, размер 5 |
2 | int32 |
3 | Адрес (uint32) структуры D |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
3 | Размер (uint16) и адрес (uint32) массива uint32 |
4 | uint16 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VYYTdH[\xcaG\xc5\x0eO\x03\x00\x00\x00Q\x00\x00\x00\xfd\x9e%\xe0_\x08\x04R'
(b'\xb1\xcdi\x00\x00\x00Z\xe5\xb34k\xc2\xd3\xf4\x98\x91=E\x16\xdey\x19;\xbd'
b'\xd9\xd2\xf6\xbd`\x9d*\xe41#\xc1!\xf6\xf9~\xc5\x13\xba\xad|\x0b\xa4\xaf\xae'
b'\xe5M\xc8FM$\x00\x00\x003\x00\x00\x00B\x00\x00\x00\xed\xa7\x0fWz\xcb\xf3'
b'\x9e\xf0\x9a\x8e4\xf8\xe8\x12\xfb\x12\xb7\xd5\xbf\x9e\xdeSu\x03\x00]'
b'\x00\x00\x00\xd5GQ')
Результат разбора:
'A1': 5696707490798585956,
{'A2': [{'B1': 13491,
'B2': [107, -62, -45],
'B3': 39156,
'B4': 4258568917418851729},
'B1': 55741,
{'B2': [-46, -10, -67],
'B3': 40288,
'B4': 18011620873117754410},
'B1': 50558,
{'B2': [19, -70, -83],
'B3': 2940,
'B4': 5568358226181664676}],
'A3': -3,
'A4': {'C1': [-98, 37, -32, 95, 8],
'C2': -844017148,
'C3': {'D1': -0.33929895895893436,
'D2': 1968430750,
'D3': [1460643821, 2666777466, 881761008],
'D4': 18389,
'D5': 81}},
'A5': 58714}
Пример 2
Двоичные данные:
b'VYYT:]\x82~\x9eMb\xdc\x02\x00\x00\x00B\x00\x00\x00n`\xf2\xab"\xffDk'
(b'\xee8R\x00\x00\x00\xa7c\x84\xfe\xa7R@*\x14\x8dbE\x1d\xe1+m\x8b\xd8'
b'\xc9\xdd"\xf9\xa0\x9e\xe7\x8bd)\xe4)\xc2\xa2$\x00\x00\x003\x00'
b'\x00\x00\x97\x0f\\\xef\xc4\xf5\x1dfR\x1e\xa8j\x05\x9e\xe7\xbfyio\xcd\x02\x00'
b'J\x00\x00\x008\xdb\xa0')
Результат разбора:
'A1': 15880340579184434490,
{'A2': [{'B1': 65156,
'B2': [-89, 82, 64],
'B3': 5162,
'B4': 10046734589592167053},
'B1': 51672,
{'B2': [-35, 34, -7],
'B3': 40608,
'B4': 11727982439549930471}],
'A3': 110,
'A4': {'C1': [96, -14, -85, 34, -1],
'C2': 955149124,
'C3': {'D1': -0.7380396922243995,
'D2': 3446630777,
'D3': [4015787927, 1713239492],
'D4': 56120,
'D5': -96}},
'A5': 25511}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x6e 0x4e 0x55 0x44
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | int32 |
3 | Размер (uint16) и адрес (uint16) массива uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив структур D, размер 5 |
3 | uint16 |
4 | int16 |
5 | int64 |
6 | int16 |
7 | Размер (uint16) и адрес (uint32) массива float |
8 | Массив int16, размер 4 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив uint8, размер 5 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'nNUD(\x00\x00\x00\xeb\xc4G$\x03\x00r\x00\xa8\xf0H\xdd\x17\x85*\xe3'
(b'\xeb\xa2\xe3\xbe\xf7\xaf\xbe>+\x80\x90=\xf00\x14?\xb4\xbe\x17\x0e'
b'\xc4\xfe\xac\x97\xab:\xef\xee\xbb\x91\t\x8f\x98\xbf5\xbc\x04\xe9\x05>'
b"\xc6\x97\xb9m\x04\x99\xef\xbe\n\xa5\xc1'\x93\x84P\x89\x9f\xb5\x8c\x9e"
b'\x1b\xe9!\xc2\xb2\x98\xb6I;\xf6\x88\xe2e\xea\xe8\x11\x04\x00\x18\x00'
b'\x00\x00C=\xab\x02p\x7f\xd0F<N7\x8c\xca\xfdZ$\xd1\xfbdD')
Результат разбора:
'A1': {'B1': {'C1': 180,
{'C2': [{'D1': -1005709378, 'D2': [254, 172, 151, 171, 58]},
'D1': -1849954577, 'D2': [9, 143, 152, 191, 53]},
{'D1': 99157180, 'D2': [62, 198, 151, 185, 109]},
{'D1': -1091593980, 'D2': [10, 165, 193, 39, 147]},
{'D1': -1618390908, 'D2': [181, 140, 158, 27, 233]}],
{'C3': 49697,
'C4': -26446,
'C5': -1556589018312128074,
'C6': 4584,
'C7': [-0.4446023404598236,
0.3724362552165985,
0.07055696099996567,
0.5788717269897461],
'C8': [15683, 683, 32624, 18128]},
'B2': 608683243,
'B3': [2352434748, 609942986, 1147468753]},
'A2': 16369042133174775976}
Пример 2
Двоичные данные:
b'nNUD(\x00\x00\x00[ /\x17\x03\x00r\x003\xd1\x04\xa7\xaa\x07-\x99\x18#\xe8='
(b'E\x13\xf5=\x86\xc4\x04\xber\x15.\xbfP~\xc9j\xa5\x92\xfeg\xd2\xb4\xedS'
b'\x16\x96\x9bUo\xc4\xaa\xbf \xa2\xb4\xdc\x95E\xd8wr\x1d\xdd\xfc\x11\xaf%\x9e'
b'\x83\xads\x151\x8b\x08\xb5G\x12ZBa\xef\xe6Bd\xef\xbe\x05\xd4\x7f\x8b\xea'
b'\x04\x00\x18\x00\x00\x00\n\xb5%\x91<b|an)\xbd~U\x14d"p\xaa\xac\xce')
Результат разбора:
'A1': {'B1': {'C1': 80,
{'C2': [{'D1': -1519728258, 'D2': [146, 254, 103, 210, 180]},
'D1': -1776921619, 'D2': [155, 85, 111, 196, 170]},
{'D1': -1264443201, 'D2': [220, 149, 69, 216, 119]},
{'D1': -52617870, 'D2': [17, 175, 37, 158, 131]},
{'D1': 823489453, 'D2': [139, 8, 181, 71, 18]}],
{'C3': 16986,
'C4': -4255,
'C5': 9210993455497757414,
'C6': -5493,
'C7': [0.11334818601608276,
0.11966565996408463,
-0.12965592741966248,
-0.6800147294998169],
'C8': [-19190, -28379, 25148, 24956]},
'B2': 388964443,
'B3': [2126326126, 576984149, 3467422320]},
'A2': 11037486691282899251}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x48 0x48 0x4d
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
2 | uint64 |
3 | Структура C |
4 | uint64 |
5 | uint16 |
6 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | int16 |
3 | int8 |
4 | Размер (uint16) и адрес (uint32) массива char |
5 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | Массив int8, размер 6 |
4 | int16 |
5 | uint16 |
6 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | int8 |
3 | Массив uint64, размер 4 |
4 | Массив double, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XHHM\x02\x00\x00\x00\x96\x00\x00\x00\xe4\x1b3\xc6\xba4\x0c\xa0\x11Qj\x9c'
(b'\x1f\xb0=\xec\x9c_\x11\xdd\xeb\x8b\xd4\x13\x93\xc0\xc4y\xde\xe6s=g7\\;'
b'\xd1h\x0f`\xe1\x1dZ\xe0h\xc9\x05\x1b\xd4?\xff\x83\xd5]$or\xe15TWWB\xef'
b":\xbcr\x82\xc2\xdc|\x88!\xde\x1a\\'\xd2\x13\xbepK\xe7\xbci\xe9\xbf\x98"
b'T\x14a\x84<\xdf\xbfaoki\xa6\x1d\xfc\x1f\xb7s\xef\xbf\x9f3\\\x04\x00'
b'k\x00\x00\x00\x84pye\xb0\xe3*"\xc8\\\xb7?\xbf<Q\x03\x00\x81\x00\x00'
b'\x007o\x00\x00\x00\x84\x00\x00\x00')
Результат разбора:
'A1': [{'B1': -0.9828754067138348,
{'B2': 13215,
'B3': 92,
'B4': 'aoki',
'B5': -124},
'B1': 0.09125948747795465,
{'B2': 15551,
'B3': 81,
'B4': 'pye',
'B5': 55}],
'A2': 11532650722582797284,
'A3': {'C1': 17,
'C2': 81,
'C3': [106, -100, 31, -80, 61, -20],
'C4': 24476,
'C5': 56593,
'C6': 8774349711949990891},
'A4': 4277354662647293662,
'A5': 26833,
'A6': {'D1': 14513096476854411279,
'D2': 5,
'D3': [2620485321099301915,
4780385548669907567,
8997280021105883887,
1428247308371108232],
'D4': [-0.7941574590181728, -0.48806867103969287]}}
Пример 2
Двоичные данные:
b'XHHM\x02\x00\x00\x00\x96\x00\x00\x00\xa1b.\xf1p\x1b2\xd0Ye\x163\xc2C\xdb\xff'
(b'|x\xbdF\xab\x0ey\xe6RU\n\xb2\xc8\xd4\x12\xef\x8c\x96b#\x08M\xd1yX\x89E\xe7'
b"\r\x82\xe6 \x9e\xbd\xcd\x1b\xdb\xc9\xcd\xe8\xf4A'\xb4\xf2%/\x8aA\xeb\xfdx"
b'c\xe33\x9b?o\x9c4\x1a\x9e\x90\xae)\xfe\xe4j;\xe9?Hmmw\xbc\xd2\xc1?aaju\xa2'
b'\x06&\xa2Q\xbc\xec?7\x8e\xe2\x04\x00k\x00\x00\x00\xc7rqvX\xb7\x82\x89'
b'\xf0F\xdf\xbf\x98O\xb7\x03\x00\x81\x00\x00\x00\xaco\x00\x00\x00\x84\x00'
b'\x00\x00')
Результат разбора:
'A1': [{'B1': 0.8979881445850035,
{'B2': -29129,
'B3': -30,
'B4': 'aaju',
'B5': -57},
'B1': -0.4887048094632198,
{'B2': 20376,
'B3': -73,
'B4': 'rqv',
'B5': -84}],
'A2': 15002083480621179553,
'A3': {'C1': 89,
'C2': 101,
'C3': [22, 51, -62, 67, -37, -1],
'C4': 30844,
'C5': 18109,
'C6': 12829160303060651691},
'A4': 2549765871095698632,
'A5': 19720,
'A6': {'D1': 9371400685470906833,
'D2': -26,
'D3': [14828624160556424736,
3397388349487576296,
3738941486954922378,
10420795401047064475],
'D4': [0.7885031197086414, 0.13924365836542507]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x52 0x4a
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint8 |
3 | Адрес (uint32) структуры B |
4 | int8 |
5 | Размер (uint32) и адрес (uint16) массива char |
6 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 2 |
2 | float |
3 | Массив адресов (uint16) структур C, размер 3 |
4 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | double |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int64 |
3 | uint32 |
4 | uint64 |
5 | int64 |
6 | Массив uint8, размер 8 |
7 | uint16 |
8 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HRJm!\x9c\x08\t^M\x9f\x95N\x00\x00\x00\x85\x03\x00\x00\x00[\x00^'
(b'\x00\x00\x00\xd0\xc0\xed@\xc0U\xea\xbf\xf5\x8c\xa7\x81\x8d\xcb$\xd8?"0p\xb0'
b'\xe6)\xe2?\xae\xeeT\x8f\xaf\x16\x13\xe4\xbf\xa6\xfeB\xfd\x8b_\xe3'
b'\xbf8\xe0\xb2p\xcb\x87\xd1\xe5\xbfki#\xca\x1a?\x1b\x00,\x00=\x00\xc7a'
b'fj\x14\xe9\x1b\xaeyK\xea\xbf\xe5\xfcE\xb3\xebw`j\x9e\xe3\xa0[\xe3a\xdbA,\x86'
b'\xb0\xd6~\x05\x89od\xad\xaei\xdb7\xacWEW\xf9\x17\x03\xaa\xb6A\x93>')
Результат разбора:
'A1': 11478934418129428845,
{'A2': 149,
'A3': {'B1': 'ki',
'B2': 0.6046468615531921,
'B3': [{'C1': -0.8229676502360466, 'C2': -11, 'C3': 0.3772457963847209},
'C1': 0.5676148840007083, 'C2': -82, 'C3': -0.6273301533607574},
{'C1': -0.6054134317891637,
{'C2': 56,
'C3': -0.6818274472658139}],
'B4': -57},
'A4': -123,
'A5': 'afj',
'A6': {'D1': -0.8217132950369739,
'D2': 7665258419993312485,
'D3': 1537270686,
'D4': 15470012244659233251,
'D5': 7615214666809673086,
'D6': [219, 55, 172, 87, 69, 87, 249, 23],
'D7': 43523,
'D8': 0.2876107096672058}}
Пример 2
Двоичные данные:
b'HRJ\xd9E>(\xaf\x1f\xe5\xe2\xc6N\x00\x00\x00\x12\x02\x00\x00\x00[\x00]'
(b'\x00\x00\x00^f\xb2P\xa3\x94\xe8\xbf"\xe0\xc2\x01\xb9\x16\xf3\xad?\x00A\t\xed'
b'c)\xcc?d\xc0\x0e\xe6\xa4\xd9\x88\xa3?0A\x17\nT\xcb\xec?f\xb04\t\rk\xdd'
b'\xc5?fv\xf0\xa8\x06>\x1b\x00,\x00=\x00\\uw\x88\xcf\xc0^Cb\xd6?\x98\xdf~'
b'\x9a\xcf\xc7\xde\r\x05\xb7\xb5\x18\xa5\\,{\x98+1\xd6\x07\xa1\xfb'
b'\xda$\xe9\x14Ps\xe6_\x07\x94]\xc6\x0cme\xfcY\x8c\xbd')
Результат разбора:
'A1': 16349508859393361369,
{'A2': 198,
'A3': {'B1': 'fv',
'B2': 0.13150382041931152,
'B3': [{'C1': -0.768144281016429, 'C2': 34, 'C3': 0.05849524505982173},
'C1': 0.22001313280134838, 'C2': 100, 'C3': 0.038153458956939},
{'C1': 0.8998203465544403,
{'C2': 102,
'C3': 0.17081964622994894}],
'B4': 92},
'A4': 18,
'A5': 'uw',
'A6': {'D1': 0.34974750760306295,
'D2': 999455861786992536,
'D3': 414562053,
'D4': 15434165331876928677,
'D5': 5770493367070466311,
'D6': [115, 230, 95, 7, 148, 93, 198, 12],
'D7': 25965,
'D8': -0.06853100657463074}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x4b 0x4d 0x4a
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | double |
3 | Размер (uint32) и адрес (uint16) массива char |
4 | Адрес (uint16) структуры B |
5 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint16) массива структур C |
3 | Размер (uint16) и адрес (uint32) массива int16 |
4 | Массив int32, размер 4 |
5 | Адрес (uint16) структуры D |
6 | Размер (uint32) и адрес (uint32) массива uint32 |
7 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | int16 |
3 | int32 |
4 | uint8 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MKMJ\xdf@\xc0\xe8\xf2\xb2\xa4\xe8?\x03\x00\x00\x00\x16\x00W\x00\xdadx'
(b'w!\x1e\xecJ\xd0\xbf\xdc`\xb0\xe9\x10HSc6\xf4\xb9h*\x8a\xd8\xdfR=7\xa0S'
b"v'\xd39\x95\xbcY\xa3\xb2\xe0\x9b\xa8\xc1cA\x07\xcb\x1ePQLq\x07Q\x82P\xe7\xee"
b'\xe8\xe4\xcf\xddB\xfe\xf9\xf0\xf4!\xbf\x05\x00\x00\x00\x19\x00\x02\x007'
b'\x00\x00\x00s\xad\x18\xd5\xb2\xf9\x9cF\x81\x1b\xd5\xbaR\x14\x91\xf5;'
b'\x00\x03\x00\x00\x00K\x00\x00\x00S.\xe4\x81')
Результат разбора:
'A1': -33,
{'A2': 0.7701048607177725,
'A3': 'dxw',
'A4': {'B1': -0.6326436996459961,
'B2': [{'C1': 7713, 'C2': -1076868372},
'C1': 24796, 'C2': 1209067952},
{'C1': 25427, 'C2': 1757017142},
{'C1': 35370, 'C2': 1028841432},
{'C1': 41015, 'C2': -752388525}],
{'B3': [-27335, 22972],
'B4': [-719803021, 1184692658, -1160438911, -175041454],
'B5': {'D1': 4711822565073531555,
'D2': -13561,
'D3': 1280397342,
'D4': 113,
'D5': 7},
'B6': [3880813137, 3487885550, 4194190045],
'B7': -2115752365},
'A5': 218}
Пример 2
Двоичные данные:
b'MKMJ\xae\xb4\xd2\x9fH\xbe/\xd0\xbf\x03\x00\x00\x00\x16\x00S\x00\xdaix'
(b'c\xbbr\xd5\xc2\xa5M\x01\xd3/\xa6:d\xb3\x92j\xdcu\x9f\xecF\xe5ih'
b'\xe4\x7f\xcb\x1dUF=\x1d)\x9b\x1a2{P\xfd\xee\x95\xed\xe4E\xe5\xd3\x00<'
b'\x04\x0e\xc7\x03\x89\x9a\xf7W\x84J\x8f\x95O\x9e>\x05\x00\x00\x00\x19'
b'\x00\x02\x007\x00\x00\x00\x99z\x88\xdb\xfaf\xc9\x88X\xac.$\x86\xd7\xaa\xb3;'
b'\x00\x02\x00\x00\x00K\x00\x00\x003\x00nd')
Результат разбора:
'A1': -82,
{'A2': -0.25291401951043757,
'A3': 'ixc',
'A4': {'B1': 0.3092009127140045,
'B2': [{'C1': 29371, 'C2': 1302708949},
'C1': 54017, 'C2': 1681565231},
{'C1': 37555, 'C2': -1619665814},
{'C1': 18156, 'C2': -462919195},
{'C1': 52095, 'C2': 1028019485}],
{'B3': [10525, 6811],
'B4': [-611812711, -2000066822, 607038552, -1280649338],
'B5': {'D1': 16496005863812660018,
'D2': -6843,
'D3': 71041235,
'D4': 14,
'D5': -57},
'B6': [4154099971, 2404025431],
'B7': 1684930611},
'A5': 218}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa3 0x44 0x41 0x57
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | uint64 |
3 | double |
4 | int32 |
5 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
6 | uint16 |
7 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int8 |
3 | int8 |
4 | uint32 |
5 | uint32 |
6 | Адрес (uint32) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint32, размер 2 |
2 | uint16 |
3 | uint8 |
4 | uint16 |
5 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
3 | Размер (uint32) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xa3DAW\x00\x02\x00\x00\x00,\xd8/\xf9\xca\xc3)\xe7D\xbf\xda&[[\xb1t\x882\x07'
(b'ww\x00\x00\x00\x02\x00\x00\x00\x90[\xc7rGJxcv\xd3\x9c\xb4\xe2\xbf-'
b'\x00\x00\x00\x03\x00\x00\x00.\xd8\x85\xb2Ak\x03\xc1&\x19\xbf\xadI'
b'\x9d\xff\xa93X\xea\xab#\xb5\xcdZ\x19\x8e2\x1c\xdb\xb9lX\x00\x00\x001\xb6'
b'@\xd6 \xf6s\x00\x00\x00\x03\x00\x00\x00_\xfa\x18\x98r\xc4\xb7N\xef:u\xcc'
b'\xdd%N\x87\xe9\xfds$\x13\x88\x15\xe5-D`\xaa\xe3\x87\xea\xde\x00\x00\x00b'
b'\x00\x00\x00<\x00\x00\x00m')
Результат разбора:
'A1': 'cv',
{'A2': 15577944285350848324,
'A3': -0.4085911174241308,
'A4': 839350135,
'A5': [{'B1': {'C1': [3632640577, 1795408166],
'C2': 6591,
'C3': 173,
'C4': 18845,
'C5': 18422312207722947509},
'B2': -51,
'B3': 90,
'B4': 428749340,
'B5': 3686362200,
'B6': {'D1': -30, 'D2': 48941, 'D3': [211, 156, 180]}},
'B1': {'C1': [4195915890, 3300347631],
{'C2': 14965,
'C3': 204,
'C4': 56613,
'C5': 5658748731582059400},
'B2': 21,
'B3': -27,
'B4': 759455914,
'B5': 3817335518,
'B6': {'D1': 32, 'D2': 63091, 'D3': [182, 64, 214]}}],
'A6': 23495,
'A7': 1917274744}
Пример 2
Двоичные данные:
b'\xa3DAW\x00\x02\x00\x00\x00,\r\xf2\x1b\xf1\x8b\xca(\xee\xbf\xdc\xa8v\xaa\x82'
(b'\xe2\xa4\xcd\xfa\x91\xd2\x00\x00\x00\x02\x00\x00\x00\x90\xd1[\x8a\x8c\t\xc2'
b'nz\xf7\xbe\xfa\xf4\x9d\xcd\x00\x00\x00\x03\x00\x00\x00.w\x7fS\xa9'
b'\xccH\xcd\x91\xfbP,\xaf\x84m:\x91\x1d \x00\x96\xd3\xa7\xabc\x0c\xaaw\x1a'
b'\xf4\xcb\xfd\x00\x00\x001\xd9^\x0fHYH\x00\x00\x00\x03\x00\x00\x00_\x9ev\xc2'
b'I\\\xef\xd1\x15\xb1s\xa5\x9d\xa2\xfa\x18F\xfeb\x9b\x8al"yv\xaet\xe5'
b'\x83fm\x1e\x00\x00\x00b\x00\x00\x00<\x00\x00\x00m')
Результат разбора:
'A1': 'nz',
{'A2': 1004896391103391982,
'A3': -0.44778219844332967,
'A4': -839216686,
'A5': [{'B1': {'C1': [2004833193, 3427323281],
'C2': 64336,
'C3': 44,
'C4': 44932,
'C5': 7870762853060351699},
'B2': -89,
'B3': -85,
'B4': 1661774455,
'B5': 452250621,
'B6': {'D1': -12, 'D2': 40397, 'D3': [247, 190, 250]}},
'B1': {'C1': [2658583113, 1559220501],
{'C2': 45427,
'C3': 165,
'C4': 40354,
'C5': 18021231967313037932},
'B2': 34,
'B3': 121,
'B4': 1991144677,
'B5': 2204527902,
'B6': {'D1': 72, 'D2': 22856, 'D3': [217, 94, 15]}}],
'A6': 53595,
'A7': 2324433346}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x4d 0x4c 0x2e
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | int64 |
4 | Структура B |
5 | Структура D |
6 | Размер (uint32) и адрес (uint32) массива int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 4 |
2 | Размер (uint32) и адрес (uint32) массива int8 |
3 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
3 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NML.\x0eo\xb5\x03#\x9do\x04\x00\x00\x00\x03\x00Ho_\xba\x8f\x8b\x82'
(b'\xd2\xf8\x00K\x00Q\x00W\x00]\x00\x00\x00\x04\x00\x00\x00c0H\r\x8eK!'
b'\xc1\xf2\x9a\xe8\x83\xdb9\xc2\xd4P\x92\x14`\xa6fs\x00\x00\x00\x02'
b'\x00\x00\x00guue>\xef\xa3\xa3An\xbejA+\x9c\x02?;\x8f?\xe2\x8a\xbe\x06:'
b'"\x8bR\x04\xa9\xdd\xab\xd6\xae\xecNH\xccV\x8b\xfa\xeda\xa5\xb9\xca8\x13')
Результат разбора:
'A1': 1040249064032923396,
{'A2': 'uue',
'A3': 8025338186681209592,
'A4': {'B1': [{'C1': 0.46804532408714294, 'C2': 16750},
'C1': -0.22876422107219696, 'C2': -25598},
{'C1': 0.7326545119285583, 'C2': -7542},
{'C1': -0.13108113408088684, 'C2': -29870}],
{'B2': [4, -87, -35, -85],
'B3': 3479045616940728818},
'A5': {'D1': -1696037925, 'D2': 14786, 'D3': 15298888550396094067},
'A6': [-2977182482672363893, -365528630332606445]}
Пример 2
Двоичные данные:
b'NML.X\x86e\xc1|K\xb2\x12\x00\x00\x00\x02\x00H\xfaI\xdfq\x1a\xc6\xac\xf0\x00J'
(b'\x00P\x00V\x00\\\x00\x00\x00\x02\x00\x00\x00bv\x07\x13\x93o\x11'
b'\xad\xb1\x87\xa7\xe5:\x922YG\x0e\xe6d\xcd\x18\x0c\x00\x00\x00\x03'
b'\x00\x00\x00ddk\xbf\x0e\x87\x89\x03\xff\xbe\xfdK\xd9v\x0c\xbf2\x01B\x11\x1d'
b'\xbe\x93+\xbe\xa2\x078\xdf\xca;B\xc8\x8d.C\x03\xc8(}D\x9b?F\\\x19\x07W\xf4'
b'\xb7\xfa`-')
Результат разбора:
'A1': 6378897803905315346,
{'A2': 'dk',
'A3': -411552214054163216,
'A4': {'B1': [{'C1': -0.5567556023597717, 'C2': 1023},
'C1': -0.4947192966938019, 'C2': 30220},
{'C1': -0.6953316926956177, 'C2': 4381},
{'C1': -0.2874431014060974, 'C2': -24057}],
{'B2': [56, -33],
'B3': 8504787945257020849},
'A5': {'D1': -2019039942, 'D2': 37426, 'D3': 6433126975418472460},
'A6': [-3874429625292668157, -4023828533439674788, 1803506884355448877]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x41 0x46 0x4f 0x33
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint16) и адрес (uint32) массива структур B |
3 | Массив char, размер 7 |
4 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | Адрес (uint16) структуры D |
3 | Размер (uint32) и адрес (uint32) массива uint64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 7 |
2 | uint8 |
3 | uint64 |
4 | Массив int8, размер 7 |
5 | uint8 |
6 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GAFO3\x0bn\x00\x02\x00\x00\x00&nqluljm\x95\x91^g7\xd6~\xa1\x00,\x00\x00'
(b'\x00\x03\x00\x00\x00]\xbd\xcf\x8677\x836\xba\x02\x80"F\xa5\x97'
b'\x15\x9e\xe6\x94(<\x8e|Tz\xa3\xceb\xdd\xe6\xcbD\xd5\xdb:>\xd9\xdbt\x98!.\x0e'
b'\x1a\xf4g\xad\xa8\xb5"9\xb6S\xfew]\xea\x95\xa3\xc8\xbf\x0f~\x9b\x01\x14\xc8'
b'\xb2\xea\xb6^\x82\xfeW0nbp\x1e ')
Результат разбора:
'A1': 2926,
{'A2': [{'B1': 48591, 'B2': -122}, {'B1': 14135, 'B2': -125}],
'A3': 'nqluljm',
'A4': {'C1': -7669244893023797599,
'C2': {'D1': [918160000,
575055255,
362735252,
675057276,
1417323470,
1658709707,
1154865978],
'D2': 62,
'D3': 15698269122870513178,
'D4': [-12, 103, -83, -88, -75, 34, 57],
'D5': 182,
'D6': 1409185629},
'C3': [16903596858999275163, 77907764339695234, 18327170459263573536]}}
Пример 2
Двоичные данные:
b'GAFO3\x00\x99\x00\x03\x00\x00\x00&taxusmx\x9b\xf1\x10JW~\x0e\x90'
(b'\x00/\x00\x00\x00\x02\x00\x00\x00`\xc0ni\xb2\xe0.\xeb!\xa7\xbb\x10$_\xde'
b'\xf5\xc2\xbd\xff4e\\\x1ef\x00\xe3~D\xb1W\xe8\xf1\xdfi\x0c*v\xe4\x92'
b'\x97\xe2\xc0\xbe\xaek"\xbcps\xbb\xab~D\x84\xc2Z\xceN\xe9\xab\xda\xc9\xd1'
b'Y\x0e\xa7Cl\xa6N\xfcd#C_')
Результат разбора:
'A1': 153,
{'A2': [{'B1': 49262, 'B2': 105},
'B1': 45792, 'B2': 46},
{'B1': 60193, 'B2': -89}],
{'A3': 'taxusmx',
'A4': {'C1': -7209963616961950064,
'C2': {'D1': [3138397279,
3740648125,
4281623900,
510001379,
2118431063,
3908165481,
204109540],
'D2': 146,
'D3': 10944521969666302652,
'D4': [112, 115, -69, -85, 126, 68, -124],
'D5': 194,
'D6': 1523470057},
'C3': [12383432026388080451, 7829031848148943711]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x32 0x4e 0x51 0x57 0x4e
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | Структура B |
4 | int16 |
5 | int16 |
6 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур C |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint16) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Структура D |
3 | int8 |
4 | int8 |
5 | Размер (uint16) и адрес (uint32) массива uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив int32, размер 5 |
3 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"2NQWN\xd7\xbd?%\x00\x8cf'\x8b\xbc\xdah\x84Q\x00\x04\x00\x00\x00#\xd0\xef\xc0"
(b'\xe2\x00\x03\x00\x00\x00\x98lbvv\xf6W8Q\xf6\x90}\xa6\xb3K\x1c\x8c\xd4'
b'p\xe9\x85\x18\xc2\x89\x83)\xc1\x88\xa2H\xba\xa0\x0blu\xff\x00\x02'
b"\x00\x00\x00'\x05>\xcbh V\x8fc\xa4G\x1c\x14\xf8\x14w\xf9\xb0\n\xd7\xf6"
b'FA\xba\x80g\xe5\xa3B}\xe8m\x00\x02\x00\x00\x00L\x9b\xb1\xce\xaf\xd6\xc9\xab'
b'x,\xdb,F$n\xee\xa71q\xfe\xe1\x8b9\xffm\xbf\xe0Z\x88\xcfp\xc0e\x80\x00\x04'
b'\x00\x00\x00q\x00)\x00N\x00u')
Результат разбора:
'A1': 55229,
{'A2': 0.6445395946502686,
'A3': {'B1': 7361005759194760273, 'B2': 'lbvv'},
'A4': -12049,
'A5': -16158,
'A6': [{'C1': 944895632,
'C2': {'D1': 125,
'D2': [-1498199268,
-1932234519,
-2061974903,
-2094415480,
-1572291936],
'D3': 2924},
'C3': 117,
'C4': -1,
'C5': [246, 87]},
'C1': 3412598870,
{'C2': {'D1': 143,
'D2': [1671710492,
351802487,
-105903401,
-163167814,
-2140674653],
'D3': 17021},
'C3': -24,
'C4': 109,
'C5': [5, 62]},
'C1': 3603540856,
{'C2': {'D1': 44,
'D2': [-617855452,
1861134129,
1912529291,
973041087,
-530937649],
'D3': 28864},
'C3': 101,
'C4': -128,
'C5': [155, 177, 206, 175]}]}
Пример 2
Двоичные данные:
b'2NQWN\xd8\x13?!iq\xc9\xba\xe1\x81f\\\x95\xb3\x00\x05\x00\x00\x00#.\xdc\xb0'
(b'x\x00\x02\x00\x00\x00rllazyE0\xd33\x88`5\x10\x10&\x89\x18\x9f_\t\xb5'
b'\xe1\x84\xf2B\xa8\x884\xcc\xee\x1cP;k\xaft\x00\x02\x00\x00\x00(\x93\xc3\x8b'
b'K\x83?\xd8E\x1b;\xad!J\xf5>ph\xc60\x8fK\xf0\x03U\xca$wr\xee(\xfc'
b'\x00\x02\x00\x00\x00M\x00*\x00O')
Результат разбора:
'A1': 55315,
{'A2': 0.6305151581764221,
'A3': {'B1': 14536178693176071603, 'B2': 'llazy'},
'A4': 11996,
'A5': -20360,
'A6': [{'C1': 3543369824,
'C2': {'D1': 53,
'D2': [269493897,
413097737,
-1243511566,
1118341172,
-856810416],
'D3': 15211},
'C3': -81,
'C4': 116,
'C5': [69, 48]},
'C1': 2336981823,
{'C2': {'D1': 216,
'D2': [1159412653,
558560574,
1885914672,
-1890848765,
1439310967],
'D3': 29422},
'C3': 40,
'C4': -4,
'C5': [147, 195]}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x44 0x58
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 4 |
2 | Адрес (uint16) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | Массив char, размер 6 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | Адрес (uint16) структуры D |
3 | uint64 |
4 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint8, размер 6 |
2 | uint32 |
3 | uint32 |
4 | Массив uint8, размер 4 |
5 | uint8 |
6 | double |
7 | double |
8 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CDXo%0yvygcg4\xe5uguqujp\xdc\xcb\x82nbbuffh_\xe4ghbfijN\x00\x9di\x17=&\xe58'
(b'\x82\xce\xf4\xe9\xf6\x14\xf7\xc0\xb3f[\xb4\xdc\xda\xedB\xb0\xc9\xe3\xbf'
b"\x1c\x8e\x86e\xe7.\xe2?\xee\x99\xec\xb4'\xbe)\x00\xb44\xdbp<p\xbfN/z\x9c\xd7"
b'\x04cI\xd8')
Результат разбора:
'A1': [{'B1': 9583, 'B2': 48, 'B3': 'yvygcg'},
{'B1': 58676, 'B2': 117, 'B3': 'guqujp'},
{'B1': 52188, 'B2': -126, 'B3': 'nbbuff'},
{'B1': 24424, 'B2': -28, 'B3': 'ghbfij'}],
{'A2': {'C1': -0.16377609968185425,
'C2': {'D1': [157, 105, 23, 61, 38, 229],
'D2': 4107174456,
'D3': 4145346281,
'D4': [192, 179, 102, 91],
'D5': 180,
'D6': -0.6183701808175459,
'D7': 0.5682255728647223,
'D8': -26130},
'C3': 5674377460403877044,
'C4': -2861647215768864209}}
Пример 2
Двоичные данные:
b'CDX-o\xe1vyvvas\x8a.nzmpfgk]\x06\xacchupmd\r`\xd9naqaxuN\x00\xbb\xbf)'
(b'\xf5A\xc6\xe7\xccy\xde\xfd\x15\xbas\x93\xe7\x15\xc4\x05`\xf2\xdbc'
b'\xcf\xd9\xb3\xbf@\x9d\x15\xb0qb\xe8\xbfm~\xf7_\x03\xbd)\x00l\xa9\xa3\xcd'
b'2c=\xcf\xb4\x91\x1bbL(C`')
Результат разбора:
'A1': [{'B1': 28461, 'B2': -31, 'B3': 'vyvvas'},
{'B1': 11914, 'B2': 110, 'B3': 'zmpfgk'},
{'B1': 1629, 'B2': -84, 'B3': 'chupmd'},
{'B1': 24589, 'B2': -39, 'B3': 'naqaxu'}],
{'A2': {'C1': -0.032073941081762314,
'C2': {'D1': [187, 191, 41, 245, 65, 198],
'D2': 3732524263,
'D3': 1941575165,
'D4': [147, 231, 21, 196],
'D5': 5,
'D6': -0.07754226863830516,
'D7': -0.7620171012066876,
'D8': 32365},
'C3': 14933201009280002412,
'C4': 6936432159609295284}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x4a 0x56 0x54
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | int64 |
3 | Адрес (uint16) структуры B |
4 | Размер (uint16) и адрес (uint16) массива double |
5 | int16 |
6 | Адрес (uint32) структуры D |
7 | Структура E |
8 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | uint16 |
3 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур C |
4 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int8, размер 6 |
2 | uint32 |
3 | Размер (uint32) и адрес (uint16) массива int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int16 |
3 | int8 |
4 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива int8 |
2 | uint16 |
3 | uint8 |
4 | float |
5 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RJVT\xc9\x05\xbe1i\xa5|:fs\x00\x03\x00\x82\x00n\xca\x9a\x00\x00'
(b'\x00\x02\x00\xa0\x00?\xa3J\xe4bK\xbe\x14\xf1\\-\xff\xc2\x87\xc7\xc5\x15N\xab'
b'\x07\xf9\x08M\x90Nt\xef\x1c\x03\x00\x00\x00)\x00\xcf\x06\xb7\xe5Z'
b'\xb3s\xa1\xe6\xc9P\xa0\x16m\xe3D\x03\x00\x00\x00?\x00\xcd\x0e\xea'
b'\x00\xd8j\xcd=H\xf1\x1eb+\x00\xbd\xaa\xbev\x04\x00\x00\x00U\x00/\x00E'
b'\x00]\x00\xa0\x9fw\\\xe0j\xc5\xbf@:\x03\x00m\x00?\xe8\x841\xf2\x11\x91'
b'\xce?\x88\xed\xb0\xf6\x97\xb2\xeb\xbf\x90\x03\xb2}r\x8e\xb1?\xf3\x0b\x0b+(r'
b'}D')
Результат разбора:
'A1': 201,
{'A2': 7366337190394183173,
'A3': {'B1': -0.16732410922054175,
'B2': 14912,
'B3': [{'C1': [-85, 7, -7, 8, 77, -112],
'C2': 485454926,
'C3': [-30782, -14905, 19989]},
'C1': [115, -95, -26, -55, 80, -96],
{'C2': 1155755286,
'C3': [1743, -6729, -19622]},
'C1': [72, -15, 30, 98, 43, 0],
{'C2': 1992207037,
'C3': [3789, 234, 27352, 15821]}],
'B4': 63},
'A4': [0.23880218816615373, -0.865550977533915, 0.06857982224211256],
'A5': -13714,
'A6': {'D1': 3059, 'D2': 11019, 'D3': 40, 'D4': 114},
'A7': {'E1': [125, 68],
'E2': 41791,
'E3': 74,
'E4': -0.19861942529678345,
'E5': 761065748},
'A8': 255}
Пример 2
Двоичные данные:
b'RJVT\xb7\x99E\xa8\xcb5\x93\xbc\xe1m\x00\x05\x00|\x009D\xa4\x00\x00'
(b'\x00\x03\x00\xaa\x00\x9e|\x06Nm\xe0\xbeY\xda\xf2\xa3\x88\x08\x03\xff'
b"\x15\xb7 \xe9\x9c\x82B\xad\x866}\x02\x00\x00\x00)\x00\x87Z7'\t\xcc\xb3"
b'\xc8\xf4o\x0f\x87\xa2\xf12\xb1\x03\x00\x00\x00=\x00\xb3?\xf9X\x83'
b'm\x9c\xb8\xea\xf0\x15!\x9a\x81\x02\x00\x00\x00S\x00-\x00C\x00W\x00\xf0x\xb3'
b'2\xc5q\xc7\xbf7h\x03\x00g\x00\x0f\x90\xb7\xa2A\xd1\xfc\xb8?\x0efT\xd4'
b'\xa0\x13\xe3?\xf0\x8a@\xe6]\xdd\xb4?"\x8e\x12@\xb7\xdc\xe9\xbf`qv\xee'
b'\xd7\xb3\xd1\xbfN\r4\xee\xa8\xbd\xba\x7f\xec')
Результат разбора:
'A1': 183,
{'A2': -2180706260294810215,
'A3': {'B1': -0.18315949416768929,
'B2': 26679,
'B3': [{'C1': [-73, 32, -23, -100, -126, 66],
'C2': 2100725421,
'C3': [776, 5631]},
'C1': [-77, -56, -12, 111, 15, -121],
{'C2': 2972905890,
'C3': [23175, 10039, -13303]},
'C1': [-125, 109, -100, -72, -22, -16],
{'C2': 2174361877,
'C3': [16307, 22777]}],
'B4': 15},
'A4': [0.09760768749649018,
0.5961460253776651,
0.08150278922452592,
-0.8081928492942476,
-0.27660177504892225],
'A5': 17465,
'A6': {'D1': 3406, 'D2': -4556, 'D3': -88, 'D4': 189},
'A7': {'E1': [-70, 127, -20],
'E2': 31902,
'E3': 6,
'E4': -0.4383339285850525,
'E5': 2750601817},
'A8': 136}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x4b 0x4e 0x7c
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
3 | Адрес (uint16) структуры D |
4 | Структура E |
5 | float |
6 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
3 | Массив char, размер 6 |
4 | uint16 |
5 | Размер (uint16) и адрес (uint32) массива структур C |
6 | int64 |
7 | int8 |
8 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | float |
3 | Массив int8, размер 5 |
4 | int8 |
5 | float |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
3 | Размер (uint32) и адрес (uint32) массива int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FKN|O\x00\x02\x00i\x00k\x00lk\xd0VJ^\x02\x00\x00\x00t\x00\x00\x00bq^?"X'
(b'\xbf\xd7\xd0A?8\xd3\xbc\xaba\x1f\xc2\xcb\xc9\xbe\xd38\xb1\x00\x81\xbe\x9b\n%'
b'\xff\xac\xc7\x86Y\x81\xbe\xf4\xf1\x97\xb4\x1b?\xb1z\xef\xf0\xbezr'
b'\x06\xb3=\x89\xdbfuhivg\xf6\x93\x03\x00\x1f\x00\x00\x00\x19\x0c5\x0c\xa7'
b'\x01\xc7\x96\x01\xd1$\xc94#\x0b=\xd3\x12>7\x9c\x9e\xfe\xc3\x10R*\x19,\xbc!~5'
b'[$\xc4\xa0')
Результат разбора:
'A1': {'B1': -119,
{'B2': 219,
'B3': 'fuhivg',
'B4': 37878,
'B5': [{'C1': -16552,
'C2': 0.7570928931236267,
'C3': [56, -45, -68, -85, 97],
'C4': 31,
'C5': -0.39413267374038696},
'C1': 14547,
{'C2': -0.2519584000110626,
'C3': [-101, 10, 37, -1, -84],
'C4': -57,
'C5': -0.2526361346244812},
'C1': -3596,
{'C2': 0.6082243323326111,
'C3': [-79, 122, -17, -16, -66],
'C4': 122,
'C5': 0.08741463720798492}],
'B6': -7582089630678971367,
'B7': 1,
'B8': 209},
'A2': [36, 201],
'A3': {'D1': 52, 'D2': -7190210029499380957},
'A4': {'E1': 27500,
'E2': 1581930192,
'E3': [3177617544043560606, -6862319958047710788]},
'A5': 0.8689175844192505,
'A6': 34}
Пример 2
Двоичные данные:
b'FKN|?\x00\x02\x00Y\x00[\x00\xfaX!-G\n\x02\x00\x00\x00d\x00\x00\x007_'
(b'\x1b\xbfv\x90C\xc6\xebx\xbf\x8f\x9d\xa7\xf4\x1f\x8a\x1fc&\xbf\xcf'
b'\xfcB\xfa\xfe\xbe?\xca\x1d\xef\xb8\x168\x19\xc9=w\xddvipbknO\xfd\x02\x00\x1f'
b'\x00\x00\x00\xfc_\x0f\x9b\x8c\xae\xec\xd4xr\xc9\x1c&\x90u\xc9G-H\x96\xe6'
b'<}\xf2\xbf&\xf2\xc7>\xf4\x97\xb3\x8d\x90\x18KS')
Результат разбора:
'A1': {'B1': 119,
{'B2': 221,
'B3': 'vipbkn',
'B4': 64847,
'B5': [{'C1': 17296,
'C2': -0.972347617149353,
'C3': [-113, -99, -89, -12, 31],
'C4': -118,
'C5': -0.6499499678611755},
'C1': -817,
{'C2': -0.4980030655860901,
'C3': [63, -54, 29, -17, -72],
'C4': 22,
'C5': 0.09819263219833374}],
'B6': -3103914124244983812,
'B7': 120,
'B8': 114},
'A2': [201, 28],
'A3': {'D1': 38, 'D2': -1831196839164414576},
'A4': {'E1': 22778,
'E2': 172436769,
'E3': [4523850598959971644, 6001917937533032436]},
'A5': -0.6069216132164001,
'A6': 118}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x56 0x45 0x58
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Массив адресов (uint16) структур C, размер 6 |
3 | int16 |
4 | Адрес (uint32) структуры D |
5 | int8 |
6 | uint32 |
7 | int16 |
8 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 4 |
2 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
3 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint64, размер 5 |
2 | Размер (uint16) и адрес (uint32) массива int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FVEX#\x00)\x00.\x003\x008\x00=\x00B\x00n"O\x00\x00\x00\x1aU\xe2\xea'
(b'\xc8\xd6\x9e\xf9RB5kqsz8\x16\xb2\xed&\xb8\xb9R\xce\x91\xa9x\xb3=c\xc4o'
b'L\xb9*\xb6\xe3\xe59\xee#\x1cU\x8d\x8b\x85$\xd9\xea\x8f\x03\xafF\xe5\xac\xc8'
b'I2xp_\x8b\xf7\x91\xf5\xbc\x04[\xe5\x88\\\xd8\x03\xab\x91\xe3\xa1\xe7\xf4\xa5'
b'\xfe\xa9\xe5Q\xb1J6T\x80\xb7IB\x03\xa6c\x08\x00G\x00\x00\x00')
Результат разбора:
'A1': {'B1': 'kqsz', 'B2': 5688},
{'A2': [{'C1': 60850, 'C2': 38, 'C3': 47544},
'C1': 52818, 'C2': 145, 'C3': 30889},
{'C1': 15795, 'C2': 99, 'C3': 28612},
{'C1': 47436, 'C2': 42, 'C3': 58294},
{'C1': 14821, 'C2': 238, 'C3': 7203},
{'C1': 36181, 'C2': 139, 'C3': 9349}],
{'A3': 8814,
'A4': {'D1': [17837455685788518856,
6667831427406296465,
17647251663648130008,
3912134191628287653,
7180430239128322132],
'D2': [-39, -22, -113, 3, -81, 70, -27, -84]},
'A5': 26,
'A6': 3370836565,
'A7': -24874,
'A8': 893539065}
Пример 2
Двоичные данные:
b'FVEX#\x00)\x00.\x003\x008\x00=\x00B\x00\x97\xadI\x00\x00\x00\xb4\x98v)'
(b'\xf9\xb4(x$\xb9WzrfaF! \xc6G\xc6A\xb4\x939\xb2\xe4\x15\xdd\x9c\xa7\x86'
b'\xc27n\xc7\x8c%b\x98\xf2l\xcc\x89\x95\x00\x0f\xcd\\S\xc2\xf6\x80\xfe`\xc8'
b'\xd1{A\xf6\x8e\xd7\xc3\xaa5\xff_\xb5\xb3L\x92\xaf%\xec\xb8U\xc4y\x90\xed'
b'\x058i\xf4\x81\xa4(v\x9a\x02\x00G\x00\x00\x00')
Результат разбора:
'A1': {'B1': 'zrfa', 'B2': 8518},
{'A2': [{'C1': 50720, 'C2': 71, 'C3': 16838},
'C1': 37812, 'C2': 57, 'C3': 58546},
{'C1': 56597, 'C2': 156, 'C3': 34471},
{'C1': 14274, 'C2': 110, 'C3': 36039},
{'C1': 25125, 'C2': 152, 'C3': 27890},
{'C1': 35276, 'C2': 149, 'C3': 3840}],
{'A3': -21097,
'A4': {'D1': [15116438795470684755,
3867118560634880379,
2715549958457876479,
427156392329459948,
11130128216112785720],
'D2': [-51, 92]},
'A5': -76,
'A6': 4180244120,
'A7': 10420,
'A8': 1471751288}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x62 0x4d 0x59 0x42 0x50
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур B, размер 5 |
2 | Структура D |
3 | double |
4 | uint16 |
5 | uint16 |
6 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 4 |
2 | Адрес (uint16) структуры C |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint16, размер 4 |
2 | float |
3 | Массив int16, размер 7 |
4 | uint32 |
5 | double |
6 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint32 |
3 | double |
4 | int8 |
5 | uint8 |
6 | Размер (uint16) и адрес (uint16) массива int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'bMYBP\x00K\x00V\x00a\x00l\x00w\xab+\xd8n\xc2\x9c\xbb\xcc\xbf\x03\xa1\xd2\xf2'
(b'\x1fGV\x90o\xf0z\x84O\x1b\xbey\x9b\xfa\xd1\x80^\xbf\xb7O\x8a\xef\xb6\x9a'
b'P\xb5\xbf\xe8M\xb8e\x1d\xc36\x8b\nu%\x00\x00\x00\x82\xed=\xc8\xe0\xd5i'
b'cnp\x00F\x05\xbe\x8f\x88Asnkl\x00Q|\xbe\xaf{Smgwv\x00\\\x96<\xc7\x9cIxueb'
b'\x00g\xa7>\xf4e`ukgt\x00rpI\x1b\xf2\xfeh\xb4\xf6\x94=\x9e\x98\n?\xc6'
b'\x9cpW\xef\x8b8^,\x00\x05\x00}')
Результат разбора:
'A1': [{'B1': 'icnp', 'B2': {'C1': 237, 'C2': 0.09808508306741714}},
{'B1': 'snkl', 'B2': {'C1': 5, 'C2': -0.2803364098072052}},
{'B1': 'mgwv', 'B2': {'C1': 124, 'C2': -0.34273776412010193}},
{'B1': 'xueb', 'B2': {'C1': 150, 'C2': 0.02436651475727558}},
{'B1': 'ukgt', 'B2': {'C1': 167, 'C2': 0.47733592987060547}}],
{'A2': {'D1': [43819, 55406, 49820, 48076],
'D2': -0.5141879320144653,
'D3': [-3553, 18262, -28561, -3974, -31665, 7102, 31131],
'D4': 4208033886,
'D5': -0.0910574755895166,
'D6': 181},
'A3': -0.7594873404433204,
'A4': 35594,
'A5': 29989,
'A6': {'E1': 1756690068,
'E2': 1033803786,
'E3': 0.17664913457618936,
'E4': 94,
'E5': 44,
'E6': [112, 73, 27, -14, -2]}}
Пример 2
Двоичные данные:
b'bMYBP\x00K\x00V\x00a\x00l\x00w{_\x0e\x9fxA\xfa\xd0\xbfP\x03tv'
(b'\xed\xe9\x95\x7f\x1f\x02\x08\x92\xe7@g\x11:\xdd\xfa\x05\x80\xbf\xea\xb9'
b'\x896\xe1\x16\xec1\xbf\xc1@$\x1c\xc2\xf9\xf0\x96\x08\xba#\x00\x00\x00\x82U?'
b'\x1e\x12\x80mlbt\x00F\xe0>\x9c\xc5\xa0gell\x00Q\x17?6\xe8Gcvhv\x00\\\xce'
b'\xbeI\t\xa2wvtk\x00g\xff\xbe\x9e7\x1acwki\x00rf\xe6\xd7\xd3\x7f\xa3/\x8eJLN'
b'\x1f"\xbf\xe3\xed%5U\x13*z-\x00\x05\x00}')
Результат разбора:
'A1': [{'B1': 'mlbt', 'B2': {'C1': 85, 'C2': 0.6174697875976562}},
{'B1': 'gell', 'B2': {'C1': 224, 'C2': 0.3061952590942383}},
{'B1': 'cvhv', 'B2': {'C1': 23, 'C2': 0.714481770992279}},
{'B1': 'wvtk', 'B2': {'C1': 206, 'C2': -0.19632580876350403}},
{'B1': 'cwki', 'B2': {'C1': 255, 'C2': -0.30901414155960083}}],
{'A2': {'D1': [31583, 3743, 30785, 64208],
'D2': -0.8125526905059814,
'D3': [30445, -5739, 32543, 520, -27929, 16487, 4410],
'D4': 3724150144,
'D5': -0.8351484367237538,
'D6': 49},
'A3': -0.13476992992759973,
'A4': 38408,
'A5': 47651,
'A6': {'E1': 2737802826,
'E2': 1280188194,
'E3': -0.6226984063765475,
'E4': 122,
'E5': 45,
'E6': [102, -26, -41, -45, 127]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4a 0x50 0x54 0x48
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint8 |
3 | float |
4 | Структура B |
5 | Адрес (uint32) структуры C |
6 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
3 | double |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int32 |
3 | Массив char, размер 8 |
4 | Массив адресов (uint16) структур D, размер 2 |
5 | int64 |
6 | Размер (uint16) и адрес (uint32) массива int32 |
7 | Адрес (uint16) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 4 |
2 | uint8 |
3 | int8 |
4 | Массив int16, размер 8 |
5 | int16 |
6 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'JPTH\xc1\xbc\xd7n\x90?_t\x85=\xcd\xa7\xbeT_?\xc4I\x8c\x83LY\x98\x00'
(b'\x00\x00\x8e\xd2\xd6\xe9\xe5\x0c\x04\xf9\xad\x1e\x9f1\xc8F\xedO\xb1~'
b'\xa1\x96\xbe\x94\xb6U\xc0\xa9\xed\xfez\xc03E\xb9*\xfe\x1dh\x00'
b"\x80\xa5\xc4\x85\xb3\xff[\x10\xe7V'hm\\\xcbMd\xa8q\x1a\x0b\xd4\x05p"
b'\x94\xc6\x9emt\x06\xafKBlGw\xee\xd4\xe9\xa9\xe17l\x9c\x0c\xf6\x03\xce'
b'\xf6\xbb\x16\xdal,\x8f\xa8\xd1\xa31\xb7\r\xbbA]\xb7\x00\x07u\x11\x83\x06]'
b'\xba\xa9\xd7\xad\x07\xcaw\x03|7ulldvbry\x00#\x00OR\x04L\xec\x93P8W\x00\x04'
b'\x00\x00\x00{\x00\x8b')
Результат разбора:
'A1': 3250378606,
{'A2': 144,
'A3': 0.8728716969490051,
'A4': {'B1': 0.1004175990819931, 'B2': 21599, 'B3': 0.15849453364417054},
'A5': {'C1': 3618441162,
'C2': 1996717111,
'C3': 'ulldvbry',
'C4': [{'D1': [201652653, 513749448, 1189957553, 2124519102],
'D2': 148,
'D3': -74,
'D4': [21952, -22035, -390, -16333, 17849, 11006, 7528, 128],
'D5': -23100,
'D6': -8812419279243225561},
'D1': [1751997643, 1298442353, 436982789, 1888798366],
{'D2': 109,
'D3': 116,
'D4': [1711,
19266,
27719,
30702,
-11031,
-22047,
14188,
-25588],
'D5': -2557,
'D6': -3533431150797378417}],
'C5': 5909933189984434263,
'C6': [-1462656207, -1223836863, 1572274183, 1964081926],
'C7': {'E1': 93, 'E2': -70, 'E3': 169}},
'A6': -757667355}
Пример 2
Двоичные данные:
b'JPTH\xb2\xddV=(?Y\x98\x12\xbf`\x97\r\xfe\x84\xbf\xe2q\xd0\xef\xce0\xd4\x00'
(b'\x00\x00\x8e\xdc\xd2\xb9W\x91n\xbdI\x19U\x10\xa3\xff\xefH\xe6\xca^c6\r'
b'\x9f\xb3\x0b\x97!^\xfc\x836\xd8\x8e\xac\xc4\x97\xb55\xb4\xc6\x8d&\xf8KX|'
b'\x85\x02+G\xaa\x9d\xc8\xa0\xc1\xcb%\xb7?^0T\x05\xed\x9d\xd1\x04\x82k\xfc'
b'M\xe3\xcb>\xf5\xcfy#B\x1a\xc6n\xc4\xd3gwB\x0f2\x02n\xa0l\xf7\xd4CxE'
b"\x92\xdbD\x9a\x1c\x91\xa1\x9e\xb3\x0c]!G\xe4\x07i\xba\xbb'\xd5\xd4\xfdfmalkr"
b'ct\x00#\x00O\xc6\xaa\xc8\x9a\xb7\xa6\x87\x8d\x00\x04\x00\x00\x00{\x00\x8b')
Результат разбора:
'A1': 3000849981,
{'A2': 40,
'A3': 0.849976658821106,
'A4': {'B1': -0.8773048520088196, 'B2': 65156, 'B3': -0.576393574113832},
'A5': {'C1': 124369595,
'C2': 668325117,
'C3': 'fmalkrct',
'C4': [{'D1': [2439953737, 425005219, 4293871846, 3395183414],
'D2': 13,
'D3': -97,
'D4': [-19701,
-26847,
24316,
-31946,
-10098,
-21308,
-26699,
13748],
'D5': -14707,
'D6': 2808077211083801131},
'D1': [1202363848, 2697055013, 3074383408, 1409674653],
{'D2': 209,
'D3': 4,
'D4': [-32149, -947, -7221, 16117, -12423, 9026, 6854, 28356],
'D5': -11417,
'D6': 8593447746439913580}],
'C5': -4131269141327345779,
'C6': [-137084040, 1167252292, -1709403743, -1632433059],
'C7': {'E1': 33, 'E2': 71, 'E3': 228}},
'A6': -590169769}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x59 0x49 0x51 0xbe
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | Массив char, размер 3 |
3 | uint8 |
4 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур B |
5 | Адрес (uint16) структуры C |
6 | float |
7 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | int8 |
4 | float |
5 | uint64 |
6 | uint32 |
7 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
3 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива int8 |
2 | uint64 |
3 | int16 |
4 | int8 |
5 | Размер (uint32) и адрес (uint32) массива double |
6 | int32 |
7 | int32 |
8 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'YIQ\xbeosgyiwlrpwh\xc5\x02\x00\x00\x00R\x00Z\x00\xc2AB>\x8d\x00oz_\x97-\x14'
(b'\xebx\x11\xbf\xa4\x0f\xe1\x18\x1a\xed\xbc\x1f3\xfb\xe1\x989\xf7\x0c\xcd'
b'\xf0"|\xfcq\xe9\x0b\x90\xe4=\x9b\x11\xb0\xb8"\x94\xac\xee\x1f\xcc\xb8\xc6e"'
b'41\x1e\x00\x00\x008\x00\x00\x00\x9a\x11(`*.\xb5G\xb8}\x98`A\x1e\xf0?J\xb7'
b'?\xc0Pk*\x19\x03\xef\xbf\x80\xdb\x16\xceqa\x95?\xc6D\x9a\xed\xef(\xeb'
b'\xbf,@\xe5=\xe1\x0b\xe2?\x03\x00\x00\x00b\x00\xb7\xaa\xaf\xd9\x1b_\xb2b\xdc'
b'\x9a\xd1\x05\x00\x00\x00e\x00\x00\x00<@\x13P\xf5\xbd\x9e\xa9\xd0<'
b'\xe7\xf2J\x10\xe3\xbf')
Результат разбора:
'A1': 'osgyiwlr',
{'A2': 'pwh',
'A3': 197,
'A4': [{'B1': -1755350417,
'B2': 45,
'B3': 20,
'B4': -0.5682513117790222,
'B5': 2286963407139704740,
'B6': 2564946739,
'B7': 3440179001},
'B1': -58973456,
{'B2': 113,
'B3': -23,
'B4': 0.11160286515951157,
'B5': 17198283953869427099,
'B6': 3333999647,
'B7': 825500261}],
'A5': {'C1': 4506, 'C2': 24616, 'C3': 1203056170},
'A6': 0.18970397114753723,
'A7': {'D1': [-72, 125, -104],
'D2': 7111851334792358583,
'D3': -25892,
'D4': -47,
'D5': [0.09097671139011743,
-0.9691282108783739,
0.020879533961955854,
-0.848747219150163,
0.563950177087468],
'D6': 1343438908,
'D7': -1449214475,
'D8': -0.5957388633923077}}
Пример 2
Двоичные данные:
b'YIQ\xbetbkvfxixpvn\xdd\x02\x00\x00\x00R\x00Z\x00\xc9e\x01\xbf~\x00\x11\x92'
(b'\xd7\xff>r\x8e\x8d\xea\xbe\xc2\xc5\x80\xc1\xc3\xdf\x9a$\x84\xab\xe5#^\xc6 T'
b'yIr\x9c\xb9\xae\xdd\xa4\xa0\xbc76d\x08\x8cy\x17@\xf1\xf5+\xe7,\x08'
b'\xf2\xf2\x1e\x00\x00\x008\x00\x00\x00Ae\xedF\x07A?\xea8q\xcc\xb5*Y\x13E&%'
b'\xe3\xbf\xd0!\x96d\x82\xd6\xdd\xbf\xa0\xf5*\x1fd\n\xcc\xbf\x04\x00'
b'\x00\x00b\x00\x97\x85B\x1d\xd5\x07g\xe6\xd5\xfb%\x03\x00\x00\x00f'
b'\x00\x00\x00B\n\xf6Zn\xdfr\xc9|:\xac\xc2\xcbz\xe3?')
Результат разбора:
'A1': 'tbkvfxix',
{'A2': 'pvn',
'A3': 221,
'A4': [{'B1': -2649583,
'B2': 62,
'B3': 114,
'B4': -0.4581112265586853,
'B5': 2637666563636905410,
'B6': 602254212,
'B7': 1411434078},
'B1': -1670231687,
{'B2': -71,
'B3': -82,
'B4': -0.019609862938523293,
'B5': 4618293585234900535,
'B6': 3878417905,
'B7': 4075948076}],
'A5': {'C1': 25921, 'C2': 18157, 'C3': -364953337},
'A6': -0.5054593682289124,
'A7': {'D1': [56, 113, -52, -75],
'D2': 16602247163224950167,
'D3': -1067,
'D4': 37,
'D5': [-0.5982848500378044, -0.466217611531218, -0.2190671112238478],
'D6': 1526073922,
'D7': -915218578,
'D8': 0.6087397386744011}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x59 0x4b 0x41 0xce
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива uint8 |
2 | Структура B |
3 | Структура D |
4 | uint32 |
5 | int32 |
6 | float |
7 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | double |
3 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | float |
3 | uint32 |
4 | Массив адресов (uint32) структур E, размер 3 |
5 | double |
6 | int32 |
7 | double |
8 | Размер (uint16) и адрес (uint32) массива int8 |
Структура E:
Поле | Описание |
---|---|
1 | Массив uint8, размер 4 |
2 | uint8 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'YKA\xce\x00\x00\x00\x04\x00^\x00\x00\x00b\xbf\xdd6\x9f\xf3\x96v\xf8a1'
(b'G\xe8O\xb2\xe0\xf2\xdbh\xbe\xcdxQI\x03\x95\xb9\x00\x00\x00n\x00\x00\x00t'
b'\x00\x00\x00z?\xe0\x91\xe9\xfe\xd6!*p\xcb\x07\xc4\xbf\xc3\xba\xb5i\xff\xc7p'
b'\x00\x04\x00\x00\x00\x80Nu>y\x1e)\xc7\x97\xbe\x1fk\xfc\xbb\xd7\x98 \xf1\xd5'
b'\xeb,\x19\x1c\xd6\xa1Z\xa8\xbd\xacz\xd2\x90\xd7\xccNwZ\n=\x1a\xedx\x12'
b'iL%\xaep\x8fx\x10[\xac, ')
Результат разбора:
'A1': [241, 213, 235, 44],
{'A2': {'B1': {'C1': 421320353, 'C2': 6532679807993549015},
'B2': -0.45645903385035025,
'B3': 24881},
'A3': {'D1': 5181479000986540904,
'D2': -0.4013085663318634,
'D3': 1224971705,
'D4': [{'E1': [204, 78, 119, 90], 'E2': 10, 'E3': 61},
'E1': [26, 237, 120, 18], 'E2': 105, 'E3': 76},
{'E1': [37, 174, 112, 143], 'E2': 120, 'E3': 16}],
{'D5': 0.5178117730402267,
'D6': 1892353988,
'D7': -0.15413539577235325,
'D8': [91, -84, 44, 32]},
'A4': 1316306553,
'A5': 506054551,
'A6': -0.15568536520004272,
'A7': 3151468576}
Пример 2
Двоичные данные:
b'YKA\xce\x00\x00\x00\x02\x00^\x00\x00\x00`\xbf\xd1\x8ef\x9e\x94\xb1\xac"\xf5'
(b'\xe3\xdf\x8b5\x81\xfc\xd2\x17?Sp\xee\xbf\xa0\xa0\x9f\x00\x00\x00l'
b'\x00\x00\x00r\x00\x00\x00x\xbf\xe8Wdk\x7f\xb8.\x19\xb2q\xd6\xbf\xc7\xb3h'
b'\xd0`L@\x00\x02\x00\x00\x00~\xe2~\xcc\xf3\xc2#"\xad?0\xc8\x85\xca\x04'
b'\xc3\xae\x9cs\xaa\x15\x05\xf0\xa5\xdc\x01?\xc9!\x08z\xd6Pq\neP\xf3\x8b'
b'\xce_?\x05/\xd8\xb8\xab)\x7f}\xbc')
Результат разбора:
'A1': [156, 115],
{'A2': {'B1': {'C1': -1441462800, 'C2': 11951428884603406458},
'B2': -0.2743164585724809,
'B3': 8949},
'A3': {'D1': 16419995828346475031,
'D2': 0.8259419202804565,
'D3': 3214975135,
'D4': [{'E1': [214, 80, 113, 10], 'E2': 101, 'E3': 80},
'E1': [243, 139, 206, 95], 'E2': 63, 'E3': 5},
{'E1': [47, 216, 184, 171], 'E2': 41, 'E3': 127}],
{'D5': -0.7606680011356326,
'D6': 431124950,
'D7': -0.1851626412832008,
'D8': [125, -68]},
'A4': 3799960819,
'A5': -1037884755,
'A6': 0.6905596852302551,
'A7': 3389309870}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x1e 0x54 0x4b 0x50 0x5a
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Размер (uint32) и адрес (uint32) массива uint16 |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив структур C, размер 2 |
3 | uint16 |
4 | uint8 |
5 | double |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | uint16 |
4 | Адрес (uint32) структуры D |
5 | Массив uint32, размер 2 |
6 | uint8 |
7 | Размер (uint16) и адрес (uint16) массива uint64 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x1eTKPZ\x00\x00\x00a\x00\x00\x00\x06\x00\x00\x00\x99\xe2sOZW\xc4#\xd8\x80+P'
(b'\x10\xd0\xfc\xe4Wz\xa45\xef\xd0)\xe1\xce\x01+}o\xb8\xbc\xa8\x86\x05w\xff'
b'\x14\x9a\xd6\xc8\x93\xc2C\x00\xcc\xf9\xccb\x07\x12H\xa2\xeb\xcfc\xf6'
b"\xf2\xdbZ\x8a9\xa9(\x83\xb9\x1e\xc7=e\xcf\x8b]\xaat\xc3\xa4(\xd1y<\xa4'r\xa7"
b'\x11\x8fN\x00\x00\x00\x11\x92\xc2D\x90xNq\xe3^\x00\x03\x00\x1d8\x97}\xf0'
b'\x0f\x00\x00\x005\x8e\x14\x8bq\x88\xb5vKO\x00\x04\x00A\x05\xf4\x89?\xe9V'
b'\x10\x95\xc6 \xc4\xbd7\x97;\xc8\t\xdbi7\xe7\x9c\xf0')
Результат разбора:
'A1': {'B1': 39,
{'B2': [{'C1': 29351,
'C2': 17,
'C3': 36686,
'C4': {'D1': 3799207770, 'D2': 6324219189505249296},
'C5': [2462205072, 2018406883],
'C6': 94,
'C7': [15059162318390965743,
14999768308833287535,
13311699892171177748]},
'C1': 14487,
{'C2': 125,
'C3': 61455,
'C4': {'D1': 2597767315, 'D2': 13998032947161883143},
'C5': [2383711089, 2293593675],
'C6': 79,
'C7': [1317482024686319346,
15806097822465950649,
2217808848986267050,
8413749024078249124]}],
'B3': 1524,
'B4': 137,
'B5': 0.7917559552452293},
'A2': [48439, 38715, 51209, 56169, 14311, 40176]}
Пример 2
Двоичные данные:
b'\x1eTKPZ\x00\x00\x00i\x00\x00\x00\x04\x00\x00\x00\xa1\xfb2.\x8a\xe8j\x02'
(b'\x02\xc9;w=r\x15\x10k\xcf\xb2\xa2\x0f\x8e.i\x9at\x8d9\xd0\x80Sf\xa4\xabL\r'
b'\x9b\xf8\xe7o\xea\x10a\xd6}g\xb9*\x80\xf9\x1c\xc6\x05\xe1\x15b\x047B\xda'
b'^\xb3\xb5\xdd\x98-\x03\xfe*q\x8e\x0e\x1a\xda\xac\xe7\xfb\xaa\x9f\xd9'
b'\x9eo\x8c\xe8\xf1\x89\x0b\x93j\xc0-\xf3\xda)P\x00\x00\x00\x11\xc0'
b'\xa5\x0e\xb3\x8ev\x07\x8e\x00\x00\x04\x00\x1d]qhTQ\x00\x00\x00=\x91\x91\x1b'
b'\xe2\x12b\xec\x19\x16\x00\x04\x00IU\x04\xeb?\xeb\xbc\x0f\xd8\xe2\x89'
b'\xa873\xb7\xed\x9b\xfb\x18*')
Результат разбора:
'A1': {'B1': 192,
{'B2': [{'C1': 11763,
'C2': -38,
'C3': 10576,
'C4': {'D1': 4214369930, 'D2': 16747200375319918397},
'C5': [3232042675, 2390099854],
'C6': 0,
'C7': [8220494750066844175,
10245242314415749584,
9246847317356318107,
17935427092114167421]},
'C1': 23921,
{'C2': 104,
'C3': 21585,
'C4': {'D1': 1740188288, 'D2': 17950439943345365508},
'C5': [2442206178, 308472857],
'C6': 22,
'C7': [3981985120825761176,
3243715614884105754,
15757224264347933086,
8038055559033492330]}],
'B3': 21764,
'B4': 235,
'B5': 0.8667067752870041},
'A2': [14131, 47085, 39931, 6186]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x89 0x43 0x4e 0x42 0x56
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | float |
3 | int16 |
4 | uint32 |
5 | uint64 |
6 | Адрес (uint16) структуры B |
7 | Структура E |
8 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | Адрес (uint16) структуры C |
4 | int16 |
5 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур D |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | int8 |
3 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | Адрес (uint32) структуры F |
3 | int64 |
4 | int32 |
5 | int8 |
Структура F:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | Размер (uint16) и адрес (uint16) массива uint8 |
4 | uint16 |
5 | uint64 |
6 | Массив int32, размер 8 |
7 | int8 |
8 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x89CNBV\xb6\x11\xdf>\x88\xef`>\xed\xa91\xa5o\xf6\x19"W)\x86\xa1\xf2nO'
(b'\x00\xbe\xee\xfa\xbel\x00\x00\x00|z\xcf\xe3\x8a\xfd\x12\x1b\x12=\xb1'
b'9q\xa6\x83xrak\xa0\x02\x9f\xab\xfd\xe9\x9d\xbf\x8e\x16Ws\x0e&\xd0\xef'
b'\xc3\xe6\xa4;\x00C\x00\x8b\x9cV\x87\x1c\x06\x91\xf4\x03\x00\x00\x004'
b'\x00\x00\x007\x00\xb4\xd1\x02\x00K\x00\x16G\x80\xda\x16\x0bl\x05\x00'
b'g\x00\xaf\x98r\x95~\xaa\x16i\xcc}_\xfd\xf1\x90\x8c\xab\xe7\xa9\xe9id\xe9'
b'\x02C\xbf\x97\x1c\xdd\xaa\x85\xb2\xf2\xecgH\xf11\xef\xe9y\xb0}E\x04\xd9\x97'
b'\xa4;\x12`z')
Результат разбора:
'A1': 0.4356819987297058,
{'A2': 0.21966373920440674,
'A3': -22035,
'A4': 4134511921,
'A5': 7994629886127317529,
'A6': {'B1': 17622873536476912779,
'B2': 'xra',
'B3': {'C1': 107, 'C2': -96, 'C3': -24830},
'B4': -11852,
'B5': [{'D1': 2649357739, 'D2': 1461096127},
'D1': 3492154995, 'D2': 2766586863}]},
{'A7': {'E1': -1090851138,
'E2': {'F1': 11,
'F2': 108,
'F3': [22, 71, 128, 218, 22],
'F4': 39087,
'F5': 9064735696060585330,
'F6': [-1863189153,
-1444435060,
-379295255,
-1749073150,
-2052399844,
1743581874,
-281939640,
2108717545],
'F7': 69,
'F8': 8818068117765216516},
'E3': 1950900361574185596,
'E4': 967916818,
'E5': 113},
'A8': 33702}
Пример 2
Двоичные данные:
b'\x89CNBV\xc9\xeb\xf9\xbd\x16\x9c1\xbf\xb08Y\xaf\x9d&\xd7n\x80\xfa\xfa'
(b'\xac\xef\xf8X\x00\x8d\xc5\xf1\xb0t\x00\x00\x00\xe4\x7f&\x08\xf5&\x9e'
b'\x80]\xe1\xaf\xf4\xbe Xty{\xa9L\xbf\xb6uH\x9e\x82\xba\x8f\xf1\x14\x8e'
b'\xb35\t\x834\xe7E\xe2\xdf\xa0\x8b\xb83\x19:\x00B\x00J\x00;\x9f\x8fr'
b'\x98\x7f\xc0N\x02\x00\x00\x004\x00\x00\x006\x00\x18\xd2\x03\x00R\x00'
b'\xcc`Q\xf7T/\x04\x00p\x00\xbc\x16\x12\x17\x04&\x19.|5\xd9\xe3\x16c'
b'?\xe7\xab\xeei\xbc?\xf0\xe1\x8b\xc0|@q\x1c\x86Y\xa7\x0e\xbe\xb1\x03\xb0\xc8'
b'{ N_0v\x08\x8dn\x808\x96r')
Результат разбора:
'A1': -0.12203175574541092,
{'A2': -0.6937879323959351,
'A3': 14512,
'A4': 647868249,
'A5': 17937746034784497367,
'A6': {'B1': 5674675823220596539,
'B2': 'ty',
'B3': {'C1': 123, 'C2': -87, 'C3': -16564},
'B4': -11752,
'B5': [{'D1': 2655548854, 'D2': 4052728450},
'D1': 900959764, 'D2': 3878978313},
{'D1': 2699027013, 'D2': 422819979}]},
{'A7': {'E1': -1326332531,
'E2': {'F1': 84,
'F2': 47,
'F3': [204, 96, 81, 247],
'F4': 5820,
'F5': 3854006066669164306,
'F6': [1662444505,
-290724033,
-264258455,
2092993505,
-2044956352,
-1106335911,
-927988815,
1598955643],
'F7': 48,
'F8': 8256849091092088950},
'E3': -9178856156688908316,
'E4': -189800099,
'E5': -66},
'A8': 22560}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x58 0x45 0x3c
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint32 |
3 | Размер (uint32) и адрес (uint32) массива int32 |
4 | uint64 |
5 | int8 |
6 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | float |
3 | Размер (uint32) и адрес (uint16) массива char |
4 | uint64 |
5 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C |
6 | Структура D |
7 | double |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | double |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
3 | uint8 |
4 | uint16 |
5 | Массив int8, размер 8 |
6 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LXE<D\x00\x00\x00\xacKic\x02\x00\x00\x00\x85\x00\x00\x00\x98\xa5[QWj\xc1\\'
(b'1\x80\x7fqokbd\xda8\xb8>f\x9c\xe9\xbc\xeeE\xe1\xbfF\xa9\x93\xbe\xe0\xa1\xd4v'
b'\xf7?\xc4?$\x00\x00\x000\x00\x00\x00\xdb\xa4\x18?\xd4\xed(?\x05\x00\x00\x00'
b'\x1f\x00\x92\x1a\xef\x86J\x12Pn\x02\x00<\x00\xc2h\t?X\x80e(\xd73|\x85\x872'
b"\x07O\x96\xcfM\x9e\x07\xbd\xc1..\xf5\x82\n\x1c\x17\xd4\xd0\xc6',\xf7f\xeb"
b'?zV\x13\xf6\xab2\xc2\xd7')
Результат разбора:
'A1': {'B1': 0.5962654948234558,
{'B2': 0.6598789691925049,
'B3': 'qokbd',
'B4': 7948873453609622162,
'B5': [{'C1': 0.3598087430000305, 'C2': -0.5397866906831836},
'C1': -0.2884008288383484, 'C2': 0.1582021074512019}],
{'B6': {'D1': 0.5367547273635864,
'D2': 9618619903345262680,
'D3': 135,
'D4': 1842,
'D5': [79, -106, -49, 77, -98, 7, -67, -63],
'D6': -3164029381732127186},
'B7': 0.8563190328988757},
'A2': 1667845036,
'A3': [-166504838, -675138901],
'A4': 6683740245254186392,
'A5': 49,
'A6': 32640}
Пример 2
Двоичные данные:
b"LXE<U\x00\x00\x00\xdb'\xe5f\x02\x00\x00\x00\x96\x00\x00\x00\xfd\x05\xb5\xb0"
(b'9l\xb2k\xcd\xa8\xe2rfpxdk}7l?H\x07r\xce\xd1\xda\xd5?\xe7Z\x04\xbf\x10$!'
b'\x8c\x0b\xfd\xeb?\x9aT\xe6\xbd\xc0\xe9\x99<T9\xc1\xbf%\x00\x00\x001\x00\x00'
b'\x00=\x00\x00\x00\x9dw\x01?\xa3\xf1\xde>\x06\x00\x00\x00\x1f\x00~'
b'\x17\xf8\xea^\x0c\xdah\x03\x00I\x008o\x91=\x9dVY\x18Z\xa8\x1dd\xca'
b'\xff\xd9\xc2\t\xe4D\xbb\xbf\x03\xb0cn\xa7g\x82\xa4}\xbf@>j\xc4\xb23'
b"\xd9\xbf\xf0'B\xcf\xda\x02t\xb6")
Результат разбора:
'A1': {'B1': 0.5057314038276672,
{'B2': 0.43543729186058044,
'B3': 'rfpxdk',
'B4': 7555364926676014974,
'B5': [{'C1': 0.9227216839790344, 'C2': 0.34148068581281565},
'C1': -0.5170120596885681, 'C2': 0.8746392952826927},
{'C1': -0.11246605217456818, 'C2': -0.13456204375309078}],
{'B6': {'D1': 0.07101291418075562,
'D2': 7214107283026433693,
'D3': 202,
'D4': 55807,
'D5': [-62, 9, -28, 68, -69, -65, 3, -80],
'D6': -4648378360384754077},
'B7': -0.3937804144015651},
'A2': 1726293979,
'A3': [-817747984, -1233911078],
'A4': 7760384102946375165,
'A5': -51,
'A6': 58024}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x44 0x4a 0x44
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур B |
2 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int32 |
3 | int8 |
4 | uint64 |
5 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint8, размер 6 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | int8 |
4 | Структура E |
5 | int16 |
6 | double |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint32) и адрес (uint16) массива int8 |
3 | double |
4 | Массив float, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"FDJD\x00\x03\x00T\x00\x00\x00d'\x140v\x96\xbe>\x9d\xf6#J\xad\xcelK\x91"
(b'X\x94q\x98R[\xa95_\xd9,\xddP\x8e\xbf \xa5\x1b\xcd\x98\x14\xec\xc8t\x94\xebm;'
b'#\xafD\x7f\x98h\x96\x8b\x92\xc4?g\xaaK\xa0\xbe\x86\xf1\xdcO\xdf0\xab+'
b'\x15\xcf\xd1\xdb\x00\x00\x00\x0c\x00\x00\x00$\x00\x00\x00<%\x82\xfaH'
b'\xd7?F\xcf(V\xde\xd3U\xe1\x00\x00\x00\x04\x00`\xbf\xed\xc6k\r\xed\x91\xb8'
b'\xbe\xec\xfc4\xbe1\xe7\x1f\xc7\xa7\xbf\xefb\xf9c\xa0\x1b~')
Результат разбора:
'A1': [{'B1': {'C1': [39, 20, 48, 118, 150, 190], 'C2': 0.30851849913597107},
{'B2': 1252904556,
'B3': 75,
'B4': 10473284149057837993,
'B5': 53},
'B1': {'C1': [95, 217, 44, 221, 80, 142], 'C2': -0.6275193095207214},
{'B2': -845671188,
'B3': -56,
'B4': 8400598059328974660,
'B5': 127},
'B1': {'C1': [152, 104, 150, 139, 146, 196], 'C2': 0.9049422144889832},
{'B2': -1598126351,
'B3': -36,
'B4': 5755372360523173841,
'B5': 219}],
'A2': {'D1': 215,
'D2': 0.7765984535217285,
'D3': 86,
'D4': {'E1': -556575263,
'E2': [37, -126, -6, 72],
'E3': -0.9304709693938582,
'E4': [-0.46286165714263916, -0.17373321950435638]},
'D5': -14425,
'D6': -0.980831808644197}}
Пример 2
Двоичные данные:
b'FDJD\x00\x04\x00l\x00\x00\x00~f\xc2\x7f\xe3\xd2\xfc\xbe\xf8%~\xc8\x00'
(b'\xfa)\x18*?\x14\xd9}\xd0\xad<\x86xf\xd4\xdeN3\xbd\x91\xe26-Dg\xa0Z\x1d'
b'\xe3C\x01\xd4\xa5e\xd4\xc4\xebYsV\x8c\x87=\xc8\x18\x90\x88\x19'
b'\xc3\x08\xf0\xadSWjn\xe7\xd3\xe2)\xce\xdf&\xa8\x18C?\x1d\xeb2{J\xc5!\x8c\xbf'
b'\x15\xf0|Y\xd7\xd3\xeb$\x00\x00\x00\x0c\x00\x00\x00$\x00\x00\x00<'
b'\x00\x00\x00T8mJ>5\xb6\x1e\xf6\xe1u\xc03\x00\x00\x00\x02\x00|?p\xbcP\x16)'
b'\xcf\x00\xbf_\x9c*>\xfe\xd889\xdc?\xe69g\x00\x96u\xd2')
Результат разбора:
'A1': [{'B1': {'C1': [102, 194, 127, 227, 210, 252],
{'C2': -0.4846610426902771},
'B2': -939460055,
'B3': 24,
'B4': 3044174797477031228,
'B5': 134},
'B1': {'C1': [120, 102, 212, 222, 78, 51], 'C2': -0.07123224437236786},
{'B2': 759457696,
'B3': 90,
'B4': 2153638721954866644,
'B5': 196},
'B1': {'C1': [235, 89, 115, 86, 140, 135], 'C2': 0.09770309925079346},
{'B2': -2011577592,
'B3': -16,
'B4': 12489422306267354082,
'B5': 41},
'B1': {'C1': [206, 223, 38, 168, 24, 67], 'C2': 0.6168700456619263},
{'B2': 2068497697,
'B3': -116,
'B4': 13769175852629087211,
'B5': 36}],
'A2': {'D1': 74,
'D2': 0.17745253443717957,
'D3': -10,
'D4': {'E1': -512376781,
'E2': [56, 109],
'E3': 0.00408583911722693,
'E4': [-0.8734766244888306, 0.4977433681488037]},
'D5': 14812,
'D6': 0.6945071231345372}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x48 0x54 0x4f
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив char, размер 6 |
3 | Структура B |
4 | int32 |
5 | uint8 |
6 | Массив структур C, размер 2 |
7 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | double |
Структура C:
Поле | Описание |
---|---|
1 | Массив int8, размер 5 |
2 | Адрес (uint32) структуры D |
3 | uint8 |
4 | float |
5 | uint16 |
6 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | uint16 |
4 | Размер (uint32) и адрес (uint16) массива int16 |
5 | uint8 |
6 | uint16 |
7 | Размер (uint32) и адрес (uint16) массива int8 |
8 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DHTO\x16\xaaywyogs\x9d\xb0\xde$\xa5&V\x11\xca\xe1?\xa1tW\x95\xf3i\x1d\x18k'
(b'\x7fX\x00\x00\x00\x81\xc6\xb5\xb2\xbe\xc3\xe5dW)\xfe\x07IR\r\xbd\xa45W'
b'\xf6\x82\x00\x00\x00\xb9&\x03L\xbf\x1an\xa8P\xa0\xf1\x18\xda\xa9\x89'
b'\xdd\xd9 P&\xa0\xf8\xff\xc4\xa8:\xc9\xdcS\xcd\xc6G\xbe\xe9?Fr\x13\xce'
b'\xb5k\x02\x00\x00\x00N\x00\x96ec\x06\x00\x00\x00R\x00g\xd5\xab9qe\xd2'
b'O\x14\xcdW\xe6\n\x18j 0\x92\xef\xc9\xbfP\x06\xb1\xc0\xf6/\x03\x00\x00\x00'
b'w\x00\x9a\xb0\xe7\x05\x00\x00\x00}\x00\x884')
Результат разбора:
'A1': 43542,
{'A2': 'ywyogs',
'A3': {'B1': 45213, 'B2': -34, 'B3': 0.5559164698253523},
'A4': -1789430623,
'A5': 243,
'A6': [{'C1': [105, 29, 24, 107, 127],
'C2': {'D1': 0.8044775851109267,
'D2': -837586362,
'D3': 27573,
'D4': [20512, -24538],
'D5': 150,
'D6': 25445,
'D7': [-8, -1, -60, -88, 58, -55],
'D8': -10905},
'C3': 129,
'C4': -0.349043071269989,
'C5': 58819,
'C6': 959909969261057892},
'C1': [-67, -92, 53, 87, -10],
{'C2': {'D1': -0.2026236281388527,
'D2': -1062140336,
'D3': 12278,
'D4': [14763, 25969, 20434],
'D5': 154,
'D6': 59312,
'D7': [20, -51, 87, -26, 10],
'D8': 13448},
'C3': 185,
'C4': -0.796923041343689,
'C5': 28186,
'C6': 9919699454928113832}],
'A7': 55773}
Пример 2
Двоичные данные:
b'DHTO=\xfdtvkcui"\x8f\x9b0\xf44\xed0:\xdd\xbf\xca\xe4~\xb6\xae\xa4d\xa4\x18'
(b'%\\\x00\x00\x00w|}\xf7>#\xbd&T\x92r\xde\xf6\xf5\x03\xba\xa0\x15\x16'
b'M\x87\x00\x00\x00\x83\xdb\xfa\x95>\xbc\xb4\xbf\x0e@L\x98\xb6d\xacu\x1b7P'
b"\xae{\x9e{e7'X\xa6\xd5}/\xa8u\xca\x98\x00\xf2\xe7?\xb3%\xd4\xd9"
b'\xe3\x07\x04\x00\x00\x00N\x00\xd3\xbeZ\x06\x00\x00\x00V\x00\x9e\x9f7'
b'\xf6\xd1\xda\xef\xe7\x8f\xd6#\xb1l}\xc6\xed\xc6&f\xc5\xef\xbf\x99\n1\xa9\x9b'
b'\xb3\x03\x00\x00\x00{\x00\x85[\xc0\x06\x00\x00\x00\x81\x00\x9f\xb2')
Результат разбора:
'A1': 64829,
{'A2': 'tvkcui',
'A3': {'B1': 36642, 'B2': -101, 'B3': -0.45667670407039207},
'A4': -1233197878,
'A5': 174,
'A6': [{'C1': [-92, 100, -92, 24, 37],
'C2': {'D1': 0.7482913002201501,
'D2': -640408141,
'D3': 2019,
'D4': [20535, 31662, 31646, 14181],
'D5': 211,
'D6': 23230,
'D7': [39, 88, -90, -43, 125, 47],
'D8': -24674},
'C3': 119,
'C4': 0.4833792448043823,
'C5': 48419,
'C6': 285405586673259558},
'C1': [-70, -96, 21, 22, 77],
{'C2': {'D1': -0.9928465611805499,
'D2': -1456403815,
'D3': 45979,
'D4': [-2505, -9519, -6161],
'D5': 133,
'D6': 49243,
'D7': [-113, -42, 35, -79, 108, 125],
'D8': -19809},
'C3': 131,
'C4': 0.2929295003414154,
'C5': 46268,
'C6': 12422254437425221311}],
'A7': 7029}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x4a 0x48
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | float |
4 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур C |
5 | float |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива double |
2 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура F |
3 | Структура G |
Структура F:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint32) и адрес (uint16) массива uint8 |
3 | Размер (uint16) и адрес (uint32) массива int64 |
4 | uint8 |
5 | Размер (uint32) и адрес (uint16) массива uint8 |
6 | uint8 |
7 | int16 |
8 | uint32 |
Структура G:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BJH\x00K\x00\x00\x00z?\xc0\x92\x02\x93\x9d\x1c\xa8?\xd0\xa1K,<\xa7'
(b'\xa0\xbf\xe8nl1\xe3\x91\x88\x00\x00\x00\x03\x00\t\x01[\xc6\xbf\xde'
b'\x82\x15)\x90H\xd0?\xc2\x95\xde\xae\xec\x00\xc0\x00\x00\x00\x02\x00*'
b'\x8f\xce\xcf\x00\x00\x00!\x00\x00\x00:\x8c\xba=\x1c\xc8\x9f\x00\x00\x00'
b'\x02\x00\x00\x00C>\x90(k\xa6\xfb\xb6\xcb7\xcf\x97\x7f\xe1\xec\x11I)\xe5\xba'
b'\x8e6\x91\xa8L8 t`\xef\xc0\x8f\xb9\x95K3\x00\x00\x00\x02\x00]\x00\x03'
b"\x00\x00\x00_Z\x00\x00\x00\x03\x00w\x16\xf4r]\xc5'\xe1\xf7\x14t5?\xbf"
b'C\xc5Y\x1d\xd5\x80')
Результат разбора:
'A1': {'B1': 140,
{'B2': 186,
'B3': 0.038277264684438705,
'B4': [{'C1': [0.1294558735628233,
0.2598445827485367,
-0.7634793257134769],
'C2': {'D1': 1, 'D2': 23494}},
'C1': [-0.47668961581179037, 0.1451986650572561],
{'C2': {'D1': -113, 'D2': 52943}}],
'B5': 0.2815583646297455},
'A2': {'E1': 75,
'E2': {'F1': 51,
'F2': [166, 251],
'F3': [-5275061173794905620,
1245572838598784657,
-6319614465065029696],
'F4': 90,
'F5': [143, 185, 149],
'F6': 22,
'F7': -2958,
'F8': 1573201889},
'E3': {'G1': -149654475, 'G2': 0.12212785173126939}}}
Пример 2
Двоичные данные:
b'BJH\x00K\x00\x00\x00\x86\xbf\xef(\x96"\x83JJ?\xe0\x07\x9e\xf2\x87\xe1'
(b'\xdc\x00\x00\x00\x02\x00\tj\x86\x13\xbf\xb4*\x8d\x8f${\xe0?\xd4\x93I\xfcO'
b'TP?\xd7\x01\xb5\x1fc$H\x00\x00\x00\x03\x00"\xb5iz\x00\x00\x00\x19\x00'
b'\x00\x00:|\x89\xbe\xc4Q\x84\x00\x00\x00\x02\x00\x00\x00C>\x89\xfe'
b'\xbf\x92\x14\x10\xc4\x12\xe7\xe44\xb1X\xbbr\xe8\x8b\x00q\x84\xd2\x0f'
b'\x89{;\xb8a\xa0\x16\xebf\x9b\xf7\xe9\x96N9\xb4\x8d\x86\x86[\xa7\x16\xa8\x1d'
b'\x00\x00\x00\x05\x00]\x00\x04\x00\x00\x00b\x8b\x00\x00\x00\x04\x00\x82\x98'
b'Q\xeceka\xd9Q \\5\xbf\xd5\xbfJs\xb8<\xcc')
Результат разбора:
'A1': {'B1': 124,
{'B2': 137,
'B3': -0.3834344148635864,
'B4': [{'C1': [-0.9737044023589274, 0.5009302842072958],
'C2': {'D1': 106, 'D2': 34323}},
'C1': [-0.07877430672350227,
{0.3214898075069117,
0.3594792181507427],
'C2': {'D1': -75, 'D2': 27002}}],
'B5': 0.26952168345451355},
'A2': {'E1': 168,
'E2': {'F1': 29,
'F2': [146, 20, 16, 196, 18],
'F3': [-1737205619955633432,
-8430613687163713157,
4303296784159696539,
-582769414048019066],
'F4': 139,
'F5': [134, 91, 167, 22],
'F6': 152,
'F7': 20972,
'F8': 1701536217},
'E3': {'G1': 1361075253, 'G2': -0.3398004655909517}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4a 0x46 0x52 0x57
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int16 |
3 | uint64 |
4 | Структура E |
5 | double |
6 | int32 |
7 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Адрес (uint32) структуры C |
3 | float |
4 | uint32 |
5 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив структур D, размер 6 |
2 | int32 |
3 | double |
4 | float |
5 | uint16 |
6 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | Адрес (uint32) структуры F |
Структура F:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint16) и адрес (uint16) массива int16 |
3 | uint16 |
4 | int32 |
5 | uint16 |
6 | Размер (uint32) и адрес (uint32) массива int16 |
7 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'JFRW\x00w\xc9\xf9VM\x82\xe1?xV\xa8e\x00\x00\x00\x03\x00\x00\x00'
(b'\x89\x00\x00\x00\x9a\xbf\xc2\x0e\xc4q 7\xb8\xb7\x0bY\xc8\xd5e,'
b'\x0e\xba\xb4\x0bn?Zl~)\xf7\xf6\x97>z\xcc,\x89\xb7\xe0D\xbf0\x0b\xe6\xcd\xcbc'
b'&>\xfa\xc7\xac4o\x00\xd1\xbe\xbe\xe7\xc2_\x1e\xd0L\xbf&\xe4\x84-\\\xcd'
b'\x1c\x19\xb5\xd9\x1e\xbf\xbch\x03K\x999\xf0\xbek\xa929\xae\xf6'
b'\xa5\xfe\xc5\xab\xbd\x00\x00\x001>5\x80\xfb\x04Lq\xdb\x04Kh\xd0dzb'
b'\xf7\x8dA\xc3\x1aj\xdcyGC\xf6,Vm\xa5Y\xf0b\x00\x02\x00\x8c:\xb3W \xb3\xbc'
b'\xcf\xdd\x00\x00\x00\x05\x00\x00\x00\x90\xbe')
Результат разбора:
'A1': {'B1': -21571,
{'B2': {'C1': [{'D1': 0.8532179594039917, 'D2': 704116375},
'D1': 0.24491947889328003, 'D2': 2310529092},
{'D1': -0.6876815557479858, 'D2': 3452658470},
{'D1': 0.48980462551116943, 'D2': 879689937},
{'D1': -0.37286192178726196, 'D2': 1595854924},
{'D1': -0.6519243717193604, 'D2': 761056540}],
{'C2': 431347998,
'C3': -0.11096211047809112,
'C4': -0.23013761639595032,
'C5': 14766,
'C6': 4138073797},
'B3': 0.17724983394145966,
'B4': 72118747,
'B5': 72050896},
'A2': -13831,
'A3': 6218770564412626600,
'A4': {'E1': 101,
'E2': 'dzb',
'E3': {'F1': -1520832414,
'F2': [-2163, 16835],
'F3': 15027,
'F4': 1461760956,
'F5': 53213,
'F6': [6762, -9095, 18243, -2516, 22125],
'F7': -66}},
'A5': -0.14107566379283099,
'A6': -1223992888,
'A7': 15376744944499952494}
Пример 2
Двоичные данные:
b'JFRW\x00w\x9fp\xfa3"Ia2\xa3\xbb\xd1\x00\x00\x00\x03\x00\x00\x00'
(b'\x89\x00\x00\x00\x96?\xcf\x7f\xf0\x81L\xef\xa8R.\x98\xcf[\x8d\xaaZ\xe7\xb6O'
b'\xd4>\x7fp\r\x10\x91X\x11\xbf9\xe2[\t)z\n\xbe\x9f\xb0)Y\x9a\xa3\xa4\xbdI\x89'
b'\xc3\xe5\xe3\xd3\xd5\xbe*\xc3\xb9e\x88\x82x\xbfM\x01U\x8cP\xe7X+\xd8-a?\xe1i'
b'\xec\xa5\x04\x14\xf2>\xbd\x8f\xe7r~\x1d:\xf9\xc7\x15\\\x00\x00\x001?\x17\xb8'
b'\xd3\xa7\xd4\xc2\x12\x19U9>hij$,\xca\x07\xf0\xab\x1c\xdc.Q\xda\xbd'
b'\x92\xa9\x00\x02\x00\x8cR\xef\xb4\xf7*\xf1\x07k\x00\x00\x00\x03\x00\x00'
b'\x00\x90Z')
Результат разбора:
'A1': {'B1': 5468,
{'B2': {'C1': [{'D1': 0.24945087730884552, 'D2': 277960721},
'D1': -0.7261101603507996, 'D2': 153713162},
{'D1': -0.3118908703327179, 'D2': 1503306660},
{'D1': -0.049203645437955856, 'D2': 3856913365},
{'D1': -0.16676224768161774, 'D2': 1703445112},
{'D1': -0.8008015751838684, 'D2': 2354112344}],
{'C2': 735587681,
'C3': 0.5441802237479847,
'C4': 0.3702385127544403,
'C5': 29310,
'C6': 490404295},
'B3': 0.5926639437675476,
'B4': 2815738386,
'B5': 425015614},
'A2': -24720,
'A3': 18028791431852893115,
'A4': {'E1': -47,
'E2': 'hij',
'E3': {'F1': -625110359,
'F2': [9260, -13817],
'F3': 21231,
'F4': -1258870031,
'F5': 1899,
'F6': [-3925, 7388, 11857],
'F7': 90}},
'A5': 0.2460919028616193,
'A6': 1378785487,
'A7': 6597116336578908116}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4a 0x4e 0x50 0x42 0xe1
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 4 |
2 | Адрес (uint32) структуры B |
3 | Адрес (uint32) структуры F |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур C |
2 | Адрес (uint16) структуры D |
3 | Структура E |
4 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | int8 |
3 | uint8 |
4 | Размер (uint32) и адрес (uint16) массива int16 |
5 | float |
6 | int16 |
7 | float |
Структура F:
Поле | Описание |
---|---|
1 | uint16 |
2 | double |
3 | int32 |
4 | uint16 |
5 | int32 |
6 | Размер (uint16) и адрес (uint32) массива float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'JNPB\xe1lowk\x00\x00\x00,\x00\x00\x00aCff\xfc\x81\xc6\x00\x00\x00\x11\x00'
(b'\x00\x00\x14\xe6\x08\xcc\x9dC\xb6&K\xf6\x1e\xfdC\x08\x00\x00\x00\x02'
b'\x00\x00\x00\x17\x00\x1f\xbaTS\x00\x00\x00\x05\x00"\xbe\xc1\x88}C'
b'\xef\xbe\x8d\xfbN\xde@\xe2\x9b\xbbRo\xbf\xbd\x8a\xea\xf3\xbe\xb7 \xa9=|)'
b'\x98?K\xb3\x1d\x9eL\xbf\xaaL\x11\xf9?\x84\x80b\x88\xe7\x8b\xd0'
b'\x01\xa0\x87\xaa\x9c\x00\x04\x00\x00\x00Q')
Результат разбора:
'A1': 'lowk',
{'A2': {'B1': [{'C1': 17254, 'C2': 102}, {'C1': -895, 'C2': 198}],
'B2': {'D1': -26, 'D2': 2252},
'B3': {'E1': -70,
'E2': 84,
'E3': 83,
'E4': [-25277, -18906, 19446, 7933, 17160],
'E5': -0.37799444794654846,
'E6': 17391,
'E7': -0.27730792760849},
'B4': 16015049433420033983},
'A3': {'F1': 40524,
'F2': -0.051361619640155176,
'F3': 1653139339,
'F4': 53249,
'F5': -1601721700,
'F6': [-0.06783094257116318,
-0.3576710522174835,
0.06156310439109802,
0.795701801776886]}}
Пример 2
Двоичные данные:
b'JNPB\xe1cell\x00\x00\x00.\x00\x00\x00c\x0c\xb31\x07\xa2n\x00\x00\x00\x11\x00'
(b'\x00\x00\x14P\x0b\x997\xe2\t\xd3\xeaPq{\xd2\x14\x85\xaa\x00\x00'
b'\x00\x02\x00\x00\x00\x17\x00\x1f\xe4\x00\xe2\x00\x00\x00\x06\x00"\xbfAZ'
b'\xd2\x88+\xbe\x90j\x0b\x19\xfb\xf8\xbb(\x03\xff\xe8>Dei\xbe\x93`\xd8\xbd'
b' >\x99?y\xfakl\x0e\xbf\xe9\x00\t\x0ch\xa3<a\xc2\xbd3*I40"t\x00'
b'\x04\x00\x00\x00S')
Результат разбора:
'A1': 'cell',
{'A2': {'B1': [{'C1': 3251, 'C2': 49}, {'C1': 1954, 'C2': 110}],
'B2': {'D1': 80, 'D2': 2969},
'B3': {'E1': -28,
'E2': 0,
'E3': 226,
'E4': [14306, 2515, -5552, 29051, -11756, -31318],
'E5': -0.7552920579910278,
'E6': -30677,
'E7': -0.28205904364585876},
'B4': 1872363552816496616},
'A3': {'F1': 27662,
'F2': -0.7812543146475046,
'F3': 1640152371,
'F4': 10825,
'F5': 875569780,
'F6': [0.19179309904575348,
-0.28784823417663574,
-0.03912219777703285,
0.976477324962616]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x7 0x57 0x51 0x55
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | float |
3 | Массив адресов (uint16) структур B, размер 2 |
4 | Структура C |
5 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | Размер (uint16) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | uint16 |
3 | Адрес (uint32) структуры D |
4 | int32 |
5 | uint32 |
6 | Структура E |
7 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint8 |
3 | int8 |
4 | Массив uint32, размер 6 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | Массив int8, размер 7 |
4 | uint8 |
5 | uint64 |
6 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x07WQU>\xf9\xb5\x15>zNf\x00K\x00V\xfd\x81<D8\x0c\xceTN\xbc\x00\x00'
(b'\x00_%\x14\xa1sj\xfa\x0b\xe5@+\x8c\xe4\xc4N\x06\xaf/\xa4[\x85\xd7\x9f!\xf5F1'
b'\xe3x\xa4B\xcb\x86E\x00\xff\x15\x8e\xe2\xee\x1c\x18\xb0*au\xb4G\xf4\x00\x02'
b'\x00\x00\x00Ihx\xaa\x82\xe6\x00\x02\x00\x00\x00T\xbfU\xaa\xd3\xbf\xf9h[\x07'
b'4\xd5\xf9\x81/\xd5\x893&\xe7\xe1Rw\xfe\xd7S\x12&8\x81(')
Результат разбора:
'A1': 0.4877096712589264,
{'A2': 0.24443969130516052,
'A3': [{'B1': -19385, 'B2': -12, 'B3': 'au'},
'B1': -21886, 'B2': -26, 'B3': 'hx'}],
{'A4': {'C1': -179796246422303148,
'C2': 20156,
'C3': {'D1': -0.8346378207206726,
'D2': 191,
'D3': -7,
'D4': [1750796084,
3589898543,
3582538534,
3890303607,
4275524370,
641237288]},
'C4': 622109043,
'C5': 1794771941,
'C6': {'E1': 4623944356599826095,
'E2': 799300485,
'E3': [-41, -97, 33, -11, 70, 49, -29],
'E4': 120,
'E5': 11836246548226834197,
'E6': 142},
'C7': -487711720},
'A5': -20438}
Пример 2
Двоичные данные:
b'\x07WQU\xbe\xbb(\x91\xbe\xb5\xd9L\x00K\x00V\x07(\xa3\x9cny\x14\x1c'
(b'\xa2\xc9\x00\x00\x00_\x8e0A\xfe\xcb{\xf6\x18\xcf\xcd0\xf7e\xbb\x02t\x18\xe8'
b'\xac\x9f\x80S\xd6|O[\x06=}\xcc\xde\x16w#_c\xc7\xe3H.e8\xa5gx\xc0l7\x00\x02'
b'\x00\x00\x00Ila\xf0\xa1\xd4\x00\x02\x00\x00\x00T\xbe\xe2\x1co\xc4'
b'\x80\xbc\x80\xa4\xa9\x1bFa*+\xfc\x07\xd5[\xce\x05\xdda\xde\xf1\x80M\x1d\xd9'
b'\xe0')
Результат разбора:
'A1': -0.3655438721179962,
{'A2': -0.3551734685897827,
'A3': [{'B1': -16276, 'B2': 55, 'B3': 'gx'},
'B1': -3935, 'B2': -44, 'B3': 'la'}],
{'A4': {'C1': 515842049597576220,
'C2': 41673,
'C3': {'D1': -0.44162318110466003,
'D2': 196,
'D3': -128,
'D4': [3162547369,
457597226,
737937365,
1540228573,
1642000768,
1293801952]},
'C4': -1909440002,
'C5': 3413898776,
'C6': {'E1': -3473065898510974348,
'E2': 417901727,
'E3': [-128, 83, -42, 124, 79, 91, 6],
'E4': 61,
'E5': 9064864338059419491,
'E6': 199},
'C7': -481808795},
'A5': 14501}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x4c 0x53 0x45
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Структура D |
3 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 6 |
2 | int8 |
3 | Массив адресов (uint16) структур C, размер 2 |
4 | Размер (uint16) и адрес (uint32) массива uint8 |
5 | int64 |
6 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | uint64 |
4 | Размер (uint32) и адрес (uint32) массива uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив float, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DLSEiujbzc\x04U\x00r\x00\x02\x00\x8b\x00\x00\x00\xacK\xb9v\x1bZ\x81'
(b'Z,\xa9\xa1(\n\x90\xf3\xe5\x02]\xd4\xb3,\xbe=qU?\xd4\xd2\xb0\xbdJ\xdd\xee>~'
b'\xed0\xbd\x0e\xb81?\xe5\xe1\xf9>\xb2\x06!>\xa1X\xc4fI\xaf\xf8\xe11'
b'\x03\x82\xc4\x9e\x85\xc0\xa9\xb8\x87_f\xed\xbfJ\x16\xe0\xc0\x9f\xd4\x80'
b'\xeb\xdf\x03\x00\x00\x00O\x00\x00\x00d\x94\xce\x868\xa3\xfbvhz\xde\xbf+\xd9'
b'T\x9f\x0f\xdc\xf1@\xb9\x02\x00\x00\x00n\x00\x00\x00\x12\x14')
Результат разбора:
'A1': {'B1': 'iujbzc',
{'B2': 4,
'B3': [{'C1': -0.9187467242057252,
'C2': 74,
'C3': 16135131740686573590,
'C4': [817, 50306, 34206]},
'C1': -0.4762211954062425,
{'C2': 43,
'C3': 13348935222983349465,
'C4': [37988, 34510]}],
'B4': [18, 20],
'B5': 6521592809411660716,
'B6': 43308},
'A2': {'D1': 6702172029737117857,
'D2': [-0.16865473985671997,
0.8337591290473938,
-0.08633962273597717,
0.46653205156326294,
-0.04319524019956589,
0.6942147016525269,
0.48805156350135803,
0.15725210309028625]},
'A3': 16282957182549645473}
Пример 2
Двоичные данные:
b'DLSEfrjldjLS\x00v\x00\x02\x00\x8f\x00\x00\x00\xea\xe3B\xff\x92\xb1px\x85e4'
(b'\x88#7=\x10_d8\xd9\x06>\xe1:\xa7=\x1a,]?\xe3\x0fk?b\xf5\xc7\xbe\x93'
b'5\x86\xbe\xd1\x99\x98\xbe\xac\x93H\xbfg\x85\xe4Z\xa2\x19\x03\x05\xa0e3j.'
b'eR\r\xa8"\xe7\xbf\x91\x8a/Q\x00+s\xd6\x9e\x02\x00\x00\x00O\x00\x00\x00'
b'7\x03\xf8>\xad/[\xa2\xf6\xa0\xa0\xc4\x13\x17:A\xc4\xbf\xdd\xda\xccW\x97\xf3'
b'f#\x12\x05\x00\x00\x00l\x00\x00\x00\xfc\xbb')
Результат разбора:
'A1': {'B1': 'frjldj',
{'B2': 76,
'B3': [{'C1': -0.7229805240814693,
'C2': -111,
'C3': 11445462131534802826,
'C4': [26016, 27187]},
'C1': -0.15824056746308646,
{'C2': -35,
'C3': 1307001513269775578,
'C4': [823, 16120, 12205, 41563, 41206]}],
'B4': [252, 187],
'B5': 8678631726848861162,
'B6': 25989},
'A2': {'D1': 7232517381684430900,
'D2': [0.13168799877166748,
0.08165527135133743,
0.8639541864395142,
0.9182111620903015,
-0.39054399728775024,
-0.26212748885154724,
-0.2980485260486603,
-0.7835032939910889]},
'A3': 361160580220093799}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x54 0x44
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | uint8 |
3 | Размер (uint32) и адрес (uint32) массива char |
4 | Адрес (uint16) структуры C |
5 | float |
6 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | uint32 |
3 | double |
4 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур D |
2 | float |
3 | uint16 |
4 | float |
5 | int32 |
6 | Структура E |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint32) и адрес (uint32) массива uint8 |
3 | Массив uint16, размер 2 |
4 | uint64 |
5 | uint16 |
6 | float |
7 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PTD\x16\x001\x03\x00\x00\x00(\x00\x00\x006\x00\x85\xe2v?\xf3\xf3\x85\x9b'
(b"\x89\x8b\\'\xf0\x9b\x00\x13H\xd9\xb4\x9a\xbb\xbf.\x9fpwj\xe2\xc2\xf1E\x91"
b'\x83P7\xcb\xceS\x03\x00\x00\x00+\x00\x00\x00[\xa0\xfa\xbe\x06l@\x1ep\xbf'
b'0~%\xea\x15\x88\x02\x00\x00\x004\x00\x00\x00M\x99\xe8\x05\xdc\x88'
b'n\x8a\x9f\xb9\xeb\x8b\x0c\x81[]\xf6\xbe\xcc')
Результат разбора:
'A1': {'B1': -1953916027,
{'B2': 2616207196,
'B3': -0.10782938294148536,
'B4': 40750},
'A2': 49,
'A3': 'pwj',
'A4': {'C1': [{'D1': -15646, 'D2': 241},
'D1': -28347, 'D2': 131},
{'D1': 14160, 'D2': 203}],
{'C2': -0.4895046651363373,
'C3': 27654,
'C4': -0.9379615783691406,
'C5': -366641616,
'C6': {'E1': 34837,
'E2': [206, 83],
'E3': [39245, 1512],
'E4': 10082356285672425692,
'E5': 33036,
'E6': -0.48118099570274353,
'E7': -52}},
'A5': 0.9643939137458801,
'A6': 62451}
Пример 2
Двоичные данные:
b'PTD\x16\x00\xad\x03\x00\x00\x00(\x00\x00\x009\x00\x18\xedn\xbf\xd2G\x83>'
(b'\xb2\xc5\xa2\x86B&\\)[\x9f\xa4D\xdf?\xdc\x93duk\xde\x0f\xb5\xc0\t'
b'\xe3\xe4\x1f5l\xe0\x9a\xc3\xba\x04\x00\x00\x00+\x00\x00\x00\x19\xa8!'
b'\xbfD\xe9|\xecx>\xfe\x7f\xa5Jo\xe2\x02\x00\x00\x007\x00\x00\x00\x8b\x9c\xe2'
b'\xed$\xa8\xe0\x1e%n\xbae\xcc4\xb6\x9b7\xbe,')
Результат разбора:
'A1': {'B1': -978174333,
{'B2': 641894050,
'B3': 0.48856463968390584,
'B4': 37852},
'A2': 173,
'A3': 'duk',
'A4': {'C1': [{'D1': 4062, 'D2': 181},
'D1': 2496, 'D2': 227},
{'D1': 8164, 'D2': 53},
{'D1': -8084, 'D2': 154}],
{'C2': -0.6314712166786194,
'C3': 59716,
'C4': 0.24308961629867554,
'C5': 1252360190,
'C6': {'E1': 57967,
'E2': [195, 186],
'E3': [40075, 60898],
'E4': 7330292449209788452,
'E5': 13516,
'E6': -0.17930492758750916,
'E7': 44}},
'A5': -0.9333052635192871,
'A6': 18386}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x46 0x54 0x48
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
3 | int16 |
4 | uint64 |
5 | Структура C |
6 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | float |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | uint16 |
3 | int8 |
4 | Адрес (uint32) структуры D |
5 | Размер (uint32) и адрес (uint16) массива uint16 |
6 | int32 |
7 | int32 |
8 | Размер (uint16) и адрес (uint32) массива int32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива uint8 |
2 | int64 |
3 | int64 |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CFTHik\x18zp\xb1\xb61\x00\x00\x00\x04\x00\x00\x00kp\xb6\xf3\xb9'
(b'\xda\xa2\x9b\xed,\xef\x00\x00\x00\x02\x00{\xa4\xb9\r\x00\x00\x00\x7f\x00'
b'\x00\x00\x04\x00\x96\xb6R\x87\x8e\xcb\x9b\xde\xd0\x00\x06\x00'
b'\x00\x00\x9e\xc6\xd4\xeaBw7>^\x82=\xbf\\j\xcb5\x1b\xbfR\x02\xc1>'
b'\xe5\x1c\xa0\x8b\xde\xbf>\x1b\xd4\xbe\xd0&C\x8dQ>\xf3\xa1q?\x14=\xd7\x00'
b'\x00\x00C\x00\x00\x00M\x00\x00\x00W\x00\x00\x00agdJ\xaa\x00\x00\x00\x02\x00'
b'}\xfd[\x7f\xadS\xdc\xe3D\xe2\xc9*\xa2\x8f\xfa\xef\xcfN\x95\xda'
b'\x90\x12\xee\x1e\xf1\xde\xc7P\xa6\xef\x07\x9a\xe3\xccN\x1e\xb8Q\x0ft'
b'\xbc\xba\\\x82n\x1d\xe4\xc8\xb6\r')
Результат разбора:
'A1': 7596192110646244913,
{'A2': [{'B1': 30519, 'B2': 0.21729369461536407, 'B3': -0.8610045313835144},
'B1': 13595, 'B2': -0.8203545212745667, 'B3': 0.44748401641845703},
{'B1': 35806, 'B2': -0.7426121234893799, 'B3': -0.4065419137477875},
{'B1': 36177, 'B2': 0.47584107518196106, 'B3': 0.5790686011314392}],
{'A3': 28854,
'A4': 17562308613843528943,
'A5': {'C1': 'gd',
'C2': 42169,
'C3': 13,
'C4': {'D1': [74, 170],
'D2': -190418176820059324,
'D3': -2105104473130340401,
'D4': 78},
'C5': [38362, 36882, 60958, 61918],
'C6': -1236105330,
'C7': -878977328,
'C8': [-951015697,
127591372,
1310636113,
259308730,
1552051741,
-456608243]},
'A6': 3335842370}
Пример 2
Двоичные данные:
b'CFTHb\xaeT\xff\xd7\x0b\xeag\x00\x00\x00\x05\x00\x00\x00u\xf3\xf6\xc3\xf6'
(b'\xdc\xeb\xe0H\x9b\x04\x00\x00\x00\x02\x00\x89$[K\x00\x00\x00\x8d\x00'
b'\x00\x00\x08\x00\xa4\xe1\xbc\xeeE\x92\x97\x04y\x00\x02\x00\x00\x00\xb4\x9e'
b'\x89x9a\xde>P\xfaD=\x17X\x19:a??q#\xbeG<\\\xbe\x0b\xbfl\xd9\xba\xbf]Vn$\x17?'
b'GB\x93\xbew\xaa\xd4\xd0D\xbf\r\xa8\x11\xbfd\x1d\xf1\x00\x00\x00C\x00\x00\x00'
b'M\x00\x00\x00W\x00\x00\x00a\x00\x00\x00kuf\xc5\x04\x00\x00\x00\x02\x00\x8bk'
b'\xb1M\x9d\xda\x0b\xa6\x1c`\xd3B\xa6\x0e~\xb5\xb5\xd9\xd9\x92W\xaf'
b'z\xbf\xd5\xbf\xa3%PX\xdfk@\x1a\xf3o\xb1\x85"\x82\xe0\n')
Результат разбора:
'A1': 7110714319465867879,
{'A2': [{'B1': 25054, 'B2': 0.20407968759536743, 'B3': 0.03694925084710121},
'B1': 14945, 'B2': 0.7478200793266296, 'B3': -0.19456619024276733},
{'B1': 48651, 'B2': -0.9251972436904907, 'B3': -0.8646000623703003},
{'B1': 9239, 'B2': 0.778359591960907, 'B3': -0.24186259508132935},
{'B1': 53316, 'B2': -0.5533457398414612, 'B3': -0.8910818696022034}],
{'A3': -3082,
'A4': 14120716587305048836,
'A5': {'C1': 'uf',
'C2': 9307,
'C3': 75,
'C4': {'D1': [197, 4],
'D2': 7760068973299475996,
'D3': 6976993528702219701,
'D4': 217},
'C5': [55698, 22447, 31423, 54719, 41765, 20568, 57195, 16410],
'C6': -507711931,
'C7': -1835596679,
'C8': [-210783867, 579002378]},
'A6': 2659809337}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x59 0x4b 0x4b 0x48 0xa1
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | int16 |
3 | Структура B |
4 | uint32 |
5 | uint16 |
6 | Адрес (uint16) структуры D |
7 | Массив int8, размер 7 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив адресов (uint32) структур C, размер 4 |
3 | Массив char, размер 5 |
4 | Массив uint16, размер 5 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | int16 |
4 | Размер (uint16) и адрес (uint16) массива int32 |
5 | int32 |
6 | uint32 |
7 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'YKKH\xa1r4)\xd2\xe2\xb2\xe5\x00\x00\x00:\x00\x00\x00<\x00\x00\x00>'
(b'\x00\x00\x00@rszps\r\xfd\xbb\xb4$\xd7f\xa3w\x18\x8a\xef:\xfb\x8d'
b'\x88\x00N\x9fJ\xc9\x8ejV\x0fWO^\xaf8\x94\x91\x19e\xf8\xf8\x9b\xe8\x96'
b'\x14\xce\xffD\xa5c\x9ejk\xf6\x13\xf6\x11\x00\x03\x00B\xcd\x88"\xf8\r\xcfP'
b'\xd4\xa9')
Результат разбора:
'A1': 114,
{'A2': 13353,
'A3': {'B1': 3538072293,
'B2': [{'C1': 87, 'C2': 79},
'C1': 94, 'C2': 175},
{'C1': 56, 'C2': 148},
{'C1': -111, 'C2': 25}],
{'B3': 'rszps',
'B4': [3581, 48052, 9431, 26275, 30488]},
'A4': 2330934011,
'A5': 36232,
'A6': {'D1': -1637192714,
'D2': 19,
'D3': -2543,
'D4': [1710815387, -392817458, -12278429],
'D5': -846716168,
'D6': 231690452,
'D7': -87},
'A7': [-97, 74, -55, -114, 106, 86, 15]}
Пример 2
Двоичные данные:
b'YKKH\xa1\x81\xbd:\xbaf\x1cK\x00\x00\x00:\x00\x00\x00<\x00\x00\x00>'
(b'\x00\x00\x00@pjpmdS\x08\x08"\x9e\x86\xb9!\xba\x0b\xdcl\x83\x8ft\xdb\x00J\x8c'
b'\x98\x10\x1f\x82\x1eh\x8c/\xff\xfb\x11\xe4\x86\xc9\xb4\xf3\x1d\x92\xb9l'
b'\xdb}s^\xe5NRb<\x00\x02\x00B\x89\xf8j\xe0E*\x03_\xe9')
Результат разбора:
'A1': 129,
{'A2': -17094,
'A3': {'B1': 3127254091,
'B2': [{'C1': -116, 'C2': 47},
'C1': -1, 'C2': 251},
{'C1': 17, 'C2': 228},
{'C1': -122, 'C2': 201}],
{'B3': 'pjpmd',
'B4': [21256, 2082, 40582, 47393, 47627]},
'A4': 3698099087,
'A5': 29915,
'A6': {'D1': 1935598926,
'D2': 82,
'D3': 25148,
'D4': [-1259135598, -1184048259],
'D5': -1980208416,
'D6': 1160381279,
'D7': -23},
'A7': [-116, -104, 16, 31, -126, 30, 104]}