Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4f 0x44 0x59 0xb0
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
3 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Адрес (uint32) структуры C |
3 | int32 |
4 | Адрес (uint32) структуры F |
5 | Массив int8, размер 6 |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | double |
3 | Размер (uint16) и адрес (uint32) массива структур E |
4 | Размер (uint32) и адрес (uint16) массива int32 |
5 | int32 |
6 | uint16 |
7 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
3 | float |
4 | float |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
Структура F:
Поле | Описание |
---|---|
1 | Массив int8, размер 8 |
2 | double |
3 | Массив uint16, размер 5 |
4 | uint64 |
5 | float |
6 | uint32 |
7 | uint32 |
8 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ODY\xb0\xa6\xa2.\x8e\xb9d_\x0fd\xb0\xb1\xbc\xa0N\x00\x00\x00p\xac\xc7'
(b'\x16x\x00\x00\x00\xb5\x9b\xf7\x1c;\xda\xe4o\x02\x15\xe5\xef\xae\xf6\x17'
b'Dx\x94\xd1){o\x18\x1f\xab\x90\x9f\xd3Zg\xd8Zv#\xa3\x06|I\xf8\xad\x92\x121'
b'\x8b\xc7\x89\xbf*}m(\n?\x12\xb6$\xe5\xad>\xa8\x0bR\xbf\x8e\xcfD\xc5'
b'\r=\xec\xbf\x07\x00#\x00\x00\x00\x02\x00\x00\x00F\x00\x10d\xb4!\x86\x11-\x8a'
b'd\xc1vDK\t*\xed\x00o\x00V\xefR\x8f\xbf\xa3\xe1\xdb\x0e\x82\xc6\xaf\\rY%\x83'
b'\xc2\xa1\xfa66\x0cWn:\xbec\x00gH-\xd8fi\x0e\xcf\x8cT')
Результат разбора:
'A1': 2385420966,
{'A2': 13596842693809366201,
'A3': {'B1': 160,
'B2': {'C1': {'D1': 0.5396793484687805,
'D2': -18926,
'D3': 0.3396388292312622,
'D4': -0.8204903602600098},
'C2': -0.8824528553873152,
'C3': [{'E1': 352481252, 'E2': -27},
'E1': 402042607, 'E2': 68},
{'E1': 701600888, 'E2': 123},
{'E1': 2870941807, 'E2': -112},
{'E1': 1734005663, 'E2': -40},
{'E1': 2737010266, 'E2': 6},
{'E1': 2918730108, 'E2': -110}],
{'C4': [-947179246, 2099953545],
'C5': 565470224,
'C6': 4486,
'C7': -30163},
'B3': 382184560,
'B4': {'F1': [100, -63, 118, 68, 75, 9, 42, -19],
'F2': -0.015294904529632003,
'F3': [57763, 3803, 50818, 23727, 22898],
'F4': 879951227281113893,
'F5': -0.18206153810024261,
'F6': 1214709859,
'F7': 1768347693,
'F8': 1418514190},
'B5': [-75, -101, -9, 28, 59, -38]}}
Пример 2
Двоичные данные:
b'ODY\xb0G\x86\x82c\x06aQ_\x9e\x8d\x86o\x16D\x00\x00\x00\x8c\xfcQZn\x00\x00'
(b'\x00\xc0\xe2\xb4\x15\xc1\r\xa9\xb7\xaf\x8a\xb7\x96\xe6\xe4\xa5\xd1%\x15U'
b'\x06BE\\z\xb40fw\xc9F\x8a6j\xbeQ\x92\xa0^\xb23i\x15?Ur\x0b[\xa3\xbd\xf8\xef'
b'\xb8>\x82D&\xfc\xa3\xfd\xec\xbf\x05\x00#\x00\x00\x00\x02\x00\x00\x00<\x00z\r'
b'\xac\xd0s>\xd3\xa4\xb1d1\xed\x1cp\xa2S\x1e\xff\xb3\x92\xdd\xeb\xe2?\xdc\x07'
b'|\x17\xa2\xe8\x97\x03\x15\xb5\xd5\x06\x86\x1cSAh\xf5\xb1\x99p?\x0f\x7f\xc8#'
b'd\xf2\x82_\xcc\x8c\xdc\x08')
Результат разбора:
'A1': 1669498439,
{'A2': 8036266296432746758,
'A3': {'B1': 22,
'B2': {'C1': {'D1': 0.583636462688446,
'D2': 29269,
'D3': -0.0797634944319725,
'D4': 0.3612058162689209},
'C2': -0.9059619831842982,
'C3': [{'E1': 2326771625, 'E2': -73},
'E1': 2783241878, 'E2': -47},
{'E1': 106239269, 'E2': 66},
{'E1': 3027917893, 'E2': 48},
{'E1': 1187608422, 'E2': -118}],
{'C4': [1371433526, -1302421358],
'C5': -794030726,
'C6': 15987,
'C7': -23341},
'B3': 1515322508,
'B4': {'F1': [-79, 100, 49, -19, 28, 112, -94, 83],
'F2': 0.591292177705302,
'F3': [2012, 6012, 59554, 919, 46357],
'F4': 17683455762086889173,
'F5': 0.9398451447486877,
'F6': 600342287,
'F7': 1602417252,
'F8': 148671692},
'B5': [-64, -30, -76, 21, -63, 13]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4a 0x4d 0x4f 0x58 0x44
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | double |
3 | Размер (uint16) и адрес (uint32) массива int16 |
4 | uint32 |
5 | float |
6 | int16 |
7 | int32 |
8 | Размер (uint32) и адрес (uint16) массива double |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Структура C |
3 | uint32 |
4 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив адресов (uint32) структур D, размер 4 |
3 | Массив int16, размер 7 |
4 | Структура E |
5 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint16 |
2 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'JMOXDw\xd1\xe0\x88i\xa5`\x00\x00\x00i\x00\x00\x00r\x00\x00\x00{'
(b'\x00\x00\x00\xd3E\x0bm`\xaf\x04y/L&>\xad\xca\xaa`\xaaQ+\xba\xef'
b'\xc4\xbf\xe9\x95vYI)\xe2\xc4\xf6\x08\x90\xd8\x92\xd0\xea?\x02\x00'
b'\x80\x00\x00\x00`\xdf\x03\xcb\x94?\xf9\xbe\x1e\xfb(\xd2\x04\xab\x03\x00'
b'\x00\x00\x84\x00!+\xaeS\x02\x00\\\x00\xe3\x17\xc1\x84\xff\x02\x00e'
b'\x00%\xe9\xdbE\xdf\x02\x00n\x00\x0c\xdc/\x1b\xf0\x02\x00w\x00R\x8f[\x9d\xdd'
b'\xf8\xaf\x87\x17\xa6p\xda?\x90$R\xb4+\x1b\xc0\xbf*\xdb\xde\xe3\xfc\xc2\xe0?')
Результат разбора:
'A1': {'B1': 2296435063,
{'B2': {'C1': -23191,
'C2': [{'D1': [11041, 21422], 'D2': 227},
'D1': [49431, 65412], 'D2': 37},
{'D1': [56297, 57157], 'D2': 12},
{'D1': [12252, 61467], 'D2': 82}],
{'C3': [17875, 27915, -20640, 30980, 19503, 15910, -13651],
'C4': {'E1': -86, 'E2': -0.16356589427171553},
'C5': 38377},
'B3': 692672886,
'B4': 50402},
'A2': 0.8379606466044425,
'A3': [23439, -8803],
'A4': 3406028640,
'A5': -0.48681318759918213,
'A6': -1250,
'A7': -1425747416,
'A8': [0.4131255368981779, -0.12582918457727432, 0.5238022280308077]}
Пример 2
Двоичные данные:
b'JMOXDe\x8e\xda\xf51\xe1`\x00\x00\x00i\x00\x00\x00r\x00\x00\x00{\x00\x00\x00p'
(b'\xa4\x91\xe2Kl2\xa4\xa7\x1d\xbax\x0b\xf6\x8e\xf2`\x13\xaf=[\xee\xbf\x13\xaf'
b'\x8d\x0b\x96X\xe8\xf3\x9c\xf3\xdd\x98\xea\xb4\xd8\xbf\x02\x00'
b'\x80\x00\x00\x00\r\xd1\x0b\xcf\xf0\xc4\xf6\xbe\x05udV\xec\xc9\x04\x00'
b'\x00\x00\x84\x00\x1ev\xc2\x01\x02\x00\\\x00$\x1a\xd3\xc5\xf4\x02\x00e'
b'\x00\x15,n\x15\xe4\x02\x00n\x00S\xf3\xc9\x1a\xac\x02\x00w\x00\x92\n\xcd\nF'
b"FP$\xa2c\x19\xe4?\x90=\x9d\x9c\xa1U\xba\xbf\x8c\x07'\x00/\x9c\xd3\xbf$\x0eyV"
b'\xf7$\xdf\xbf')
Результат разбора:
'A1': {'B1': 4124741221,
{'B2': {'C1': -7887,
'C2': [{'D1': [30238, 450], 'D2': 36},
'D1': [54042, 62661], 'D2': 21},
{'D1': [28204, 58389], 'D2': 83},
{'D1': [51699, 44058], 'D2': 146}],
{'C3': [-23440, -7535, 27723, -23502, 7591, 30906, -2549],
'C4': {'E1': -114, 'E2': -0.94863781160805},
'C5': 44819},
'B3': 1486228365,
'B4': 62440},
'A2': -0.3860422604409963,
'A3': [-13046, 17930],
'A4': 3473658125,
'A5': -0.48197126388549805,
'A6': 29957,
'A7': -907258268,
'A8': [0.6280992667038923,
-0.10286912988271113,
-0.3064076901902062,
-0.4866312355481759]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x43 0x46 0x2c
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Адрес (uint16) структуры B |
3 | uint8 |
4 | float |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | Структура E |
3 | Массив double, размер 5 |
Структура C:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур D, размер 2 |
2 | float |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | Структура F |
3 | Размер (uint32) и адрес (uint32) массива int32 |
4 | uint64 |
5 | uint32 |
6 | Размер (uint32) и адрес (uint16) массива float |
7 | int64 |
8 | uint64 |
Структура F:
Поле | Описание |
---|---|
1 | Массив uint16, размер 8 |
2 | uint16 |
3 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CCF,AjA0C\x00\x1c\xaf\xbe\xf6\xbd\xed\x07c\xbeZ\xec\xb9Gm>\xb3\xa0\x0f'
(b'\x00\x00\x00\x15\x00\x00\x00F\xc39\xbe\xdc\xf0\xeam\xe0\x9aQ:Gp2\t\xc5'
b'\x01\x99>L4\xaf\xbe\x87\xfd|?\xc9\xb0+\xbf\x1b\x00w\x82\xde-q\xa0\xde%n\xcdH'
b'\xb7\xce\xb7\xef\xffr\xf3\x91\x0c\x18-{\xa1\x88[\x1c$x$\x02\x00\x00\x00+'
b'\x00\x00\x00\xd1\x07]-\xd42\x04\x81\xd6v\x9c\x03\x04\x00\x00\x003'
b'\x00\x8f\xb0\xbez\xf2SL\x15\xfa\xbc\x95\x18\xf1\xfc\xa5\x0b\x84\x8bQ'
b'R\xd29\xe1?\xa0\x11\xe8~X\x81\xee\xbf\xc0\x86lYj;\xe7?\xf6~-\xa9\x92+\xed'
b'\xbf\xa0\xa0\x17\x81\xd3\x9b\xda?')
Результат разбора:
'A1': 809593409,
{'A2': {'B1': {'C1': [{'D1': -0.22170992195606232, 'D2': -5030},
'D1': 0.23171891272068024, 'D2': -24397}],
{'C2': -0.18140897154808044,
'C3': 1844113628},
'B2': {'E1': 769557111,
'E2': {'F1': [41073,
9694,
52590,
46920,
47054,
65519,
62322,
3217],
'F2': 11544,
'F3': 2627890086784049531},
'E3': [978426592, 154300487],
'E4': 9296611417675073489,
'E5': 60585686,
'E6': [0.2988416254520416,
-0.34219586849212646,
0.9882435202598572,
-0.6706662774085999],
'E7': 1534693873933004943,
'E8': 839355018004249850},
'B3': [0.5383082969459427,
-0.9532892683642338,
0.7260028597413211,
-0.9115689567806544,
0.4157608757655087]},
'A3': 28,
'A4': -0.12048088759183884}
Пример 2
Двоичные данные:
b'CCF,=P\xbc\x88K\x00\xf8G\x7fG\xbf\x98\xd6[\xbe{\x1c\xa16\x03\xbf\x93\xe5\x0f'
(b'\x00\x00\x00\x15\x00\x00\x00\n\xebf\xbfB\xb8\x85=D\xffb\xf1R\x82\x0b\r\xff'
b'?\xc6\xcfI\xe6t>%XP?\x07Oj\xbfVz-\xbe\xc5\x15\xa1>\x1b\x00\xe3\xc8\xd4'
b'U2\x91I\x98\xd1n_y\x81g\xbf.\xa2\xec\xbc|@\x06\x07\x9d\xcf\xb4\xb9'
b'\x13\r~\x03\x00\x00\x00+\x00\x00\x00j\xce\xe7f\xba\xecom\x0b<\x075\x05'
b"\x00\x00\x007\x00\x1f\xcbK\x91V\x1d\xa66\xf5k'W\xa8s\xf3FF;\xca\xdeA\xa1\xe2"
b'\xbfj#6$\xbad\xe5\xbfZ\xe9[\x16\xf7\x7f\xef\xbfl\xb0\x93c\xb4\xf3\xdb'
b'?\xf0\xfd3\xcc\x88\x14\xcc?')
Результат разбора:
'A1': -2000924611,
{'A2': {'B1': {'C1': [{'D1': -0.21468579769134521, 'D2': 7291},
'D1': -0.5125523209571838, 'D2': -6765}],
{'C2': -0.9020239114761353,
'C3': 1032173634},
'B2': {'E1': 1440008419,
'E2': {'F1': [37170,
38985,
28369,
31071,
26497,
11967,
60578,
31932],
'F2': 1600,
'F3': 9082937711799540999},
'E3': [-245170364, 218858066, -809091073],
'E4': 7885781757883567722,
'E5': 889666571,
'E6': [0.2391597181558609,
0.8138449788093567,
-0.9152683615684509,
-0.16941198706626892,
0.3146192133426666],
'E7': 3937867181824133919,
'E8': 5112557168849546229},
'B3': [-0.5821847297064344,
-0.6685457904105594,
-0.9843707501125138,
0.43674955105121316,
0.2193766591153543]},
'A3': 248,
'A4': -0.7792858481407166}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x46 0x4e
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
3 | Структура B |
4 | float |
5 | float |
6 | float |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Адрес (uint16) структуры C |
3 | Массив int8, размер 7 |
4 | int16 |
5 | double |
6 | float |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур D |
2 | Массив uint64, размер 6 |
3 | Размер (uint16) и адрес (uint16) массива int16 |
4 | float |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RFN\xd6j1q\xd8\xa7\x0f\x00a?\xac\x02\x1e\x1d\xbb\x19\xed\xbb\xbf\xb7\xeb'
(b"\xa4\xf7wT\xe0=.\x01n\xbf\nl\x13\xbd\xce3\xee=\xd0A\x1e\xb1'\x88\xbf?Y7"
b'\xc6\x95\x00\x1d\xdc>9\xccin\xf07\xeb\xbd\x97}\xb6q\xe4\x93r\xbe\xd8b'
b'x\x00\x00\x00-\x00\x00\x005\x00\x00\x00=\x00\x00\x00E\xb0\x83[S\x00\x04\x00'
b'M%\x87\x8e\xa9C\xd3\xd7F\xbah\x84x\x08\x81\xd1\xf8i\xca\xe1\xe1\xe9\xd02'
b'\xb5\xda\x8f\x88\x02Z\xc4\x00-\x8aH\x9b(I\xf6\xe7\xd2\\n\x05\xadh a'
b'\xf2\x00\x02\x00]=\xc3<$')
Результат разбора:
'A1': -10646,
{'A2': 829544615,
'A3': {'B1': 15,
'B2': {'C1': [{'D1': -1322809153, 'D2': 0.848507285118103},
'D1': -1795154468, 'D2': 0.18144382536411285},
{'D1': 1861236715, 'D2': -0.0739702433347702},
{'D1': 1910805362, 'D2': -0.422626256942749}],
{'C2': [2704286958897846086,
13432131539706171896,
7623153679684612789,
15748955965632020525,
9964384772899137490,
6660267141261976050],
'C3': [-20349, 23379],
'C4': 0.09532955288887024},
'B3': [63, -84, 2, 30, 29, -69, 25],
'B4': -4677,
'B5': -0.09343939820913105,
'B6': 0.04248183220624924},
'A4': -0.5407115817070007,
'A5': -0.1006849855184555,
'A6': 0.10168670117855072}
Пример 2
Двоичные данные:
b'RFN\x12\xbd\x03\x12\x1a\x1bj\x00m\xd6\xfa:#\xb3\x87y\x0c\x81\xbf\xc6w'
(b'\x94.\xf5\xdd\xa8\xbe\xac\x9c\xd9?\x16\xf9i?\x07\xfa\xeb>\xb9\xf4\xbe\xcfb+'
b'\x0c\xbf\x15\xecZ\xd3\xa1\x87C\xbe\xa6\x99g\x17\x1f\xdcY\xbf8\xb7'
b'\xabT\xd5\xd5\x03>P\x0e\xeeh\x9cV-?uf\xb0\x00\x00\x00-\x00\x00\x00'
b'5\x00\x00\x00=\x00\x00\x00E\x00\x00\x00Mo\xbf\xb2w\x00\x05\x00Ud\xbf;'
b'\x8d\x91\x8b\xae\xf5\xf1\r\xb2\xb8\xacf\xf3\xca\x0c\xa2\x9e\x88q\xc1\xde'
b'\x82\xd2\x80\xa7r_F\n\x8f\xc5-\x88\xd71$\x94d\tj!\x1c\x05\x9a\xe4'
b'\x1f\x00\x02\x00i\xbe\xb5"\x89')
Результат разбора:
'A1': 4797,
{'A2': 51517979,
'A3': {'B1': 106,
'B2': {'C1': [{'D1': -815650036, 'D2': -0.5856376886367798},
'D1': -744388797, 'D2': -0.3253891170024872},
{'D1': 387963993, 'D2': -0.7215525507926941},
{'D1': 1423299843, 'D2': 0.20318195223808289},
{'D1': 1755076141, 'D2': 0.9585981369018555}],
{'C2': [7259586603562807029,
17369735844074025930,
910464383543533186,
15168307654650366607,
14208162857247609956,
678391098109518879],
'C3': [28607, -19849],
'C4': -0.3537791073322296},
'B3': [-42, -6, 58, 35, -77, -121, 121],
'B4': 3201,
'B5': -0.1755242566393751,
'B6': -0.33713415265083313},
'A4': 0.5897431969642639,
'A5': 0.5311724543571472,
'A6': 0.36319535970687866}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x50 0x49 0xdc
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Адрес (uint32) структуры B |
3 | uint8 |
4 | Структура C |
5 | int32 |
6 | Структура D |
7 | int32 |
8 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | float |
4 | uint8 |
5 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | double |
4 | int32 |
5 | float |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур E |
2 | Массив float, размер 5 |
3 | uint64 |
4 | uint8 |
5 | int16 |
6 | uint64 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива uint8 |
2 | float |
3 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RPI\xdc\xbc\x00\x00\x00[\xeeU\x9f\xa1\x9c\x00\x08\x00\x00\x00p\xbf\xb6 \x1c'
(b'\x0b\xd2u \xac\x8e\x8e\xe2\xbfAw\xa2\x0c5\x9dT\x00\x04\x00\x00\x00\xb8\xbf\t'
b'\xcc]\xbf9\x82\xec\xbe_\x81\x07\xbe\x1b\n\xc4>\xb2\nM\x18\x945>\xb1\x94'
b"\xaf\x07s6oK\x81\x13\x1b\x98\xc0K'\x83\xbe\xd4\x7fNCU\x93\x87\xb9z4\tV\x12"
b'<8\x98\xbd\xe7<R\xbc\xcct\xd8\xdeyidtgchm\x9d\xd8\x00\x02\x00\x00\x00x'
b'>D\xa8\xc6\xbe\x8a\xffvZg\x00\x02\x00\x00\x00\x88=\x8eXi?L\x9e\xfb'
b'\x0e]\x00\x02\x00\x00\x00\x98\xbf\x02.\x19>\x81n\xc0{\xa8\x00\x02'
b'\x00\x00\x00\xa8>\x14/\xd3\xbfs~~\x00z\x00\x8a\x00\x9a\x00\xaa')
Результат разбора:
'A1': -68,
{'A2': {'B1': 1435731897,
'B2': 8805673436693936280,
'B3': -0.1129080206155777,
'B4': 188,
'B5': -864757538},
'A3': 238,
'A4': {'C1': 1436524956,
'C2': 'yidtgchm',
'C3': -0.08642745293260079,
'C4': -1399943454,
'C5': -0.7557317018508911},
'A5': 204840276,
'A6': {'D1': [{'E1': [157, 216],
'E2': 0.19205006957054138,
'E3': -0.2714802622795105},
'E1': [90, 103],
{'E2': 0.06950456649065018,
'E3': 0.7993008494377136},
'E1': [14, 93],
{'E2': -0.5085158944129944,
'E3': 0.25279808044433594},
'E1': [123, 168],
{'E2': 0.14471368491649628,
'E3': -0.9511488676071167}],
'D2': [-0.5382745862007141,
-0.724653959274292,
-0.21826563775539398,
-0.15140825510025024,
0.34773483872413635],
'D3': 1771099096847003399,
'D4': 115,
'D5': 13935,
'D6': 5440650834088053543},
'A7': -2084645761,
'A8': 20035}
Пример 2
Двоичные данные:
b'RPI\xdch\x00\x00\x00[e\xe3^\xff\xfc\x00\x05\x00\x00\x00p\xbf\xc6G2'
(b'\x03\x8e\x04xm\x9d$B\xbe\x9b\xa3x\xdb\xbf5\x85\x00\x02\x00\x00\x00\x95>\xe6'
b'L\xa9>\xc7C\x9f>\xd0\xab\x15\xbe}\xe8\xcb>\xd6\xa8V\xf7\x8c\xfe\n\x0ek'
b'\x0fx\xb1s\xdah\n\x1db\x86\xd8\xf4\xe2\x12\x93\xf9\xfd\xa7\x0fr\xa1\xa1D!'
b'd&\xa6\xc4\xc2\xdc2?1\xb7\xd9\x85\x86R\xb7Ifcgye\xc4\x1b\x00\x02\x00\x00\x00'
b'u?F\xd6\xad\xbeH\xab\xc8q\xf0\x00\x02\x00\x00\x00\x85=\xd3o\xeb\xbe\xe0\xa1'
b'\xc9\x00w\x00\x87')
Результат разбора:
'A1': 104,
{'A2': {'B1': 1923195204,
'B2': 2406090598630218802,
'B3': 0.6942115426063538,
'B4': 133,
'B5': -2041399479},
'A3': 101,
'A4': {'C1': -480313348,
'C2': 'fcgye',
'C3': -0.17404771016666465,
'C4': 1839014978,
'C5': -0.3039815425872803},
'A5': -608225915,
'A6': {'D1': [{'E1': [196, 27],
'E2': 0.7767131924629211,
'E3': -0.19596779346466064},
'E1': [113, 240],
{'E2': 0.10324081033468246,
'E3': -0.4387343227863312}],
'D2': [0.4498036205768585,
0.3891877830028534,
0.4075552523136139,
-0.24795834720134735,
0.41925305128097534],
'D3': 17837911543252717432,
'D4': 177,
'D5': 29658,
'D6': 7496836838717977826},
'A7': 311687677,
'A8': -22769}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x50 0x54
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | double |
3 | Структура B |
4 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | Размер (uint16) и адрес (uint16) массива int8 |
3 | float |
4 | int64 |
5 | Массив int16, размер 4 |
6 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур D |
2 | int64 |
3 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int32 |
3 | Размер (uint32) и адрес (uint16) массива uint8 |
4 | float |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | int64 |
3 | int16 |
4 | float |
5 | int32 |
6 | Размер (uint32) и адрес (uint16) массива uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VPT]r\x89\x86\x88\xd4]M\x00$[J|3\xab\xbfY\x00\x00\x00\x02\x00m\x00\x01'
(b'\x02H?\x02\xe7\xeb.\xf3\xa7\xb9\xe71\xd2z\x15\x1d-\x81s\x90F\x7f\x00\x00'
b"\x00\xbf,'\t\xf9\xed\xacZ\xfd\x06\x02\x00\x00\x005\x00fA\xa0>\xce\x02\xb5"
b'\x98e\xf7\x02\x00\x00\x007\x00\xcb\xd9}\xbe\x02\x00\x00\x009\x00\x00'
b'\x00\x98\x1e\xd4-\x10Q"\xc2\xcaB\x10\xa3\xc6\xd9\xac\x93\x03\xf5*'
b'}\x98\xa6\x91\xbfB\x91\xcb\x91\xc2\xee0\xa2E\xe0D\x14\xd6\xbf\x8f'
b'\xbf\xe6\x8e\xa7\xefL\x97^\xdd\xfc\x805?`_,\x00\x02\x00\x00\x00o\x00')
Результат разбора:
'A1': 5574845596592337501,
{'A2': -0.0531271782652496,
'A3': {'B1': {'C1': [{'D1': -4615,
'D2': 117267116,
'D3': [191, 44],
'D4': 0.3129989504814148},
'D1': 718,
{'D2': -144336715,
'D3': [39, 9],
'D4': -0.24790112674236298}],
'C2': -4457911551213166952,
'C3': -1559215414},
'B2': [-58, -39],
'B3': 0.7812805771827698,
'B4': -1749182317350623486,
'B5': [-11727, 5498, 11549, 29569],
'B6': 18064},
'A4': {'E1': -0.344987124457961,
'E2': -7544391772816359537,
'E3': -8866,
'E4': 0.7089993953704834,
'E5': 2908000,
'E6': [12004482430208807852, 17204473830010175377]}}
Пример 2
Двоичные данные:
b'VPT\xc5\x17\x8b\xe5\x11#h\x9bpwq\x8b\xa3\xd5\xdd?Y\x00\x00\x00\x02\x00m\x009'
(b'2^\xbf(E\x93n\x176\x8aO)\xbe\x04\xd0\x9d\xab\x84\xe1\xc6\x7f\x87\x00\x00'
b'\x00.\x9e\x1a\xf8\xd2\xd3\xe3\xa1\xa6\xf0\x02\x00\x00\x005\x00\xd4\x1c_'
b'\xbfH\r\xad\x8ch\xa4\x02\x00\x00\x007\x00_\xf7$?\x02\x00\x00\x009\x00\x00'
b'\x00Tq\xc3\r8H2O4W\x9c\xe5z\x8b\xcaq\x9b?\x08r\x95\x1aGL\x95\x8d\xef'
b'\xf6Uf\x88\xc4\x02T\xe39\xcfDh) \xfc\x1eu\xcf\xbfX\x82\xdb\xa5\xc5'
b'H\xd4\xa9\xd5\xb5h`i\xbfr:\xce\xde\x03\x00\x00\x00o\x00')
Результат разбора:
'A1': 11198239033229252549,
{'A2': 0.46616448037627034,
'A3': {'B1': {'C1': [{'D1': -11310,
'D2': -257515037,
'D3': [46, 158],
'D4': -0.8715336322784424},
'D1': 3400,
{'D2': -1536652115,
'D3': [26, 248],
'D4': 0.6443995833396912}],
'C2': 5706703083418120532,
'C3': -442738892},
'B2': [122, -117],
'B3': -0.8679538369178772,
'B4': 5731452950049670440,
'B5': [-16855, -12284, -21603, -7804],
'B6': 32710},
'A4': {'E1': -0.2457617503244578,
'E2': -6209257972508687784,
'E3': -18987,
'E4': -0.9116272926330566,
'E5': -556909966,
'E6': [1915562596268470730, 7374071473622043719, 4958245363288032392]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x44 0x45
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | uint8 |
3 | int8 |
4 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint32) массива структур C |
3 | Адрес (uint32) структуры D |
4 | Размер (uint16) и адрес (uint32) массива int8 |
5 | int8 |
6 | Структура E |
7 | float |
8 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint16) массива int16 |
3 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | int32 |
4 | uint8 |
5 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив uint32, размер 4 |
3 | int16 |
4 | Массив float, размер 5 |
5 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZDE\x009\xba\xe2\x96\x86m\xe6\x1d|\x8f\xc2o\x8a\xe6X\x9d\xf6\x96\xb8\xeb'
(b'X\x92\xc8\x00\x03\x00\x0b\xbd\xb7\xb5>\x9b\x00\x03\x00\x11\xb0N[\x86'
b'\xb2./\x9d\xcb\xa4\xc6p56G+7\xd7\x00D\x95\x00\x02\x00\x00\x00\x17\x00'
b"\x00\x00)\x00\x04\x00\x00\x005\x1e'\xac\xfas\xe8\xeeP\x16B\xaf3\xe2\xee5"
b'\xb1\xf4\xfd\xedW\x85\xbf\x13\xebj?A\xb2L\xbf\x1c\x83D=\xfa\xea0\xbd\x86'
b'\xc7\xf2>\xd8)l\xbe\r\x13#>')
Результат разбора:
'A1': {'B1': 3607118997,
{'B2': [{'C1': 3948450504, 'C2': [7548, -28734, 28554], 'C3': -67},
'C1': 3082108571, 'C2': [-6568, -25098, -26952], 'C3': -80}],
{'B3': {'D1': 78,
'D2': 23430,
'D3': -1305596003,
'D4': 203,
'D5': -1530499019},
'B4': [54, 71, 43, 55],
'B5': 30,
'B6': {'E1': 10156,
'E2': [4201900270, 1343636143, 870510133, 2985623021],
'E3': 22405,
'E4': [-0.5778108835220337,
0.7566268444061279,
-0.6113779544830322,
0.12251698970794678,
-0.06581105291843414],
'E5': 0.4221910238265991},
'B7': -0.13776831328868866,
'B8': 62},
'A2': 186,
'A3': -30,
'A4': 2525392358}
Пример 2
Двоичные данные:
b'ZDE\x00A\xefn\xa8yO\x81\x82\xdd:\xff\xb2\xb0\x01\xf8|\xcf\x90\xab\x8f'
(b'3\x92\x1eQ\xdd\xe3\x04\xadl\xac"\x00\x05\x00\x0b\xee\x93\xa5\xde]'
b'\x00\x05\x00\x15M\x8f\r"\xbd\xb2\x07\xa5>\x96\xa6\xf7\xc5\xadH\x0c\x84^8\xda'
b'^\x00\x02\x00\x00\x00\x1f\x00\x00\x001\x00\x04\x00\x00\x00=\x03H*'
b'\xdb\xae"\xb7\\-\x85V\xfe\xccKJ\xf2\xf9\xc8g\xc4\xfe\xbfS\x9f\xd2>:'
b'\xc28\xbe\x08\x19\x94\xbe\xbd\xbe\xb7=x\x81\xbd\xbfz\x0c-\xbcF\xa9\x9a\x98')
Результат разбора:
'A1': {'B1': 1580784222,
{'B2': [{'C1': 2909580322,
'C2': [-32035, 15103, -19792, 504, 31951],
'C3': -18},
'C1': 2477121117,
{'C2': [-28501, -28877, -28130, 20957, -7420],
'C3': 77}],
'B3': {'D1': -113,
'D2': 3362,
'D3': -1112406107,
'D4': 62,
'D5': -1767442491},
'B4': [-83, 72, 12, -124],
'B5': 3,
'B6': {'E1': 18474,
'E2': [3685622455, 1546487126, 4274801482, 4076456039],
'E3': -15106,
'E4': [-0.8266574144363403,
0.1823815107345581,
-0.13291007280349731,
-0.37059566378593445,
0.060670603066682816],
'E5': -0.9767482876777649},
'B7': -0.012125397101044655,
'B8': -104},
'A2': 239,
'A3': 110,
'A4': 2826522497}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x43 0x41 0x53
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива структур B |
2 | int16 |
3 | uint32 |
4 | double |
5 | uint16 |
6 | Адрес (uint16) структуры C |
7 | Структура E |
8 | Структура F |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | int32 |
3 | Массив char, размер 4 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | double |
3 | uint64 |
4 | Массив int8, размер 2 |
5 | uint8 |
6 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint8 |
2 | uint64 |
Структура F:
Поле | Описание |
---|---|
1 | Массив int32, размер 8 |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ECAS\x03\x00\x00\x00I\x00\xe5Q\xa4\x12\xe7\xdel\xb0Fe\x92?\xe5?R\x02d\x00'
(b'\x02\x00\x87\x00w.\xa3\x00\xe6\xb1\xb5\x19\xd6\xe1y\x96/QP\x92\x8dH\x91\x88'
b'\xab\xd2Z\x82\xaco\x19y\xb3\xdb\x0e\xeen \xc1\xab=\x9cc\xac\r\x9d\x84<'
b'\x8f#wgog\rr\xa9a\xcetdji\x08n\xa7H\x8buamzW\x9a|\x86\x8e\x92\xdd\xab'
b't\x1ez\xbf6;"m\xdc \xe8\xbf\xb4\x01Q\xeb\x86\xfeUs\xf8z\xaf(\x97:\x1c\x03'
b'\x8d')
Результат разбора:
'A1': [{'B1': -99, 'B2': 596589700, 'B3': 'wgog'},
{'B1': 13, 'B2': -832460430, 'B3': 'tdji'},
{'B1': 8, 'B2': -1958172818, 'B3': 'uamz'}],
{'A2': 20965,
'A3': 3739685540,
'A4': 0.664010236554089,
'A5': 594,
'A6': {'C1': -6062528382531495337,
'C2': {'D1': -0.977027177810669,
'D2': -0.7540113574521914,
'D3': 8310828542809145780,
'D4': [-8, 122],
'D5': 175,
'D6': 473601832}},
'A7': {'E1': [3, 141], 'E2': 1852582423144115831},
'A8': {'F1': [-1770397226,
-1840230097,
-2003744627,
-2107977045,
2031710124,
-301016141,
-1413406610,
-1402758083],
'F2': 13}}
Пример 2
Двоичные данные:
b'ECAS\x03\x00\x00\x00I\x00\x03L\x9eg\xaav\xc4\xcd\xcc\xaf\xab!\xe2?Q\x07d\x00'
(b'\x04\x00\x87\x00`\x06$!\xf1\x02,\xac\xc7\x9a\xee\x15\xa3\x9e\xaf\xaa'
b'\xe3L+\xbb3\x95\xb57"<\x18\x8c\xb5}d\xf5\xd2zz\xe7\xbd\x18\t \xbfl\xff\xea'
b'\x96Xxpxn\xc1\xd5\xd3Q\xe4dajx\xbd\xfe\xf5\x08\x12fqbp\xc0N\x04K\x1c:C\xb5'
b'\x8a\x1cc?X\x04o\x04\xdeb\xc4\xbf{7K\x0b\x9cV\xe5\xbe\x1a\x00\xb4H\xa9cg\xd1'
b'\x95\xb4#')
Результат разбора:
'A1': [{'B1': 108, 'B2': 1486285567, 'B3': 'xpxn'},
{'B1': -63, 'B2': -464399403, 'B3': 'dajx'},
{'B1': -67, 'B2': 302577150, 'B3': 'fqbp'}],
{'A2': 19459,
'A3': 1990879134,
'A4': 0.5666101869195974,
'A5': 1873,
'A6': {'C1': -5385396836212912448,
'C2': {'D1': 0.887154221534729,
'D2': -0.1592671891831141,
'D3': 13755495865077413755,
'D4': [26, 0],
'D5': 180,
'D6': 1734584648}},
'A7': {'E1': [209, 149, 180, 35], 'E2': 12406294308165256800},
'A8': {'F1': [367958727,
-1431331165,
-1154790173,
934647091,
-1944568798,
-177963595,
-411403566,
537467069],
'F2': -65}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x93 0x57 0x49 0x57 0x57
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | float |
3 | int16 |
4 | uint32 |
5 | Адрес (uint16) структуры B |
6 | int8 |
7 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 3 |
2 | int16 |
3 | Адрес (uint32) структуры D |
4 | Адрес (uint32) структуры E |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int8 |
2 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | uint32 |
3 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива float |
2 | double |
3 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x93WIWW\x00\x00\x00\x02\x00\x1c\xbe\xd5i\xbf\xbbV5\x19\x9f\xb1\x00t['
(b'Nc\x18\x1fcm=\xbf\xb1\x83\xd3\x00\x05\x00\x00\x00\x1e\xec\x96\xaf[-\xe9\x00'
b'\x02\x00\x00\x00-\xc2f\x16\xca\x94\x91\xc6\x00\x03\x00\x00\x009)x'
b'\x83\xda\x15$EgG\x8a"\xc8\x84\xc6\xf5\xc4\t\x08\xbc\xd1\xc0!\xbe\xca\xcc\n'
b'>\xb4\xdb\xa6\x00\x03\x00T?\xe8\xc1\xc8\xad9ZF\xbb\x8b`\xfd\xeb%\x1f\xd3'
b'\x00#\x00/\x00<\xcd\xcd\x00\x00\x00F\x00\x00\x00`')
Результат разбора:
'A1': 'cm',
{'A2': -0.4168224036693573,
'A3': -17578,
'A4': 890871729,
'A5': {'B1': [{'C1': [61, -65, -79, -125, -45], 'C2': -325669029},
'C1': [45, -23], 'C2': -1033496886},
{'C1': [-108, -111, -58], 'C2': 695763930}],
{'B2': -12851,
'B3': {'D1': 1523418883842253512, 'D2': 2227631556, 'D3': 2312},
'B4': {'E1': [-0.025604309514164925,
-0.3960879445075989,
0.3532382845878601],
'E2': 0.7736552603990468,
'E3': 13514001750543376339}},
'A6': 91,
'A7': 1315117087}
Пример 2
Двоичные данные:
b'\x93WIWW\x00\x00\x00\x02\x00\x1c?\x02\xed\xea\x98\xe0\x05\x1c\x18'
(b'\xe4\x00q\xa1_\xd2\x7f\xb2hv\xeb\x9bl\x00\x03\x00\x00\x00\x1e\x06'
b'\xae\x89\xb4\xaf\x1b\x1e\xaa\xb1\x00\x05\x00\x00\x00+\x80\x05'
b'\x94\xb0\xf7\xc2\x87\x00\x03\x00\x00\x00:\x96\xd5\xba\xf74\xd5{3\xa7'
b'\xf5b\xbfs\xf2\xd7\xf9\xa4\x08\xbf<Am=\x87\x85\xfb\x00\x02\x00U?\xe3\x8a'
b'\xcd\xdaH\xbb\xaa\xee\xb7\xda\x8aI\xe7\x88k\x00!\x000\x00=\xfa_\x00\x00\x00'
b'G\x00\x00\x00]')
Результат разбора:
'A1': 'hv',
{'A2': 0.5114427804946899,
'A3': -26400,
'A4': 85727460,
'A5': {'B1': [{'C1': [-21, -101, 108], 'C2': 112101812},
'C1': [-81, 27, 30, -86, -79], 'C2': -2147117904},
{'C1': [-9, -62, -121], 'C2': -1764377865}],
{'B2': -1441,
'B3': {'D1': 3807084521803047615, 'D2': 1945294841, 'D3': 41992},
'B4': {'E1': [-0.735373318195343, 0.06617351621389389],
'E2': 0.6106938613282769,
'E3': 17201457589245151339}},
'A6': -95,
'A7': 1607630770}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x5a 0x4e 0x57
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив char, размер 2 |
3 | int8 |
4 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива int8 |
2 | Структура C |
3 | uint8 |
4 | int32 |
5 | Структура D |
6 | int32 |
7 | Массив uint64, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | float |
4 | int8 |
5 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint32) массива uint8 |
3 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LZNW\x89{\xeb\xe89b\xadftk\x9d\x02\x00\x00\x00\xb2\x00\x00\x00:\xe204U'
(b'\xebd\xb1\x02\x00\x00\x00\x17\x00\xdd\x0c\x02r\xc0\x021\xd0?\xfe\x86'
b'\xe4\xbe\x11M5\xee\xcc\xfb\x94j\xe9v?\x06\x00\x00\x00\x19\x00\x00\x00\xf2_z'
b'?\xe6\xb8e\to\x0b9\xe1\xd8K\xe2\x1a\xad\xadhwS\x80\xa1E?`\xfa|R\xd0\xb0'
b'\xe2\xa1\xe5Ng\x9a\xc5\x90\x03\x00\x00\x00e\x00\xa5\x92\x0bS9\x01\xe3\xe6?('
b'\xf7\x17\xbf\xdad&`\x87\x0e\xfe}_e\xbf\x04\x00\x00\x00h\x00\x00\x00L\xee8?a!'
b'\xb4\xab\xc3\xf0\x7f\x89\xd26\xbe\x05\xf0\x1d\xac\x02\x81\x9b\xab\xe3!\xcf'
b'\xf6*\x19\\\x1d\x87\x1f\x00\x00\x00l\x00\x00\x00')
Результат разбора:
'A1': 7398677763699997577,
{'A2': 'tk',
'A3': -99,
'A4': [{'B1': [58, -30],
'B2': {'C1': 221,
'C2': 0.2529913787221012,
'C3': -0.446342408657074,
'C4': 17,
'C5': 77},
'B3': 53,
'B4': -1795437330,
'B5': {'D1': 0.9644991159439087,
'D2': [48, 52, 85, 235, 100, 177],
'D3': 0.9780265092849731},
'B6': 157661414,
'B7': [1937194184586365807,
5017432555841433005,
16334784901175468095]},
'B1': [-95, -27, 78],
{'B2': {'C1': 165,
'C2': 0.715210544549665,
'C3': -0.5936150550842285,
'C4': -38,
'C5': 100},
'B3': 38,
'B4': -32602272,
'B5': {'D1': -0.8959882855415344,
'D2': [103, 154, 197, 144],
'D3': 0.7223861217498779},
'B6': -1414258335,
'B7': [413828493642559683,
16405377046025084400,
9736039232609636129]}]}
Пример 2
Двоичные данные:
b'LZNW\x94\xe7\x126\xdd\xe09\x7ffe\xc2\x02\x00\x00\x00\xb1\x00\x00\x00f'
(b'\x8c\x1e\xe9TQ\x1d\x02\x00\x00\x00\x17\x00\xfe\xd8n\xf66\x14\xea\xd2'
b'\xbf\xe6\xdfv\xbf{\xf0\x0e\xc8\x9b\x89{`\x8e\x8d>\x05\x00\x00\x00'
b'\x19\x00\x00\x00\xe7s(\xbfu\xd0\xe5w\xa3E`\x8dS\xbc\xec.w)\x7f\xe030\n\xcb'
b',E\xddlL\xdb\x18\xdbu\xcb\x83\xc1\x9f$=\x03\x00\x00\x00d\x00\xa24\xc8'
b'\x8f/\xf3\x8a\xe8?j\xc2\xbb\xbc\xcf\x8f\r\x10D\xf1}<\xc5m\xbf\x04\x00\x00'
b'\x00g\x00\x00\x00{\xfd\xe8=\xaf*}u\xd2A\xf6Ou7\xbd\xc8$\xb8H]\xc5^\xc7'
b'\xddt5p\xfe0\xd7Wu\x1e\x00\x00\x00k\x00\x00\x00')
Результат разбора:
'A1': 9167605757188958100,
{'A2': 'fe',
'A3': -62,
'A4': [{'B1': [102, -116],
'B2': {'C1': 254,
'C2': -0.29553704612201903,
'C3': -0.9643539190292358,
'C4': 123,
'C5': 240},
'B3': 14,
'B4': 2072615880,
'B5': {'D1': 0.2764768600463867,
'D2': [30, 233, 84, 81, 29],
'D3': -0.6580185294151306},
'B6': 2011549813,
'B7': [3381284487288604067,
14630559338834372983,
15787609615037711660]},
'B1': [117, -53, -125],
{'B2': {'C1': 162,
'C2': 0.7669616631449174,
'C3': -0.022919852286577225,
'C4': -49,
'C5': 143},
'B3': 13,
'B4': 2112963600,
'B5': {'D1': -0.928790807723999,
'D2': [193, 159, 36, 61],
'D3': 0.11376472562551498},
'B6': 1971137199,
'B7': [14464778555176141266,
15980846004514109476,
8455463430838564212]}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x45 0x42 0x43
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | Адрес (uint16) структуры B |
4 | uint32 |
5 | uint16 |
6 | int16 |
7 | int32 |
8 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | int16 |
3 | int16 |
4 | uint8 |
5 | Размер (uint16) и адрес (uint32) массива uint32 |
6 | int8 |
7 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур D |
3 | Адрес (uint32) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | float |
3 | Массив int16, размер 6 |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | Массив int16, размер 2 |
3 | Массив int32, размер 4 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'REBC<}\x81lTE\xdaD\x90\xc9\xd3\xbfz\x00\xe3\x06\xc4(\xd6\x159\xe6\xca\xc1'
(b'\x10H\x0e\x08k\xd9\xf4<?\t\xbe)j\x08\t\xf1\x08\xbc%!\x93lum\xc4\xbe\xed\x04'
b'\xc46\xe4\x0c\xec\x92\x96"\xda\xf1 \x00\x00\x001\x00\x00\x00\x00b\x0c?Z\x96'
b'\x03\xd6\x17\xf8><6\xe3\xcc\xf0\xd7\x81\xd6\xb3j\xcf\xe1M\xbcn\xaf\xe1&l'
b'O \x02\x00B\x00J\x00\x00\x00\x8c\x10~NFO\xe7\x88b\x00\x00\x00\xa7Tw1P\x02'
b'\x00r\x00\x00\x00\x85T')
Результат разбора:
'A1': 1820425532,
{'A2': -0.3091774628056403,
'A3': {'B1': {'C1': 2328198446624763580,
'C2': [{'D1': 107,
'D2': 0.7381110787391663,
'D3': [-16887, 27177, 2312, 2289, 9660, -27871]},
'D1': 108,
{'D2': -0.3836475908756256,
'D3': [1261, 14020, 3300, -27924, 8854, -3622]}],
'C3': {'E1': 0.548370361328125,
'E2': [-27046, -10749],
'E3': [1010759703, -255007946, -1277787689, 1306644330]}},
'B2': 21671,
'B3': 12663,
'B4': 80,
'B5': [1316884620, 2296860486],
'B6': -123,
'B7': 84},
'A4': 683935459,
'A5': 5590,
'A6': -6599,
'A7': 1209057738,
'A8': 2062}
Пример 2
Двоичные данные:
b"REBC\xdaR\xe3'l\xc0\xa7\xe1\xb2\xc9\xd5\xbfz\x00\xf9\xbfv\xf8\xfe\t"
(b'`\x0e\xc4\x7fH(\xba\xc5\xf4\x1b<\xe3>\xca\x82\xfd\xe7\x9a\xf5\xc2\x90g\x04]'
b'W\xf3a\xc6[?\xb4\xaa>\x93:\xcd,\x0e\xea\xa4#s \x00\x00\x001\x00\x00\x00W\xa7'
b'^\xbd`\x91Mbj\xfe\x0f\x93\xb9i\xf2\r\x9f_{C>\x01A?\\\x07\x11.,\xb2'
b'\x10\x02\x02\x00B\x00J\x00\x00\x00c\xd7\xf4\xa7\xe1\xf2\xc9\xd8b\x00'
b'\x00\x00\x93\xafo\xdeJ\x02\x00r\x00\x00\x006\x9f')
Результат разбора:
'A1': 669209306,
{'A2': -0.3404357150711863,
'A3': {'B1': {'C1': 148814690524399452,
'C2': [{'D1': -12,
'D2': 0.44381794333457947,
'D3': [-32054, -6147, -2662, -28478, 1127, 22365]},
'D1': -13,
{'D2': 0.8584957718849182,
'D3': [-21836, -27842, -12998, 3628, -23318, 29475]}],
'C3': {'E1': -0.05435880646109581,
'E2': [-28320, 25165],
'E3': [-1827668374, 233990585, 1132158879, 1061224766]}},
'B2': -20589,
'B3': -8593,
'B4': 74,
'B5': [2817840995, 3637113569],
'B6': 54,
'B7': -97},
'A4': 4168531961,
'A5': 2558,
'A6': 3680,
'A7': 675839940,
'A8': -14918}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x54 0x55 0x4d
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | int64 |
3 | Адрес (uint32) структуры B |
4 | Размер (uint32) и адрес (uint16) массива char |
5 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | int16 |
4 | Размер (uint32) и адрес (uint32) массива структур C |
5 | Размер (uint16) и адрес (uint32) массива char |
6 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | double |
3 | int32 |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива float |
2 | uint64 |
3 | uint64 |
4 | Массив int16, размер 6 |
5 | uint64 |
6 | int8 |
7 | uint8 |
8 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MTUM\xe7v\xee\xe0\x84`\xc3RO\xc1\xb7\xb4"\x02\xb2\xddr\x00\x00\x00'
(b'\x05\x00\x00\x00\x88\x00\x03\x00\x8d\x00\x00\x00\xc2e\x10/n\xc0\x1d\xf0'
b'\xc9Np\x9feU\x1a\x83!Vfr\xd0%\xd6\xb0\x04\xb7\xdeM,2\x85\t\x0ej\xf8W'
b'dc\x85\xc3\xbe\xe4\xbe\xa9\x8b\x01\xc4\xe0\xefc<Ym\xcb\xbf^Sj\x95qo\xc6\xd9B'
b'Je\xb4\xe8?0y\x01\x12Plcvk \xd1\x04\xf1\x02\x00\x00\x00R\x00\x00\x00\x04\x00'
b'n\x00\x00\x00\xd7\xc4 \x1erbwezo\xd6??\xd5f\x0f\xbe\x12\xb6\x7f?')
Результат разбора:
'A1': 5963716455394342631,
{'A2': -2471910897388895921,
'A3': {'B1': 32,
'B2': 209,
'B3': -3836,
'B4': [{'C1': -60,
'C2': -0.21427455376385662,
'C3': -1788193954,
'C4': 113},
'C1': 111,
{'C2': 0.7720209551251223,
'C3': 302086448,
'C4': 80}],
'B5': 'lcvk',
'B6': 505464023},
'A4': 'rbwez',
'A5': {'D1': [0.7493657469749451, -0.14004071056842804, 0.998871922492981],
'D2': 17302196922895852994,
'D3': 9446957063318032073,
'D4': [22049, 29286, 9680, -20266, -18684, 19934],
'D5': 6338933084045783596,
'D6': 100,
'D7': 99,
'D8': 111369253147296645}}
Пример 2
Двоичные данные:
b'MTUMM\x1f\xaf\x96\x8f\x1dP[\xb7Y\x8eF0\xa2\xf8\x12q\x00\x00\x00'
(b'\x05\x00\x00\x00\x87\x00\x03\x00\x8c\x00\x00\x00H\xa6\xed\xfb\x11\xc3=\xe7'
b'@\xbc\x865C\xa6\x9a\xe8\xa2\xc1\xeb( k\x84\x0b\xba\xfd\x05\x1e>y\x13\r'
b'\x8e\x1a+\r\x16\xec\xbd\xe3\x100\xec\xfd\xf9#H\x00u{\xfa\xfa\xda\x9f\xbf\xd6'
b'\x85\xfeb\x05\x9b\xc8#e\x7f\xe9/\xc1?\x82R?\x03}ijtE\xd4.\xae\x02\x00\x00'
b'\x00R\x00\x00\x00\x03\x00n\x00\x00\x00j\r\xa7#bxubs\xcf\xa8T?\x9b\xcc;\xbe'
b',$2?')
Результат разбора:
'A1': 6579791558133882701,
{'A2': 1367020815132809655,
'A3': {'B1': 69,
'B2': 212,
'B3': -20946,
'B4': [{'C1': 72,
'C2': -0.03110878137419082,
'C3': 1660847574,
'C4': 5},
'C1': -101,
{'C2': 0.134274661259296,
'C3': 54481538,
'C4': 125}],
'B5': 'ijt',
'B6': 598150506},
'A4': 'bxubs',
'A5': {'D1': [0.8307008147239685, -0.18339769542217255, 0.6958644390106201],
'D2': 16662688678349219400,
'D3': 16760891770803764288,
'D4': [-15966, 10475, 27424, 2948, -582, 7685],
'D5': 948881343898679614,
'D6': 22,
'D7': 236,
'D8': 2592382251388953533}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x4f 0x55
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Структура B |
3 | Структура F |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | Структура E |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур D |
4 | int64 |
5 | float |
6 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив float, размер 8 |
3 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | uint16 |
Структура F:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры G |
2 | double |
3 | Массив int16, размер 5 |
Структура G:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint16 |
3 | Массив int16, размер 4 |
4 | int64 |
5 | float |
6 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HOU\xfc\x7f\xe4?W\x1f\xf5}\x0c\x02\x00\x00\x00\x82\x00w\xe2\xd4\xf8F\xc1'
(b'{\xa4\xceDa\xbe\x9d\xbe?\xe8\x9ar*l-\xff\x86\x00\xe8\x12\x17A\xae/'
b'\xc0?\xaa\xa5\xf0&\xb8o\x18\xc7\x913\xbbF1`4?c\xd0)?f6\xbc\xbe\xef\x13'
b'\xc1>`\xe2H\xbfRH\xcc\xbc\xeb\xa4\x1b\xbf8\x8c\x89\xbeEg6\x06\xf5\x9a'
b'=\x19\x11N\xbd\xb5\xb6)\xbea\x94i?+\xe3\\?6)\xb4>\xf6\xf5\xea>\xaaK\xf0'
b'\xbe"<\x00_\x00\xb6}\x10\xc8\xcc57\x0b\x9c:\x81\'\x9f\xd04t#\x1c\x91\xd9nc'
b'>\x80O%\xeb')
Результат разбора:
'A1': 1071939580,
{'A2': {'B1': {'C1': 2113216343,
'C2': 12,
'C3': [{'D1': 18107,
'D2': [0.704592764377594,
0.6633359789848328,
-0.36760252714157104,
0.3771052062511444,
-0.7847042083740234,
-0.024936828762292862,
-0.6079851984977722,
-0.2686479091644287],
'D3': 69},
'D1': 13927,
{'D2': [0.07566265761852264,
-0.05030927434563637,
-0.16573603451251984,
0.9124203324317932,
0.8628413081169128,
0.3518769145011902,
0.4589077830314636,
-0.46932727098464966],
'D3': 34}],
'C4': -6594464718787386761,
'C5': -0.21998903155326843,
'C6': 48797},
'B2': {'E1': 1922754623, 'E2': 27690, 'E3': 65325}},
'A3': {'F1': {'G1': 182,
'G2': 4221,
'G3': [-13112, 14133, -25589, -32454],
'G4': -7990472656852836569,
'G5': 0.22210253775119781,
'G6': -349876352},
'F2': 0.1264550988982116,
'F3': [-23126, 9968, 28600, -14568, 13201]}}
Пример 2
Двоичные данные:
b'HOUn\x8e\xc2L\x01\x89\xe9\xb3I\x02\x00\x00\x00\x82\x00\xc1\xe23\x14\xb0\xd8'
(b'\x11\xee\x84D\xb8>\xf8*q\x1d\xeb\xd4+\xfd\x08\x98\x86\x00z\xf3\xc6V\xca\x14'
b'\xe7?\xab\xfc\xf8\xbf\xaf\xee\xd7\x13P\x9b`\xab\xe5\xdf\xa9\xbe\x899'
b'4\xbf\xeb?\xa6>\xcc\x1cO?\xc3\x0e\x1d>\x91\xf9\x96\xbe30!\xbfh|`?N\x96'
b'\x0c\x86\xe0:>\xae8b?\x85b+\xbe\x94\xc2\xcd\xbe9\x85\x10?\xc2\xfb\xc8'
b'\xbe\xe5l\x10\xbf7,D>\xb8<\x00_\x00\xf3\xe8\xa7\xd8\xbc\xb8U\x98D\xbc'
b'\x9cQx\xcf\x93rZ>\xdeN?3?\x00\xfe\x06\x8b')
Результат разбора:
'A1': 1287818862,
{'A2': {'B1': {'C1': -1276540671,
'C2': 73,
'C3': [{'D1': 43872,
'D2': [-0.33178630471229553,
-0.7040029168128967,
0.32470640540122986,
0.8090331554412842,
0.15337662398815155,
-0.29487279057502747,
-0.6296417117118835,
0.8768982887268066],
'D3': 78},
'D1': 3222,
{'D2': [0.18249711394309998,
0.8836773633956909,
-0.16736800968647003,
-0.4018751382827759,
0.5645328164100647,
-0.39254575967788696,
-0.5641615986824036,
0.19157491624355316],
'D3': 184}],
'C4': -1292013367313833279,
'C5': 0.3598977327346802,
'C6': 11000},
'B2': {'E1': 3572178289, 'E2': 64811, 'E3': 38920}},
'A3': {'F1': {'G1': 243,
'G2': 42984,
'G3': [-17192, 21944, 17560, -25412],
'G4': -2432407300580870063,
'G5': 0.70018470287323,
'G6': -1962476032},
'F2': 0.7212878889909995,
'F3': [-853, -16392, -4433, 5079, -25776]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x44 0x55 0x43
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив структур B, размер 7 |
3 | uint32 |
4 | Структура C |
5 | int32 |
6 | float |
7 | double |
8 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
3 | Размер (uint32) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | uint8 |
3 | int64 |
4 | uint16 |
5 | uint16 |
6 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | int64 |
3 | uint16 |
4 | uint8 |
5 | Размер (uint32) и адрес (uint16) массива int64 |
6 | Массив float, размер 6 |
7 | float |
8 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NDUC\xa3J\xf5\xe6D\x00\x00\x00\x02\x00\x00\x00\xbc\xcd\xb8E\xae\x00\x00\x00'
(b'\x02\x00\x00\x00\xbes\xb2N\x99\x00\x00\x00\x02\x00\x00\x00\xc0\xe1\xcd\x92'
b'\x9d\x00\x00\x00\x02\x00\x00\x00\xc2\xa59\x1c\xbe\x00\x00\x00'
b'\x02\x00\x00\x00\xc4`\x81H\x85\x00\x00\x00\x02\x00\x00\x00\xc6\xe2\x0c\x92'
b'\xc9\x00\x00\x00\x02\x00\x00\x00\xc8\xa9t\xfa\xc0r\x9d\x9e\x9f\xc0\x16\xeb'
b'y\xf2\x99\xef@H\xc8\xde~`\x8at-\xfb;\x02\xdb\xcd\x0f[\xf6\xa0\x06\x14'
b'\xefe\r\xb1\x01\x00\x00\x00\x02\x00\xca\xbfP\xcb\xf1=\xf7u\xa7\xbc'
b'\x84\xd3\xff>=*\x9e>\xb0w\x8d><\xc5G>\xf0\xbd\x85g\xd7?k\x12G\x0e\x960'
b'\xa6\xd2\x1c?H\xb2x\xbf\xef\xde\xf3}\x82\xac\xb2pfyoooxvehgbkwn}='
b"\xfa\x8d\\\xce\xac\xe9\x17\xd4't\xc3Sq\xb0")
Результат разбора:
'A1': 163,
{'A2': [{'B1': 19189, 'B2': 58948, 'B3': 'fy'},
'B1': -12872, 'B2': 17838, 'B3': 'oo'},
{'B1': 29618, 'B2': 20121, 'B3': 'ox'},
{'B1': -7731, 'B2': 37533, 'B3': 've'},
{'B1': -23239, 'B2': 7358, 'B3': 'hg'},
{'B1': 24705, 'B2': 18565, 'B3': 'bk'},
{'B1': -7668, 'B2': 37577, 'B3': 'wn'}],
{'A3': 2843015872,
'A4': {'C1': 1922932383,
'C2': 192,
'C3': 1651547771233058888,
'C4': 51422,
'C5': 32352,
'C6': {'D1': -8470094442126976051,
'D2': 1106749300606824293,
'D3': 3505,
'D4': 1,
'D5': [9024644713374723305, 1717040740381716912],
'D6': [-0.8156118988990784,
0.12082987278699875,
-0.016214368864893913,
0.18473288416862488,
0.3446621000766754,
0.1843463033437729],
'D7': 0.4701959192752838,
'D8': 7482519035000065686}},
'A5': 816239132,
'A6': 0.783973217010498,
'A7': -0.9959657145858698,
'A8': 112}
Пример 2
Двоичные данные:
b'NDUC\xac\xe3j4\x97\x00\x00\x00\x02\x00\x00\x00\xbc#W\xf0\xae\x00\x00\x00'
(b'\x02\x00\x00\x00\xbe\x8f\x17\x97\xa2\x00\x00\x00\x02\x00\x00\x00'
b'\xc0\xf3\xa5\xe1\x12\x00\x00\x00\x02\x00\x00\x00\xc2oc4\n\x00\x00\x00'
b'\x02\x00\x00\x00\xc4>c\xb7J\x00\x00\x00\x02\x00\x00\x00\xc6\x1e\xa7-'
b'\xcb\x00\x00\x00\x02\x00\x00\x00\xc8rf\x89\x13\xeb:y&$\xcf\xad\xb9/\xfaQ'
b'\x86\x1c\x97`\xf2\xcf\x94=Q\x17\x15[Gq\xd4X\x8b\x1c+\x1a\xf4\xa9qu'
b'\xc7\x00\x00\x00\x02\x00\xca=\xc4\xed\xd7\xbff\xae\xc8?6\xfe\x00\xbf'
b']\xc0\x87\xbfk\xa7\xf0\xbfc\xc7\x06>(\x00\x7fzH\xd0\xa4\xcf\xcfW\x0c\xaf'
b'\xf2\x11\x89\xbfY\x97\x84?\xe1\x1a\xc0\x87\xdbt\x8e\x18flztuongxxumal,\x08'
b'F\xa1\xb9\xf2\xf0\x96\xd8{\x9d\xfe\x7fh\xe8!')
Результат разбора:
'A1': 172,
{'A2': [{'B1': -7318, 'B2': 13463, 'B3': 'fl'},
'B1': 9047, 'B2': 61614, 'B3': 'zt'},
{'B1': -28905, 'B2': 38818, 'B3': 'uo'},
{'B1': -3163, 'B2': 57618, 'B3': 'ng'},
{'B1': 28515, 'B2': 13322, 'B3': 'xx'},
{'B1': 15971, 'B2': 46922, 'B3': 'um'},
{'B1': 7847, 'B2': 11723, 'B3': 'al'}],
{'A3': 1919322387,
'A4': {'C1': -348489434,
'C2': 36,
'C3': -3481923321173277156,
'C4': 38752,
'C5': 62159,
'C6': {'D1': -7764961022932465807,
'D2': -3145611386619759447,
'D3': 29045,
'D4': 199,
'D5': [3172863597905899670, -2847508622996871135],
'D6': [0.0961567685008049,
-0.9011044502258301,
0.714813232421875,
-0.8662189841270447,
-0.9205312728881836,
-0.8897556066513062],
'D7': 0.16406439244747162,
'D8': 8811522077230061324}},
'A5': -1343090295,
'A6': -0.8499681949615479,
'A7': 0.5345156339132175,
'A8': 24}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x87 0x47 0x41 0x49 0x4a
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int8 |
3 | float |
4 | int64 |
5 | Адрес (uint16) структуры D |
6 | uint16 |
7 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив char, размер 7 |
3 | Размер (uint32) и адрес (uint16) массива структур C |
4 | Массив uint32, размер 7 |
5 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint32 |
3 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 6 |
2 | int16 |
3 | double |
4 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x87GAIJ\x00\x042\xb7a\xbb\\\xb2qrzzgat\x02\x00\x00\x00J\x00\xb7\xfa'
(b'\xc7<2\xbf\xe4 \xff\xf1um\xf7_\xa8\x07T\xc9\xbbi\x92?\xc0 G\xfd'
b'\xfa\x9a\xad\xf6\x1f/~?\xfd\xb3\xbd\xa6\x8e\xec1\xecd\x00\xfa|g\xd0\xa1\x04'
b'h\xb0\x01\x192\x95\xfd\x8a\xa3\x80\xb1\xd8v\x1d\x8ft\x99D\xf9\xe1'
b'y\x15\xb0\xd5\x88\xe3|\x9f\x01{\xc7Z\x94\xb8\xddX4j\xbf\xda\x04\xddo\xe3'
b'\t\x15\xfe\xa1EJ\x1a\xb1\x17\xc4\xddl\xe2?\x15\x97$\\\x12\x1a0@')
Результат разбора:
'A1': {'B1': 12852353464968283136,
{'B2': 'qrzzgat',
'B3': [{'C1': 161, 'C2': 28338180, 'C3': -5656341314622115303},
'C1': 216, 'C2': 1955536246, 'C3': -3048913334503390055}],
{'B4': [1019738807,
551862066,
1836446207,
128475127,
1773914452,
549470098,
2600140103],
'B5': 173},
'A2': -10,
'A3': 0.9929065108299255,
'A4': -1427099509472775171,
'A5': {'D1': [2675762056,
1523022593,
1490925716,
3669977652,
3815759108,
2717783305],
'D2': 19013,
'D3': 0.5757893400127927,
'D4': 4625225483467134741},
'A6': 31994,
'A7': -12185}
Пример 2
Двоичные данные:
b'\x87GAIJ\x17\x1c7\xa8m\x03\xab\xdenogjdbn\x03\x00\x00\x00J\x00Y\xcd'
(b'\xce\x7f\x94\xccW\x9f\xb2\x9a\xf2z\xb8\xc0w%\xed\x8e\x9f\x83R\xdf'
b'\xd6\x1c\xe9\xd1\xac\x9b\xfa\x16\x1d\xb1L\xbf\x97\xbfR\xb4\x922i\x8d'
b'q\x00\xdb\xe8\xd9\x11\xdf(\xd3\xa64\x94\x19\xe0)\xac\xb7{"Z\x8aK\xd5\xad'
b'\xe5\xe7z\x90\xe6\xf6R1\x8a\x92d\x14\x1b\xde\xb8\x81d\xfeE\xca'
b'\xce\x8c\x97\xf9\xce\xa4\xbaflA"L6a:\xcdW2\xe4\x8b\x97\xa7nx\xba\xb7x '
b'\x1a1\xec\xebS\xea?\xc0\x03\x9f\xae\x0fah\xa3')
Результат разбора:
'A1': {'B1': 16044921866946026519,
{'B2': 'nogjdbn',
'B3': [{'C1': 223, 'C2': 883348264, 'C3': 2484781569489770900},
'C1': 90, 'C2': 2916436874, 'C3': 3554174526075627493},
{'C1': 138, 'C2': 454321298, 'C3': -3545944797690611490}],
{'B4': [2144259417,
2673331348,
2062719666,
628605112,
2208272109,
483843922,
2611794409],
'B5': 250},
'A2': 22,
'A3': -0.799577534198761,
'A4': -8257012836135157865,
'A5': {'D1': [3472463756,
1818671780,
910959169,
1473067617,
2542527538,
3128454823],
'D2': 30903,
'D3': 0.8227443326111974,
'D4': 11774767945742222272},
'A6': 59611,
'A7': 4569}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x4c 0x59 0x5a
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | Массив адресов (uint32) структур B, размер 5 |
4 | Структура C |
5 | int16 |
6 | Массив uint8, размер 6 |
7 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив char, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
3 | double |
4 | Массив int16, размер 5 |
5 | uint32 |
6 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | uint8 |
3 | int16 |
4 | Размер (uint16) и адрес (uint32) массива int8 |
5 | int16 |
6 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZLYZ\xe7\xcc\x9b\x93\xd1\xff\x00\x00\x00X\x00\x00\x00\\\x00\x00\x00`\x00\x00'
(b'\x00d\x00\x00\x00h\x02`\x8e\xedd"\xbf\xef\xe9|0\xfbs\xach\xf0P2'
b'\xd9\xc6\xfc\xab:-\xe0\xd5\tz\xbf\xbc\xd3c\xb4M\xd3\x00l\x10\xcd\x00\x03\x00'
b'\x00\x00lhu\x01\xcd}\xd6\x88\xa7\xa5\xddO\xf0\x05Y\x92tqw\xf6ox\xa8Hqx'
b"\r\xdcqz\xcd\xdaug\xc3'\xa9")
Результат разбора:
'A1': 3888946067,
{'A2': 53759,
'A3': [{'B1': 22930, 'B2': 'tq'},
'B1': 30710, 'B2': 'ox'},
{'B1': 43080, 'B2': 'qx'},
{'B1': 3548, 'B2': 'qz'},
{'B1': 52698, 'B2': 'ug'}],
{'A4': {'C1': 608,
'C2': -1897044958,
'C3': -0.9972516018566373,
'C4': [26864, 20530, -9786, -853, 14893],
'C5': 3772057978,
'C6': {'D1': -0.11260054733231684,
'D2': 108,
'D3': 4301,
'D4': [-61, 39, -87],
'D5': 26741,
'D6': 461}},
'A5': 32214,
'A6': [136, 167, 165, 221, 79, 240],
'A7': 5}
Пример 2
Двоичные данные:
b'ZLYZo\x9d\xb3\xc7\x0ei\x00\x00\x00X\x00\x00\x00\\\x00\x00\x00`\x00\x00'
(b'\x00d\x00\x00\x00h?\x95\xc5\x1e\x1c\x8d?p\xde\xb1\xc4\xd6\\\x00\x91>\x03C'
b'\xa7\x93\xab\xc5lI)\x16\xda^\xbf\xdd\x90\x8el\x9c\xe4@\xeb\xe6'
b'\xa2\x00\x02\x00\x00\x00l\x08\xa5\xef\x08j\xb7C\x04\xaf\x94\xdf,\xa2u\xe3oi'
b'\xdf\xfabf\xbflcp_\xa2eu\xb9\xc3vg\xe6\x8d')
Результат разбора:
'A1': 1872606151,
{'A2': 3689,
'A3': [{'B1': 30179, 'B2': 'oi'},
'B1': 57338, 'B2': 'bf'},
{'B1': 49004, 'B2': 'cp'},
{'B1': 24482, 'B2': 'eu'},
{'B1': 47555, 'B2': 'vg'}],
{'A4': {'C1': 16277,
'C2': -987882355,
'C3': 0.00411862793898532,
'C4': [-28354, 835, -22637, -21563, 27721],
'C5': 689363550,
'C6': {'D1': -0.4619480190918388,
'D2': 235,
'D3': -6494,
'D4': [-26, -115],
'D5': 2213,
'D6': 61192}},
'A5': 27319,
'A6': [67, 4, 175, 148, 223, 44],
'A7': -94}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x77 0x47 0x58 0x4c 0x4d
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив char, размер 4 |
3 | int16 |
4 | Структура B |
5 | Размер (uint32) и адрес (uint32) массива char |
6 | uint8 |
7 | double |
8 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 8 |
2 | double |
3 | uint16 |
4 | uint8 |
5 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив int32, размер 5 |
3 | Массив uint64, размер 3 |
4 | uint64 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'wGXLMV\rpqda\xb2\xc8c\x1ai\xe6\xa4\x9a{S\xd7\xd3\xb07\xf7 \xb2\x8d\xeb\xf5q'
(b'Kr\xe9be\xbf\xac\xbaL\xeetF`\x12\x8b\xc8\xb2\x00\x00\x00\x02\x00\x00\x00'
b'D.\xbf\xee\xff7\x07\x92\x14\xa6\x00Fmx\xa9\xb1]\x9a\xe6\x06\xc7\x9c\x86\xb9'
b'\xabg !Z6-\xc7\x08\x8a!\x05h\\a\xc1I\x01\xcc\xdd\x91\xbd\x1b\xdeZ\xb0t+'
b"o$G\xf2 <j\xa5\xdc\xc9\xa05M\x15\xb4\xf3\xec\xeb'<\xa8\xe8\x85")
Результат разбора:
'A1': 22029,
{'A2': 'pqda',
'A3': -19768,
'A4': {'B1': [{'C1': 99, 'C2': 6761},
'C1': -26, 'C2': -23398},
{'C1': 123, 'C2': 21463},
{'C1': -45, 'C2': -20425},
{'C1': -9, 'C2': 8370},
{'C1': -115, 'C2': -5131},
{'C1': 113, 'C2': 19314},
{'C1': -23, 'C2': 25189}],
{'B2': -0.056108860119036263,
'B3': 4747,
'B4': 200,
'B5': -78},
'A5': 'mx',
'A6': 46,
'A7': -0.9686541698325939,
'A8': {'D1': 12227657383153158044,
'D2': [-2034652313, 539056694, 768018570, 554002524, 1640057089],
'D3': [14762115394992757424, 8370906534014754876, 7684791097712004373],
'D4': 13039025840887474408,
'D5': -123}}
Пример 2
Двоичные данные:
b'wGXLM\x16\x99gwut\xe7\xf4X\xde\x8c\x10t\xe2\x1d\x92\x89\x92\x8eg\x15\x97\x1a'
(b't\xbf?Ox+K)\xcd?\xe33J\x86eu\xe2xp\xf0N\x00\x00\x00\x02\x00\x00\x00'
b'D\xad?\xa6Z\xcbA\x1bX\xa0\x00Fem6\x83\x88\x17\xa0Lq\xa5I\xbd\x19\x89\t1'
b"\x06.Y0_#\xb3\xb6\xf5\x02&\xb1\x132\xe19F\xf7\xdd\xf1\t[\xde\xdb3\x0e'\x89"
b'\xc4)\x9a`\x1c\xfb\x9f\xb0w\x0fi\xdeM\xbapl\x13\x03G')
Результат разбора:
'A1': 5785,
{'A2': 'gwut',
'A3': -6156,
'A4': {'B1': [{'C1': 88, 'C2': -8564},
'C1': 16, 'C2': 29922},
{'C1': 29, 'C2': -28023},
{'C1': -110, 'C2': -29081},
{'C1': 21, 'C2': -26854},
{'C1': 116, 'C2': -16577},
{'C1': 79, 'C2': 30763},
{'C1': 75, 'C2': 10701}],
{'B2': 0.6000111222198792,
'B3': 30832,
'B4': 240,
'B5': 78},
'A5': 'em',
'A6': 173,
'A7': 0.04366145295868873,
'A8': {'D1': 3928132935052194213,
'D2': [1237129609, 154207790, 1496342307, -1279855358, 649138994],
'D3': [16229080762600720731,
16058485032205534249,
11123922946646636303],
'D4': 7628620281957585667,
'D5': 71}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x4d 0x58
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива float |
2 | Структура B |
3 | Размер (uint16) и адрес (uint32) массива uint64 |
4 | Массив float, размер 8 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Адрес (uint16) структуры C |
3 | uint16 |
4 | uint16 |
5 | int16 |
6 | float |
7 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур D |
8 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | int8 |
4 | float |
5 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | double |
3 | uint32 |
4 | uint16 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'IMX\x04\x00\x00\x00C\x00e\xd0S\x00\xb8|\x8a\x99\xbb\xa3\xb9\xa9z\xbf\x02'
(b'\x00\x8a\x00_\x18\x02\x00\x92\x00\x00\x00\x8fq\x8e>\x91\xcf}?r\xf5M?\xb1'
b'd\x18>y\xea\x07?\x13\x85\xf3<\xea*\x01\xbfc\x92}>\xcdO1\xbe8\xe7{\xbe\xd5'
b'}\x9f\xbe}\x89q\xbf\x06\xdcJ\xce\x1c\xf4o\xbeS\xd4\x93\xe3\xfd'
b'\xbc\x97\x91\xaa\xc0\xd5\x81\x92W9\x91\xbf\xf4\xefZ7\x82\xb8\xa7\x92'
b'\x7f\xd3!Z\x85\xa4\xe00x\x97\xf4\xcdm\xdf?*\xd2Y\xc7\xff\xfcN\\\x00'
b'\x00\x00s\x00\x00\x00\xf2\xfe\xbb\x89\xacA\xffcew\xa4\xb0\xef\xdaa\x19')
Результат разбора:
'A1': [-0.1731559783220291,
{-0.24599921703338623,
-0.31150689721107483,
-0.9435041546821594],
'A2': {'B1': -12187,
'B2': {'C1': 6,
'C2': 19164,
'C3': -50,
'C4': -0.23432964086532593,
'C5': 83},
'B3': 31928,
'B4': 39306,
'B5': -23621,
'B6': -0.979152262210846,
'B7': [{'D1': 12290771696039990228,
'D2': -0.016820305173004035,
'D3': 928706548,
'D4': 47234,
'D5': -89},
'D1': 16187209582837464978,
{'D2': 0.4910769356337168,
'D3': 3344552490,
'D4': 64767,
'D5': 78}],
'B8': 6239},
'A3': [7205550138117062386, 1828983646684739429],
'A4': [0.2782101333141327,
0.9914484620094299,
0.8045264482498169,
0.1488216072320938,
0.5309215188026428,
0.02972654066979885,
-0.5045610666275024,
0.24762873351573944]}
Пример 2
Двоичные данные:
b'IMX\x04\x00\x00\x00C\x00\x00\x01S\x00\xd1\xd2\xb0\xa3\x99w\xde*a?\x02'
(b'\x00\x8a\x003^\x02\x00\x92\x00\x00\x00\x1ed\x95\xbe\xc1\xbb\x9e\xbb\xc8'
b'\x92\xb3\xbd\x05\xec\xa7>h\x1b~\xbe\x99\x03\xf8\xbd\xfe\xac:\xbe*.+\xbf\x82'
b"\xd7z?;\xda\x95\xbe<{\x8b<<\x19\xcf>'\xe6p\x1f ~\x10\xbf\r\n\xa1\xee\xab"
b'\xeaj\x14\nh\xebl\xd3\xb5|\xdd\xbf.\xc3_C\xac\xb0<\xc4w\x9b\xfa\x1b'
b'uc\x1c\xb0\xbf\x85i}h\xc9?\xe8\x04[ \xe9ln\\\x00\x00\x00s\x00\x00\x00ID'
b'\xe8\xcbvr6\xb82Wz\xc0\xc9\xe8Yp')
Результат разбора:
'A1': [0.9798508882522583,
{-0.2926805913448334,
0.017026536166667938,
0.4044893980026245],
'A2': {'B1': 256,
'B2': {'C1': 39,
'C2': 28902,
'C3': 31,
'C4': -0.5644245147705078,
'C5': 13},
'B3': 53969,
'B4': 41904,
'B5': 30617,
'B6': 0.8795603513717651,
'B7': [{'D1': 726322996052926730,
'D2': -0.46073671004312766,
'D3': 1130349358,
'D4': 45228,
'D5': 60},
'D1': 2045607418785396676,
{'D2': 0.19850127842391663,
'D3': 542835944,
'D4': 27881,
'D5': 110}],
'B8': 24115},
'A3': [13273922806273819721, 8095757758390490930],
'A4': [-0.29177945852279663,
-0.0048441593535244465,
-0.08768230676651001,
0.32797256112098694,
-0.24815142154693604,
-0.12110061198472977,
-0.18230053782463074,
-0.6686731576919556]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x46 0x54 0xc6
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | Массив char, размер 7 |
4 | Структура B |
5 | Структура E |
6 | Массив int32, размер 2 |
7 | Структура F |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 2 |
2 | int8 |
3 | int32 |
4 | uint32 |
5 | Структура D |
6 | int8 |
7 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint16, размер 5 |
2 | double |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | int64 |
4 | uint32 |
5 | int16 |
6 | Массив int64, размер 2 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | int64 |
3 | int64 |
Структура F:
Поле | Описание |
---|---|
1 | int64 |
2 | uint16 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LFT\xc62\x9d\x06\xb8\xc7c{H\xcc\x8a\x9e\xb5pydxudu\x7f\x00\x00\x00\x91'
(b'\x00\x00\x00w\x03U\xa9X\x8fB\xd1Te\x03\xc2\x9d\xf5,\x9f\xf6A\x8b\x8b\xb7'
b'\x99\xb7\x88)\x98\xc2\xfa\x97\xedr\xb4\x94\xeb\x92h4irfC1\x98\xf7z\xaar\xc7)'
b'{\xc3\xdbYP=\xd1aeW\xb6?\xf6\x89\x7fp\x9f\x88\xb6j\rM\xfb!d\xba!\xb5'
b'&\xfe\xaa\x9d\xc3\xb5\x87\xf6\xf3\xe6\x1f\x86\xf6\xc8b\x81\x90E%\x1bU\xf3k2'
b'=\x8di\x80P\x08e\x01*\xcb\x1a\xe0?\x8a\x98Y\x99"\x9d\xff\x00\xa1\xf4\xc8'
b'\xb1\xfc\xa6\xfe\xa6\xc0\xbf')
Результат разбора:
'A1': 3087441202,
{'A2': -5359693896530304057,
'A3': 'pydxudu',
'A4': {'B1': [{'C1': [21787, 27635, 15666, 27021, 20608],
'C2': 0.5032707043093589},
'C1': [39050, 39257, 40226, 255, 62625],
{'C2': -0.13009627488771813}],
'B2': 119,
'B3': 1487492355,
'B4': 1423000207,
'B5': {'D1': 101,
'D2': 4120756739,
'D3': -7370268834945130708,
'D4': 2552858807,
'D5': -1342,
'D6': [7535344150459379095, -605679984329987788]},
'B6': 122,
'B7': 6474983823024550570},
'A5': {'E1': 0.08727105749243447,
'E2': 7689483632150284790,
'E3': -5394825939383530227},
'A6': [-1649738202, -158878269],
'A7': {'F1': -9123508933961455885, 'F2': 17808, 'F3': 37}}
Пример 2
Двоичные данные:
b'LFT\xc6\xcb\x01\xbf\xbe\x83\xbe\x9f*\x0e\xf5\xdcssndzfsg\x7f\x00\x00\x00\x91'
(b'\x00\x00\x00\x85i\xe914p\x15H\xab\xc9\xe6\xb4)\x17\xb4\xcfR$a\xedA'
b'C\x93\x85\xeb\x99v\xaf\xe0\xba\xbe\xfc\x85\x1c\xad\xa59\xb6\x1c\xf1\xe1'
b'\xb4\x8dO\x17\xe9\xa0\x96\xac+~\x0c&\xc8\xde\nw\xa1\xc6\xd5\xbf\xeb(|D'
b'\x9c7\xd9n\xa9\x7fN)\xb19(\x01\xa4\xe8\x9f\xb1]\xa4\xba^\x90&$\xde'
b'l\x8f\x00\xe2ba\xae\xf8\xf7\x0c\x971\x8d9~T\xc4 ?\xc7\x93-\x1b\xb9\xbf=\nk'
b'\xe2XG\xa0\xa6#Nbd\x03a\xb4\x90\xef\xbf')
Результат разбора:
'A1': 3200188875,
{'A2': 8348817250431516291,
'A3': 'sndzfsg',
'A4': {'B1': [{'C1': [63480, 38668, 36145, 32313, 50260],
'C2': -0.09807095392102072},
'C1': [2621, 57963, 18264, 42656, 20003],
{'C2': -0.986414136389737}],
'B2': -123,
'B3': 875686249,
'B4': 2873628016,
'B5': {'D1': -55,
'D2': 388609254,
'D3': 4846415675504381876,
'D4': 2582349203,
'D5': -20618,
'D6': [-6508514524683912480, 5732436783218341433]},
'B6': 23,
'B7': 2741704999206035689},
'A5': {'E1': -0.34024845719566743,
'E2': 7987476558421698795,
'E3': 83380026171359145},
'A6': [-1314920284, 1589290077],
'A7': {'F1': -2161570123391687024, 'F2': 24930, 'F3': -82}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xfd 0x56 0x42 0x4c 0x42
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Адрес (uint16) структуры B |
3 | Размер (uint32) и адрес (uint16) массива uint8 |
4 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 4 |
2 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | double |
3 | int8 |
4 | uint8 |
5 | Структура E |
6 | Массив int64, размер 5 |
7 | Размер (uint32) и адрес (uint32) массива float |
8 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | Массив float, размер 2 |
4 | uint8 |
5 | int8 |
6 | uint16 |
7 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xfdVBLBNJ\x00\x08\x00\x00\x00\xb4\x00j}\x7f\x98\x9aGQ?+\xea<\x9f\xa5\x1d'
(b'|\x80K\xe4\xb1>\x0c\xb1<\xdfnD\xe0X\x12#}\xbf\xbd\xf1\xba\x16q\x16'
b'\xfe\x8b\xb1\xd6\x00\xbe`\x06d\xb0p\xcc\xce\n\xc5Y\x04\xbf\xf5i:\xbf\x12\x00'
b'\x00\x00\x1e\x00\x00\x00*\x00\x00\x006\x00\x00\x00|\xaes\xb7/\xe9P\x86<\xd9'
b'f\xa2\xbc\x02\xee?&\xa5\xaa\xe6q\xd5Z\r\xe0e\xef&\xb5\xef\xbe\xe8\xdb\x1d'
b'\xbe`=o\x11\x9d\xc2m\xb18\x83L\xe66"~&\xd3+\x87\x1d\x80\x12\xde2\x8a\xa0\xdd'
b'\xefQ\xbe\xaa\x97\x9f\x82\xcahu\xca\xfc\xdd\xba\xd6\xae;\xd4-\x02'
b'\x00\x00\x00B\x00\x00\x00\x08N@\x1c\x0b\x18}\xde\xaa')
Результат разбора:
'A1': 78,
{'A2': {'B1': [{'C1': 0.8174988031387329, 'C2': -1623397845, 'C3': 2155617701},
'C1': 0.3474448621273041, 'C2': -549670644, 'C3': 1491092590},
{'C1': -0.9888163805007935, 'C2': 381350333, 'C3': 2348684913},
{'C1': -0.12581898272037506,
{'C2': -1335622048,
'C3': 181324912}],
'B2': {'D1': 9678491990369742460,
'D2': 0.9378340885075782,
'D3': 38,
'D4': 165,
'D5': {'E1': -86,
'E2': 17250440295675687398,
'E3': [-0.468178927898407, -0.15415918827056885],
'E4': 96,
'E5': 61,
'E6': 4463,
'E7': 49821},
'D6': [2465411062325358957,
1333097956094715518,
-4732737998229458210,
-3858062286788782166,
3302330048882335228],
'D7': [-0.5169947743415833, -0.7281792759895325],
'D8': 8}},
'A3': [78, 64, 28, 11, 24, 125, 222, 170],
'A4': 2558492010}
Пример 2
Двоичные данные:
b'\xfdVBLB/J\x00\x02\x00\x00\x00\xb4\x00AQ\xd4k\x8e]\x1c\xbe+[8q\x12\xda'
(b'\xa5\x03\x97t\xe8=\x93N\x04!%\x867\xe9;\xcb\xf0>\x94U\xb4+\r\xe0\xb9\xcbF@'
b'S\xbf\x125\xab\x97\xca\x128i\x1d\x9fM?X\xad_?\x12\x00\x00\x00\x1e\x00'
b'\x00\x00*\x00\x00\x006\x00\x00\x00\xd6\x12\x1c\\+\xe7\xb2K\\\xe7\x98o\xc4='
b'\xdf?\xb0K\x14\xefh\x86\xb5\xef(\xdaX\x85\x85S\xbf\xe3\xfbI?z\xaa\xa5'
b"{\xa4\x88\x02\xee\xf3\x17=\xe3\xf9\xa1-\xbe\xa7\x89\x02\xf8\xf5\xb8\xb6'L9I"
b'9a\xcb\xf6\xf47\x94?\xc6I6n\xc0m>\xf0\xfdd\xcb\x02\x00\x00\x00B'
b'\x00\x00\x00\xb8{\xcb')
Результат разбора:
'A1': 47,
{'A2': {'B1': [{'C1': -0.15270063281059265, 'C2': 1899518763, 'C3': 61200914},
'C1': 0.11350362747907639, 'C2': 553930387, 'C3': 3912730149},
{'C1': 0.4703005254268646, 'C2': 733238676, 'C3': 3417956365},
{'C1': -0.8251994848251343,
{'C2': -1750387438,
'C3': 1765282506}],
'B2': {'D1': 5454676272114045654,
'D2': 0.4881449785058203,
'D3': -80,
'D4': 75,
'D5': {'E1': 20,
'E2': 6402474830268360943,
'E3': [-0.8262560963630676, 0.7889997363090515],
'E4': 122,
'E5': -86,
'E6': 31653,
'E7': 34980},
'D6': [-6775134312867828222,
-5118912711653605843,
-3791686424612558922,
3911875727719920886,
-3790625778057756562],
'D7': [0.803209125995636, 0.8737387657165527],
'D8': -72}},
'A3': [123, 203],
'A4': 1809076545}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x51 0x54 0xe1
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Структура B |
3 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | Размер (uint16) и адрес (uint16) массива структур C |
3 | uint16 |
4 | uint64 |
5 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив double, размер 2 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива uint16 |
2 | Массив int32, размер 4 |
3 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CQT\xe1\x90\x9a\x1b\xf8\xa3u;/\x00\x00\x00\x03\x00*\x00\x03\x00-\xd7p'
(b'\xa2\xe5e{\xdb\xbbQ@W\x95d\\\xcev\xd9>\x00dskg\xcc?\xe6O\xf5\xc6\x95'
b'\xfe\xd0?\xcd\x0eJ\xc8]uX\xa2?\xe0\x92Gz\x9b\xb5\xaa\xbf\xe1\xf8iT'
b'\x91`\x86\xe0?\xeb\xd1\x9d\xdc\xb4\xea4\xbf\xed\xe0\xd8*j\xb7p\xdaP\xee\xdb'
b'\x00\x00\x00\x02\x00\x00\x00`N\\\xdb\xf0\x0e\xb8\x1b_\xd5\xeb\xe6|'
b'\xcb\xe5\x13\xf3\x0b\x9a')
Результат разбора:
'A1': 10419671442583272239,
{'A2': {'B1': 'skg',
'B2': [{'C1': -52, 'C2': [0.6972607496863592, 0.226998660883434]},
'C1': -94, 'C2': [0.5178563494388773, -0.5615736629215611]},
{'C1': -32, 'C2': [0.8693379698445995, -0.9336968258337333]}],
{'B3': 55152,
'B4': 11737899586452934976,
'B5': 6311060802593282366},
'A3': {'D1': [55888, 61147],
'D2': [1314708464, 246946655, -705960324, -874179597],
'D3': 2970}}
Пример 2
Двоичные данные:
b"CQT\xe1\x962(1[\xf4\x15\x92\x00\x00\x00\x04\x00*\x00\x02\x00.\x9d'E\x899f"
(b'\x96\xcf\xe7\xb3\xf8!\xebfe[QB\x00Tlhmn\xfa\xbf\xe4\xb0P\xce\trz\xbf'
b'\xda \xbeOKD\xa8\x1c\xbf\xe5h)\xdb\x97;\xd0?\xc9\x16\xb2W2\x0bX\xd4\x1b\xe5T'
b'\x00\x00\x00\x02\x00\x00\x00P\x99\xdd\xb8\xe3z\xf7\xed\x1a\xca\xb2\t\x02'
b'\x19\x85R\x96\xb2\x06')
Результат разбора:
'A1': 10822757046985954706,
{'A2': {'B1': 'lhmn',
'B2': [{'C1': -6, 'C2': [-0.6465229057462942, -0.40824849837833677]},
'C1': 28, 'C2': [-0.6689652718431436, 0.1960051465758521]}],
{'B3': 40231,
'B4': 5010599173206042547,
'B5': -566913253052296894},
'A3': {'D1': [54299, 58708],
'D2': [-1713522461, 2063068442, -894301950, 428167830],
'D3': 45574}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x5a 0x4d 0x4d
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур B, размер 4 |
2 | uint64 |
3 | Адрес (uint32) структуры C |
4 | Структура G |
5 | Размер (uint32) и адрес (uint32) массива int16 |
6 | int16 |
7 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint32 |
3 | float |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры D |
2 | uint8 |
3 | Структура E |
4 | uint32 |
5 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | int32 |
3 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры F |
2 | int16 |
Структура F:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива int8 |
2 | double |
Структура G:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив int8, размер 7 |
3 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AZMM\x007\x00A\x00K\x00U\x12K\x12\xebI\xe8\x12\x01\x00\x00\x00\x7f'
(b'\xa1\xaa\xf6\x9fa\r$\xc6]\xfff\xf2R\xd5\xdb\xf2z\x00\x00\x00\x05\x00\x00\x00'
b'\x8c\xd7\x04T\x7fF\xbb\xb8\xb6JL;\x10>\xa5\xec\xb84&6\xe7!@\xbfrHk '
b'/\xcd\x81\xf7O\xbe\xf03vY\xf5k\xbc1L\xbd\xf0Nu\x9eV4e\x9d\xadrH\xb9'
b'\xf1=\x10\xfe\xc9y\xd2\x83\x1e\x00\x00\x00\x02\x00o?\xd4\x87\xd9s'
b'\xaf\x0e\x88\x00_J\x00q.\x19\x99\x88"\x91\xe1\x1b\x9eY\x85\xbb\xe3*m\xbe'
b'\xb9\xef')
Результат разбора:
'A1': [{'B1': 47286, 'B2': 1246509840, 'B3': 0.32407164573669434},
{'B1': 13350, 'B2': 921116992, 'B3': -0.946417510509491},
{'B1': 8239, 'B2': 3447846735, 'B3': -0.4691426157951355},
{'B1': 23029, 'B2': 1807495500, 'B3': -0.11733714491128922}],
{'A2': 1318168117702562305,
'A3': {'C1': {'D1': 11409364317031461448, 'D2': -1175372528, 'D3': -20350510},
'C2': 74,
'C3': {'E1': {'F1': [-125, 30], 'F2': 0.3207915906643639}, 'E2': 11801},
'C4': 2575835793,
'C5': 57627},
'A4': {'G1': 11649394550535693510,
'G2': [93, -1, 102, -14, 82, -43, -37],
'G3': 62074},
'A5': [-24999, -31301, -7382, 28094, -17937],
'A6': -10492,
'A7': 1417627323}
Пример 2
Двоичные данные:
b'AZMM\x007\x00A\x00K\x00U\xe8D\xb4y\xa2\xe6\xac4\x00\x00\x00\x7f\xe9:\xa9\x82'
(b'VCw\xe1\xb8\xe0\x1c\xd2D\x8c\xaf\xc6\x04\x00\x00\x00\x05\x00\x00\x00'
b'\x8c\xa1m\xe3\xc9\xf1\xbaB\xd1\xbe<\x08\xbe<\xf9Z\xb6\xe0\xc4H\xde\x8d\x9e<'
b'\xa0\r\x1f\xd6\xa5\xc6\x89\x8bp=\xdb\xa5\x8d\xfb\xbbC\xdf(\xe7\xbbi\xbb\xda|'
b'\xda\x84"\x95\x98Q\xfc\xc0\xf9A\xa9u\x01\x87z\x01\'\x00\x00\x00\x02\x00o?'
b'\xe1\x83\xc1 ,]"\x00_\'\x00q\xbf_\xa8\xad\x1e\xcez`~>\xe9g\x19\xe9$@-\xd0')
Результат разбора:
'A1': [{'B1': 17105, 'B2': 3191605438, 'B3': 0.03043876215815544},
{'B1': 57540, 'B2': 1222544798, 'B3': 0.019537506625056267},
{'B1': 54949, 'B2': 3330902896, 'B3': 0.10724935680627823},
{'B1': 64443, 'B2': 1138698471, 'B3': -0.0035664946772158146}],
{'A2': 16736700549732674612,
'A3': {'C1': {'D1': 8996648489699529212, 'D2': -1057406551, 'D3': 1963034490},
'C2': 39,
'C3': {'E1': {'F1': [1, 39], 'F2': 0.5473333004364671}, 'E2': -16545},
'C4': 2829917902,
'C5': 31328},
'A4': {'G1': 16805931336744531937,
'G2': [-72, -32, 28, -46, 68, -116, -81],
'G3': 50692},
'A5': [32318, -5785, 6633, 9280, 11728],
'A6': -24211,
'A7': -473304646}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x45 0x50 0x59 0x9a
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур B, размер 5 |
2 | int32 |
3 | Адрес (uint16) структуры C |
4 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 5 |
2 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Адрес (uint16) структуры D |
3 | uint16 |
4 | float |
5 | Размер (uint32) и адрес (uint32) массива uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива uint32 |
2 | uint16 |
3 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DEPY\x9a\x00\x19\x00\x1f\x00%\x00+\x001\xe3F\xb5\x83\x00W\xd1p\x84\x88zjl'
(b'db\x1aisnlcfemeve\xbeuqgqq\xa8nvact ^9I\x87\xde?\x87\xf9\x00\x02\x00\x00\x00'
b'7S\xe0\xcb\xeez\x0b\x1c\xcd-.\xd9f\xf7\x0e\x0f\xd6\x8d\xa3\x10\xf7\xe2v\x00'
b'?9\xad\xbf3\x16\x90\x00\x00\x00\x02\x00\x00\x00O')
Результат разбора:
'A1': [{'B1': 'zjldb', 'B2': 26},
{'B1': 'isnlc', 'B2': 102},
{'B1': 'emeve', 'B2': 190},
{'B1': 'uqgqq', 'B2': 168},
{'B1': 'nvact', 'B2': 32}],
{'A2': -481905277,
'A3': {'C1': 284680822,
'C2': {'D1': [1580812679, 3728705529],
'D2': 21472,
'D3': 14694816822302944558},
'C3': 14765,
'C4': -0.6995630264282227,
'C5': [3647403790, 265719203]},
'A4': 3513812104}
Пример 2
Двоичные данные:
b'DEPY\x9a\x00\x19\x00\x1f\x00%\x00+\x001EU}\xc1\x00_\x1d\xb75\x9bedgcu1rgpcr'
(b'\xecqbpse{xuhvs\xa4sltty\xab\x06"\x9c\'(\xf8\xd5"\xe9\x94-?\xfb'
b'\xfe\xaf\xe5\x00\x04\x00\x00\x007%\xab\xc2\xf3\xees\xd2^L\xa2\xd1'
b'\xe2\xd0\xd8\xe3\x16\xe2\xdc\xcag\xbau\x00G\x02\x0f\xbfw\xd8\xb9\x00'
b'\x00\x00\x02\x00\x00\x00W')
Результат разбора:
'A1': [{'B1': 'edgcu', 'B2': 49},
{'B1': 'rgpcr', 'B2': 236},
{'B1': 'qbpse', 'B2': 123},
{'B1': 'xuhvs', 'B2': 164},
{'B1': 'sltty', 'B2': 171}],
{'A2': 1163230657,
'A3': {'C1': 3395795573,
'C2': {'D1': [102931495, 687396130, 3918802239, 4227772389],
'D2': 9643,
'D3': 14047833843916754082},
'C3': 527,
'C4': -0.9681506752967834,
'C5': [3521302744, 3809927900]},
'A4': 498546075}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4f 0x4e 0x42 0x53 0xc5
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур B, размер 3 |
2 | uint8 |
3 | int16 |
4 | Размер (uint16) и адрес (uint16) массива структур C |
5 | Размер (uint32) и адрес (uint16) массива структур D |
6 | Массив int64, размер 3 |
7 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | double |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint8 |
3 | int32 |
4 | uint64 |
5 | double |
6 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ONBS\xc5\x001\x00A\x00Q48\xe5\x00\x02\x00a\x00\x00\x00\x02\x00i'
(b'\xaa\xb8\x05\x0fR\x1em\xcbu\x83\x1e\x96\x8e5\x04\xca S\xebT\x8f\x89\x0b\x9f'
b'\xed\x10\xd3-"\xc1\xc0 \xa7\xbf\x9ct[R\x04\xb1@\xd6\x08\xfa\xcb\x16,(}?\xe98'
b'\xae\xa7\xe8\x97\xfc\x8au\xf8\\\xac|\xbe9\xbf\xe5\xb8\xd43\xf2\xcf'
b":\xa3\x8e\xeb\xd7\xbc\x1d\x0f\xa7\xaf'\x0ed\xed\x1d\xb4\xb0\xb4Hb\xbc\tZ\xee"
b'kN\xde\x11\xa4\xfe?\xe85\xce4J\xfd\xe6\x8ai\xf4\xf1\xd8\xf7\xad{F\xd0'
b'a\x9d\xde\x9e\xa4\xd5\x15q\xe8B\xe3Z\x9e\xbf\xb0.T\x15d<\xd0\xf4\xa2')
Результат разбора:
'A1': [{'B1': 1212362351995527335, 'B2': -0.02778761566257626},
{'B1': 15422852674087561341, 'B2': 0.7881692199196091},
{'B1': 9977153626423737913, 'B2': -0.6788121237391131}],
{'A2': 52,
'A3': 14565,
'A4': [{'C1': 163, 'C2': -114, 'C3': -5161},
'C1': 188, 'C2': 29, 'C3': 4007}],
{'A5': [{'D1': 12621072307366769840,
'D2': 180,
'D3': 1214430217,
'D4': 6552292494347969790,
'D5': 0.7565680524202747,
'D6': 35433},
'D1': 17650126972920743632,
{'D2': 97,
'D3': -1646354780,
'D4': 15354303746958121630,
'D5': -0.06320691606764517,
'D6': 62626}],
'A6': [-6145156128186667573, 8467645356366431434, 2329464180698581919],
'A7': -19}
Пример 2
Двоичные данные:
b'ONBS\xc5\x001\x00A\x00Q\xf0_j\x00\x03\x00a\x00\x00\x00\x02\x00m\xaa\x87\xfcv'
(b')\xc7/\x16Z\x1aG\x17\xdd\x11\x92=6\xfbn}\x02\x055Gv\t&\xce1\x17\xd6\xf0'
b';\xbf\xe3\x19U\x8a\x15\x8c\xbc\xc0\xc6\xab\x98\t\xcbB\x82?\xa9Wo\xd3q]'
b'\xc0\x94tr\xc4\xaf[\x8b\x0b\xbf\xd4r\x9a\xce\xebu\x04z\x82\xb8>\x15\xa9\xc0'
b"\x1b\xd0\xdar\x11\xa2C\xf1F[g\xa6\x82\x86\xae\xbd\xca}}Hh'\x95:\xc2\x8d?\xe8"
b'\xb8\x856\x8a\x99R\xdd\x92\xf6\xca\x15\xd3\xbbL\x03\x8e\xefX\x9ai'
b'\xf0\x00/\xea~(\x16\x90\x1b?\xd0A\xe5\xa1\x96[\xa4y\xf4')
Результат разбора:
'A1': [{'B1': 659441105705037883, 'B2': -0.5968425461727729},
{'B1': 13890978770158568066, 'B2': 0.049495214997189674},
{'B1': 10697301203992939275, 'B2': -0.3194949169827199}],
{'A2': 240,
'A3': 24426,
'A4': [{'C1': 122, 'C2': -126, 'C3': -18370},
'C1': 21, 'C2': -87, 'C3': -16357},
{'C1': 208, 'C2': -38, 'C3': 29201}],
{'A5': [{'D1': 11692454342067463810,
'D2': 134,
'D3': -1363293571,
'D4': 9027579972280828557,
'D5': 0.7725244584333189,
'D6': 56722},
'D1': 17783050077750428558,
{'D2': 239,
'D3': 1486514672,
'D4': 13487151464747035,
'D5': 0.2540220335007979,
'D6': 31220}],
'A6': [-6158676380968603882, 6492579980626727485, 3961881780386346311],
'A7': 118}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xce 0x50 0x50 0x48
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур B |
2 | uint32 |
3 | uint32 |
4 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 2 |
2 | int16 |
3 | Адрес (uint32) структуры C |
4 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
3 | uint8 |
4 | Массив int16, размер 4 |
5 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
3 | Размер (uint32) и адрес (uint32) массива uint8 |
4 | int64 |
5 | Размер (uint32) и адрес (uint32) массива float |
6 | int64 |
7 | uint8 |
8 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xcePPH\x02\x00\x00\x00}\x00\x00\x00\x0b\x8b\x11\xb0G\xfd\xe4\xfa'
(b'H\xa8\x85\xf3\x1a\xd2k?\xd8o\x02\x00\x00\x00\x81\x00\x00\x00\xed\xd7JFR9'
b'\xba\x15\x04\x00\x00\x00\x83\x00\x00\x00\xa531\x96\x93\xcfa\xa0Z\x80'
b'\xc2 \x96lU\xd6?\x03\x05\xb65k\xe1\x1f\xab\t[7\x10\xfa_\x05dv\x9d\xe4G\x00'
b"\x00\x00\xe9\x05\x08W\xf5\x16\xd691'\xad\xcd)\xf7\xc2\xf9nUujq4\xfcb\x00\x00"
b'\x00$\x9b\xd0ZV\x00q\x00-\x9c\xa18\xdc\xbd\xa2\xd2M\xbf=\x0c\xac;J'
b'\r\xa0\xbe')
Результат разбора:
'A1': [{'B1': 'dv',
{'B2': -7011,
'B3': {'C1': 901121283,
'C2': 107,
'C3': 225,
'C4': [-21729, 23305, 4151, 24570],
'C5': 5},
'B4': 1460143593},
'B1': 'jq',
{'B2': -972,
'B3': {'C1': 970331893,
'C2': 49,
'C3': 39,
'C4': [-12883, -2263, -1598, 21870],
'C5': 117},
'B4': 1523620644}],
'A2': 2953939723,
'A3': 4209311047,
'A4': {'D1': -22456,
'D2': 8059261265498534789,
'D3': [45, 156],
'D4': 1565626845994080237,
'D5': [-0.1075298860669136,
-0.8039952516555786,
0.005250482354313135,
-0.31260138750076294],
'D6': -6889997722113199195,
'D7': 90,
'D8': 0.3489638773053585}}
Пример 2
Двоичные данные:
b'\xcePPH\x03\x00\x00\x00\x98\x00\x00\x00VC<3\x96\xf8\xe2^MJ`\xec\x9b3\x90S'
(b'#\xc6\x02\x00\x00\x00\x9e\x00\x00\x00\x97\xc75\xe5\x93{\xd2_\x06\x00'
b'\x00\x00\xa0\x00\x00\x00\\\xc9\xbc6\x8f\xcf3\xe8^0\xc1\r\x04\xd5s\xbc\xbf('
b'\x84\x95\x03\xd1\x9aROA\x1e,\xb3\x0f\xc0\xcfcv\x93\xc4G\x00\x00\x00\xa42'
b'\xb7\xa2\xc6M\xf2\x17\xe6\xb9{\x1b\t\xd4n;z\x08,hu\xca9b\x00\x00'
b'\x00c\x96\x04u\x8d\x03\x12W\x1d\xb9\xd7\xdc<_\xee\xecT~avb\x10\xf6'
b'}\x00\x00\x00\x04\x88\xca\xdeV\x00q\x00\x8c\x001\xbd_\xa4Y\xbf:\x01\xe4>'
b'\xbet`?\x19\xb3\x19?\xd6*\n?\x8a\x08\xed>')
Результат разбора:
'A1': [{'B1': 'cv',
{'B2': -15213,
'B3': {'C1': 60130344,
'C2': -47,
'C3': 154,
'C4': [20306, 7745, -19668, -16369],
'C5': -49},
'B4': -1565052252},
'B1': 'hu',
{'B2': 14794,
'B3': {'C1': 401755590,
'C2': -26,
'C3': 185,
'C4': [7035, -11255, 15214, 2170],
'C5': 44},
'B4': 1963234915},
'B1': 'vb',
{'B2': -2544,
'B3': {'C1': 1460798349,
'C2': 29,
'C3': 185,
'C4': [-9001, 24380, -4882, 32340],
'C5': 97},
'B4': -557152252}],
'A2': 859587414,
'A3': 1591933078,
'A4': {'D1': 19021,
'D2': 14277347122500856928,
'D3': [49, 189],
'D4': 6904717053848307607,
'D5': [-0.8501643538475037,
0.44532185792922974,
0.8767813444137573,
0.6003890633583069,
0.5397161245346069,
0.4629557728767395],
'D6': -1714798819092412068,
'D7': 94,
'D8': -0.111142457475357}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x4c 0x48 0x4f 0x1e
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур B |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | Размер (uint32) и адрес (uint16) массива uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
3 | int8 |
4 | Размер (uint16) и адрес (uint32) массива uint8 |
5 | int32 |
6 | Адрес (uint32) структуры D |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'TLHO\x1e\x00\x00\x00\x02\x00\x00\x00&\x00\x04\x00`\x00\x00\x00\x02\x00d\x87'
(b'\xbe^?!\xb4\xc2\r\xfc\xf8>\xcf\x14=\xa9\x9c\xb85u9\xbes\xae\x02P'
b"\x1d\x00\x03\x00\x00\x00\x17\x9e\xc3'\x0e\x00\x00\x00\x1ai\x1fM\x02\xc7"
b'\x80\xa3\xeaA\xe7Z\x83\xd5\x87\x1e\x00\x02\x00\x00\x00\x1f6GZ\t\x00\x00\x00!'
b'\xff\xac\xde\x8dqeep\xc4\x02\x14\x82\x0f\xe1\xaa\xa3')
Результат разбора:
'A1': [{'B1': {'C1': -25416,
{'C2': 3852048546432680528,
'C3': 29,
'C4': [135, 190, 94],
'C5': -1631377650,
'C6': {'D1': 0.6316643953323364, 'D2': 13}},
'B2': 1763659010},
'B1': {'C1': -14464,
{'C2': 11811325434644387207,
'C3': 30,
'C4': [252, 248],
'C5': 910645769,
'C6': {'D1': 0.40445128083229065, 'D2': 169}},
'B2': 4289519245}],
'A2': 'qeep',
'A3': [3288470658, 266447523]}
Пример 2
Двоичные данные:
b'TLHO\x1e\x00\x00\x00\x02\x00\x00\x00&\x00\x02\x00`\x00\x00\x00\x03\x00b!'
(b'\x93\xbe\xa2:\x83mR\x08L>\xe2|\xe7-M\xfbZ\xf7\xb7\x96j\xa4"\xbd~\x00\x02\x00'
b'\x00\x00\x17\x1b\xec\xb5(\x00\x00\x00\x19\xc0\x9fG.\x0e\x10\xa741\x154\xa6J'
b'.\xb0\x00\x03\x00\x00\x00\x1e5v\xaa\xf1\x00\x00\x00!\xb2z\xa7\xc9hd\x88b'
b'\x04\x14\xd7\xfe=\xbd\xc0\x9a~\xb9')
Результат разбора:
'A1': [{'B1': {'C1': 19963,
{'C2': 6554909639323165373,
'C3': 126,
'C4': [33, 147],
'C5': 468497704,
'C6': {'D1': -0.3168526589870453, 'D2': 109}},
'B2': 3231663918},
'B1': {'C1': 3600,
{'C2': 12048308870270306862,
'C3': -80,
'C4': [82, 8, 76],
'C5': 896969457,
'C6': {'D1': 0.44235917925834656, 'D2': 45}},
'B2': 2994382793}],
'A2': 'hd',
'A3': [2288124948, 3623763389, 3231350457]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x80 0x58 0x51 0x47
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint32 |
3 | Размер (uint32) и адрес (uint16) массива uint8 |
4 | uint64 |
5 | uint64 |
6 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | double |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив адресов (uint32) структур D, размер 2 |
3 | int8 |
4 | double |
5 | Адрес (uint16) структуры E |
6 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив int64, размер 6 |
3 | uint32 |
4 | uint16 |
5 | int16 |
6 | Размер (uint32) и адрес (uint32) массива uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x80XQGS\x89\x1d\\C\x00\x00\x00L\x00\x00\x00\x07\xfc\xbf2)\xbf\r\xd1'
(b'?]\x00\x83\xa38\x01#\x89\x8eX\xd9\xbfck/c\x02\x00\x00\x00\x9e\x00\x86'
b'\xbf\xfb\xa56\xa5\xd9\xe5c\xf5Ud{:\xd9\x05G\xf4\xa2\x19s\xce\xfa\xc0\xb1'
b'\xe5F\x83\xcb\x18\x06\x1f\xd6\x1f\xb6\x1b?\x87\xdc\xbdG\xb7\xaca\xb7'
b'\x93\xc6\xe6\x80\xe9\xb6\xd2\xb8\xe0\xe4\xe9m\x81h\x12\xf6\xe7\xdasG'
b'\xe7}\x10f\xbcYr\xd9\x1c4\xe5\x16\xd5\x84Y\xc1\x04\xff\xe5e\xd3\x04(x'
b'\x02\x84V\xa2\x9e\x86\n\xf1\x10\xd1t\xac\x08 \x02\x00\x00\x00U\x00'
b'\x00\x00)\x93')
Результат разбора:
'A1': {'B1': {'C1': 1545439571,
{'C2': [{'D1': -8987243454761611661, 'D2': 203},
'D1': 4547428496613246488, 'D2': 135}],
{'C3': 7,
'C4': 0.26646403334871116,
'C5': {'E1': -58,
'E2': [-1954359023127396122,
-2672897294897943063,
6466155386015008627,
-8875162316986066574,
347733634738078041,
-8746374933841283032],
'E3': 3507548426,
'E4': 44148,
'E5': 8200,
'E6': [3074932188, 2478268844]},
'C6': 41859},
'B2': -0.3960300769067717},
'A2': 1664052067,
'A3': [41, 147],
'A4': 16562450758763265926,
'A5': 421432341774595427,
'A6': 430109767}
Пример 2
Двоичные данные:
b'\x80XQG\xffB\x0e~C\x00\x00\x00L\x00\x00\x00>\xc4\xad\xcf\xe2q\xb8\xd0?]\x00E'
(b'\xc86\xac\x91\xca"\xa5\xe9?\xbd\x87\x04`\x02\x00\x00\x00\x9e\x00\x18'
b'\xcf\x00\x98\xf3\xd2l\xe0s\xf6uP\xcc\x1bOQ0\xdc\xeb!C}\x90\x13\xb5'
b'\x85\x15\xc9,"\x93\x9e\xd2*B\xde\x8e\xffh9B\xbao\x18\xf5Y\x00\x9b\xfb'
b'D\x81,\x14B\x9b\xd2\x8eh\x90\xf8\xb7\xc9<\x05\xb6+.\xedl)\xca\x11\xd4'
b'\xfb\x08U\x19\x18\x9cP\x84\xc4\x9c\xcflw\xa3\x89\xa5\x00>\x90\xf1'
b'B\xdf\xb5\xf3\xb4\x13\xbc\xe4\xd6\xf9\x02\x00\x00\x00U\x00\x00\x00s\xea')
Результат разбора:
'A1': {'B1': {'C1': 2114863871,
{'C2': [{'D1': -3957109684811301565, 'D2': 44},
'D1': -8152005523804351710, 'D2': 255}],
{'C3': 62,
'C4': 0.2612576212838713,
'C5': {'E1': 0,
'E2': [-7259217467987919973,
4380234390797061842,
-3879449838065306107,
-7198976151338101743,
-6667741084354575280,
-2359057652970904183],
'E3': 330625973,
'E4': 58556,
'E5': -1578,
'E6': [3124902248, 1509234799]},
'C6': 51269},
'B2': 0.8014081913401074},
'A2': 1610909629,
'A3': [115, 234],
'A4': 16171532305649684248,
'A5': 5858932204569491059,
'A6': 569105456}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x41 0x48 0xc3
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | double |
3 | Адрес (uint32) структуры B |
4 | uint16 |
5 | uint8 |
6 | Адрес (uint32) структуры C |
7 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | Размер (uint32) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | int32 |
3 | double |
4 | uint16 |
5 | int64 |
6 | Массив адресов (uint16) структур E, размер 2 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int32 |
3 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint16) и адрес (uint16) массива int16 |
3 | double |
4 | double |
5 | int16 |
6 | int8 |
7 | Массив uint16, размер 5 |
8 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"IAH\xc3\xe6\x08?\xee/\xa06\xaf\x0e\xda\x00\x00\x00\x1f'\x16\x1b\x00\x00\x00"
(b'\x94\xa7{pxsc\xb5?Ar\xec\x00\x00\x00\x04\x00\x00\x00\x1b\xab<\x01\xa9-0!\\'
b'\xbf\xe8}\xe8\xfa\xf2\x85`\x00\x04\x00,?\xcaz\xa8\xe2\x8eC\xf8\xbf\xe6G\xca'
b'U\x1f\xf3(!\xf2\xc0\xea\xd4\xef;\xc2k\xbf\xf4\xedPf\xc7\xfe\x99\xbe\x8b,'
b'\xc4\xe1\x1bxv\xe6\xbf\xc5\x9e\x8e\xfe"-\x80\x00\x06\x00^\xbf\xc5'
b'\xd8\x98\xc28\xb8\xa0?\xef\xa8X\xe3\xc3-\xda\x06[\x1f{\xd1_\xf3\xeck\xa7'
b'\x01 \xce\xd9\xe5\x90\x81l\x95\x94;f\xb9\x8eo\xbf\xda\x01\x1c\xfa9xH)'
b'\xd9\x99\x07J\x80\x8bW0{\x004\x00j')
Результат разбора:
'A1': 58888,
{'A2': 0.9433137004893652,
'A3': {'B1': 181, 'B2': 0.755659818649292, 'B3': 'pxsc'},
'A4': 10006,
'A5': 27,
'A6': {'C1': {'D1': -27, 'D2': -1870566251, 'D3': -27589},
'C2': 1723436655,
'C3': -0.4063179439161826,
'C4': 10713,
'C5': -7419879945115586437,
'C6': [{'E1': -0.7653698827090629,
'E2': [-21700, 425, 11568, 8540],
'E3': 0.2068682771901249,
'E4': -0.6962634718507603,
'E5': 8690,
'E6': -64,
'E7': [60116, 61243, 49771, 49140, 60752],
'E8': 102},
'E1': -0.16890132340300212,
{'E2': [-14338, -26178, -29908, -15135, 7032, 30438],
'E3': -0.1706725071284767,
'E4': 0.9893001984104857,
'E5': 1627,
'E6': 31,
'E7': [31697, 24563, 60523, 42753, 8398],
'E8': -39}]},
'A7': -22661}
Пример 2
Двоичные данные:
b'IAH\xc3<\x88?\xe6\x01%m}E\xac\x00\x00\x00\x1d\xed\xac\xe0\x00\x00\x00'
(b'\x8a\xa8Qnv{?m\xcc\x1d\x00\x00\x00\x02\x00\x00\x00\x1b\x9ed0\xf1\xc6/'
b'\x00g?\xb33%Qv3p\x00\x04\x00*\xbf\xec=\x07\x16\xf5\xf4\xbc?\xcd'
b'\xd9\x96\xb2\xec\x08P\xc7~\xdc@w{Vn\x7fY*\xec\x89,_t\xf3_?\xe5.\xa8'
b'm8\xcd\x82\x00\x02\x00\\?\xe8X\x9b\x07\xae\xd2f\xbf\xec\xe0j\xca\xb6iX'
b'\xc5\x8f\xa8\x12\x05\xe3cT$k0\x00R%ES\x9b\xeb\x14\xf3\xab\xe0O\xe0P\xbf\xdbm'
b';\x07\xd1\xe7`\xc9<\x93\xd0_\xefG\xb1\xc2\x8b\x002\x00`')
Результат разбора:
'A1': 15496,
{'A2': 0.6876399172271497,
'A3': {'B1': 123, 'B2': 0.9288957715034485, 'B3': 'nv'},
'A4': 60844,
'A5': 224,
'A6': {'C1': {'D1': 69, 'D2': 1402727188, 'D3': -3157},
'C2': -531636144,
'C3': -0.4285419060103006,
'C4': 51516,
'C5': -7795625473673674101,
'C6': [{'E1': 0.07499917258082944,
'E2': [-24988, 12529, -14801, 103],
'E3': -0.8824496696903661,
'E4': 0.23320277916360732,
'E5': -14466,
'E6': -36,
'E7': [16503, 31574, 28287, 22826, 60553],
'E8': 44},
'E1': 0.6619455464591939,
{'E2': [24436, -3233],
'E3': 0.760816111570034,
'E4': -0.902394672320308,
'E5': -14961,
'E6': -88,
'E7': [4613, 58211, 21540, 27440, 82],
'E8': 37}]},
'A7': -22447}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x47 0x54 0x46
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив адресов (uint16) структур B, размер 5 |
3 | Адрес (uint16) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
3 | uint32 |
4 | float |
5 | int16 |
6 | Адрес (uint32) структуры D |
7 | uint8 |
8 | Массив int8, размер 6 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | int8 |
3 | Массив double, размер 6 |
4 | int32 |
5 | Массив float, размер 5 |
6 | int16 |
7 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'TGTFP\xffF"w\x99\xc2\x9a\x1b\x00)\x007\x00F\x00U\x00\xb8\x00ubm^'
(b"\x0c\x03\x00\x00\x00\x18\x00\x00\x00\xb5%vn=#\x02\x00\x00\x00'"
b"\x00\x00\x00\xeb\x1cse!\xb9\x02\x00\x00\x005\x00\x00\x00u\xd5sjo'\x9e"
b'\x03\x00\x00\x00C\x00\x00\x00\x15ikva\xd8x\x03\x00\x00\x00R\x00\x00\x00\xea'
b'\n\x80\xc1\x1f\x1d\xcc}pp\xfd@abr;\x11\xe9?XW\xdc\x93\xee\x05\xdd\xbfrU'
b'\xe0\xdc\xa3\x08\xef?\x90\xb4\x9a\x13U~\xe0\xbf\xf4\x1a\x0c\xe4\x88\x1a'
b'\xea?,NV\x96\x81\xe4\xdc?\xce\xbc\xc4\xe6L\xfc!\xbd\xde\r\x16\xbf\xeb\xae'
b'\xe0\xbe%\x97J\xbdj\xb0n\xbf\x92\x84K\xaa\x1e\xb2\x9c*\xaa\xbd\xc0O4\x01'
b'\x036\xc4l\xbf\x91\xaea\x00\x00\x00\xc1\x0f$\xc7CCI')
Результат разбора:
'A1': -7295099709431546032,
{'A2': [{'B1': 3166, 'B2': 'ubm', 'B3': 9653},
'B1': 9021, 'B2': 'vn', 'B3': 7403},
{'B1': -18143, 'B2': 'se', 'B3': 54645},
{'B1': -25049, 'B2': 'sjo', 'B3': 26901},
{'B1': 30936, 'B2': 'kva', 'B3': 2794}],
{'A3': {'C1': -0.08308908343315125,
'C2': -64,
'C3': 50410575,
'C4': -0.9248689413070679,
'C5': -20847,
'C6': {'D1': 8102114045254943104,
'D2': -3,
'D3': [0.7833535417621889,
-0.4534870571090912,
0.969804698370963,
-0.5154214270493345,
0.8157391027496872,
0.45144691163406736],
'D4': -423314226,
'D5': [-0.03954724967479706,
-0.5861490964889526,
-0.4388345181941986,
-0.04946054890751839,
-0.9323793649673462],
'D6': -31598,
'D7': 2988354123},
'C7': 193,
'C8': [15, 36, -57, 67, 67, 73]}}
Пример 2
Двоичные данные:
b'TGTFc\xdc\xc0\\\x86\x13v\xd9\x1a\x00)\x008\x00F\x00T\x00\xb7\x00zl9p'
(b'\x02\x00\x00\x00\x18\x00\x00\x00?Jvyl\xfe\xba\x03\x00\x00\x00&\x00\x00\x000'
b'\xd8rpd\x00 \x03\x00\x00\x005\x00\x00\x00\xeagsxP\t\x02\x00\x00\x00'
b'D\x00\x00\x00S\xdepi\x93\xc4\x02\x00\x00\x00R\x00\x00\x007T \x04a\x92'
b'd\xad0\xb2\x0f\x00\xee\x00w\xc2\xc9\xe6\xbf \x18\xa2w&\xaa\xc7\xbfxj\xe2'
b'\xec\x94N\xcc?\xec\xe0\xdf\x94m\xc3\xdb?&\x06\x8e3\x81\x02\xe9?\xfe\xa7C'
b'~\xe7\xc6\xe4?\x16\x8f\x94i]\xd8\x8c\xbe\x99\xad\xce=<B;\xbf`\x97!'
b'\xbfF\xf2\xe5=r\x06\xea\x8f(4\xd1V\x99>G\xac\x9b\xd8\xca\x1c\x1ck\xbf'
b"\x1c0`\x00\x00\x00\x1f\xeb\xbcZw'\x19")
Результат разбора:
'A1': -2777010652424643485,
{'A2': [{'B1': 28729, 'B2': 'zl', 'B3': 19007},
'B1': -17666, 'B2': 'vyl', 'B3': 55344},
{'B1': 8192, 'B2': 'rpd', 'B3': 26602},
{'B1': 2384, 'B2': 'sx', 'B3': 56915},
{'B1': -15213, 'B2': 'pi', 'B3': 21559}],
{'A3': {'C1': 0.29949048161506653,
'C2': 71,
'C3': 3403193260,
'C4': -0.9183976650238037,
'C5': 12316,
'C6': {'D1': -5606790888612101088,
'D2': 15,
'D3': [-0.7121288608827285,
-0.18488007394279382,
0.22114812437651543,
0.4338029817440787,
0.7815557486466715,
0.6492803064440975],
'D4': 1771343638,
'D5': [-0.27508822083473206,
0.10091704875230789,
-0.7314794063568115,
-0.6312160491943359,
0.11227850615978241],
'D6': 1650,
'D7': 875073514},
'C7': 31,
'C8': [-21, -68, 90, 119, 39, 25]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x5a 0x41 0x43
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 3 |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | uint16 |
4 | Размер (uint32) и адрес (uint32) массива int8 |
5 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | int16 |
4 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | float |
3 | double |
4 | float |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
3 | uint16 |
4 | double |
5 | int8 |
6 | uint32 |
7 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DZAC\x84c6l\x16\xca9\x11\x00\x00\x00\x02\x00\xa0\xaa\xaa?\x9c\x81h'
(b'\x87\xf2\x85\x00?z\xbf\xa8\xbf\xec\x918mE\x10\xba\xbe\xb3\x0e\xd4>\xe52\x8f'
b"\x9df\x08\xfb\x00\x00\x00\x02\x00\xa2\xab\xb0\xbf\xc4'\xe5\x84\x96\xebP"
b'>\xe3\x964?\xc1\x91\xc6Y\xd3f\x00\xbf+N\xc6\x80;\x92\x98\x91U\x17\x04'
b'\x00\x00\x00\x02\x00\xa4\xf9,?\xdb\x0c\xd9E\xd7\x06\x94\xbfI\x95\x1c'
b'?\xbb\xbfsp\xa5\xd9\x90>\x18i\x8a\x00\x02\x00\x00\x00\xa6b\xf4'
b'\x00\x00\x00\x06\x00\x00\x00\xa8\xee_\x0c\xd5n\xde?\xed\xa4n\xaa:'
b'\xce\xee\x95\xfb\xb4\xfd\xcbilekzlrdi\x1d\xf5{H\xfe\xd0')
Результат разбора:
'A1': [{'B1': -8907215800141989615,
{'B2': 'le',
'B3': -21846,
'B4': {'C1': 0.027837403581206566,
'C2': 0.9794869422912598,
'C3': -0.8927271017241971,
'C4': -0.3497225046157837}},
'B1': 4532084192420694267,
{'B2': 'kz',
'B3': -21584,
'B4': {'C1': -0.15746754621599246,
'C2': 0.44450533390045166,
'C3': 0.13726119409584214,
'C4': -0.6691707372665405}},
'B1': -9206603829257890044,
{'B2': 'lr',
'B3': -1748,
'B4': {'C1': 0.4226592237501816,
'C2': -0.7874314785003662,
'C3': 0.10839005947295832,
'C4': 0.14884009957313538}}],
'A2': 'di',
'A3': 25332,
'A4': [29, -11, 123, 72, -2, -48],
'A5': {'D1': -4513,
'D2': 3285,
'D3': 28382,
'D4': 0.9263223004149646,
'D5': -107,
'D6': 4222942667,
'D7': 105}}
Пример 2
Двоичные данные:
b'DZAC\xcc\xa3\x00\xe8RE\xa1\xe6\x00\x00\x00\x03\x00\xa0\xa5\xb8\xbf\xd8z/'
(b'\xc6\x16K\x98\xbe\xcc\xd6!\xbf\xc0a\x10\r\x88\x00x\xbfvs\xe1R+"\xb2'
b'\xd8q\x08\r\x00\x00\x00\x02\x00\xa3=\xec?\xd0#dj\xd9\x9bt=\xe1K\x07'
b'?\xd0\xbf{\xd1;\xbe$\xbe\x9bR\x13N\x8e\xabIn\xe0\xf1\x1b\x00\x00\x00\x03'
b'\x00\xa5tt\xbf\xd8\x19X\x8f\xb4\x11h?V\x1cy\xbf\xc4\xe9\r\xed\xe2D\xd0'
b'>\xc4\xbd\xf0\x00\x03\x00\x00\x00\xa8\xc74\x00\x00\x00\x08\x00\x00\x00\xab'
b'\x05\x8d>,\xf3\x9e\xbf\xee\x83\xdc\xc5\x0c\xec\xda\xcf\xe1\x1e$78dtyfuuyl'
b'lfo\x03kE\x19\x11\xeaV\x8f')
Результат разбора:
'A1': [{'B1': -3701113470955707930,
{'B2': 'dty',
'B3': -23112,
'B4': {'C1': -0.38245767921869733,
'C2': -0.4000711739063263,
'C3': -0.12796211872774044,
'C4': -0.962705671787262}},
'B1': 5920864286639458317,
{'B2': 'fu',
'B3': 15852,
'B4': {'C1': 0.2521601718385036,
'C2': 0.11000638455152512,
'C3': 0.2616872351927404,
'C4': -0.30336055159568787}},
'B1': 5660650113532490011,
{'B2': 'uyl',
'B3': 29812,
'B4': {'C1': -0.37654699357542265,
'C2': 0.8363719582557678,
'C3': -0.1633622561971948,
'C4': 0.3842616081237793}}],
'A2': 'lfo',
'A3': 50996,
'A4': [3, 107, 69, 25, 17, -22, 86, -113],
'A5': {'D1': 1421,
'D2': 15916,
'D3': 62366,
'D4': -0.9535964821474423,
'D5': -49,
'D6': 3776848951,
'D7': 56}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x53 0x43 0x4d 0xbc
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур B |
2 | Структура C |
3 | int8 |
4 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 4 |
2 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | int16 |
3 | int16 |
4 | double |
5 | Адрес (uint32) структуры E |
6 | double |
7 | uint32 |
8 | double |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
3 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | Массив uint8, размер 8 |
2 | uint16 |
3 | uint32 |
4 | uint16 |
5 | float |
6 | Размер (uint16) и адрес (uint16) массива uint64 |
7 | Массив int8, размер 6 |
8 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GSCM\xbc\x04\x00\x00\x00:\x00\x00\x00Z\x00\x00\x00\xd6<H\xd1\xf0\xd1\x12'
(b'\xcb\x0b\x03\xbf\xbfx\x00\x00\x00b\xc8\x14\xff\xc3\xe5\xeb\xbf1\xe3\xe6'
b'\x01\xee-\xb2\xc9\x9bQ\xed\xbf`\x19\x92N*uuzi`x`\xc9oyed\xc1/\xd2\x87iknoWK'
b'\xf9\xf4pfxc\xf9\xd0\xa3\xd7\x08\x0c\xcd\xa0V5KxkgdK\x18X\x04\x99\xe5\xed'
b'\x12+W\xaa\xbe\x90\xc0-\xd1\xd45\xd4\xff\x13\x08)c\xf8\xca\xb9'
b'\xa9\xab\xa1\xda\xcei\x12d\xee\x11\xbd\xbd\x02\x00h\x00\xd3\xf0\xb3J'
b'\x11\x0b\xfa')
Результат разбора:
'A1': [{'B1': 'uuzi', 'B2': -916424608},
{'B1': 'oyed', 'B2': -2016268351},
{'B1': 'ikno', 'B2': -184988841},
{'B1': 'pfxc', 'B2': -677129991}],
{'A2': {'C1': {'D1': 2697792520, 'D2': 5432580761793017174, 'D3': 22552},
'C2': 15574,
'C3': -11960,
'C4': -0.12114022930001744,
'C5': {'E1': [255, 19, 8, 41, 99, 248, 202, 185],
'E2': 43945,
'E3': 1775164065,
'E4': 25618,
'E5': -0.09231935441493988,
'E6': [12274326669722228996, 15291362104687235262],
'E7': [-45, -16, -77, 74, 17, 11],
'E8': -6},
'C6': -0.871797559934077,
'C7': 31908657,
'C8': -0.9162119807601223},
'A3': 96,
'A4': 709792281}
Пример 2
Двоичные данные:
b'GSCM\xbc\x04\x00\x00\x00:\x00\x00\x00Z\x00\x00\x00!_\xaf#\x88\x11<\x1f`V\xd5'
(b'\xbfx\x00\x00\x00<Vo\nx}\xd4?(\x9d(\xb8PD\x8c\xab\xe0\x98\xb9?*\xe2a\x0fjwv'
b'dq^[\xca\xf7roip\xe8\x91\xa3\xfbidle\x0bcH\x8asvad\xc2\xd6-/G\xf7'
b'\xf9\xcc#\xdf(3um\x89~\x0f"\x06T\x07\xbdD\x941\x9d\xba\xa4e"8\xbc5u'
b'\xb7%\xc2\xad/\xfaK8\x87z\xf5\xad\x06\x84\xd3\xf2\x1a\xa8\xca\xbe'
b'\x02\x00h\x00\xe46\xb6W%T\xd0')
Результат разбора:
'A1': [{'B1': 'wvdq', 'B2': -137733282},
{'B1': 'roip', 'B2': -73166360},
{'B1': 'idle', 'B2': -1974967541},
{'B1': 'svad', 'B2': 791533250}],
{'A2': {'C1': {'D1': 3438933831, 'D2': 9117939270725197603, 'D3': 8719},
'C2': 24353,
'C3': 9135,
'C4': -0.3333969407106214,
'C5': {'E1': [183, 37, 194, 173, 47, 250, 75, 56],
'E2': 31367,
'E3': 2215030261,
'E4': 62163,
'E5': -0.3958137631416321,
'E6': [11326997560763569158, 8445863625484510394],
'E7': [-28, 54, -74, 87, 37, 84],
'E8': -48},
'C6': 0.32015801447900905,
'C7': 3089669416,
'C8': 0.0999889773195417},
'A3': 42,
'A4': 1779392994}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x43 0x57 0x9b
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint32 |
3 | uint64 |
4 | int32 |
5 | uint64 |
6 | Массив структур B, размер 4 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | float |
3 | Размер (uint16) и адрес (uint32) массива int8 |
4 | Адрес (uint16) структуры D |
5 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint16 |
3 | Размер (uint32) и адрес (uint16) массива int8 |
4 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'KCW\x9b]1Mj\xdc\x10\xaf\x7f\xc4=R\xe9\xaa\x87\xea\\\xff\xcc\xa4='
(b'\xec\xb8|\x05\x0f\xcb\x03\xc8\xa9ea\xaf\xad\xa0\xa9\x03\x00\x00\x00\x9d'
b'\x00/\xfe\xa9\xa2\xd2>\x02\x00\xa0\x00\x00\x00\xa4\x008\x07\\2\x06'
b'\xd4\x1c\xb1\x04B"L\x02\x00\x00\x00\xaa\x00e\xa6Bb\xdc>\x02\x00\xac\x00\x00'
b'\x00\xb0\x00\xda\xban\xaf\xdc\x13\x8dY\xf2\xf9\xac\xbd\x04\x00\x00\x00\xb6'
b'\x00a\x95\xecw~\xbf\x02\x00\xba\x00\x00\x00\xbe\x00\xcf\xca\xab..\x10=l\xb5'
b'\xec\xa6\r\x02\x00\x00\x00\xc4\x00\xe2\xa6;{E\xbf\x02\x00\xc6\x00\x00'
b'\x00\xca\x00\x00{\x85z\xfc\xc4\xc7CAM\xa1\x02\x00\xa2\x00\x18P+\xcf\x01\xca'
b'/\x8a\x02\x00\xae\x00L\xd9J\x96\xebY\x87\xb8\x1f\x18\x02\x00\xbc\x00Ir\xdb]'
b'\t6:\x12\x02\x00\xc8\x00')
Результат разбора:
'A1': 93,
{'A2': 3697954097,
'A3': 12315465081264516880,
'A4': -10687865,
'A5': 1082408419131761868,
'A6': [{'B1': {'C1': 12515328978753946571,
'C2': 43424,
'C3': [-123, 122, -4],
'C4': 65071},
'B2': 0.411397248506546,
'B3': [-60, -57],
'B4': {'D1': 41293, 'D2': [67, 65]},
'B5': 1848},
'B1': {'C1': 4757121843784462940,
{'C2': 19490,
'C3': [24, 80],
'C4': 42597},
'B2': 0.4304371476173401,
'B3': [43, -49],
'B4': {'D1': 35375, 'D2': [1, 202]},
'B5': 47834},
'B1': {'C1': 18010556322266525550,
{'C2': 48556,
'C3': [76, -39, 74, -106],
'C4': 38241},
'B2': -0.9940173625946045,
'B3': [-21, 89],
'B4': {'D1': 6175, 'D2': [135, 184]},
'B5': 51919},
'B1': {'C1': 17056658173255888555,
{'C2': 3494,
'C3': [73, 114],
'C4': 42722},
'B2': -0.7714115977287292,
'B3': [-37, 93],
'B4': {'D1': 4666, 'D2': [9, 54]},
'B5': 31488}]}
Пример 2
Двоичные данные:
b'KCW\x9b"\x1bi\xd6\xa4@\xf4\x8e\x92\x84\x9en\xa2\xd3\xf0u\x19\x02\x81\xad'
(b'I\xdc\x8f\xa4\x97!\xdbfr\xa3\xa6U\xe1\xf9t\x03\x00\x00\x00\x9d\x0036\xd5'
b'\x9e\t\xbf\x02\x00\xa0\x00\x00\x00\xa4\x00H\tI\xe8T:\xael\xef4\xe8\x90\x04'
b'\x00\x00\x00\xaa\x009\x9a5I\x13<\x02\x00\xae\x00\x00\x00\xb2\x00}\x1e@\x9fG'
b'\xb3\xa5\x1eg\xfff\xca\x02\x00\x00\x00\xb8\x00\xd70\x17\x04\x83\xbe\x03'
b'\x00\xba\x00\x00\x00\xbf\x00n7vj\xc6\xb0\xb9"\xab\xc0<\'\x04\x00\x00\x00\xc5'
b'\x00?\xf3_I\xb8\xbc\x02\x00\xc9\x00\x00\x00\xcd\x00\x15\rR\x0f\rmLC\xa1'
b'\xca\xd4\x02\x00\xa2\x00\x03\xf8S\xa0\xc4Z\x99\xa8\x0f\xf4\x02\x00\xb0\x00'
b'\xe6f\xba52G\x94\x84\x84\x02\x00\xbd\x00\xace\x15\xcd\xac\xe8\xf6'
b'\xb3\xa6\xd6\x02\x00\xcb\x00')
Результат разбора:
'A1': 34,
{'A2': 2765515035,
'A3': 11704466773814211648,
'A4': 427159763,
'A5': 10927016772199350530,
'A6': [{'B1': {'C1': 16237067252483414817,
'C2': 29945,
'C3': [82, 15, 13],
'C4': 13875},
'B2': -0.5375798344612122,
'B3': [109, 76],
'B4': {'D1': 54474, 'D2': [67, 161]},
'B5': 2376},
'B1': {'C1': 3814386904964851785,
{'C2': 37096,
'C3': [3, -8, 83, -96],
'C4': 39481},
'B2': 0.008989621885120869,
'B3': [-60, 90],
'B4': {'D1': 62479, 'D2': [153, 168]},
'B5': 7805},
'B1': {'C1': 18403712099299073856,
{'C2': 51814,
'C3': [-26, 102],
'C4': 12503},
'B2': -0.2558905780315399,
'B3': [-70, 53, 50],
'B4': {'D1': 33924, 'D2': [71, 148]},
'B5': 14190},
'B1': {'C1': 13883228457229773430,
{'C2': 10044,
'C3': [-84, 101, 21, -51],
'C4': 62271},
'B2': -0.022495923563838005,
'B3': [-84, -24],
'B4': {'D1': 54950, 'D2': [246, 179]},
'B5': 3349}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x4d 0x56 0xa5
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint16 |
3 | int8 |
4 | uint64 |
5 | Адрес (uint32) структуры B |
6 | Структура E |
7 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | uint32 |
3 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур C |
4 | Структура D |
5 | int8 |
6 | Массив uint16, размер 5 |
7 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива int8 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив int16, размер 5 |
3 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | int64 |
3 | int8 |
4 | uint16 |
5 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CMV\xa5x\xe6Cb20=\xfa\xaeN\xbeR\xbd\x00\x00\x00i\xf17Q\x10[\x82\xd1'
(b'\xf2\xf3\x11\xc04~\xbe\x81\xc5\xb8\x8e\xd6_l\xa2\xd5\x00\x02\x00*\x02]`j'
b'I\x00\x03\x002\x03\x94\xc7X\xf0\x00\x03\x00;^\xe9L\xdb\x00\x02\x00D\xda\x17'
b'\xf7\xc3\x17\x00\x03\x00L\x11\x1c\x00\x00\x00,\x00\x00\x005\x00\x00\x00'
b'>\x00\x00\x00F\x00\x00\x00Oajhtmina{u:\xbc\x00\x00\x00\x05\x00UL2\xc2~&'
b'\xa7\xad\x04x\xdf\x10\xf9b\xcb\xb2\x1f\xfc\xd0[\xd6\x86\x93\xde\xd0\x8f'
b'e\xa4C\xac\xe7\x80\xdf\xc3-\x8aE\xc3')
Результат разбора:
'A1': 30950,
{'A2': 17250,
'A3': 50,
'A4': 3476210113952240317,
'A5': {'B1': 'ajhtmina',
'B2': 2071280316,
'B3': [{'C1': [-94, -43], 'C2': 605},
'C1': [96, 106, 73], 'C2': 916},
{'C1': [-57, 88, -16], 'C2': 24297},
{'C1': [76, -37], 'C2': 55831},
{'C1': [-9, -61, 23], 'C2': 4380}],
{'B4': {'D1': 1278395006,
'D2': [9895, -21244, 30943, 4345, 25291],
'D3': 2988440784},
'B5': 91,
'B6': [54918, 37854, 53391, 26020, 17324],
'B7': 16681579049155970499},
'A6': {'E1': -3785,
'E2': 5841269334125769489,
'E3': -64,
'E4': 13438,
'E5': -0.2534615993499756},
'A7': 2396413804}
Пример 2
Двоичные данные:
b'CMV\xa53\xa0\xb4sJ\xd1\xbf\x17\xc5\xe6\x1f\xeb\xac\x00\x00\x00C\x93&\x1f'
(b'\xaa\xda\xa0xB\x9a\xa5w{\x91<\x9c\rlP\xb0\xc0Xd\xbc\x00\x02\x00*0\x86L}'
b'\xed\x00\x03\x002\n\x85\x00\x00\x00,\x00\x00\x005vuzdwvsy-y\xb1\x0f\x00'
b'\x00\x00\x02\x00;\xa5\x08\r\xec\xa4?\xae\x83\x98\xee\xeaeF\xbc\x0e'
b'k\xbd\xa5\xbal~_\x81[\xd1\x88\x9f1\xb5H\x07G\xc64\x02\x1d\x15')
Результат разбора:
'A1': 13216,
{'A2': 46195,
'A3': 74,
'A4': 15113825013215521708,
'A5': {'B1': 'vuzdwvsy',
'B2': 762949903,
'B3': [{'C1': [100, -68], 'C2': 12422},
'C1': [76, 125, -19], 'C2': 2693}],
{'B4': {'D1': -1526198804,
'D2': [-23489, -20861, -26386, -5531, 18108],
'D3': 241941925},
'B5': -70,
'B6': [27774, 24449, 23505, 34975, 12725],
'B7': 5190196012169436437},
'A6': {'E1': -27866,
'E2': 2281876543963830949,
'E3': 119,
'E4': 31633,
'E5': 0.019049368798732758},
'A7': 1353760856}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x41 0x49 0x41
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint32 |
3 | uint64 |
4 | Адрес (uint16) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
3 | uint8 |
4 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | Адрес (uint16) структуры D |
3 | Массив uint32, размер 5 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint8 |
3 | Размер (uint32) и адрес (uint32) массива структур E |
4 | Структура F |
5 | Размер (uint16) и адрес (uint32) массива float |
6 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint64 |
3 | int16 |
Структура F:
Поле | Описание |
---|---|
1 | int64 |
2 | uint64 |
3 | int64 |
4 | Массив float, размер 7 |
5 | double |
6 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MAIA\x00\x00\x00\x167\x8a=O\x10>\xe9\xd6\xe6b\x07\x11\x00\x9c\xe4\xa9'
(b'ia\x18\xc9G\x8d_o%#\xea\x1c\x10\xc2}5/`\x16xz!\xde\x80\x81\xde\xc2/v\x98]g'
b'!@".>p\xec<\x8aW\xdc\xbd\xb0\x88\x02?D|\xa5n\x00\x00\x00\x03\x00\x00\x00\x1e'
b'zu\xf6+\xfe~Z2{\x05\xf6\x03o\xd3Z\x1a\xff\x89(\x01\x01\x967(\xbd\x12[\x05'
b'=\xa3m\x9c?Y>\xd7?md\\>*\x05N\xbfWU\x0c>\xf9\xae\xf4\xbf\xd4\xffr\x0eE\r\xf4'
b'\x8c\x96m^\x00\x02\x00\x00\x00?\xc3I\x03\x8f*V\x00G8E\xc1j0\x07\xfe\x18\x9fh'
b'\xb1\x88LpW<>[\xd4;')
Результат разбора:
'A1': {'B1': 58537, 'B2': 1767971017, 'B3': 71, 'B4': -115},
{'A2': 931806543,
'A3': 1170630062360364817,
'A4': {'C1': 59714134,
'C2': {'D1': 0.7675269246101379,
'D2': 110,
'D3': [{'E1': 95, 'E2': 8008847000748475005, 'E3': 13615},
'E1': 96, 'E2': 1619178351925166558, 'E3': -15825},
{'E1': 118, 'E2': 10979044859106700862, 'E3': 28908}],
{'D4': {'F1': 8824229713716075058,
'F2': 8864761936170146330,
'F3': -33451537441867992,
'F4': [-0.03573133423924446,
0.07979890704154968,
0.8486151099205017,
0.9273126125335693,
0.16603586077690125,
-0.8411414623260498,
0.4876629114151001],
'F5': -0.32809115785150245,
'F6': 2358668638},
'D5': [0.016887597739696503, -0.0861969143152237],
'D6': 49993},
'C3': [944095594, 805830168, 2674438536, 1282430780, 1046205499]}}
Пример 2
Двоичные данные:
b'MAIA\x00\x00\x00\x16\x87\xd9^\x08I\x14\x96$g\x83V\x9e\x00\x9c@N\xbbG\xd7\xa4'
(b'I\xb0kL\xc7>!\xda\xa1\xd6\x8f\x16-\xf7>\xb1\tU\xaa\x07XF \x18\xe0\xce_\x8e'
b'M{\x11\xe6Cl\xbd\xbf \xa3\xe0\xbf\t\xd0\xfe\xbf\\\xaa\xa3\x94'
b'\x00\x00\x00\x03\x00\x00\x00\x1eg\xe6\xdc\x9b52\xc1\rA\xf7aO\x85\x8dt\xd1'
b'\x14sU8~\xd7\x9eH\xbf`\xden>e\x14\xc4\xbe\xd2\xfb\xf4?Nc\x10>m\xad\xed'
b'?U\xe1\xc6\xbe\x9b\xd9\x08?\xb1\x1a\x9c\xc1\xe1\xf8\x80O2\xcc\xa8'
b'\x00\x02\x00\x00\x00?\xd4\xfa\xe8,<n\x00GA#\x1b\xd5\xd3\xef\x80\xb3\nI'
b'\xd8\x81\x02F\x99\xcd\xf7\xf1\xabh')
Результат разбора:
'A1': {'B1': 16462, 'B2': -1152919644, 'B3': 73, 'B4': -80},
{'A2': 2279169544,
'A3': 5265998947402602142,
'A4': {'C1': -399754130,
'C2': {'D1': -0.8619787096977234,
'D2': 148,
'D3': [{'E1': 107, 'E2': 5532458982370825871, 'E3': 5677},
'E1': 247, 'E2': 4517402164758796358, 'E3': 8216},
{'E1': 224, 'E2': 14870760958029063747, 'E3': 27837}],
{'D4': {'F1': 7486913989720588557,
'F2': 4753374925883798737,
'F3': 1473615204214873672,
'F4': [-0.8783940076828003,
0.2237120270729065,
-0.41207849979400635,
0.8061990737915039,
0.23210878670215607,
0.835476279258728,
-0.30439019203186035],
'F5': 0.06681232198204334,
'F6': 1328729256},
'D5': [-0.6275005340576172, -0.538345217704773],
'D6': 54522},
'C3': [1092819925, 3555688627, 172611713, 38181325, 4159810408]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xcf 0x53 0x51 0x4d
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | int16 |
3 | Адрес (uint16) структуры B |
4 | Адрес (uint32) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив char, размер 7 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур D |
2 | double |
3 | Массив int32, размер 3 |
4 | double |
5 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int16 |
2 | int16 |
3 | float |
4 | double |
5 | uint8 |
6 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xcfSQM\xbf\x99\n\xb7\x0el\xe6@il\x00\x14\x00\x00\x00\x9a\ttkjtrxh'
(b'2\xa6\xcc\xb4\x00\x02\x00\x00\x00\x1c\xee\xea?\x0by\xc0\xbf\xe3{\xbc'
b',r\xb8\x86K\xd16\xc1\xfe\xd7y|,\x11\x0fe\x96\x00\x05\x00\x00\x007\x8c\x9d?m8'
b'\x9a\xbf\xed\x80\x8c\xc5\x98 \xa4\xa3\x7f\x87\xe4\xf6\xdd\xb3'
b'\xb6\xed\x00\x03\x00\x00\x00X\xb9%=\xa7\x99\xf9\xbf\xec\x85\xe67\x1ca\xfeas'
b'\xb9\xb3\xc8,\x80\xdar\x00\x03\x00\x00\x00u\x1d\xae\xbe\xf7\x87\x01\xbf'
b'\xe7)p\x18\xa9\xd2F\xd1\xe4\xee\x00 \x00A\x00^\x00{\x00\x04\x00\x92?\xe5'
b'\xe2\x8d\xd6\xd5\xa5\xf2\x1c\xd4\x9bgPJ\xec;q\xed\xffB?\xe4\x06\xd7\xfa\xf5'
b'\xe0N\x93\xfcR{')
Результат разбора:
'A1': -0.024454937224822837,
{'A2': 26988,
'A3': {'B1': 9, 'B2': 'tkjtrxh'},
'A4': {'C1': [{'D1': [12966, -13132],
'D2': -4374,
'D3': 0.5448265075683594,
'D4': -0.6088543766143324,
'D5': 75,
'D6': -11978},
'D1': [-15874, -10375, 31788, 4367, 26006],
{'D2': -29539,
'D3': 0.9266449213027954,
'D4': -0.9219421252501161,
'D5': 163,
'D6': 32647},
'D1': [-6922, -8781, -18707],
{'D2': -18139,
'D3': 0.08183664828538895,
'D4': -0.8913451267608818,
'D5': 97,
'D6': 29625},
'D1': [-19512, 11392, -9614],
{'D2': 7598,
'D3': -0.48345187306404114,
'D4': -0.7238083345133155,
'D5': 209,
'D6': -6930}],
'C2': 0.683905524824864,
'C3': [483695463, 1347087419, 1911422786],
'C4': 0.6258354093142857,
'C5': 2482786939}}
Пример 2
Двоичные данные:
b'\xcfSQM\xbf\xec\xcbC\x95\x11\xe7\xc0\xf1S\x00\x14\x00\x00\x00{ijzvjerj'
(b'\xd5\xda\xaa\\\x00\x02\x00\x00\x00\x1c|n>\xa8fb?\xcd\xb48\xfdN\x11 '
b'%4\xaf\xb6\xacW\x13\x99`\xa6\xef6\x7f\x00\x05\x00\x00\x007\xb4\xce?4\xa4'
b'1\xbf\xa1\xfd\xcc\x02J\x0f`I\xe1=\x85\xbcm\xaf\x90\xad\x00\x03\x00\x00\x00X'
b'\xb0\xe9>\xbf\x0b\x18\xbf\xe7\xcfB\x03\\\xa1\xe6@\x11\x0e\x00 \x00A\x00^\x00'
b'\x03\x00u?\xe6\x9cO/\xba\xb9\x92\x17\xa6\xf5\xb3\x0e\xa2.\xa4\xbc'
b'\xf6\xc8\xb3\xbf\xee\xb3\xa9\x1d/3>\x14vdi')
Результат разбора:
'A1': -0.8998124991915049,
{'A2': -3757,
'A3': {'B1': 105, 'B2': 'jzvjerj'},
'A4': {'C1': [{'D1': [-10790, -21924],
'D2': 31854,
'D3': 0.3289061188697815,
'D4': 0.2320624577370234,
'D5': 37,
'D6': 13487},
'D1': [-18772, 22291, -26272, -22801, 13951],
{'D2': -19250,
'D3': 0.705630362033844,
'D4': -0.0351394417566826,
'D5': 73,
'D6': -7875},
'D1': [-31300, 28079, -28499],
{'D2': -20247,
'D3': 0.37313151359558105,
'D4': -0.7440500322018664,
'D5': 64,
'D6': 4366}],
'C2': 0.7065807277884224,
'C3': [396817843, 245509796, -1124677453],
'C4': -0.959431225777372,
'C5': 343303273}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x89 0x4c 0x52 0x4e
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int8 |
3 | uint8 |
4 | int16 |
5 | int64 |
6 | Размер (uint16) и адрес (uint16) массива структур C |
7 | Размер (uint16) и адрес (uint32) массива char |
8 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | int8 |
4 | float |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | uint32 |
3 | int32 |
4 | int8 |
5 | float |
6 | Размер (uint32) и адрес (uint16) массива int64 |
7 | Размер (uint32) и адрес (uint32) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x89LRN?\x00\x058\x8d&2\xd5\xdcu\x86\x14\x15\x1f\x02\x00G\x00\x02\x00'
(b'e\x00\x00\x00\xd8RG\x1a%\xfdj\xdbG_:\xf0\xa6\xfd\n\xec\x8c\xad\x8ff'
b'?\x03\x00\x00\x00g\x00\x02\x00\x00\x00\x7f\x00\x00\x00\xb7+#ngqdg\x08'
b'\t\xe4 \x03\x00\x00\x00B\x00r`]S?\x02\xae".\x02\x00\x00\x00E\x00'
b'\xc6\x82\xc8\xa6<dgs\xbd7\x93bst\xfb\xec\xfb&\xedW\xc5\xc2\x82X\x10s\xf5\x18'
b'|e\x04\xd5\x8dL\xa4')
Результат разбора:
'A1': {'B1': -73, 'B2': 9003},
{'A2': 5,
'A3': 56,
'A4': 9869,
'A5': 2239718957422269746,
'A6': [{'C1': 551815432, 'C2': 'ngq', 'C3': 114, 'C4': 0.8256435394287109},
'C1': 774024706, 'C2': 'dg', 'C3': -58, 'C4': 0.020359281450510025}],
{'A7': 'dg',
'A8': {'D1': -2636016296075504936,
'D2': 4030357319,
'D3': -334824026,
'D4': -116,
'D5': 0.9006298184394836,
'D6': [-327510005677310605, -9024433721865470996, 316795795438506072],
'D7': [36309, 42060]}}
Пример 2
Двоичные данные:
b'\x89LRN?\x00\xb6\xa8J\x8bJyKC\xc6+-Q\x02\x00G\x00\x02\x00e\x00\x00\x00'
(b'#\xc2\x05\xaa\xbc+\xc2\x1e\xec\x9c\xf8\xb5\xa0T\x99\xb2\xa0\x8a\xcd\x06'
b'?\x05\x00\x00\x00g\x00\x02\x00\x00\x00\x8f\x00\x00\x00\xaf\xf4\x03saqec\x1b'
b'd\x82\x93\x02\x00\x00\x00B\x00<\xd5bT\xbf\x88\xe3\x89\xb6\x03\x00'
b'\x00\x00D\x00y\xb4\xb5\x0c?az0S\xdd\xd9\x88\x8al\xcc\xd4\xc2W\xae9'
b"'\xbe\xd0\xe1\xa5\x14\xec\xcb\xd4V5V\xf6\x9ay\xd8n^\xefz\xccS\xf8\x00"
b';\xa5\xff\x00\xa1\x17\x86')
Результат разбора:
'A1': {'B1': -81, 'B2': 1012},
{'A2': -74,
'A3': 168,
'A4': -29878,
'A5': 5849379621556681034,
'A6': [{'C1': 2474796059, 'C2': 'sa', 'C3': 60, 'C4': -0.8296330571174622},
'C1': 3062489992, 'C2': 'qec', 'C3': 121, 'C4': 0.5496475696563721}],
{'A7': 'az',
'A8': {'D1': 2216382055926055459,
'D2': 3052969196,
'D3': -1298574176,
'D4': -96,
'D5': 0.5265737771987915,
'D6': [-3716443272112155856,
-3405241139553910060,
3843493304311522785,
-1198398574801783210,
-25549347528389510],
'D7': [41216, 34327]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x48 0x53
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | int64 |
3 | uint32 |
4 | Адрес (uint16) структуры B |
5 | Структура E |
6 | double |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | float |
3 | Размер (uint32) и адрес (uint16) массива float |
4 | Адрес (uint16) структуры C |
5 | double |
6 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры D |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int16 |
3 | double |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint16) и адрес (uint16) массива структур F |
3 | int64 |
4 | Адрес (uint32) структуры G |
Структура F:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива int16 |
2 | Размер (uint16) и адрес (uint32) массива int32 |
Структура G:
Поле | Описание |
---|---|
1 | double |
2 | uint16 |
3 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NHS\x0f*\xc3\x19\x89M\xd8o\x0b\xc8D\x94\xb383\xffN\x00T\x9e\xb1B\xd6&\xe6'
(b'?\x02\x00\x8a\x00\x11\x95\xc7\xfe\xd4\xe5\xac\x9f\xa2\x00\x00'
b'\x00\x94\x8c\x93A\x00\xb1\xd2?\xb9*9\xbf,\xde8?\xba\xfc\xffhX\x96\xad'
b'\xc0\xa8\xcc?=\x00\xa1h\x18\xbf\xbdp\x85\x10\x98\xc3\x86)\xe0\xd1'
b'\xef\xbe\x02\x00\x00\x005\x00H\x00,\xf9\xa2\xb2+\x84\xef\xbf\xba '
b'\xcf\x07\x02\xc0"\xe0\x1bV\xc7\xe4o\xd1)*\x81\xb3\xa5\xb0CVOh4\xee\xf5,\xb0S'
b'\xd2<\x02\x00\x00\x00r\x00\x02\x00v\x00\x00\x00\x02\x00\x00\x00~\x00'
b'\x02\x00\x82\x00\x00\x00f=\xaa\xa7\x8e(\xe6\xbf&\x11S\xf5\xda\xbb')
Результат разбора:
'A1': 432220687,
{'A2': -7762859906233250423,
'A3': 4281546931,
'A4': {'B1': 2992294060313899197,
'B2': -0.4683980941772461,
'B3': [-0.7233081459999084, 0.7221400737762451],
'B4': {'C1': {'D1': 186, 'D2': -4, 'D3': 0.22389992214147303},
'C2': -0.5953465104103088},
'B5': -0.9848841179844263,
'B6': 16150682328657502394},
'A5': {'E1': 0.6922408392537798,
'E2': [{'F1': [22043, -6969], 'F2': [707383663, -1331317887]},
'F1': [22083, 26703], 'F2': [754314804, 1020416944]}],
{'E3': -6940920222714456815,
'E4': {'G1': -0.6924508356768626, 'G2': 4390, 'G3': 3151689043}},
'A6': 0.29205328372899797}
Пример 2
Двоичные данные:
b'NHS\xa0}8\xde\xd5Mv\xe8\x96`\xc3\xe0\xc2\x9dd\x9dN\x00\xfc\xf1t'
(b'\x03\x17\xb0\xd8\xbf\x02\x00\x8a\x00\x06f\xdd\xaf\xb4\xe8W\xc8\xa2\x00\x00'
b'\x00"l/\x84\x12\x01\xe1\xbf\xa5o\x07?r\xbd[?\x15\x90\xc9\x94l\xc4\x85'
b'\xa4\xd7\xd9?=\x00\x01\x0c\xb3\xbe<[\xaa\xc4?}\x01\xae&\xd1\x8e\xbc\x02\x00'
b"\x00\x005\x00H\x00\x12^'\xb3\x1a\xcc\xec\xbf0/S\xd0\xffh\xc6n\x98\t"
b'\x161\x9c\x85\xe2\x87)\xbf.a\x9e0\x0bO\x89\x92\x9aJqv\x8d>\x02\x00'
b'\x00\x00r\x00\x02\x00v\x00\x00\x00\x02\x00\x00\x00~\x00\x02\x00\x82\x00'
b'\x00\x00x\xfb6\xe8\x05\x8f\xc5\xbf\x99H\xb3\x1b(\xd3')
Результат разбора:
'A1': -566723168,
{'A2': -2250849187493687851,
'A3': 2640616898,
'A4': {'B1': 12538440550412081980,
'B2': -0.017433714121580124,
'B3': [0.5290473103523254, 0.8583594560623169],
'B4': {'C1': {'D1': 21, 'D2': -13936, 'D3': 0.4037867838212119},
'C2': -0.3497009575366974},
'B5': -0.899915075216031,
'B6': 7982182837481844528},
'A5': {'E1': -0.3857476743467314,
'E2': [{'F1': [2456, 12566], 'F2': [-2015197796, 1630453545]},
'F1': [12446, 20235], 'F2': [1251644041, 1049458289]}],
{'E3': -4010481080407857658,
'E4': {'G1': -0.16842721785175363, 'G2': 18585, 'G3': 3542621107}},
'A6': -0.5313808995955507}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x4a 0x4b 0x51
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Массив int8, размер 3 |
3 | uint8 |
4 | uint32 |
5 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | Массив float, размер 2 |
3 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | uint32 |
3 | int64 |
4 | int16 |
5 | double |
6 | Массив адресов (uint32) структур D, размер 4 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint8 |
3 | Размер (uint32) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XJKQ\x00\x00\x00_?`\xd1\xd4?R\xcd\x1eQ\xb3\xb9}\xb8\xe9\x82gt\x08\x11\x8e'
(b'\xef>\xddb\xf6\x0fg\x8b\x8f\xcf\x00\x00\x00\x06\x00\x00\x00\x1b\xcf}'
b'\x99i\xe9c\xa43\x00\x00\x00\x03\x00\x00\x00.E\x18Lk\x00\xa3Z\x00\x00\x00'
b'\x02\x00\x00\x00>\t\x89+b\xc4\x95[\x1b\x05\\\x00\x00\x00\x05\x00'
b'\x00\x00M\xd3\xb3[}\xa1\xaf\xd7nF~j\xd6i\xb4m\x84T*\x8fh\xc0\xe6?\xe1\xcb'
b'\x000C\x92\x06\x00\x00\x00!\x00\x00\x001\x00\x00\x00@\x00\x00\x00R')
Результат разбора:
'A1': {'B1': {'C1': -3192107115733854354,
{'C2': 1182690006,
'C3': 7616833284905537384,
'C4': -16154,
'C5': 0.5560303633361066,
'C6': [{'D1': 258444175,
'D2': 207,
'D3': [142, 239, 62, 221, 98, 246]},
'D1': 1776903076, 'D2': 51, 'D3': [207, 125, 153]},
{'D1': 1282080931, 'D2': 90, 'D3': [69, 24]},
{'D1': 2505775877,
{'D2': 92,
'D3': [9, 137, 43, 98, 196]}]},
'B2': [0.8782017230987549, 0.8234423398971558],
'B3': 20915},
'A2': [-71, 125, -72],
'A3': 233,
'A4': 2187817992,
'A5': 17}
Пример 2
Двоичные данные:
b'XJKQ\x00\x00\x00`\xbe"\xf2o?J\xcb\xf7.d\xa7\x16K\x01\x1d\xa2}\xd0\x9e\xff'
(b'j\xe4\x18noV\xfc\x00\x00\x00\x03\x00\x00\x00\x1b\x85,\x85\xbf\xdc'
b"\x16\xae'\xfc#\x00\x00\x00\x05\x00\x00\x00+\x82M.&\x9f71\xb3j\x00\x00"
b'\x00\x04\x00\x00\x00=\xb6b\x08\xa3$3\x82\xdb\xdb\xbb\x00\x00\x00\x05'
b'\x00\x00\x00Nh\xb4M-\xca 0\x05\xff\xf5\x04\xf3\x87\x94\xc9\xcf\x9e\x0e\x1bI'
b'\r!\xbf\xd1\xde\xba\x86\x08`H\x00\x00\x00\x1e\x00\x00\x000\x00\x00'
b'\x00A\x00\x00\x00S')
Результат разбора:
'A1': {'B1': {'C1': 7544740134812397573,
{'C2': 4294247667,
'C3': -8677088688488965303,
'C4': 3361,
'C5': -0.27921927537090996,
'C6': [{'D1': 409890646, 'D2': 252, 'D3': [255, 106, 228]},
'D1': 380512252,
{'D2': 35,
'D3': [133, 44, 133, 191, 220]},
'D1': 2671194547, 'D2': 106, 'D3': [130, 77, 46, 38]},
{'D1': 864213979,
{'D2': 187,
'D3': [182, 98, 8, 163, 36]}]},
'B2': [-0.15912793576717377, 0.792174756526947],
'B3': 11876},
'A2': [-89, 22, 75],
'A3': 1,
'A4': 497188304,
'A5': -98}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x52 0x53 0x4c 0x1d
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | Адрес (uint32) структуры B |
3 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур C |
2 | int8 |
3 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива int16 |
2 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 2 |
2 | uint64 |
3 | uint32 |
4 | Размер (uint16) и адрес (uint16) массива uint32 |
5 | uint16 |
6 | int32 |
7 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'URSL\x1d\xbf\xec\xc9K\xa3Vt\xfc\x00\x00\x00vyUh\xb7\xe9\xcbJa1\xe8W'
(b'\xf4\xa8\xe2\xbc\x00\x03\x00\x12,\x80\x08U\x82\x0b\x9713O\xa2<\x1a3X\xcb'
b'J/\x7fE\x00\x02\x00\x18\xaf\xd3\xa2\xcd\xd7WN\xc6C\xceC\x86\x97\xe6\x83\xa0'
b'E.\x9e\x00\x02\x00C\x0f_\xa0\xb8\xf4\xa3)\xa4n.(\xd5\x80\xb9\x8e\\\xc1'
b'\xec0\xd9\x00\x02\x00Gh\x89t\xbca\xd9\xe4\x00 \x00O\x00\x00\x00\x02\x00r'
b'\x02\x90\x9c')
Результат разбора:
'A1': -0.8995721998395818,
{'A2': {'B1': [{'C1': [21864, -18455, -13494],
'C2': {'D1': [746588245, 2181797681],
'D2': 3697352198115776715,
'D3': 1244626757,
'D4': [1630660695, 4104708796],
'D5': 45011,
'D6': -1563568297,
'D7': 78}},
'C1': [-14781, -12733],
{'C2': {'D1': [257925304, 4104333732],
'D2': 7939328090553552476,
'D3': 3253481689,
'D4': [2258101891, 2688888478],
'D5': 26761,
'D6': 1958502873,
'D7': 228}}],
'B2': 2,
'B3': 37020},
'A3': 121}
Пример 2
Двоичные данные:
b'URSL\x1d\xbf\xe5\x13\xcb\xf0L\xee\x9c\x00\x00\x00v\x8bTvd\x1as0Q\x8bY\xf7'
(b'\xfd\xb4\x8d\xd3\x00\x03\x00\x12\x12Z|\\-r\xecd\x94\xef+\xcf&1\xb1\x1fP!d\n'
b'\x00\x02\x00\x18\xfee\x91\xa0{\xecb_\xe7\xf2jg\xb1\x93.\xa1F\x0b\xcf\x00'
b'\x02\x00C\x85\xf4^\xe4\xba\xd5\x8b2`\x82Im5Y\x86\xa2\x8d\xc1\xe3\xe9\x00'
b'\x02\x00G\x8ea\x8dEa\xb3\x1d\x00 \x00O\x00\x00\x00\x02\x00r\x00\x1b\x8e')
Результат разбора:
'A1': -0.6586665814752055,
{'A2': {'B1': [{'C1': [21622, 25626, 29488],
'C2': {'D1': [307919964, 762506340],
'D2': 10731844605746196767,
'D3': 1344365578,
'D4': [1368087031, 4256468435],
'D5': 65125,
'D6': -1851753492,
'D7': 98}},
'C1': [24551, -3478],
{'C2': {'D1': [2247384804, 3134556978],
'D2': 6954201508008789666,
'D3': 2378294249,
'D4': [1739690798, 2705722319],
'D5': 36449,
'D6': -1924832845,
'D7': 29}}],
'B2': 0,
'B3': 7054},
'A3': 139}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x15 0x43 0x57 0x53 0x48
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int8 |
3 | Массив char, размер 6 |
4 | Размер (uint16) и адрес (uint16) массива структур C |
5 | float |
6 | Адрес (uint16) структуры D |
7 | uint64 |
8 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 6 |
2 | uint32 |
3 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | uint32 |
4 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | uint32 |
4 | Массив uint32, размер 4 |
5 | uint16 |
6 | Массив int16, размер 7 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"\x15CWSHxrqwbj\xcf\xbf\x9b\xfc\x9b'\xef\x01\x92bzpfqu\x02\x00.\x00\xae\xca"
(b'`;P\x00\xb0J\x05\xe9\xbe\xf4\xa3Q\x0e\xb0\x8d\xee\x04\xd8\xbe\x82'
b'\x8d\xfd\x8aYO\xa8\n\x96\xe19{\x88\xf6\x06\xe9<Y\x17F\xb9`\xd1\r%t\x9b\xf76'
b'\\\xef\xdb\xbdY\xe6t\xc3\x81= \xf4\x00\x1b\xf7\xc7\xa9\x00\x16\x91'
b'\x92\x0e\xb07\xff\xd1\xbf\xae\xedH?_\xaeN\x8b9\xc5\xea\xbf\x96'
b'\xf5\xba\xdc\xc3')
Результат разбора:
'A1': {'B1': 'xrqwbj', 'B2': 4238065615, 'B3': 32450459},
{'A2': -110,
'A3': 'bzpfqu',
'A4': [{'C1': 141,
'C2': -0.42191261053085327,
'C3': 2331872642,
'C4': 8879376174877790041},
'C1': 136,
{'C2': 0.02844570204615593,
'C3': 3108378457,
'C4': 3960805320435814752}],
'A5': 0.0034300494007766247,
'A6': {'D1': -0.1073901355266571,
'D2': -1015749031,
'D3': 4095753601,
'D4': [3354860288, 2434138281, 934284946, 2931806719],
'D5': 18669,
'D6': [24383, 20142, 14731, -5435, -26945, -17675, -15396]},
'A7': 5882814639066401456,
'A8': 45070}
Пример 2
Двоичные данные:
b"\x15CWSHyesyxqoUb\x9aZ2\xb1j'dvjamf\x03\x00.\x00\x1c\xf9\x11?a\x00\xd0f9\xb2"
(b'\xf2\xf2\xbei-g\nn\xc3P?\xbd\xcco\xd3\xce\xcc\xbdg0\xd4s\xe7u>\xfai?'
b'\xcc\x1b9n\x85F9\xe8\xf6Zt\xfeqy\xed\x14\xbe\xce\xec \xa0Q\xe3\xdb'
b'\x82\xc6\x08\x14g\xbd\x01\x00\xbf\x800\x08\x92\xbd\t\xd3\xc3\x8c\xe7\xbc'
b'\xee\xb6\xffo\x8f\x9a\xfb=\xdb\x12\x10\xe1\xb9N\xbfa\xf9n\x01\xb2'
b'\xf1\xf2\xff\xe4\xc4\xf5\xbc\xe3^')
Результат разбора:
'A1': {'B1': 'yesyxq', 'B2': 2590135663, 'B3': 1789997658},
{'A2': 39,
'A3': 'dvjamf',
'A4': [{'C1': 10,
'C2': 0.8154820203781128,
'C3': 3547319485,
'C4': 16677907149447089358},
'C1': 117,
{'C2': 0.9139746427536011,
'C3': 1849236428,
'C4': 18335379999436654213},
'C1': 113,
{'C2': -0.14543713629245758,
'C3': 2686512334,
'C4': 7427571334132786001}],
'A5': 0.5702073574066162,
'A6': {'D1': -0.500026524066925,
'D2': -1844957056,
'D3': 3285387709,
'D4': [4005357452, 2406481846, 3678272410, 3118534674],
'D5': 48974,
'D6': [-1695, 366, -3662, -14, -15132, -17163, 24291]},
'A7': 7619794743743571664,
'A8': 26413}