Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x48 0x4c 0x7
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | int32 |
4 | uint16 |
5 | Структура B |
6 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив char, размер 3 |
3 | uint32 |
4 | uint64 |
5 | float |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | double |
3 | int8 |
4 | int64 |
5 | uint16 |
6 | Массив структур D, размер 2 |
7 | Массив uint64, размер 3 |
8 | float |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int8 |
2 | uint32 |
3 | Размер (uint32) и адрес (uint16) массива uint16 |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RHL\x07f\x9f\xb5\xd4Y\x08\xe0\xbf\xe9\x05\xdb\xb0\xf6B{\xa89N\xaf[\x03]qq'
(b'u\xdbZo\xfcc-\xbe\xd3\x8e\xd7\xc6\x83\xe9g\xd5\xbera\r\xb5\xe9z\xe8\xbf@D+'
b'\xbb$\x92\xbc?7D\xc4\x8a\xf3=\xd3\x88\xe0\x7f\xa5\x02\x00\x86\x00'
b'\x00\x00H\xf8m\x1c\x03\x00\x00\x00\x88\x00\xdb\x05\x00\x8e\x00\x00\x00\xe5'
b'\xe3d\xa3\x04\x00\x00\x00\x93\x00\xf9\x12\xd7\x99g<\xf0\x13\x96\xf9\xe0'
b"6\xba\xe4\xc6\x93\xa5\x9f\xf7\xd1w\xf6\xfb\x9c\x9a!``\xbfa\xc0i?jWV\xc2b'"
b'b\xc6\xd9\x18\xca\xc3.T!\x95\xc1')
Результат разбора:
'A1': -0.5010193972093304,
{'A2': -1327823383,
'A3': -1468316938,
'A4': 20025,
'A5': {'B1': 1560501167,
'B2': 'qqu',
'B3': 4235156187,
'B4': 9495513872795053411,
'B5': -0.4168083965778351},
'A6': {'C1': -0.7650040184189904,
'C2': 0.11160497254901802,
'C3': 55,
'C4': -2267330149348621244,
'C5': 42367,
'C6': [{'D1': [97, -64],
'D2': 476969032,
'D3': [16233, 22378, 49750],
'D4': 219},
'D1': [98, 39, 98, -58, -39],
{'D2': 2741298149,
'D3': [51736, 11971, 8532, 49557],
'D4': 249}],
'C7': [10814251272473532178,
11931098523513577721,
11141056614198540191],
'C8': -0.8764668107032776}}
Пример 2
Двоичные данные:
b'RHL\x072k.>\xd1\x98\xee?\xed\x93\x8e\xf7\xb7,\xc3\x01\xaa\xf6\xe2\xe2'
(b'\t\x15srn\xfe\xf6\xfa\xf1}\x02\xe3\xbd\xb3\x0f$;\xfaE\xd3\xbeB)G'
b'\x93\x15\xbc\xe8\xbf\xde[\x95\x9e5o\xeb\xbf\xd6\xfd\xe4\x14\x12\xfc\x8b'
b'\x1d\xa6\x82\xfb\x06\x00\x86\x00\x00\x00G\xab\x04\x11\x03\x00'
b'\x00\x00\x8c\x00\xca\x06\x00\x92\x00\x00\x001\x06\xcb\x8f\x07'
b'\x00\x00\x00\x98\x00\x8a\x1fj@\xa2\xa5kJ<\x1fg\x13\xd9\xceO)b<\x06Mp\x82\\'
b'\x8e\xfb_\x82\xbf\xbe\xc7^\x03cf\xcdq\xc30\x8d\xd8\xc8\xe3\xa4TkJ\xd2'
b'\xb8\xccP\x97\x08@DW\x1bm\x89\x8d?\xf6')
Результат разбора:
'A1': 0.9561544622878044,
{'A2': -141650963,
'A3': 29568183,
'A4': 63146,
'A5': {'B1': 352969442,
'B2': 'srn',
'B3': 4059756286,
'B4': 4261548412058665597,
'B5': -0.4126432538032532},
'A6': {'C1': -0.7729595066569248,
'C2': -0.857325372441547,
'C3': -42,
'C4': -6476866774337526531,
'C5': 64386,
'C6': [{'D1': [-57, 94, 3, 99, 102, -51],
'D2': 285518663,
'D3': [50033, 36144, 51416],
'D4': 202},
'D1': [-29, -92, 84, 107, 74, -46],
{'D2': 2412447281,
'D3': [52408, 38736, 16392, 22340, 27931, 36233, 63039],
'D4': 138}],
'C7': [4344403149688171039, 7073272439585859359, 18126527265512425020],
'C8': -0.37404152750968933}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x47 0x50 0x52 0xae
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int8 |
3 | double |
4 | int8 |
5 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | uint64 |
4 | Массив char, размер 3 |
5 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур C |
6 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint8 |
2 | Размер (uint32) и адрес (uint32) массива int16 |
3 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AGPR\xaei\x00U\x82\x1c\x1b\xc3L\xa4\xe2\xbf\xfe\x02\x00\x87\x00\x03\x00\x00'
(b'\x00\x89\x00\x00\x00PE\x18^4\xd2\x8c8N\xf3\xec\xf1n\xf8\xa0\x8b\x10IB'
b'#\xb3\xf0B4\xab\xa1\x87\xb11\xe9\xf2\xbcHS\xd0`\xdd\xeb[ \xee\t\xf7'
b'\xfb\x06\x0c~\xb9<tR\xf7\x00\xdf\xa54\x13\xdb\xa17Ni\x06j!\x00+\x005\x00?'
b'\x00I\x00S\x00\x02\x93\x1c\xb61l\xed?<uj\xf2A\t~}ssil\x06\x00]\x00\x00\x00-'
b'\x0c\x01+[p\xd7\xadwNI\xfa')
Результат разбора:
'A1': {'B1': 0.9194572979800741,
{'B2': 60,
'B3': 8321946264676756085,
'B4': 'sil',
'B5': [{'C1': -11724, 'C2': -545232504868685684},
'C1': -29792, 'C2': 3765836890616514832},
{'C1': -24149, 'C2': 6001254254951641479},
{'C1': 24784, 'C2': -290752732592346147},
{'C1': 3078, 'C2': -2377628669742106242},
{'C1': 13477, 'C2': 7639909602542344979}],
{'B6': 721488941},
'A2': 85,
'A3': -0.5825561342870886,
'A4': -2,
'A5': {'D1': [91, 112], 'D2': [-21033, 20087, -1463], 'D3': 1578648912}}
Пример 2
Двоичные данные:
b"AGPR\xaeQ\x00o\xf0'>,jT\xcc\xbf2\x04\x00o\x00\x03\x00\x00\x00s\x00\x00"
(b'\x00|\xc4\xa9\xf2d{{\xae\x1a\xc83\xf4E\x02\xb1\x10\xc7\x8a\x02\xbd\xd6b\x04'
b'\x9fg3W\x1d\xd1\x8f\xcc\x8f"|;\x07M`\xd7!DD\xdfF!\x00+\x005\x00?'
b'\x00 \xf6\xd1\xd0\x17\x1c\xa4?\xdc\x8d\x0f\xbf\xe74J\x9e\xcelum\x04\x00I'
b'\x00\x00\x00\n\x8cw\xde\x96T(\x02`\x97\x8dr\xbe\xed')
Результат разбора:
'A1': {'B1': 0.03927683281015626,
{'B2': -36,
'B3': 14888419009220251533,
'B4': 'lum',
'B5': [{'C1': 31588, 'C2': 163805464706592379},
'C1': 4273, 'C2': -6988352047338583353},
{'C1': 13159, 'C2': 8944869918660173143},
{'C1': 1851, 'C2': 5106875561877659725}],
{'B6': 3732376586},
'A2': 111,
'A3': -0.22132613334935014,
'A4': 50,
'A5': {'D1': [150, 84, 40, 2], 'D2': [-26784, 29325, -4674], 'D3': -223755140}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x4c 0x43 0x47
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | int8 |
3 | int8 |
4 | uint16 |
5 | Адрес (uint32) структуры B |
6 | Адрес (uint32) структуры D |
7 | Массив int32, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
3 | int16 |
4 | int8 |
5 | float |
6 | float |
7 | uint8 |
8 | Массив структур C, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | int16 |
3 | int64 |
4 | Массив uint16, размер 8 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
3 | int8 |
4 | double |
5 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GLCG\x00\x00\x00\x02\x00\x00\x00 \xf8\xef\x1a\x87\x00\x00\x00"\x00\x00\x00x'
(b'\xb4.\xfa\x13\xb2{\xa6\xafti\x19\xb7?\x14\xa5.\x98\xbb\xca>Z\xcb\xa5?'
b'>\xab\xa2\x04\x13F\xf7\x9f\xd2\x9en\xc1UA=C\xe1Dj\x1b\xa1o\xb4\xbc'
b'\xc0\x83z\xec\x00\xa1V\x04\xdd\x0e\xc0<\x7f\xe9l`Jj\rx&C\xe5U76\x92\xe0'
b"\xcd\x93\x08'{\xafJJ\x9cg\x13\xe1\xa3$~\x9b\x94\x87\xa33?\xcd\xe2\x8b"
b'\xac\xcd\x02P\x1cFY\x96\xf4?\xdb\xc7cY~z\xd8\xe6\x90')
Результат разбора:
'A1': 'ti',
{'A2': -8,
'A3': -17,
'A4': 6791,
'A5': {'B1': 431439636,
'B2': -23250,
'B3': -26437,
'B4': -54,
'B5': 0.21366746723651886,
'B6': 0.7448064088821411,
'B7': 4,
'B8': [{'C1': 1389069800895835841,
'C2': 21825,
'C3': 4414619743707439471,
'C4': [46268, 49283, 31468, 161, 22020, 56590, 49212, 32745]},
'C1': 7809323573213406787,
{'C2': -6827,
'C3': 3978528815047706663,
'C4': [31663,
19018,
40039,
5089,
41764,
32411,
38023,
41779]}]},
'A6': {'D1': 0.23347612321414823,
'D2': 474372502,
'D3': -12,
'D4': 0.43404468288092124,
'D5': -6512},
'A7': [-1271989741, -1300519249]}
Пример 2
Двоичные данные:
b'GLCG\x00\x00\x00\x05\x00\x00\x00 \xd5?r\xa8\x00\x00\x00%\x00\x00\x00{'
(b'\xe7\x8d\xdb\xb2\xe6\x9b\xfa\xabaezxw\xf0p\xdfW\xa2\xea\xc4\x98\x84\xbfH'
b'\xffx\xbf[\xecM,\xbd2\xd9\x9f\x82\x13S%\xb3\x1a\xed\xe7\x00\xf24\xf4G\x1c-p:'
b"\x89\xd2`?t\xb5\xe3=k\xd1\x9c\xdd\xfa'\xd55\xb9\xcaG,(\xd4\xe0X \x9d\xab\xc2"
b'\x9b\xed^\x16q%\xf9\x97~\x1e\xfdB5\x15\xea\x0f\xc1s\xab?\xee\xc19\xc8'
b'\x8c|(\x83\xfd\x01\xb8?\xbf\xec2\xab\x03HR\xeeg\xd1')
Результат разбора:
'A1': 'aezxw',
{'A2': -43,
'A3': 63,
'A4': 29352,
'A5': {'B1': -261038249,
'B2': -23830,
'B3': -15208,
'B4': -124,
'B5': -0.7851481437683105,
'B6': -0.8590744137763977,
'B7': 44,
'B8': [{'C1': -4813545772600306907,
'C2': -19686,
'C3': -1304072526829959396,
'C4': [11632, 14985, 53856, 16244, 46563, 15723, 53660, 56826]},
'C1': 2870259409597443112,
{'C2': -11040,
'C3': 6350248835622366558,
'C4': [5745, 9721, 38782, 7933, 16949, 5610, 4033, 29611]}]},
'A6': {'D1': 0.9610871235817102,
'D2': 2214396344,
'D3': 63,
'D4': -0.8811850608932141,
'D5': 26577},
'A7': [-410133582, -425985365]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x52 0x57 0x48 0x4c
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Структура B |
3 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Адрес (uint32) структуры C |
3 | int32 |
4 | float |
Структура C:
Поле | Описание |
---|---|
1 | Массив структур D, размер 3 |
2 | Структура E |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
3 | int8 |
4 | uint16 |
5 | int16 |
6 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
3 | int64 |
4 | Массив uint8, размер 3 |
5 | Массив int16, размер 3 |
6 | Массив uint8, размер 7 |
7 | Массив uint32, размер 7 |
8 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MRWHL\xef\x86\xc3>#\xb2Y?\x1d\x00\x00\x00\xbf%\xd6\x85\x0e\xb2-\xbf\xf3\xf7T'
(b'y=\xabzy\x01\x86\x9b\x1a\xca\x9b\x8d\x0bM\xd6`\x96&~\x01\xc3\xe6N\xe6'
b'\xc0\x1b\x8a=\x08\xa0b\x08e\xb0\x13\xeb\xb3\xd691D\x90\xee\xe3Sk\x89\xad'
b"\x13\xbfd\xa8\xda\xe2\x97W\xf5\\\r9'zfAJ\xd2JFh \xd1\xc7\x83\x90\x00\xb5"
b'\xa5\x1d@\x97\xd0\x91\x9a\x9aA\x9d\x02\xfd\xac\xa1\xfen@[\xed\x1a'
b"\xf4\x84b\xe5\xda\xe3\xf6^\xba'\x00\xd5\xa7\xbd\xc0\xa0")
Результат разбора:
'A1': 0.38188883662223816,
{'A2': {'B1': 0.8503744006156921,
'B2': {'C1': [{'D1': 43837,
'D2': -2046723718,
'D3': -101,
'D4': 51738,
'D5': -29285,
'D6': 1624657163},
'D1': 9878,
{'D2': -423427714,
'D3': 78,
'D4': 49382,
'D5': -30181,
'D6': 1654655037},
'D1': 25864,
{'D2': -1276439632,
'D3': -42,
'D4': 12601,
'D5': -28604,
'D6': 1800659950}],
'C2': {'E1': -0.5768666863441467,
'E2': 6698356330641139812,
'E3': -3293748269076236019,
'E4': [74, 70, 104],
'E5': [-12000, -31801, 144],
'E6': [181, 165, 29, 64, 151, 208, 145],
'E7': [2638322330,
2712468738,
1530949374,
2230590189,
3822773602,
666525430,
3181892864],
'E8': -24384}},
'B3': -2049563201,
'B4': -0.6784981489181519},
'A3': 2035611635}
Пример 2
Двоичные данные:
b'MRWHL\xceOA>\x80\xd4\xba=\x1d\x00\x00\x00\xb7[\xca\x05%\xaa\x12'
(b"\xbe\xa8\xb7\xefb\xf5'\x9f\x00\xec\xae\x03&\xd4\x0f\xe4\xf9\xf2\xb8\x80"
b"\x13\x1f'\xcf\xca\x81\xccY\xdd\x99\x1eE\xaf\xad\x9c\xae\x03.9\xeexq\xf5\xe7"
b'\x92Ra\x89Db\x86\xdf\xd2\xbe\xfc\xb4\xb0\xbc\x8c\xb9\xf6\x89\x98;'
b'\x8e\xa4\x0f\xa0Q\xe1\xf1 \xb3\x8e\xb2\xa5My\xda\x03Mg\xdf\xfdj\xe56O'
b"\xcb\xdf\xb0u\xc4\\'\x18\xe5\xdf\x8c\x04\xc1WW\xe1D~\xe4u\xb8S\xea\xd1"
b'sP\x9ej')
Результат разбора:
'A1': 0.1887809932231903,
{'A2': {'B1': 0.09122562408447266,
'B2': {'C1': [{'D1': 10229,
'D2': -1360265057,
'D3': 3,
'D4': 54310,
'D5': -7153,
'D6': 2159604473},
'D1': 7955,
{'D2': -2117415129,
'D3': -52,
'D4': 56665,
'D5': 7833,
'D6': 2628628293},
'D1': 942,
{'D2': 2028878126,
'D3': 113,
'D4': 59381,
'D5': 21138,
'D6': 1648658785}],
'C2': {'E1': -0.4118615984916687,
'E2': 9941337241579205884,
'E3': -2210809953016464488,
'E4': [241, 32, 179],
'E5': [-19826, 19877, -9607],
'E6': [3, 77, 103, 223, 253, 106, 229],
'E7': [3754643254,
1556379056,
3756333095,
1472267404,
2118443351,
1404597732,
1349767658],
'E8': 27294}},
'B3': 97147831,
'B4': -0.14322717487812042},
'A3': 1659877288}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x49 0x4b
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Структура B |
3 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | float |
3 | Размер (uint16) и адрес (uint16) массива структур E |
4 | Размер (uint32) и адрес (uint16) массива int32 |
5 | int8 |
6 | uint8 |
7 | uint8 |
8 | Структура F |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | uint64 |
3 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
3 | int8 |
4 | Размер (uint32) и адрес (uint16) массива float |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | int16 |
3 | uint32 |
4 | float |
5 | double |
6 | int64 |
7 | uint32 |
Структура F:
Поле | Описание |
---|---|
1 | Массив float, размер 3 |
2 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZIK\x98\x95<e\xb9\xf3)\x1aj\xbf\x95\x03\x00\x00\x00?\x00\xee\xf1m\x00'
(b'1\xd9\xb7$x\xd3\xd4K\xc5>\x02\x00K\x00\x02\x00\x00\x00\x97\x00\x9e\xe4\x91l'
b'\x11\x03\xbfa"\xdd\xbey\xfdQ>Z"\x80k\x14\xde\xb0>~\t}=\xb4g\xf8\xbe\xe4'
b"D8\xe4)\x87_\xee\xc6cM\x179F\xcd\xff,?8\xb6'\xc3@F\xd4?\x98\x9a\xa5"
b'0\xcc\xceK\xa9L\x896\xcc\x14\xfbb\xbf\x87\x0b\x00eI\xf8n\xbf\xdf\xcc\xcf'
b'\xfem\xbf\x8c\xd6\xf1\x16\x8d\xec\xd1\xbf,\xc5\xb7R\xe7\x04\xbf\xf1\x15'
b'G\xf3\x17\x81\xef\xaa\x17#\\\x138')
Результат разбора:
'A1': 38296,
{'A2': {'B1': {'C1': {'D1': -205953732,
'D2': -0.9144616723060608,
'D3': -107,
'D4': [0.34544432163238525,
0.06177663058042526,
-0.48516619205474854]},
'C2': 2645822110587285998,
'C3': 54136},
'B2': 0.38534414768218994,
'B3': [{'E1': -1270147955902888732,
'E2': 25542,
'E3': 1178146637,
'E4': 0.6757782101631165,
'E5': 0.3167879014789352,
'E6': -6247672681661621608,
'E7': 3426126156},
'E1': 7277829675490147092,
{'E2': -1975,
'E3': 3437215598,
'E4': -0.9296693205833435,
'E5': -0.28006293526355175,
'E6': -1027096798445451988,
'E7': 401819413}],
'B4': [397078401, 940792867],
'B5': -98,
'B6': 228,
'B7': 145,
'B8': {'F1': [-0.5119845867156982,
-0.4319029152393341,
0.20506848394870758],
'F2': 8794}},
'A3': 27520}
Пример 2
Двоичные данные:
b'ZIK\x8c\x96\x18\x86\xe5D\x96$\x94\xbe-\x02\x00\x00\x00?\x00\xba\xe4:&'
(b'l\xea\xe2~\x0c=|6u?\x02\x00G\x00\x04\x00\x00\x00\x93\x00\x01\x1a\xea\xc7'
b'\xb6\x05\xbf[|\xe0\xbe\xae\x1f\xa2<\xfa.w\xc5@a\x88\xbeQ\x07!\xbe\x84'
b"\x01\xce\xbd\n\xfb'+V\xd8z\xb2\xdf\x85\xd2ia?\xa0\xab\x0b\xed\x99\x82\xb0"
b'?R\xb4P\xe2\x1b~\xb6\x94\x92\xc0&<\\\xeeym\xa3\x9a\xce\xca\x0f\xf0\x97'
b'\xe0\x80\xab\xc9\xdb\x05\xbf\xd8\xd8\xbb\xccew\xd8?\xdf\xd5\x80g\xbfI\x15ZK'
b'b\xb1s\xae\x8a\x14\xf1\x8d\x0e\x7f\xaf\xfeg"\xc7s]~`')
Результат разбора:
'A1': 38540,
{'A2': {'B1': {'C1': {'D1': 1155892760,
'D2': -0.28934162855148315,
'D3': 45,
'D4': [-0.26636695861816406, -0.15725447237491608]},
'C2': 9143127943734289594,
'C3': 15628},
'B2': 0.9578626155853271,
'B3': [{'E1': 3109730091275256196,
'E2': -10154,
'E3': 2246029946,
'E4': 0.8805209398269653,
'E5': 0.06449281728025236,
'E6': -7730853052108721070,
'E7': 1009172626},
'E1': -3832956206138659236,
{'E2': -4081,
'E3': 2877350039,
'E4': -0.5228849053382874,
'E5': 0.38228745454342805,
'E6': 6491175524348515807,
'E7': 1941004875}],
'B4': [-250312018, -1350627699, -954046466, 1618894195],
'B5': 1,
'B6': 26,
'B7': 234,
'B8': {'F1': [-0.5223202109336853,
-0.4384487569332123,
0.019790496677160263],
'F2': 12026}},
'A3': 50551}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x53 0x49
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Адрес (uint16) структуры B |
3 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | uint32 |
3 | Структура C |
4 | uint8 |
5 | int16 |
6 | Адрес (uint32) структуры E |
7 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур D |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int64 |
3 | float |
4 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | Адрес (uint16) структуры F |
3 | Размер (uint16) и адрес (uint16) массива int8 |
4 | Размер (uint32) и адрес (uint16) массива uint32 |
5 | double |
6 | float |
7 | uint16 |
Структура F:
Поле | Описание |
---|---|
1 | int16 |
2 | int64 |
3 | int16 |
4 | int8 |
5 | uint32 |
6 | int32 |
7 | Размер (uint16) и адрес (uint32) массива int16 |
8 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZSIY\xfd\x1c?\x94\x00\x87\x95\xcceG\xcaq\xa7\x84\x1c\xd6^t\xca\x7f=\x93Z\x19'
(b'Jo\xf1\xf0r\xf0\xf0\x84Y\xa8Qf\xeb\xfe\xbeU\x02\xb9\xe3\x0b\x00\x00\x00\x1d'
b'\x00\x00\x00\xdbyE\xa8\xfd\x8b\xfd\xfd5\xf6\x7f\xf5\x9d\xcc8]o\xa0\xcd4\xc8'
b'\x10<\xd8\xcc\x9d\x92\x03\x007\x00\x00\x00\xf0wj\x02@\xc7\xb0?\x127+\xd5'
b'-\xd8\xa3\x92z\x0bK\xe9/Ji\xf7\x93\xd60\xactH\xccK\xc5\xbf=\x00\x02\x00`\x00'
b'\x04\x00\x00\x00b\x00*\xbb1\xae\x06\t\xe4\xbf\xd9\x9f\xd2\xbe\xae4\xa2l\xe0S'
b':<\xf2P\xcd5\xeb0\xb2/+\xc3\xeeC\xe3\xbf\x02\x00/\x00\xee\x12Wr'
b'\x00\x00\x00\xa9')
Результат разбора:
'A1': 0.6132407784461975,
{'A2': {'B1': 5832790688611200162,
'B2': 820721101,
'B3': {'C1': -0.6020425617111782,
'C2': [{'D1': 26060,
'D2': 6833680840651819591,
'D3': 0.062448933720588684,
'D4': 1243175571},
'D1': 61807,
{'D2': 5884051340672398064,
'D3': -0.4978896975517273,
'D4': 3820552789}]},
'B4': 238,
'B5': 22290,
'B6': {'E1': -0.16637567079428228,
'E2': {'F1': -515,
'F2': 6717343823023830581,
'F3': -24465,
'F4': -51,
'F5': 1007732788,
'F6': -1835152168,
'F7': [31195, -22459, -29699],
'F8': 0.06554031428319695},
'E3': [18, 55],
'E4': [3626882347, 192582307, 1244653899, 3600021353],
'E5': -0.6261018182975466,
'E6': -0.4113757908344269,
'E7': 13486},
'B7': 169},
'A3': -27257}
Пример 2
Двоичные данные:
b'ZSI8L\x11?\x92\x00\xea\xb7\xff\x96qid\xff\x13$\xc1\xbaN\xad-\xbf\xdfdg'
(b'<+[\xe84gD\xa3\x88\xe3\xa4\x82\x8a\x0b?\xfb?\xac\xe4\x0b\x00\x00\x00\x1d'
b'\x00\x00\x00E\xe4\x96\xaa~2D\x92\xc5M\xbbF\xc3\xc9\r\xc8gSQ\x0b\x8b'
b'\xbf\x0b\xa6\x88\x02\x007\x00\x00\x00\x08\xce\x1c\xd7\xd5\xd4\xda?o\xbc'
b'\xfd\xe3(>\xab\xd5V\xbd\x95Lq\xcb[\xcf\x14\x05\xb6=\xa6\x8e\xd2\xc7\xeb?'
b';\x00\x02\x00^\x00\x04\x00\x00\x00`\x00\x90\xbd\xfa \xc47\xb5\xbf'
b"\x15\xf59\xbe\xeb\xc7\xcc\x8bl\xdeC\x80@\x9c'qAi\x00\x81%\xd4n\t"
b'\xe5\xbf\x02\x00/\x00\x03[;p\x00\x00\x00T')
Результат разбора:
'A1': 0.5675692558288574,
{'A2': {'B1': -7187603976300491828,
'B2': 1765896487,
'B3': {'C1': -0.6574014800535508,
'C2': [{'D1': 38655,
'D2': -4989667243842049679,
'D3': -0.678425669670105,
'D4': 1013408991},
'D1': 23339,
{'D2': -6565253596967389976,
'D3': 0.5450822114944458,
'D4': 3836493819}]},
'B4': 3,
'B5': 15195,
'B6': {'E1': 0.8681423936958967,
'E2': {'F1': 12926,
'F2': -3908202281349836220,
'F3': -14323,
'F4': 103,
'F5': 2332774739,
'F6': -2002383937,
'F7': [-7099, -21866],
'F8': 0.41924043662149346},
'E3': [111, -68],
'E4': [1042867197, 3176584619, 3413200021, 85249883],
'E5': -0.08288217358744121,
'E6': -0.1815989762544632,
'E7': 51179},
'B7': 84},
'A3': -18454}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x58 0x55 0x47
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
3 | Адрес (uint16) структуры B |
4 | double |
5 | Адрес (uint32) структуры D |
6 | uint8 |
7 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Массив float, размер 3 |
2 | uint16 |
3 | uint32 |
4 | uint16 |
5 | uint32 |
6 | Массив int16, размер 7 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
3 | uint64 |
4 | uint8 |
5 | Размер (uint16) и адрес (uint16) массива int32 |
6 | uint8 |
7 | uint8 |
8 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CXUG\x8a\xc1\xcb\xa4\xbf\x0f\x88\xf2\x00\x1f?\xbe\x81w\xd6?\x880\x00\x00'
(b'\x00\x853\xbe\xd5\xba\xce\xbe\x93,\x86\xbfu\xeb\x1b\xbfM\xe4>\x1c'
b'5\x9a\xa6\xacPnU+rw\x14\xd4U\xcf\x80w\x11\xaf&q,\xedH\xe0\x00\xbf>M'
b'H\xbfv\xb41\xbe\xed\x89\xab\xc3D\xddLD\xb5!O\x1a\xe7\xb2y\xd6?\x12Rlm\x8a'
b'\xffX5\xd5.\xde\xfd\xdd\xae\xa0\x8d\x99\xda\xe6\x95\x87t@\xcbR\x14d-\x83'
b'\x1c\x9c\xde\x181\x0b\x10\xed\xa3>\x8dh\xf3\xcc\x0cV$F\x93\xae\x9a\xdd0\xb1'
b'\x00\x06\x00m\x01n\xbf<;\x18')
Результат разбора:
'A1': -1967010908,
{'A2': -0.5606833696365356,
'A3': {'B1': [{'C1': [-0.28744906187057495,
-0.9606186747550964,
-0.8042639493942261],
'C2': 7221,
'C3': 2594614352,
'C4': 28245,
'C5': 728921876,
'C6': [-11179, -12416, 30481, -20698, 28972, -4792, -8192]},
'C1': [-0.7433667182922363,
{-0.963687002658844,
-0.46394094824790955],
'C2': 49988,
'C3': 3712763061,
'C4': 8527,
'C5': 451392121,
'C6': [-10689, 4690, 27757, -29953, 22581, -10962, -8451]}],
'B2': 56750},
'A4': 0.11916302662533051,
'A5': {'D1': 0.2761913239955902,
'D2': 52236,
'D3': 6207163786526907696,
'D4': 177,
'D5': [-1601332774,
-426408076,
1087066644,
1680704284,
-1663166415,
185658787],
'D6': 1,
'D7': 110,
'D8': -0.7352766990661621},
'A6': 51,
'A7': 3201678030}
Пример 2
Двоичные данные:
b'CXUG\x98R^\xab\xbd\xb6\xb8\xdc\x00\x1f\xbf\xe0K\x9d\xc8\xd9\xb9\x9c\x00\x00'
(b'\x00uL\xa4\xb4^e\xbd\x80\xfc!>#\x81\xb4?ki\xa7$\x97\x0b+\x8e\x19\x14\xd2}'
b'"\x0f<\xb1C\xabq\xe5\xe7\xe2\xf6\x1cSs\xf7\x17\xcd\xbdq\x86\xe6?;[Y>6\x82'
b'\xc3G\x8e\xb49\x02\x8c\xad\xd9\r\xe8h\x98\n\xc7\xf9\xe34\xae\xce9;u\xdb'
b"\xd7\x1a\x0b\x9e\x92\x11\x00J\xf5\x9a,'\xb6?\x1diHg\xa6@\x83\x1bZ}"
b'\xe3\x19\xd2S\x00\x02\x00m\x08%\xbd\x14"\xc0')
Результат разбора:
'A1': -1739432277,
{'A2': -0.08921977877616882,
'A3': {'B1': [{'C1': [-0.06298089772462845,
0.15967446565628052,
0.91958087682724],
'C2': 9367,
'C3': 187403801,
'C4': 5330,
'C5': 2099384124,
'C6': [-20157, -21647, -6681, -7434, 7251, 29687, 6093]},
'C1': [-0.058966539800167084,
{0.7318626046180725,
0.17823319137096405],
'C2': 18318,
'C3': 3023635084,
'C4': 44505,
'C5': 233334936,
'C6': [2759, -1565, 13486, -12743, 15221, -9257, 6667]}],
'B2': 40594},
'A4': -0.5092305109845259,
'A5': {'D1': 0.6148877143859863,
'D2': 26534,
'D3': 4648589315849525714,
'D4': 83,
'D5': [285231861, -1708382282],
'D6': 8,
'D7': 37,
'D8': -0.03616595268249512},
'A6': 76,
'A7': 2763284069}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x58 0x55 0x42 0x57
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | Массив адресов (uint32) структур B, размер 3 |
3 | uint8 |
4 | float |
5 | uint64 |
6 | Структура C |
7 | Массив uint64, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | double |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур D |
2 | uint64 |
3 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива uint8 |
2 | uint64 |
3 | int8 |
4 | uint8 |
5 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DXUBW\x96\xc1,\xc6\xdf0\xe4\xbfR\x00\x00\x00\\\x00\x00\x00f\x00\x00'
(b'\x00b7\x88l?\xc7|,m2\x17\xc5\xe6\x02\x00\x00\x00\x9c\x00\x00\x00\xd5\t'
b'\xd9\xac\x87\x1e\xb4G\xdc\xaa\xc8\xaeH\x91\xbdJ\x00r\xc6N\x7f\xc9'
b'\xdc\x0b\xcf\xdd\xfc3G97[\x08\x9e\x9d\xf2\t\x03\x9a\x88\xa8_\x0c\x11\xe5\xbf'
b'\xb1W\xb8\xceM\x1e\x17\x8d\xee\xbfpQvF;\xb1t\xd2\xeb?\x89\xbf\x02\x00'
b'\x00\x00p\x00\x00\x00E\x16\xf9\xc7\xf2\xe1\xde\xcb\x16T\xf7m\x84s'
b'\x02\x00\x00\x00\x86\x00\x00\x00|\xed\xec\xb0w2X9\xd6\xa0\x0c\xa4'
b'r\x00\x88\x00')
Результат разбора:
'A1': -0.630966078815663,
{'A2': [{'B1': 777, 'B2': -0.6583310955359309},
'B1': 22449, 'B2': -0.9547229377626172},
{'B1': 20848, 'B2': 0.8694404088548271}],
{'A3': 98,
'A4': 0.9239534735679626,
'A5': 16628722704482860231,
'A6': {'C1': [{'D1': [137, 191],
'D2': 14690427467382462021,
'D3': 22,
'D4': 84,
'D5': 28151},
'D1': [132, 115],
{'D2': 4132108147763244412,
'D3': -42,
'D4': 160,
'D5': -23540}],
'C2': 5166788240570124757,
'C3': -1362580772},
'A7': [5676349725926592840, 3746112871392397695, 17482303087249406279]}
Пример 2
Двоичные данные:
b'DXUBW0nP\x15\x16\x90\xd7\xbfR\x00\x00\x00\\\x00\x00\x00f\x00\x00'
(b'\x00\xeb\xe1\x9fX\xbf\xb0\xcd\x96\x81\xb5\x83@#\x02\x00\x00\x00\x9c\x00'
b'\x00\x00Jhd\xd2\xfa\xfc\x97v.\x84\xd9\xe9}\x81\x91w\xb3\x99\xe2\x07)\xa7'
b'2}\\Y\xe1\t\xf0\\\xe2\xaf(\xc8ad\x89\xef\xc8\n\xca}\xf7\xf4\xdd?jS,u'
b'X\x1f\x87I\xe4?\xf2\xf5\xfe\xac\x17\x0c\x93\xd5\xe4\xbf\xcf\x89\x02\x00'
b'\x00\x00p\x00\x00\x00\xa4\xff\x95s\xe8-\xe1\xf4k\xa083\xb5\xab'
b'\x02\x00\x00\x00\x86\x00\x00\x00\x1c*\xf3\xc1\x04u0m\xe6t\x07\xde'
b'r\x00\x88\x00')
Результат разбора:
'A1': -0.36816932755911846,
{'A2': [{'B1': -4215, 'B2': 0.46807658466438484},
'B1': 21354, 'B2': 0.6339755642144715},
{'B1': -2574, 'B2': -0.6510710941487614}],
{'A3': 235,
'A4': -0.846189558506012,
'A5': 2540175005423422896,
'A6': {'C1': [{'D1': [207, 137],
'D2': 17645435291409186724,
'D3': 107,
'D4': 160,
'D5': 13112},
'D1': [181, 171],
{'D2': 7867917212310514204,
'D3': -26,
'D4': 116,
'D5': -8697}],
'C2': 8545576972160624714,
'C3': -371620818},
'A7': [568185499086324093, 711948469873583913, 7233282553608822000]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x86 0x4d 0x57 0x54
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | uint8 |
3 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур B |
4 | Размер (uint16) и адрес (uint16) массива char |
5 | Адрес (uint16) структуры C |
6 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
3 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int64, размер 2 |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint16) и адрес (uint32) массива float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x86MWT\x00\x04\x00\x17#\x00\x02\x003\x00\x03\x00;\x00>\x00\x00\x00Zynii}'
(b'z\xee\xca\x96N\xd4ZF\x9f\x97q\xe0\xab\rQc!\x93\xd6k\xa2\xca\xf1\x00'
b"\x00\x00\x1b\x00\x00\x00'xeuf.\x871\xaa\xb3c\xbd\xd4\xd7T\x8c\x96\x95"
b'\xf3\x89\xbe\xa56\xc5\xbfL\xbb\xe1?\x13\xffL1e\xdf\xdb\x04\x91b\xaa\x00\x02'
b'\x00\x00\x00R')
Результат разбора:
'A1': 'ynii',
{'A2': 35,
'A3': [{'B1': 32122, 'B2': 17206730591636702879, 'B3': 38769},
'B1': -8021, 'B2': 959657191471999906, 'B3': 51953}],
{'A4': 'xeu',
'A5': {'C1': [7362971088184370109, -3109924054877473911], 'C2': 3198498501},
'A6': {'D1': 3559497212273713834,
'D2': [-0.799741804599762, 0.5781142711639404]}}
Пример 2
Двоичные данные:
b'\x86MWT\x00\x04\x00\x17\xbd\x00\x02\x003\x00\x02\x00;\x00=\x00\x00\x00av'
(b'ifl\xaf\xed\xd4\x93\xb3\x00\xda\x1e<6\xa8\x081T\x02y\xb8$czH\x0b\x96X\x00'
b"\x00\x00\x1b\x00\x00\x00'qrK\x8c\x891\xf2\xe3\xad!\xb9r#6\x1f\xc9S"
b'\xf2\xf5\xa1\xec\xd4<\xf3\xc3\xf9\xbfw2\xe9\xbf-Y}>J\x90X\x89\xb0q\x95\x0b&P'
b'\xc0\x00\x04\x00\x00\x00Q')
Результат разбора:
'A1': 'vifl',
{'A2': 189,
'A3': [{'B1': -20499, 'B2': 15317783573857975350, 'B3': 43016},
'B1': 12628, 'B2': 178376126685136907, 'B3': 38488}],
{'A4': 'qr',
'A5': {'C1': [5443876897205497121, -5083962313979374606], 'C2': 4121029844},
'A6': {'D1': -8525189209661222720,
'D2': [0.029756532981991768,
-0.9656205773353577,
-0.6771467328071594,
0.19781625270843506]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x51 0x43 0xe7
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | int16 |
4 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур B |
5 | uint8 |
6 | Размер (uint32) и адрес (uint16) массива int32 |
7 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | Размер (uint16) и адрес (uint16) массива int16 |
3 | Структура D |
4 | uint8 |
5 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint32 |
3 | uint64 |
4 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | uint8 |
4 | float |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LQC\xe7\xea\x14#\xcd\x03\x00\x1f\x00t\x84\x03\x00\xb6\x00\x00\x00'
(b'\x15\x03\x00\x00\x00\xbc\x00\xef\x0e\xe6@pir\x18\xbc0<\xd0\x1b\x87J;A'
b'\xa7\x85_\xc4\xac\x942Q\xce\xf6x\x83LY\xc0\xd7N"\x00\x00\x00\x05\x003'
b"\x00\xf3\x19\xc2\x03(\x1f6\xd0\xbfs\xbf\x85p'\xf2\n\xac9\x8b\xa9\\\xa4`"
b'a\xff/\xcfV/\xb9\xdb\x8e"6\xc3\xa5.\xbd\x84\xbcT\x00\x00\x00\x04\x00e'
b'\x00w\x00m\xa6?=\x16\x96\x1b\x81\xbd\x9d\x0f\xc7\xc3V{\xba_\xe4\x05>\x13'
b'\x90bu9\xbd\xe17\x95PNn\t,\xb0\xa5\xa1\x99\x8b\xf2\x84\x00\x00\x00\x05'
b'\x00\x95\x00\x81\xa5\xd5rQ\x07f\x81\xec\xe49\xbe\xa1\xee =\x00m\x00\x9f\x00'
b'\xb2\x9f\xc4\xa6\x971\xfeb\x1a\xf7H\xe6')
Результат разбора:
'A1': 3441628394,
{'A2': 'pir',
'A3': -31628,
'A4': [{'B1': {'C1': 24,
'C2': 3493605564,
'C3': 6883091504115123995,
'C4': 848604356},
'B2': [-12719, 30966, 19587, -16295, 20183],
'B3': {'D1': 63052275,
'D2': 7976,
'D3': 54,
'D4': -0.9521455764770508,
'D5': -123},
'B4': 112,
'B5': -3545},
'B1': {'C1': 10,
{'C2': 2844473772,
'C3': 6255271181337797724,
'C4': 2396764463},
'B2': [13858, -23101, -17106, -17276],
'B3': {'D1': 2792161399,
'D2': 15679,
'D3': 22,
'D4': -0.06304089725017548,
'D5': -99},
'B4': 15,
'B5': -15417},
'B1': {'C1': 86,
{'C2': 3831478907,
'C3': 13635058413025312261,
'C4': 1351956449},
'B2': [28238, 11273, -23120, -26207, -3445],
'B3': {'D1': 1926604161,
'D2': 1873,
'D3': 102,
'D4': 0.00043663757969625294,
'D5': -66},
'B4': 161,
'B5': 8430}],
'A5': 21,
'A6': [-1497063502, 1660826007, -431425766],
'A7': 1088818927}
Пример 2
Двоичные данные:
b'LQC\xe7\x18]\x012\x05\x00\x1f\x00J\xaf\x03\x00\xb0\x00\x00\x003\x03\x00\x00'
(b'\x00\xb6\x00\x15t\x8a\xf4nrotr\x82\xf8\xc9\x94zh\xbd]\xb1\xd9 \xa1t\xbeF\xf5'
b'G\xdc\x19\x12:\x0eQ\x9b\xb7\x05\xe8$\x00\x00\x00\x05\x005\x00\x94\xb10#\xce'
b'=\xdf\x8df\xa4\xbe\xf1}O)\x92\xeb\xc1\xf5\x06E\xce5\x99}wBa\x98\xd8aZ\xd0'
b'\xfd\xe7\xbe\xa3cV\x00\x00\x00\x03\x00g\x00\x16\xe2^o\xa3&\x07'
b'\x0f\xd7\xce\xbe4p\xa4\x97L>\xea"\x8c\xfc\x86A\xcd\x01\xae\x01\xa0\xe8\x97M'
b'-\xed\xc2\xc1\x99\x84\x00\x00\x00\x02\x00\x95\x00@\x8c\x85\xb78\xe8\xfc'
b'\xabg\xba\xbe-\xb0\xc17?\x00m\x00\x99\x00\x18\x0e\x87\xf2\xa7\x9f'
b'\xc1\x94\xa3H\xfb\x91')
Результат разбора:
'A1': 838950168,
{'A2': 'nrotr',
'A3': -20662,
'A4': [{'B1': {'C1': 130,
'C2': 2056571384,
'C3': 8404034499005758824,
'C4': 1207256766},
'B2': [6620, 14866, 20750, -18533, -6139],
'B3': {'D1': 590393748,
'D2': 15822,
'D3': 223,
'D4': -0.32109490036964417,
'D5': -15},
'B4': 125,
'B5': 10575},
'B1': {'C1': 146,
{'C2': 116769259,
'C3': 7008295351466970693,
'C4': 1516361880},
'B2': [-560, -16665, 25507],
'B3': {'D1': 1868489238,
'D2': 9891,
'D3': 7,
'D4': -0.40398451685905457,
'D5': 52},
'B4': 112,
'B5': -26716},
'B1': {'C1': 76,
{'C2': 2351098430,
'C3': 11529687843807004412,
'C4': 760059880},
'B2': [-15635, -26175],
'B3': {'D1': 3078982720,
'D2': 59448,
'D3': 252,
'D4': -0.36407217383384705,
'D5': 45},
'B4': 176,
'B5': 14273}],
'A5': 51,
'A6': [-226030056, -1799250009, -1845802845],
'A7': -192252907}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xd 0x50 0x49 0x57 0x4b
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | Массив структур B, размер 3 |
3 | Размер (uint16) и адрес (uint16) массива char |
4 | uint16 |
5 | uint64 |
6 | uint8 |
7 | Структура C |
8 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint32) массива float |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint32 |
3 | uint16 |
4 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\rPIWK\x04\x00E\x00\xd7\x14,\x81\x9d\x8amB\r`` og\xf8\xd6~\xbb4\x85?\xb6^'
(b'\xceCd?\x1a\x8fQ\x02\x00I\x00]\xee\x7f\xd10)z\x03\xb5F;\xfd\x02\x00\x00\x00K'
b'\x00\x00\x00\xb2\x9a\xc93S\x00jtodgq\xbd\x9e[\xbe\x17\xb7z>\x92u\x03\x0fz'
b'\xa8\xac.,uf')
Результат разбора:
'A1': 'jtod',
{'A2': [{'B1': 5335, 'B2': 6921261240582766892},
'B1': 8288, 'B2': 9598502859280246639},
{'B1': -18881, 'B2': 5876944898309213790}],
{'A3': 'gq',
'A4': 61021,
'A5': 5094982376651542911,
'A6': 59,
'A7': {'C1': -3,
'C2': [-0.2144727259874344, 0.24483905732631683],
'C3': 868850354},
'A8': {'D1': 146, 'D2': 2047804277, 'D3': 44200, 'D4': 1718955054}}
Пример 2
Двоичные данные:
b'\rPIWK\x02\x00E\x00\x11V\x92g\xa5\xf3|\xe9\x84\xd5\xf3\xd5\xe24J'
(b'\xee\xe7\xf6\x9e\x1eR\xb1\xf7 \xa1\xbe}\xf9r\xa4\x02\x00G\x002c"\x9aF'
b'\xd8;g\xc3\xf1\x1f\xd6\x02\x00\x00\x00I\x00\x00\x00\xf9\xa3\x9f\x86Q\x00vpj'
b'm&\xd1g?\x86_\xcd\xbe\xe5.f\xfb:p\xa3\xc7I^\xdc')
Результат разбора:
'A1': 'vp',
{'A2': [{'B1': 22033, 'B2': 15385678949877376914},
'B1': -10765, 'B2': 2206472343453840610},
{'B1': -20142, 'B2': 11849807888029655287}],
{'A3': 'jm',
'A4': 25394,
'A5': 17420881290328447522,
'A6': 31,
'A7': {'C1': -42,
'C2': [0.905535101890564, -0.4011194109916687],
'C3': 2258609145},
'A8': {'D1': 229, 'D2': 989554222, 'D3': 41840, 'D4': -597800505}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x55 0x54 0x4d 0x39
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint16) массива структур B |
3 | float |
4 | Адрес (uint32) структуры C |
5 | Размер (uint16) и адрес (uint32) массива float |
6 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | float |
4 | int16 |
5 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив uint32, размер 2 |
3 | int32 |
4 | uint8 |
5 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива int16 |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UUTM9&\x02\x00\x00\x00(\x00\x12\xa7\xae=P\x00\x00\x00\x02\x00c\x00'
(b'\x00\x00\x04\x00\x00\x00k\x00\x00\x00\xa1\x81rwhw\xeb\xc4\x02\x00'
b'\x00\x00$\x00\x00\x00!\x13\xe6\xbekLf\xc2\xdc\xe5\xec\xa5\x02\x00'
b'\x00\x00&\x00\x00\x00k~p?\xd5J\x9f3\xc4\xda\xa0\\k1\x96A[\xe8\x812s\x8a'
b'[\xbc\xe3(V:\xca\x83\x0e\x06>V\xe6r\xbf%\xb3$\xd8\x12\x14\x17S')
Результат разбора:
'A1': 38,
{'A2': [{'B1': -15125,
'B2': 'rw',
'B3': -0.44936469197273254,
'B4': 19563,
'B5': -438517146},
'B1': -23060,
{'B2': 'hw',
'B3': 0.939428985118866,
'B4': 19157,
'B5': -624675937}],
'A3': 0.08527959883213043,
'A4': {'C1': 829119648,
'C2': [3898294678, 2322805377],
'C3': 686013531,
'C4': 86,
'C5': -13766},
'A5': [0.13091473281383514, -0.9488271474838257],
'A6': {'D1': [-19675, -10204, 5138, 21271], 'D2': 33185}}
Пример 2
Двоичные данные:
b'UUTM9\xef\x02\x00\x00\x00(\x00a\x9b,\xbfP\x00\x00\x00\x02\x00c\x00'
(b'\x00\x00\x08\x00\x00\x00k\x00\x00\x00\xfc\xffxmtx\x1b\xe7\x02\x00'
b"\x00\x00$\x00\x00\x00\xf5\x08\x1b?(\xd2\xcd'\xe7^]\x08\x02\x00\x00\x00&\x00"
b'\x00\x00c\xc7%?\xbes\xca\xe3\x8c\x8b\xe7\x8b\xae\xacs\xabC\xce\x1dq\xbd\xc5'
b'\xeeA\xd1\x11\xdc\x97\xb2v\x96|>Kx\x0c?\xf5\xd4\xe5\xb9V}\xc2;s\xd6\xdf\xe9J'
b'\xfc\x85\r')
Результат разбора:
'A1': -17,
{'A2': [{'B1': -6373,
'B2': 'xm',
'B3': 0.60560542345047,
'B4': -11736,
'B5': 1592207309},
'B1': 2141,
{'B2': 'tx',
'B3': 0.6475736498832703,
'B4': 29630,
'B5': -1953700918}],
'A3': -0.6742458939552307,
'A4': {'C1': -1397847065,
'C2': [3460541299, 3317526813],
'C3': 298926574,
'C4': 220,
'C5': -19817},
'A5': [0.24666771292686462, 0.5487105250358582],
'A6': {'D1': [-11019, -17947, 32086, 15298, -10637, -5665, -950, 3461],
'D2': 65532}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x18 0x57 0x43 0x43 0x5a
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | uint16 |
3 | int64 |
4 | Массив int64, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | Массив структур D, размер 6 |
2 | Структура E |
3 | int8 |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int8 |
2 | float |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
3 | int32 |
4 | uint8 |
5 | int64 |
6 | Размер (uint32) и адрес (uint32) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x18WCCZ<\x00\x02\x00\x00\x00\x81\xbe\x0c\x14\xee\x00\x02\x00\x00'
(b'\x00\x83?\x00\xff\xf7\x00\x02\x00\x00\x00\x85?t }\x00\x02\x00\x00'
b'\x00\x87>\x81\xd0\x92\x00\x02\x00\x00\x00\x89\xbd\x84\x93\xa8'
b'\x00\x02\x00\x00\x00\x8b?C\x06u\xcc\x86~\x9e{\x19H\xd80{\x01\xb8\x1c\x0c'
b'\xbf\xe0\x94j\x88\x00\x00\x00\x03\x00\x00\x00\x8dnq\xd1z\x9f\xaf\xfdQ\xcb_8'
b'\x0evx\x08\x11\xf0\x9e\xba\x8cO\x0fF\x8a\xffn\xb7w\x94\xe9\xa6\x1b\xbb\ts'
b'\x03v\x9d\x06i\xfa\x93/\xaf\xb7l\xcfS,\x16\x94\xff\xe9f')
Результат разбора:
'A1': 60,
{'A2': {'B1': {'C1': [{'D1': [118, -99], 'D2': -0.13679859042167664},
'D1': [6, 105], 'D2': 0.503905713558197},
{'D1': [-6, -109], 'D2': 0.9536207318305969},
{'D1': [47, -81], 'D2': 0.2535443902015686},
{'D1': [-73, 108], 'D2': -0.06473475694656372},
{'D1': [-49, 83], 'D2': 0.7618172764778137}],
{'C2': {'E1': -863600994,
'E2': 31513,
'E3': 1222127739,
'E4': 1,
'E5': -5180251453136803192,
'E6': [11286, 38143, 59750]},
'C3': 110,
'C4': 113},
'B2': 53626,
'B3': -6940049973008451570,
'B4': [8536581966825175692, 5696849616451843959, -7716453848490347773]}}
Пример 2
Двоичные данные:
b'\x18WCCZ\xb2\x00\x02\x00\x00\x00\x81\xbe\xd5\x8e\xc2\x00\x02\x00\x00'
(b'\x00\x83?S-\xcb\x00\x02\x00\x00\x00\x85>\x80\x9f\x7f\x00\x02\x00\x00'
b'\x00\x87>\xca\xae~\x00\x02\x00\x00\x00\x89\xbf\x1cj>\x00\x02\x00\x00'
b'\x00\x8b?5\xfbs\xb2\x9ey\x04t\x98N\xfb7*\xedS(p\x13\xc4\x83\xf1'
b'\x10\x00\x00\x00\x06\x00\x00\x00\x8d\xfb\x8az3\xbf\xbd\xf4`\x11{Q'
b'H\xab\xc3\xc6J\x97&\x0f\xad\x10\x8e"\x9cz\xbczI\xf7\x01\xd6\x85\x7f\xb2`'
b'\xa7\xcc\x97y\xd5}\xbd\xc5P\xf8\xc9\xf90\xe8\xeb8\x83\xa6"\xa1\x07L\x88\n{')
Результат разбора:
'A1': 178,
{'A2': {'B1': {'C1': [{'D1': [-52, -105], 'D2': -0.4171047806739807},
'D1': [121, -43], 'D2': 0.8249174952507019},
{'D1': [125, -67], 'D2': 0.251216858625412},
{'D1': [-59, 80], 'D2': 0.39586251974105835},
{'D1': [-8, -55], 'D2': -0.6109961271286011},
{'D1': [-7, 48], 'D2': 0.7108680605888367}],
{'C2': {'E1': -1298237180,
'E2': 29848,
'E3': 1325086506,
'E4': 237,
'E5': 5992162534420115728,
'E6': [59627, 14467, 42530, 41223, 19592, 2683]},
'C3': -5,
'C4': -118},
'B2': 31283,
'B3': -4630276148419669688,
'B4': [-6069789849099563091, 1192929006769175113, -648001002503249753]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x51 0x48 0x52
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив uint8, размер 4 |
2 | Адрес (uint32) структуры B |
3 | Размер (uint32) и адрес (uint32) массива структур C |
4 | uint32 |
5 | Размер (uint32) и адрес (uint32) массива int16 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив int8, размер 5 |
3 | float |
4 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'QHR\t\x12\xad\xcf\x1f\x00\x00\x00\x02\x00\x00\x00Q\x00\x00\x00OZ\xa4\x16\x02'
(b'\x00\x00\x00a\x00\x00\x00\xac!\x8e>dq\xce\xb8\xab@!\xd7\xc4\xf8\xc8u\xe6'
b'\xa4\x1e\x84\xbd\xef\xc8}\xe1L\xf5p\x95\xdcnHb\x84\xa28\x1e\x19\x88WY'
b"?>\xc9\x7f\x97\x01\xfe\x14\x94'\x00\x00\x00\xfb\xc5\xdd\x89<\x00\x00"
b'\x00\x91H\xf7\xdf\x8d/\xed\x9b')
Результат разбора:
'A1': [9, 18, 173, 207],
{'A2': {'B1': 0.27760064601898193, 'B2': 3100537188},
'A3': [{'C1': {'D1': -685686613,
'D2': [-60, -8, -56, 117, -26],
'D3': -0.06451156735420227,
'D4': 10768376419592292591},
'C2': -1981954565},
'C1': {'D1': 1648914140,
{'D2': [-124, -94, 56, 30, 25],
'D3': 0.848991870880127,
'D4': 10670432699937704254},
'C2': -537442159}],
'A4': 379869775,
'A5': [12173, -25619]}
Пример 2
Двоичные данные:
b'QHR[T\x12@\x1f\x00\x00\x00\x04\x00\x00\x00{\x00\x00\x00\x8f\xd0Xr\x02'
(b'\x00\x00\x00\x9b\x00\x00\x00\x91\xc4\xf2>\xab\x00\x15\x18k\xdc\x91\x98X'
b'\x0c\xde\xd3\x927\xa0\xce\xbdR^\x91\xb4\x968\xf6\xb0\xca5\xaf)\xf7\x88X\x93'
b'V)\xda\xa6>Ca\xef\x99ZI?)\x91\xc6\xf7\xc5\x8b\xe7z\xd37Of_?P\x0f'
b"\x04\xc1\xdd\xb2\xacvL|\xc2e1w\xcbmx\xf4\xdd`\xbfz\xaf\x11\x0ci\xc5\xa3%'"
b'\x00\x00\x00+\xcaf\xe0<\x00\x00\x00\x10#\x8c\xa1Q\x00\x00\x00\xb6\xdd\rmf'
b'\x00\x00\x00\xfa\x80\xb1\xecK\xa1\xeeN')
Результат разбора:
'A1': [91, 84, 18, 64],
{'A2': {'B1': 0.4741559326648712, 'B2': 404029611},
'A3': [{'C1': {'D1': -1735271317,
'D2': [88, 12, -34, -45, -110],
'D3': -0.10089152306318283,
'D4': 12751441614871813714},
'C2': -530134485},
'C1': {'D1': 699348426,
{'D2': [-9, -120, 88, -109, 86],
'D3': 0.3258831799030304,
'D4': 2972174932566303043},
'C2': -1584651504},
'C1': {'D1': -973617519,
{'D2': [-117, -25, 122, -45, 55],
'D3': 0.8726548552513123,
'D4': 8551406457965514576},
'C2': 1829625270},
'C1': {'D1': 1707244620,
{'D2': [49, 119, -53, 109, 120],
'D3': -0.8783867359161377,
'D4': 2712228455571894138},
'C2': -323911430}],
'A4': 1918423183,
'A5': [-24245, 20206]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc1 0x50 0x5a 0x59
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | Структура B |
4 | Структура C |
5 | float |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур D |
3 | float |
4 | Массив uint64, размер 3 |
5 | Массив uint8, размер 5 |
6 | int16 |
7 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | int64 |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xc1PZY\xb3E\xef\xed\xef\xa0e\x89K\xe8>\xd7!\xd3\x00\x00\x00\x02\x00K'
(b'\x00\x00\x00\x03\x00\x00\x00q<\x87l\x80\x95G\xc5\x94;\xf5c\xca\xe7S\x0b\xff'
b'O\x13\n\xfe\xd0\x90X\xde\xc6;\xe1`\xca\x86\xa8\xfc\xa2\xc1\xa8!'
b'\x9c\xf8\x16\xbe]z\xbevsf&l\xa0\xc9\xed\xady\x0f\xd3\xba\x00h*\x8c'
b'\xf7\xabK\x0b^\xf6v\x039E\xc6\r\xaerC\xfb\x13\x9c~\x94\xaa\x00M\x00Y\x00e')
Результат разбора:
'A1': 3007705069,
{'A2': 61344,
'A3': {'B1': 1703496680, 'B2': 0.42017993330955505},
'A4': {'C1': 'vs',
'C2': [{'D1': 102, 'D2': 9836, 'D3': -6860691228006034502, 'D4': 0},
'D1': 104, 'D2': 10892, 'D3': -600303613113895421, 'D4': 57},
{'D1': 69, 'D2': -14835, 'D3': -5876559818120200556, 'D4': 170}],
{'C3': 0.01653122901916504,
'C4': [10756783475449488330,
16668679836999551742,
15028609670367142240],
'C5': [202, 134, 168, 252, 162],
'C6': -15960,
'C7': 563935254},
'A5': -0.21628853678703308}
Пример 2
Двоичные данные:
b'\xc1PZY\x1c\xbb\xf4VT\x89\xb2q\xdc\xaf\xbd\xefb\x96\x00\x00\x00\x04\x00K'
(b'\x00\x00\x00\x03\x00\x00\x00s?\x02\xba\xa3\x15\x7f\xde"\xaa\xee\xe3Uj}%\xe0'
b'\x0f{Oy?\xfb\x01\xe3\xf1\x82Jc\x14\x13\xcc\xb8\xd7\xbd\xd3\x95'
b'\xd0\xb2\xe8\xbet\xce\x91ajbj\xee\x01\x92MI1\xbcvf\x90<9\xbf\xa5\xbah!'
b'{&K\xcd\xcdP\xbb7vv6\x08\x0b\\\x8e=\xfe\rx\x00O\x00[\x00g')
Результат разбора:
'A1': 482079830,
{'A2': 21641,
'A3': {'B1': -1301160785, 'B2': -0.11688725650310516},
'A4': {'C1': 'ajbj',
'C2': [{'D1': -18, 'D2': 402, 'D3': 5569037099730374716, 'D4': 57},
'D1': -65, 'D2': -23110, 'D3': 7503413858586709328, 'D4': 187},
{'D1': 55, 'D2': 30326, 'D3': 3893374370013117965, 'D4': 120}],
{'C3': 0.5106603503227234,
'C4': [1549201037316776789, 7673330984371834745, 4610280722064886371],
'C5': [20, 19, 204, 184, 215],
'C6': -16941,
'C7': -1781484824},
'A5': -0.23906923830509186}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xe2 0x59 0x55 0x51 0x56
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив int8, размер 6 |
3 | int64 |
4 | uint64 |
5 | Размер (uint32) и адрес (uint32) массива структур B |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint8 |
3 | Адрес (uint32) структуры C |
4 | int32 |
5 | uint8 |
6 | Адрес (uint32) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | int16 |
3 | int8 |
4 | int32 |
5 | Массив int32, размер 4 |
6 | Размер (uint32) и адрес (uint32) массива uint16 |
7 | int8 |
8 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xe2YUQV\x1b(\x8c\x92\xed\xe3X\x85\x81\x96\xc5c|\xf7!\xb5V\xa9Z\x86\x94\xd7('
(b'\x02\x00\x00\x00\x94\x00\x00\x00\xcdJ\xf5\x02\x84\xa1h\x03\x0e\x16;"'
b'\xe8\xbe\xc8>\\\xb6hi\xff|6\xf9\x92h\xabv\x9b\xe2\xde\xf3\xb5"5N'
b"\xa8\xee\x04\x00\x00\x00'\x00\x00\x00\x1d1\x0em\xb3\xe8\x8e\xf6\xb8\xf7"
b'K%\x86H\x9e\xfc4\xe6\xa9c\xe3\x03\xa5\xb8\x07.\xd2\x89nV\xa9\xca\x88\x13'
b'\xb4\x7f6m\x80\x1br\x83\xda\x19{\xe3!mJ\x05\x00\x00\x00^\x00\x00\x00\x9f'
b'!n\x0bM\xcd\xa9\x9f\xd8\xd5@ \x00\x0f74z\x00$\x00\x00\x00@l\x15\x1e\x11/\x00'
b'\x00\x00\xf6\x80\xf7\x84S\x11\xf2\x06\x99[\x00\x00\x001\xac\xe0\x08\xee'
b'h\x00\x00\x00')
Результат разбора:
'A1': 27,
{'A2': [40, -116, -110, -19, -29, 88],
'A3': 2447561690457735557,
'A4': 2942984186277484213,
'A5': [{'B1': 8805723708982313173,
'B2': 0,
'B3': {'C1': 19149, 'C2': 245},
'B4': 504720448,
'B5': 17,
'B6': {'D1': 3367954466,
'D2': 23614,
'D3': -74,
'D4': 2097113448,
'D5': [1754462518, -493128021, 582349790, -290959819],
'D6': [33794, 26785, 3587, 15126],
'D7': 29,
'D8': -5118746796366164431}},
'B1': 500481559002317046,
{'B2': 153,
'B3': {'C1': 19447, 'C2': 37},
'B4': 148941873,
'B5': 238,
'B6': {'D1': 772257957,
'D2': -30254,
'D3': 110,
'D4': -1999984298,
'D5': [914338835, 1914404973, 2065291907, 1248666083],
'D6': [18566, 64670, 58932, 25513, 995],
'D7': -97,
'D8': -2837362540994138591}}]}
Пример 2
Двоичные данные:
b'\xe2YUQV\x17\\\xdeF\x12\xae\x02\xda\x1eM"\xd5:\xe0{^\x9d\x7f$A\xb8@\xb4'
(b'\x02\x00\x00\x00\x98\x00\x00\x00X\xd0P\x92\xb5\xaa\xce\x0f\x15\x8a\xe7\x12'
b'I\xa6\xac\xbb\xa7\xf6qv\x91K\xc6\xf8\xdb\x01\xe6T}w\x93\x01\xf4\xc2\xc3\x18'
b"\xcfka\xe1\x05\x00\x00\x00'\x00\x00\x00 \x83\xdam\xff\xcb\xe0\x84"
b'\xae\x84\xfc\x8fZN\xb4\xec\xd7\xd4NP\xd5\xf8\x85\x93wC\xc4/\xb5\xfc\xf8C'
b'\xa8\xdf(>\xfc\xb3x\xfa\xed\xc4\x81\xfc\xc7\xa6}\xb4\x19\x06|\x06'
b'\x00\x00\x00`\x00\x00\x00\x92\xc6\xc8z\x14u\x03\x94\xbc\x05\xb4 O'
b'i\x8e\xe4\x85t$\x00\x00\x00\xbf\x92\xcd\xdc!1\x00\x00\x00X\xac\x83N\x8d|'
b'\xf2\x89&]\x00\x00\x00E\x1e\xa6\x8f\x06l\x00\x00\x00')
Результат разбора:
'A1': 23,
{'A2': [92, -34, 70, 18, -82, 2],
'A3': 8926199148526247642,
'A4': 12988583915261238622,
'A5': [{'B1': 9647992884684698629,
'B2': 116,
'B3': {'C1': -12200, 'C2': 80},
'B4': -590507329,
'B5': 33,
'B6': {'D1': 2814094502,
'D2': 29174,
'D3': 118,
'D4': -121222255,
'D5': [1424359899, 26441597, 415482612, -513709105],
'D6': [46482, 52906, 5391, 59274, 18706],
'D7': 32,
'D8': -5871320847415911805}},
'B1': 9940144273909591128,
{'B2': 38,
'B3': {'C1': -892, 'C2': 143},
'B4': -1884938683,
'B5': 6,
'B6': {'D1': 801391479,
'D2': -843,
'D3': -8,
'D4': 685746243,
'D5': [2025061438, -2117800454, 2108082172, 2080774580],
'D6': [20058, 60596, 54487, 20558, 63701, 37765],
'D7': -110,
'D8': -4858254296636274490}}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x43 0x48
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив структур B, размер 8 |
3 | Адрес (uint32) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint16) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Структура D |
3 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint32 |
3 | int64 |
4 | Размер (uint32) и адрес (uint16) массива uint8 |
5 | Массив float, размер 6 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PCH\xd59\xf0\xacQ\x93A\xd1\xee\x02\x00G\x00\x00\x00\xa5\x04\x00I\x00\x00'
(b'\x00\x11\x03\x00M\x00\x00\x00\xa8\x04\x00P\x00\x00\x00\x94\x03\x00T\x00'
b'\x00\x00\xa6\x03\x00W\x00\x00\x00\xb2\x02\x00Z\x00\x00\x00\x10\x04\x00\\'
b'\x00\x00\x00d\x00\x00\x00pjezycuaggboaxuovlrepyzbd\x8f4\x81\xeeu\x07\xd6Y'
b'[\x8a\x1f/\xca\xea[\x1f\x11\xcf\xb1\xab\xc7\x04\x00\x00\x00`\x00\xc7'
b'"\x0b?\xa9\x86+\xbfX\x93\xfb>\x89\x7f|?g_g?\xc2\xddv\xbf\x1b')
Результат разбора:
'A1': 15078495006416189909,
{'A2': [{'B1': -18, 'B2': 'pj'},
'B1': -91, 'B2': 'ezyc'},
{'B1': 17, 'B2': 'uag'},
{'B1': -88, 'B2': 'gboa'},
{'B1': -108, 'B2': 'xuo'},
{'B1': -90, 'B2': 'vlr'},
{'B1': -78, 'B2': 'ep'},
{'B1': 16, 'B2': 'yzbd'}],
{'A3': {'C1': 1507198837,
'C2': {'D1': 91,
'D2': 3392085898,
'D3': -4058955136240755734,
'D4': [143, 52, 129, 238],
'D5': [0.5434994101524353,
-0.670023500919342,
0.49135851860046387,
0.9863210320472717,
0.9037994742393494,
-0.9643212556838989]},
'C3': 27}}
Пример 2
Двоичные данные:
b'PCH2\xb4\x8e\x8b\x00+p\xe6\xd8\x03\x00G\x00\x00\x00\x94\x03\x00J\x00\x00'
(b'\x00r\x02\x00M\x00\x00\x00\xba\x02\x00O\x00\x00\x00\xcf\x04\x00Q\x00'
b'\x00\x00\xdf\x03\x00U\x00\x00\x00e\x03\x00X\x00\x00\x00\xd8\x03\x00['
b'\x00\x00\x00c\x00\x00\x00odaowxmqkoqqmmlktrjbamv\xa1d\x02M"P)\x9b\xc3\xcb'
b'\xdf"\xb4\xec\x83|\x12\x87\x9cr\x0b1\x05\x00\x00\x00^\x00]\x02'
b'\x9c\xbd\x8b\x06\x02?\xdc\x02\x97>\x8e\xe1q?\xb9t\xa5\xbeV|\x1b\xbe\xa1')
Результат разбора:
'A1': 16604819107456398386,
{'A2': [{'B1': -40, 'B2': 'oda'},
'B1': -108, 'B2': 'owx'},
{'B1': 114, 'B2': 'mq'},
{'B1': -70, 'B2': 'ko'},
{'B1': -49, 'B2': 'qqmm'},
{'B1': -33, 'B2': 'lkt'},
{'B1': 101, 'B2': 'rjb'},
{'B1': -40, 'B2': 'amv'}],
{'A3': {'C1': 3281725776,
'C2': {'D1': 203,
'D2': 3971228383,
'D3': 3534044349208886403,
'D4': [161, 100, 2, 77, 34],
'D5': [-0.07617638260126114,
0.5079123377799988,
0.2949436902999878,
0.9448479413986206,
-0.3231561481952667,
-0.15184149146080017]},
'C3': 161}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x57 0x42 0x59 0x74
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint8 |
3 | Размер (uint16) и адрес (uint16) массива char |
4 | Структура D |
5 | float |
6 | double |
7 | Размер (uint16) и адрес (uint32) массива uint8 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 8 |
2 | uint16 |
3 | float |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив uint32, размер 2 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint32 |
3 | int32 |
4 | uint8 |
5 | double |
6 | Массив uint32, размер 4 |
7 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'KWBYt\x00\x00\x00o\x00\x00\x00y\x00\x00\x00\x83\x00\x00\x00\x8d\x00\x00\x00'
(b'\x97\x00\x00\x00\xa1\x00\x00\x00\xab\x00\x00\x00\xb5\x04\xe0=+y\xf0\xd0'
b'\x00\x06\x00\xbf\xb3\x08\x84\x0f\xc4\xd4A\x80:11v\x9b?\xd0O\xc6\xc5\x06\xca'
b'\xd8[v>\xca\xeabe\xeeg\xb5\xbf\xd8\\W\xa1\xc6?_fwfs\x9c\x00<(~'
b'\x15\xbf\xd3\xd1Q\x91\xf4M\xc0\x00\x03\x00\x00\x00\xc5\xc8R\xe8\x9e\xf5'
b'\xee{\xc8\xd8\x0c\xe5\xeb\x1b\x96)w\x13\xcf\x10}`\xcf\x11\xc0\x89'
b'\xca\x85\xf92\x85\x0e\xc4\xf5\xf7 \xbd\xf0\xeaV\x04\xa8\xe7x\xa3\xfd'
b'\xeb\x02\xe4uBM\xcb\xe9\xeb\xdc\x99\xe7x\xc68\xe4\x18\xbb\x82;U8\xaf7\x96*{)'
b'\xd6\xd1\xb5o\xf8\xd8\x9dvqudek\xac\xb7E')
Результат разбора:
'A1': {'B1': [{'C1': -14254, 'C2': [3902731758, 2076760076]},
{'C1': -6677, 'C2': [462825847, 332337277]},
{'C1': 24783, 'C2': [297830858, 2247701125]},
{'C1': 3780, 'C2': [4126613693, 4041889284]},
{'C1': -22297, 'C2': [2024013291, 48526658]},
{'C1': 19915, 'C2': [3924548761, 3883451960]},
{'C1': -7144, 'C2': [3145874261, 951007126]},
{'C1': 10875, 'C2': [701944245, 1878579357]}],
{'B2': 1248,
'B3': 0.04186433553695679},
'A2': 208,
'A3': 'vqudek',
'A4': {'D1': -1291287537,
'D2': 3302244736,
'D3': 976302454,
'D4': 155,
'D5': 0.25486916771766976,
'D6': [1534475978, 3932317166, 1739964376, 1549246918],
'D7': 0.001916519738921485},
'A5': 0.010283966548740864,
'A6': -0.30965079549170227,
'A7': [172, 183, 69]}
Пример 2
Двоичные данные:
b'KWBYt\x00\x00\x00o\x00\x00\x00y\x00\x00\x00\x83\x00\x00\x00\x8d\x00\x00\x00'
(b'\x97\x00\x00\x00\xa1\x00\x00\x00\xab\x00\x00\x00\xb5\x01a??\xeb\x95d'
b'\x00\x02\x00\xbf\x8d\xde\xa5\x07g\x14\xb7\x85Uc:\xf7\xcc\xbf\xbf\xfc'
b'\xfe\x15\xaf\xf4\x80\xf6\xab\xbbW\xa3l\xe9s)\xb2hu\xe5\x1e\x13\xa4?\xd1\x13'
b'T\xddOK|?ALn\xbf\xe7\xc3\x95\xc4\x8a\xb0v\x00\x05\x00\x00\x00\xc1\xedg\x8c%V'
b'D\xc0\xfc\x08\x04\\\xf3]\xae\xea]\xc7f`fCpt\x129\xeb\x8d\xe3\x91y\xaa5\xb9'
b"(.\xe3\xb6u^\xfc\xf1z>\x17\xb5\xa99%\xd5u\xa7@\x08\xe0~\r\xd0\x9c\xb3'\x9c"
b'\x89M\xa3\xa9\x1fd\x06V<\xa1\x8d\x03w:)W[\xab\x97ew\x04\xfd5\x1e\xb9')
Результат разбора:
'A1': {'B1': [{'C1': -4761, 'C2': [2351257156, 3237742596]},
{'C1': 23795, 'C2': [1571744349, 3345375334]},
{'C1': 17264, 'C2': [1947351531, 2380501369]},
{'C1': -21963, 'C2': [3106418403, 3061145340]},
{'C1': -3718, 'C2': [1041741225, 958780789]},
{'C1': -22720, 'C2': [148930061, 3499930407]},
{'C1': -25463, 'C2': [1302571295, 1678136892]},
{'C1': -24179, 'C2': [58145321, 1465625495]}],
{'B2': 353,
'B3': 0.749688446521759},
'A2': 100,
'A3': 'ew',
'A4': {'D1': -1914788601,
'D2': 1729410949,
'D3': 1432566519,
'D4': 204,
'D5': -0.12495410947299668,
'D6': [4138449751, 2741823859, 699558005, 3843953572],
'D7': 0.26680490124015654},
'A5': 0.7550724744796753,
'A6': -0.742625125761619,
'A7': [4, 253, 53, 30, 185]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x26 0x56 0x54 0x44
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int64 |
3 | uint64 |
4 | Структура F |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | int32 |
3 | Структура E |
4 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Массив адресов (uint32) структур D, размер 2 |
3 | int16 |
4 | int64 |
5 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int16, размер 5 |
2 | Массив int32, размер 8 |
3 | uint64 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint8 |
2 | uint32 |
Структура F:
Поле | Описание |
---|---|
1 | int8 |
2 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'&VTD\xa3\x00\x80E\xf5\x93\xab_\x90\xe1\xa3\xf44\xf9\x8c\x8c%\\\x0f\xa5'
(b'~Lm\x88\xb6*\xb7\xba}\xa4\xebd\xdfv\x84;\xe7\xcb\x12\xaa\xfe\xac`\x1caj\xd5{'
b'\x04\x95l\xc8\x14\xd0RQ\xb8|D\xf3\xf3A\x0em\xb6\xdf\x1e \x9a\x9f\xf0\xc7'
b'w\x9a\xd5\x0e\xe8\xf7\x19\xf9\xb3Xs=\xc1d,\x90>\xd9\x19\x8cx\x8e\xd1\x96'
b"B\x81zt\xc2J'\x86\xde\xa8\xef\rf\xb2\xb9\xfdD2\xf7\xb7\xd6\x9a\xb99"
b'\xd0\x10\x7fO\xca\xe4\x94(#x`\xa0`\xef?\x1f\x00\x00\x00Q\x00\x00\x00\x02'
b'\xac\xcb\xea\xc7\x93\x80^\xba\x88\xe7\x85\xf7\x85\xc3\xdc\x83'
b'\x00\x00\x00\xb7\x04\xd3c\x02\x00\xa1\x00\xf9\xc7KZ\xb1')
Результат разбора:
'A1': {'B1': {'C1': 0.9805452236333609,
{'C2': [{'D1': [32186, -5212, -8348, -31626, -6341],
'D2': [-22408501,
1629249708,
75224426,
348679317,
-1202629936,
-202161028,
-1234366911,
-1709170977],
'D3': 16721537325884502175},
'D1': [6647, -19463, 29528, -16067, 11364],
{'D2': [433667728,
-779192180,
2055291542,
659210868,
-274145658,
-1179490803,
-147700483,
-1181034825],
'D3': 10728922655086399545}],
'C3': -21502,
'C4': -8594453032554992949,
'C5': 2247591399},
'B2': 1674773687,
'B3': {'E1': [195, 220], 'E2': 1514915833},
'B4': 177},
'A2': -2193147828003060352,
'A3': 6639867762731971747,
'A4': {'F1': 15, 'F2': -5248181718681354587}}
Пример 2
Двоичные данные:
b'&VTD\xa4\x00\x8dY\x99\x88\x93\xc9zR\x1e)Y\xe3\xd7#\t\x89>\xcd'
(b'\xd5\xe3\x92\xe0\x13w\xa1\xcd\xdc\xf4-O2\xf3\xe8\x84\xfe\x9e\xeb\x9c'
b"\x04Y\xfe\x98\xd2\x85\x95\xd6\xbf\x1b'7\xd8\x1b\x94'\xcf\xc52v\t.\xb5\xac"
b'\xe3X\x06\x80a\x1c\x8a\xe9\xbd\xb5n\xac\xdc\xda\x82\x8b\xcc\xee\xb8\x95'
b'\xd7A\xfa\xec{\xb5E\x15\x85\x16\xf0n\x01\xa6c\xb3\x92\x8dG\xb4G1\xf79'
b'\xb1\x0b\xe5\x87+Mc\xa3\xebn\x8d\xfc\x8e\xa3Rf\xd2\x02\r\x80yb\x12@'
b"/\xb8\xbf\x1f\x00\x00\x00Q\x00\x00\x00\xd7eG>\x8e,\xa1\xf5C\xf5\xe4'R"
b'N\x86\xf0Z\x83\x00\x00\x00\x90*\x10\\\x03\x00\xa1\x00\xd4[II;')
Результат разбора:
'A1': {'B1': {'C1': -0.09447098206371685,
{'C2': [{'D1': [-9011, 11764, 12879, -5901, -380],
'D2': [77392798,
-761725351,
-1076456059,
-667474149,
-819489765,
158741189,
-475220690,
1635780184],
'D3': 15901206111192713756},
'D1': [-32038, -13173, -18194, -10347, -1471],
{'D2': [1169521644,
-266959595,
1671823726,
1200460467,
-147765324,
-452218567,
1666001799,
-1922110557],
'D3': 937543009361432316}],
'C3': 26071,
'C4': -773504638391534009,
'C5': 1314007012},
'B2': 1544563344,
'B3': {'E1': [134, 240, 90], 'E2': 1229544404},
'B4': 59},
'A2': 5943284293757917581,
'A3': 9874463068125735198,
'A4': {'F1': 62, 'F2': -6811954056116578867}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x89 0x4d 0x46 0x4e 0x4c
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Массив char, размер 8 |
3 | int32 |
4 | uint8 |
5 | int64 |
6 | Структура E |
7 | Адрес (uint16) структуры F |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры C |
2 | int64 |
3 | float |
4 | int16 |
5 | int16 |
6 | int16 |
7 | Массив char, размер 5 |
8 | double |
Структура C:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур D, размер 2 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint16) массива uint8 |
3 | uint64 |
4 | int32 |
5 | int16 |
6 | int64 |
Структура F:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint64 |
3 | int8 |
4 | uint64 |
5 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x89MFNL\x00bxnlvigdz\x93_\x12}\xae\xe9\xb1\x9c\x96\x97W!\xf2>\x89\x0fn'
(b'\x00\x00\x00\x03\x00\x85.\xa5\x90K\x0c\xec\xba\xd9\xe7\xa5\xac\xd2\x10 '
b'v\xf8A\xb7\xcd\x94\xa7+\x00\x88\xe7\x03}\x99\x15\xd6m_RP\x01\x17\xb4\xd0'
b'\xc9\x8ea\xf7dd@\x88Ej\x00\x00\x00>\x00\x00\x00J?ij\x02\x00\x00\x00VP\x0f'
b'\xf7\x91h\xa4\xd61?}\xe5\x9b\xe9\xd2#\xc570tzuuh?\xd2]\xc04r\x03\xbc\xe0Yk'
b"4\x86\xf7'H\x15\x1b\x92\xf9 \xab\x0b\x93\xb0\x04\xda.\xd3\xb7\xe0"
b'q\x9c\xd6\xca\xb4Q;g+')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': 3875765657, 'D2': 1573565375982862615},
{'D1': 3033581966, 'D2': 7059221322668721514}],
{'C2': 0.9117738008499146},
'B2': 5769101851582846513,
'B3': 0.9917847514152527,
'B4': -5678,
'B5': 9157,
'B6': 14128,
'B7': 'tzuuh',
'B8': 0.28697209474199403},
'A2': 'xnlvigdz',
'A3': -1822485891,
'A4': 174,
'A5': -1607331421396459022,
'A6': {'E1': 0.2676958441734314,
'E2': [224, 89, 107],
'E3': 3361251348915731161,
'E4': -408572718,
'E5': 4128,
'E6': 8572674148383631147},
'A7': {'F1': 3784984284936608658,
'F2': 17951536180909573338,
'F3': 46,
'F4': 15255909041308093108,
'F5': 1362847531}}
Пример 2
Двоичные данные:
b'\x89MFNL\x00bywsoyfbf\xf3\xf90J\x81\xdf\xc3\x9as\xfagD\x19>Oz\x80'
(b'\x00\x00\x00\x03\x00\x85h\xb9g\xf9ZmR\x96\xda\x1c\xb11\xa7L\xd7,\xa0\x98'
b"B\x9e\x81c\x00\x88a\xaa \xca\xca\xccG\xbe!O\x88\xfb\x05\xe8'\x91um!qg\x9a"
b'\x1a\xb9\x00\x00\x00>\x00\x00\x00J>\xc3\xfa\xac\x00\x00\x00V\xf4:(\xed\xdfh'
b'\x95\xac\xbfV\xfa\xd5\xdf\x86\x11Ex"ttxah?\xc5\xb4\xcf\xb0\x02\x08'
b"\xb0~\x8d\xda\xe7J2\x15FS. O\xa1'\x18\xbb\xf4\xafk\x84\xad\x955"
b'\xfb\xff\x12\x1bv\r\xb3\x12\xa2')
Результат разбора:
'A1': {'B1': {'C1': [{'D1': 1638539466, 'D2': -3833610300870915845},
{'D1': 99100561, 'D2': 8461456045852203705}],
{'C2': 0.3827718496322632},
'B2': -848320577685383764,
'B3': -0.8397648930549622,
'B4': -8314,
'B5': 4421,
'B6': 30754,
'B7': 'ttxah',
'B8': 0.16958042234552329},
'A2': 'ywsoyfbf',
'A3': -201772982,
'A4': 129,
'A5': -2322843159880055783,
'A6': {'E1': 0.20261573791503906,
'E2': [126, 141, 218],
'E3': 7546176971297608342,
'E4': -635653839,
'E5': -22708,
'E6': -2941799880766619293},
'A7': {'F1': 16666188437993500192,
'F2': 5737910387432796011,
'F3': -124,
'F4': 12507962896523860854,
'F5': 229839522}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x30 0x5a 0x54 0x4e
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint64 |
3 | Структура B |
4 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | Структура C |
3 | Массив double, размер 5 |
4 | Размер (uint16) и адрес (uint16) массива int32 |
5 | float |
6 | Размер (uint16) и адрес (uint32) массива uint16 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив адресов (uint16) структур D, размер 7 |
3 | int16 |
4 | int8 |
5 | Массив uint16, размер 5 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"0ZTN\x15x9\x1fF\x14j#:\x97\x1aY\x17\x955}pI'\x18\x07\xd7vR?\x18T\x0b"
(b'\x00y\x00}\x00\x81\x00\x85\x00\x89\x00\x8d\x00\x91\xc5K\xe6I\xa3V\xbdi\xd4\r'
b'\x1b\xc3\xd3\xbf\xc5\xed\xaf\xb8jo`\xbf\xef\xd6p\xa0\xca\x15X?\xe1,\x90\xcc'
b'W4\xc0?\xe6<O+\xf5\x01\xfc?\xce\xfai\xc9\xb8\x8c\xf8\x00\x03\x00\x95?'
b'\x0f\x84W\x00\x04\x00\x00\x00\xa1\xaaUMsvS\\\xac\x15\xd2l@s2\xbc\xfd\x0b3>'
b'\xe3\xb21\x1f\xc9UK\x9b\x87\xcdC\xdaw/w\xd4\xc89n\x14\xa8\xbb\xcbR'
b'\xe6\x87\x8a@:Q\x13\x88\xbe\xe9\x89J\x9f')
Результат разбора:
'A1': 1547049278484277795,
{'A2': 4221872145633195389,
'A3': {'B1': 1883842328,
'B2': {'C1': 565050373876241419,
'C2': [{'D1': 5586, 'D2': 108, 'D3': 64},
'D1': 29490, 'D2': -68, 'D3': 253},
{'D1': 2867, 'D2': 62, 'D3': 227},
{'D1': 45617, 'D2': 31, 'D3': 201},
{'D1': 21835, 'D2': -101, 'D3': 135},
{'D1': 52547, 'D2': -38, 'D3': 119},
{'D1': 12151, 'D2': -44, 'D3': 200}],
{'C3': -15029,
'C4': -26,
'C5': [18851, 22205, 27092, 3355, 50131]},
'B3': [-0.1713161135165775,
-0.9949267521302927,
0.5366901389148993,
0.6948619707619055,
0.24201700544026727],
'B4': [963515560, -1144302874, -2020982726],
'B5': 0.5606130957603455,
'B6': [20755, 35006, 59785, 19103]},
'A4': -6172942555939644244}
Пример 2
Двоичные данные:
b'0ZTN\x13[\xa1\xf9U\x1f\x05\x13_\xea\xc8\xd7&$k\xd4\x98\xdf\xd6\xf5'
(b'\xad\x89i\xd5\x8fg\xc4\xee\x00y\x00}\x00\x81\x00\x85\x00\x89\x00\x8d'
b'\x00\x91\x90`\xbe\xfe\x7f\xc2\xd6<\x0c\xd1|\xeah\xbf\xe4\xd4\xd0\xe4'
b"J\x9c\xb2\xbf\xefI\xc0a0\xbe\x06\xbf\xe7'6cO\xe78?\xd4\x97\xa6\x91"
b'\xa0O\x90\xbf\xdb\xabfm\x98Ot\x00\x02\x00\x95>\xd61\xdc\x00\x02\x00\x00\x00'
b'\x9d\x04\xd4i\xd6\xafA%\x0b\x0f\xadX#\xf1[Q\xbf/\x03\xba\xdf\x1cc\xce'
b"\x1d\xbfVk\xa6\xeazo2\xbb.`\xaf\x05\x16'IE\x891\xa9s\xd8\xcdp")
Результат разбора:
'A1': 1394886601848325395,
{'A2': 6911557404536892372,
'A3': {'B1': -1730160907,
'B2': {'C1': 12504642206325785838,
'C2': [{'D1': 4013, 'D2': 88, 'D3': 35},
'D1': 61787, 'D2': 81, 'D3': 191},
{'D1': 12035, 'D2': -70, 'D3': 223},
{'D1': 7267, 'D2': -50, 'D3': 29},
{'D1': 48982, 'D2': 107, 'D3': 166},
{'D1': 60026, 'D2': 111, 'D3': 50},
{'D1': 47918, 'D2': 96, 'D3': 175}],
{'C3': -28576,
'C4': -66,
'C5': [65151, 49878, 15372, 53628, 60008]},
'B3': [-0.6509785136048747,
-0.9777528665781012,
-0.723536676377285,
0.32175602170286144,
-0.43233643248208087],
'B4': [85337929, 1166619049],
'B5': 0.41834914684295654,
'B6': [29656, 52592]},
'A4': 348019441998570763}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x47 0x43 0x46 0xac
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур B |
2 | Адрес (uint16) структуры D |
3 | int16 |
4 | uint64 |
5 | Размер (uint16) и адрес (uint32) массива int32 |
6 | float |
7 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | float |
3 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | uint8 |
3 | Массив uint8, размер 4 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | uint16 |
3 | uint8 |
4 | Массив float, размер 4 |
5 | int64 |
6 | int8 |
7 | uint32 |
8 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'SGCF\xac\x00\x00\x00\x02\x00S\x00W\xf8\x19R\xcde\n>\xbb\x83\x95\x00'
(b'\x05\x00\x00\x00\x83>\xf8\xed\xd0\xfe\xda;\x00\xd5{N\x11yefnoxyq\xbf9h'
b'\x91R\x06\xcc\xf6\x85\xdf\xf50\x95ngcvyrlb?5\x03\xcf\x9d\xd0\x072!\x91'
b'\xb0:\x92\x00)\x00>\x99\xbe\xaf\x8a\x19\xf7F\xe1\xca`)?s0\xc1\xbf\x15'
b'X\x13>\x8f\xac\xe0?J\x82\xc2\x14\x08\x86Va\xb365\xf2\x94\t\x81y\xf3'
b'2\xac\x151\xae\xed\x1f;\xe5UT O\xf28\x00\xcbtX\xb0\x15\xb9y')
Результат разбора:
'A1': [{'B1': 'yefnoxyq',
{'B2': -0.7242518067359924,
'B3': {'C1': 1376177398, 'C2': 133, 'C3': [223, 245, 48, 149]}},
'B1': 'ngcvyrlb',
{'B2': 0.707089364528656,
'B3': {'C1': -1647311054, 'C2': 33, 'C3': [145, 176, 58, 146]}}],
'A2': {'D1': -7368258932655569183,
'D2': 51808,
'D3': 41,
'D4': [0.9499626755714417,
-0.5833751559257507,
0.28061580657958984,
0.7910577058792114],
'D5': 1443551386136688181,
'D6': -14,
'D7': 2483650937,
'D8': 4080184341},
'A3': -2023,
'A4': 5966536176012329877,
'A5': [833547551, 1004885332, 542110264, 13333592, -1340753543],
'A6': 0.4861893653869629,
'A7': -82688768385266159}
Пример 2
Двоичные данные:
b'SGCF\xac\x00\x00\x00\x02\x00S\x00W\x06\xbewM\xef\xe2\xec\x95\xcaF\x00'
(b'\x03\x00\x00\x00\x83\xbe\xb2s\xf9_[\xc2|\x9e\x04-\xbcjttnvfsi\xbd\xfdB'
b'\xba\xbb#\xa3^H=\x03o\xd8wvldorga\xbe\xcc\xbb\x1d\x91\xb2\xbc\xb9N\x83'
b'\xeb"\xce\x00)\x00>9\xc4\x9d\xf3\xa8\xbf\x86\xbf\xfc \x17\xbe\x90'
b'\x81P\xbf\x0c\xcb?>\xf1\xc4\x05>\xcea\xe1\xf2\xaa\xdc\xb1#B\xbe\xfd\xfd\xde'
b'\xd2\xffK\xaa\x10d))\xda\x96v\x9b\xd5\x95\x0e\xf1\x87ck')
Результат разбора:
'A1': [{'B1': 'jttnvfsi',
{'B2': -0.12366242706775665,
'B3': {'C1': -1155292322, 'C2': 72, 'C3': [61, 3, 111, 216]}},
'B1': 'wvldorga',
{'B2': -0.399865061044693,
'B3': {'C1': -1850557255, 'C2': 78, 'C3': [131, 235, 34, 206]}}],
'A2': {'D1': 4162625625430918847,
'D2': 64544,
'D3': 23,
'D4': [-0.28223657608032227,
-0.5499762892723083,
0.47219863533973694,
0.4030905067920685],
'D5': -960712917131280643,
'D6': -3,
'D7': 3738369867,
'D8': 2853200937},
'A3': 1726,
'A4': 8596791021631031878,
'A5': [702191222, -1680501490, -242785429],
'A6': -0.3485410511493683,
'A7': 6871299496966630844}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x57 0x58
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 2 |
2 | double |
3 | Массив char, размер 3 |
4 | Размер (uint32) и адрес (uint16) массива uint32 |
5 | int32 |
6 | Адрес (uint16) структуры C |
7 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | int16 |
3 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint16 |
2 | uint32 |
3 | int16 |
4 | uint64 |
5 | uint32 |
6 | float |
7 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FWX\x05\x00\x00\x00\\\x00\x00\x00ATtZ\xc6\x0e\x8d\xe8\x05\x00\x00\x00a'
(b'\x00\x00\x00\xc8.\xd2\x03\xcab\x01g\x12l\xc4\xfa\xa4\xa5\xea\xbfxtu\x02\x00'
b'\x00\x00f\x00\x17\xd8\x80\xb9n\x00\x07\x00z\x00\x03\xe3**\xe1\xb0s\xa4-O'
b'\x17\xfaV"\x8bd3\xd7\xae\xbe\x96>\xba\xee\xf3 \x8fu\xc2\x90lehfeaehrwz\x19'
b'G\x06\x088\xba\x87n\xf0\x87\xe4\xd1\xd3\xe6\xbf`ng\xaaE\xf2cO)\xca0\xb3\x9cn'
b'V\x9b\xa5\x8e')
Результат разбора:
'A1': [{'B1': 'lehfe', 'B2': 16757066033599370305},
{'B1': 'aehrw', 'B2': 7422322280670310088}],
{'A2': -0.8327202699468919,
'A3': 'xtu',
'A4': [105322874, 2277128200],
'A5': -1182738409,
'A6': {'C1': -0.7133569205757462, 'C2': 28256, 'C3': -21913},
'A7': {'D1': [62021, 20323, 51753, 45872, 28316, 39766, 36517],
'D2': 707453699,
'D3': -20255,
'D4': 2474440023306249331,
'D5': 3610469515,
'D6': 0.29442352056503296,
'D7': 10431028944537120442}}
Пример 2
Двоичные данные:
b'FWX\x02\x00\x00\x00\\\x00\x00\x00\x16>\x87A\xca\xf2D\x95\x04\x00\x00\x00^'
(b'\x00\x00\x00\xa7\x8e\x9e\xed\x18Bj\xa8\xaa\x94 \x12\x814\xef\xbfjip\x02\x00'
b'\x00\x00b\x00\r*n\x81j\x00\x05\x00v\x00\xcet\x8e\x97E\xae`\xecd\xda'
b"\xad\x8ea\xa7\xcb\xbb\x01t\x1dB\x11>\x95\x1d\xea'\x12\xd8\xbc\x06uyjj"
b'el\x8a\xb8\xf2365B\x98\xf8Z\xc4`\xba\xae\xcc\xbfSR:\xf0\xe4\x97\x1eI\x04\xc4'
b'h\xfa?r')
Результат разбора:
'A1': [{'B1': 'uy', 'B2': 10755988760564284950},
{'B1': 'jjel', 'B2': 12135584820736462503}],
{'A2': -0.9751592020080768,
'A3': 'jip',
'A4': [871544970, 2554475830],
'A5': -2123486707,
'A6': {'C1': -0.22408227658225832, 'C2': 21075, 'C3': -4038},
'A7': {'D1': [38884, 18718, 50180, 64104, 29247],
'D2': 2542695630,
'D3': -20923,
'D4': 12061078154419432544,
'D5': 1946270667,
'D6': 0.14185376465320587,
'D7': 485500432339836309}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa0 0x4b 0x45 0x48 0x55
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | Размер (uint16) и адрес (uint16) массива структур B |
4 | uint64 |
5 | Адрес (uint16) структуры C |
6 | double |
7 | Адрес (uint16) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива uint16 |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | double |
3 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив uint8, размер 4 |
3 | uint64 |
Структура E:
Поле | Описание |
---|---|
1 | Массив uint16, размер 7 |
2 | Размер (uint16) и адрес (uint16) массива uint8 |
3 | double |
4 | double |
5 | uint8 |
6 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xa0KEHU\xa9\xf8\xbcxAK\x7f\xa7*\x9dy\x98\x00\x02\x001T\x83u\xf4\xf2\xd9\x9a'
(b'\x00\x00M\xbfr\xbe\xa2\x1b#T\x00\x00v\xa0\x0e\x83\x7f\xc5T-S\x00\x00\x00'
b'\x02\x00)\x92\xfb\xe5\x8d\xe0\xdfz\xd6\x00\x00\x00\x02\x00-T\xda_'
b'\xc0\xcc\xe3\xda\xd5\xbf\xea\xdf9\xf7\xc9\xcdd?\xa6\x88\x871P?@;\xcd\xb4'
b'\xf9\xa7nu\xbaw\xebE \x19 \xe0\xc3\r\x8c\xe6\xd2\x94\xd5^;\x070F<pJ\xd0'
b'\x9e=\xb2[#S\xb2m\x00\x05\x00q\xbf\xc1\xff\xfc,S\x8b\xd8?\xe0D\x08'
b'i\xa6\xbf\n\xf4#\xa6W\x84')
Результат разбора:
'A1': 2851650680,
{'A2': 4704994591669844376,
'A3': [{'B1': [40974, 33663], 'B2': 10591311346217745110},
'B1': [50516, 11603], 'B2': 6114304725784713941}],
{'A4': 6089840816041859584,
'A5': {'C1': -0.8397493209471745,
'C2': 0.04401037671061525,
'C3': {'D1': 4309299402812323258,
'D2': [119, 235, 69, 32],
'D3': 1810694178553521874}},
'A6': -0.004576333262055421,
'A7': {'E1': [12358, 15472, 19152, 40509, 45659, 9043, 45677],
'E2': [148, 213, 94, 59, 7],
'E3': -0.1406245438039082,
'E4': 0.5083047927382449,
'E5': 244,
'E6': 598103940}}
Пример 2
Двоичные данные:
b'\xa0KEHU\x81\xe2u\xb64 p[\xf5\xc5}\xbd\x00\x02\x003\xd6B\xc0\x92\x19-\x98'
(b'\x91\x00O?\xdb\xe9\x8ci\xb9^\x08\x00z\xa5\x1de\xb8\xa7qNo\xb0\xe3\x00'
b'\x00\x00\x03\x00)\xbe\x99\x1e\xff\x7f+\x98\xa9\x00\x00\x00\x02\x00/\xa5'
b'\xb0,\xa0\xb4d\xf4\xb8?\xee\xce\xdd=jz\xe8\xbf\xc0\xdbyA\x8b\x89\x08Im\xffN)'
b'k\xbaT\x89d$gj\xe8\xd3\xbd\x01\xcb\xe5\x1e\x1a\xcb,\x07\xab\x1a\xecHh'
b'_\xb9r\x1c\x1eB\x14\xdd\x03\xf3\xc6U\x00\x07\x00s\xbfp\xff\xc6'
b'\x85\x16\x1e\x00\xbf\xde\xb8\xd0\xae\xe5\xe3\xb0b\x80\xfe\xdc~')
Результат разбора:
'A1': 2179102134,
{'A2': 3756125629494689213,
'A3': [{'B1': [42269, 26040, 42865], 'B2': 13734042621342095529},
'B1': [20079, 45283], 'B2': 11939091680892089528}],
{'A4': 15439114206299658385,
'A5': {'C1': 0.9627519797830617,
'C2': -0.1316978044552075,
'C3': {'D1': 5291165848397658708,
'D2': [137, 100, 36, 103],
'D3': 7703639971349652766}},
'A6': 0.4361296684705569,
'A7': {'E1': [18536, 24505, 29212, 7746, 5341, 1011, 50773],
'E2': [26, 203, 44, 7, 171, 26, 236],
'E3': -0.004150176494824631,
'E4': -0.4800302227009139,
'E5': 98,
'E6': 2164186238}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc6 0x4f 0x50 0x58
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | int64 |
4 | Массив double, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
3 | Адрес (uint32) структуры C |
4 | uint8 |
5 | int16 |
6 | float |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур D |
2 | Размер (uint32) и адрес (uint16) массива float |
3 | uint8 |
4 | int16 |
5 | int64 |
6 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xc6OPX!\x0b\xb3.e\x00\x00\x00\xa0d\xa8m\xeb}>\x04\x00\x00\x00}'
(b'\x00\xbd\xf3\x17\xeb=f\x13\xc9\xd8+\xb0\x02\xec\x10\xd9\xbf\x88$x'
b'\xac\xae\xe4\xca?~\xb5\x13\xb3#\x9d\xea\xbf\xbd\x02H#\xcej!\x99ue\x11'
b'\x01\x1f\xcc\xc9)9j\x9e\x1d9\x00\x00\x00>\x00\x00\x00C\x00\x00\x00H\x00\x00'
b'\x00\xb7\x05:?X\x88\xc0\xbe\x04\x00\x00\x00M\x00\x02\x00\x00\x00]'
b'\x00\xbc\x0bn\xaa;\xfa\xa4\xab\xb0\x90A\xc5jcrg')
Результат разбора:
'A1': {'B1': 2849,
{'B2': 11955,
'B3': {'C1': [{'D1': 591921853, 'D2': -50},
'D1': 1972969834, 'D2': 101},
{'D1': 3424583953, 'D2': -55},
{'D1': 2657761577, 'D2': 29}],
{'C2': [0.7266497015953064, -0.3760402202606201],
'C3': 188,
'C4': 28171,
'C5': 4724470260365409194,
'C6': 197},
'B4': 160,
'B5': -22428,
'B6': 0.247968390583992},
'A2': 'jcrg',
'A3': -3957707231405280323,
'A4': [-0.39165783178822045, 0.21010383054116155, -0.8316820619199203]}
Пример 2
Двоичные данные:
b'\xc6OPX\xfbL\x00\xd2[\x00\x00\x00\xfc!\xcf\xd4\x15\x88\xbe\x04\x00\x00\x00s'
(b'\x00\xf7\x1c\xa1\xb8N\xd01\x81\xfex\xf7\xcc\xb3\x92\xe7?\x8c\x8c4'
b'\xed\x89;\xea?\x9a\xc8\xe0\xcf\x12\xaa\xea?iC\x05\x82\x9d\x18o\x9cR\t9'
b'\x00\x00\x00>\x00\x00\x00?]L\xbf\xfd\td?,\x9f>\xbf\xd9\xbe`\xbf\x02'
b'\x00\x00\x00C\x00\x04\x00\x00\x00K\x00e`\x10\x01Lr-\xcb{LTEkolb')
Результат разбора:
'A1': {'B1': 19707,
{'B2': 53760,
'B3': {'C1': [{'D1': 2181383017, 'D2': -99},
'D1': 1385983768, 'D2': 9}],
{'C2': [-0.7982978224754333,
0.8907774090766907,
-0.7446162700653076,
-0.8779121041297913],
'C3': 101,
'C4': 4192,
'C5': 6074366109986999297,
'C6': 69},
'B4': 252,
'B5': -12511,
'B6': -0.26579153537750244},
'A2': 'kolb',
'A3': -9137293132434432777,
'A4': [0.7366580012565291, 0.8197679169574186, 0.8332609233969095]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x53 0x4a
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив char, размер 4 |
3 | Адрес (uint32) структуры B |
4 | Адрес (uint16) структуры D |
5 | Массив int32, размер 2 |
6 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | double |
3 | uint16 |
4 | Массив адресов (uint16) структур C, размер 2 |
5 | Массив uint32, размер 6 |
6 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint32) и адрес (uint16) массива uint64 |
3 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint64 |
3 | uint32 |
4 | uint8 |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | int32 |
3 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NSJ\xb0jfmq\x00\x00\x00V\x00\x8c\xe5k)\x99\xc5+\x08\xc1\xfa\x89q`\x04+'
(b']\xce\x076\xc2?\x8de<\x14\x9c\xbe~\xe7\x04\xf8\xfc\x0cm\xa0#>\x00\x00'
b'\x00\x02\x00\x1e\xc3\xc8F\xbe`\xbc5e4\xd8\xb2\x17\xce\x89\xbf\xacG\x1c`+'
b'\x0c\xab\x00\x00\x00\x02\x00:\xa9l\xbf\xe0\xf1\xe3KK+|?\xd0M<\xeaX X\xf6\xaa'
b'\x00.\x00J>\xbd4\xae\x03E\xb4]\xe1,\x9b\xec\x06\xc8\xe6e\xe3\x0cc\xb7'
b"CY\xe4\xcd\xac\x1d\x8eZ\x86\xe8\x865 o\xff\xb3\x19_\x9bP\xc1\x86\x97'"
b'\x15\xa7\xb8o\xdd')
Результат разбора:
'A1': 176,
{'A2': 'jfmq',
'A3': {'B1': -0.529527327592731,
'B2': 0.2547142303960803,
'B3': 63146,
'B4': [{'C1': 1839211326,
'C2': [519816385218821140, 11294604446177754124],
'C3': -15416},
'C1': 1613434027,
{'C2': [5097618189695923416, 12832952754237097756],
'C3': -22164}],
'B5': [1052587182,
54899805,
3777797100,
113829477,
3809239991,
1129964749],
'B6': -6044518605399751115},
'A4': {'D1': 544210867, 'D2': 1828350744882222887, 'D3': 363313263, 'D4': 221},
'A5': [-445961831, -987035455],
'A6': {'E1': -1399, 'E2': 1902117931, 'E3': 24014}}
Пример 2
Двоичные данные:
b"NSJntifa\x00\x00\x00V\x00\x8cK{\xf1'\xa3\xe2\xf9\x1b?d\xb1j\xec\xa8"
(b'\xfb!\xe7\xf2\xa4#\xae\x8a7x\xee\xe6\xc2\xee\xe7&,\x89:\xf6\x8f:\x00\x00'
b'\x00\x02\x00\x1el6p\xd2\x9f\x8aQ\xa7;\x88\xddE[i\x13\x0f2\x81\x7f\x0e'
b'0\x1a\x00\x00\x00\x02\x00:k6\xbf\xb7\xc1\xc8\x87\xf7\xa50?\xe6\xb4>5;'
b'\xb1\x86\xd5\x16\x00.\x00J\xc9f\x8c\xa2\xd8*?\xef\xb0b\xde\xa5\x17!e\xf7'
b'\x88\x08&\x0c\x18\xfeZ\x90O\x8e\xab\x86\x05w\x0c\xe4\x98\x99i\x84'
b'\xde\x1f\xa3\xfb\x9e\xa9;rbr\x05\xed\t')
Результат разбора:
'A1': 110,
{'A2': 'tifa',
'A3': {'B1': -0.09280064887538653,
'B2': 0.7095023193083285,
'B3': 54550,
'B4': [{'C1': 989237050,
'C2': [16713601640284436344, 17214660957006343305],
'C3': 27702},
'C1': 2131636250,
{'C2': [8129735693781384072, 15944250562624565889],
'C3': 27446}],
'B5': [3378941090,
3626647535,
2959269541,
388064759,
2282235404,
419322512],
'B6': 5732707967794875620},
'A4': {'D1': -1734776444,
'D2': 16005691901792041842,
'D3': 1651639789,
'D4': 9},
'A5': [1266413863, -1545406181],
'A6': {'E1': 16228, 'E2': -1318392664, 'E3': -1247}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x53 0x59 0x55
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур B |
2 | Массив char, размер 4 |
3 | Адрес (uint16) структуры C |
4 | int8 |
5 | float |
6 | Адрес (uint32) структуры D |
7 | int8 |
8 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
3 | uint16 |
4 | uint16 |
5 | Размер (uint16) и адрес (uint32) массива char |
6 | int8 |
7 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
3 | Размер (uint32) и адрес (uint32) массива uint16 |
4 | double |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив uint32, размер 3 |
3 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MSYU\x00\x00\x00\x02\x00\x00\x00Znmif\x00b.>\xbe&\x18\x00\x00\x00zT\xd7ibd'
(b'eo\xea\xb5\xc5\xcf\xaa\xa3V$\xf1]\x00\x05\x00\x00\x00\x1d\x82IT\r\xff\xc5'
b'\x0e\xc7\x1fowaskh\xb6\xea\x98\x0c\x0e\xd3:\x8d\xf05\x00\x06\x00\x00\x00'
b';\xc3\x8d\xec\xf3n\x8fh-.\x00"\x00A(\xb1B\x86?Ty`\x9f^\xc8/\x00\x00'
b"\x00\x02\x00\x00\x00^?\xe3w\x0b\x90\x1f\xb7|j\xf3&\xd7\x14\xec\x15'}\xce"
b'\xc5Q+\xc7\x89\xfb`\xb1\x83\x94\x95=\xd0\x93\xe3&r ')
Результат разбора:
'A1': [{'B1': -357186097,
{'B2': -21853,
'B3': 22052,
'B4': 61789,
'B5': 'ibdeo',
'B6': -126,
'B7': 5283863654986336031},
'B1': -1226139636,
{'B2': 3795,
'B3': 14989,
'B4': 61493,
'B5': 'owaskh',
'B6': -61,
'B7': 10226816510029475118}],
'A2': 'nmif',
'A3': {'C1': 0.8299770355224609,
'C2': 2673788975,
'C3': [10417, 17030],
'C4': 0.6082818808479113},
'A4': 46,
'A5': 0.3713843822479248,
'A6': {'D1': 7706546092571890983,
'D2': [2110702929, 734497275, 1622246292],
'D3': 10753980818820330016},
'A7': 84,
'A8': 215}
Пример 2
Двоичные данные:
b'MSYU\x00\x00\x00\x02\x00\x00\x00Wiwjv\x00k)\xbfO\x08\x1b\x00\x00\x00\x83e'
(b'Gapu\xabs\xe7\xf0YO\xd6\n\x03\x86\x00\x03\x00\x00\x00\x1d\xf6\xe8N\x9f'
b'\x8f\x19\x12\xd22ttlmq_p\xd3zsj\xf23\xe5>\x00\x05\x00\x00\x009D\xc4'
b'\xac\xfeol\x11\r\x8a\x00 \x00>\xa2O\xf3\xce*+\xc8\x0e\xc4\xd0\xe1\x16\x9a'
b'kk\x13\xbf\x03\x9a\x0f\x8dS\xb2\x8b\x00\x00\x00\x08\x00\x00\x00[?'
b"\xe5\xa9\xa9.t\x95:b\x9cD\x002\xc9D\xe8\xec_\xcfM\xf4\x83\x9e\xb9\xc7|\xd7m'"
b'S~}\xbd\x9a\xcc\xb4')
Результат разбора:
'A1': [{'B1': -1418467344,
{'B2': 22863,
'B3': 54794,
'B4': 902,
'B5': 'apu',
'B6': -10,
'B7': 16739492301932515890},
'B1': 1601229690,
{'B2': 29546,
'B3': 62003,
'B4': 58686,
'B5': 'ttlmq',
'B6': 68,
'B7': 14171981881935990154}],
'A2': 'iwjv',
'A3': {'C1': -0.5140694975852966,
'C2': 2371072651,
'C3': [41551, 62414, 10795, 51214, 50384, 57622, 39531, 27411],
'C4': 0.6769605548221655},
'A4': 41,
'A5': -0.8087174296379089,
'A6': {'D1': 7105629079726540008,
'D2': [3965701965, 4102266553, 3346847597],
'D3': 2833747669063224500},
'A7': 101,
'A8': 71}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x45 0x47 0x45
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Массив char, размер 4 |
3 | Структура E |
4 | uint64 |
5 | uint8 |
6 | Размер (uint16) и адрес (uint16) массива int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint16) структур C, размер 2 |
2 | uint32 |
3 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | uint64 |
3 | Массив uint8, размер 4 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | double |
3 | float |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива int32 |
2 | int64 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AEGE=\x00]\x00\xb2\x88\x08 \xb1kgzf\x02\x00\x00\x00m\x00(\xf2N\xaf\xa1'
(b'vD\xe5\x97\xfbV\xb0\x8eO\x10\xfac\x8d\x02\x00u\x00:\x809\xbf\x10E~'
b'\x7f\xbe\xa5\xe2\xbf7\xdb\xa2\xbe-\x00\x00\x00\x17\xde\xfa\x14\x1d\\"6j\x18J'
b'\xcb\x10\xae8\xbf\xe0\xedZ\xae\x0c*\xe4?;_\x13\xbeM\x00\x00\x00L{Z'
b'\x07O\xcf\xba$\xc2\x82\x9bY\xcaX0\xd5\x12\xc8\xd3\x1d\x98\xbceZ\xd1;\xa3'
b'o(\xc0\xdf\x9d\xd5s\x8e\xa7')
Результат разбора:
'A1': {'B1': [{'C1': {'D1': -0.724612832069397,
{'D2': -0.5827324380972261,
'D3': -0.3180787265300751},
'C2': 3900781507232062999,
'C3': [106, 24, 74, 203]},
'C1': {'D1': -0.7214059829711914,
{'D2': 0.6301329999327514,
'D3': -0.1439179629087448},
'C2': 2646655669366324044,
'C3': [194, 130, 155, 89]}],
'B2': 537430194,
'B3': -79},
'A2': 'kgzf',
'A3': {'E1': [-718251830, 500418578], 'E2': -1926284303804730840, 'E3': -105},
'A4': 7204088487814911739,
'A5': 141,
'A6': [8044339129764658328, -6373029061368758232]}
Пример 2
Двоичные данные:
b'AEGE=\x00]\x00\xadh\xc0.\x9ayrly\x03\x00\x00\x00m\x00\x07D\x84\x83\xf0'
(b'd\x012Q\x173bi-\xba\x9c,.\x02\x00y\x00\x10qP?\x08\xab!-gJ\xcd?&\xf4<'
b'\xbe-\x00\x00\x00\xfeG9\xf4\xb9\xaa\x9cz\xf2\x0f\x8c\xa6MN=?\xd0hr'
b'v\x8d\x9e\xe0?\x06\xfeQ\xbfM\x00\x00\x00mqo\x05\xf5\x98\x16\xc1\x81^X'
b'\x93V\xa9\xee\x8b\xc8p\x7f\x9f\xe8\x04\ts)P"&\x8bHp{\xe1,\xc6\'\xc1\xd6\xf4'
b'\xbb')
Результат разбора:
'A1': {'B1': [{'C1': {'D1': 0.8142251968383789,
{'D2': 0.22883310035407356,
'D3': -0.18452510237693787},
'C2': 8835124284637136894,
'C3': [242, 15, 140, 166]},
'C1': {'D1': 0.7394760251045227,
{'D2': 0.5193545640388724,
'D3': -0.8202823400497437},
'C2': 13913476276933325165,
'C3': [129, 94, 88, 147]}],
'B2': 784361645,
'B3': -102},
'A2': 'yrly',
'A3': {'E1': [-1947293354, -1619038008, 1929970920],
'E2': 3603272161034519559,
'E3': 81},
'A4': 3214648938240029463,
'A5': 46,
'A6': [8894689026534166569, -4903057969215296287]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x59 0x49 0x59 0x55
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива структур B |
2 | Структура C |
3 | double |
4 | Массив int32, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
3 | Размер (uint16) и адрес (uint32) массива char |
4 | float |
5 | int32 |
6 | uint16 |
7 | Массив uint16, размер 5 |
8 | Адрес (uint16) структуры D |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'YIYU\x00\x00\x00\x02\x00<\xe7\xe8!\xb3\xff\xf9\x00\x02\x00\x00\x00@>\x86'
(b'\x8a\xc9\rg\xad\xa9>e\xfe\x0eT\x91i\xe3@\x84\xd6;\x00B\xbf\xd5\xbb\x00'
b"\xfe\xe7\x84\x00`\xb1'MC\xd2S\x9c_&k\xf5bs-t\xa6\x89")
Результат разбора:
'A1': [{'B1': 95, 'B2': 38}, {'B1': 107, 'B2': -11}],
{'A2': {'C1': -6168,
'C2': 565444601,
'C3': 'bs',
'C4': 0.2627775967121124,
'C5': 224898473,
'C6': 15973,
'C7': [65038, 21649, 27107, 16516, 54843],
'C8': {'D1': 11636, 'D2': -22903}},
'A3': -0.3395388116169329,
'A4': [1622222669, 1137857436]}
Пример 2
Двоичные данные:
b'YIYU\x00\x00\x00\x03\x00<$v\xbaQ\xc3U\x00\x02\x00\x00\x00B\xbfH\xdfg{@'
(b'\xa8\xfb6?\xec\xa0\x84(&J\xbeX\x14G\x00D?\xe9O&\x8b\x10\xd4\xc6[\x14\x97\x9a'
b'\x92\x03\x1a\xec\xbe\xf3R\xa6\xfd\x8ene*\x9f\x17c')
Результат разбора:
'A1': [{'B1': -66, 'B2': -13}, {'B1': 82, 'B2': -90}, {'B1': -3, 'B2': -114}],
{'A2': {'C1': 9334,
'C2': 3125920597,
'C3': 'ne',
'C4': -0.7846588492393494,
'C5': 2067835131,
'C6': 13887,
'C7': [60576, 33832, 9802, 48728, 5191],
'C8': {'D1': 10911, 'D2': 5987}},
'A3': 0.7909119335296502,
'A4': [1528076186, -1845290260]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x56 0x44
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
3 | Структура B |
4 | int64 |
5 | Структура D |
6 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 7 |
2 | uint16 |
3 | Массив float, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int8, размер 2 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | Размер (uint16) и адрес (uint32) массива uint8 |
4 | int8 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PVD\xcf\xfa\xfbW\xc0\x13I\xf7\xaf\xd6\xe7?O\x00\x00\x00U\x00\x00\x00['
(b'\x00\x00\x00a\x00\x00\x00g\x00\x00\x00m\x00\x00\x00s\x00\x00\x00\x07'
b'\x0e\x8c\x8bj\xbf^\x1f\x16\xbf\x8dYM\xbf\xa8\xc9e\xf8>\xb1\xb8,c\xcd\x15'
b'F\x9f\x03\x00y\x00\x00\x00\xe4\xe9\xe4\xef\x1f\xb3\xceK\xbf(\xd8I'
b'\xa5\x9d>\xa8\xad\xdc\x81\x8b=4\x03\xa9\x04^>\xdfT\x87\x15\x1b\xbf\xe4GU'
b'J*?\x9a\xacO\x08\x93\xbeO\xc5*')
Результат разбора:
'A1': 1476131535,
{'A2': 0.7449569539827436,
'A3': {'B1': [{'C1': [-17, 31], 'C2': -0.7961227297782898},
'C1': [40, -40], 'C2': 0.30790165066719055},
{'C1': [-88, -83], 'C2': 0.06811878085136414},
{'C1': [52, 3], 'C2': 0.21681465208530426},
{'C1': [-33, 84], 'C2': -0.6057972311973572},
{'C1': [-28, 71], 'C2': 0.6651967167854309},
{'C1': [-102, -84], 'C2': -0.28717276453971863}],
{'B2': 3591,
'B3': [-0.916191816329956, -0.5864161252975464, -0.8021476864814758]},
'A4': 3222520417397098920,
'A5': {'D1': 99, 'D2': 2672170445, 'D3': [79, 197, 42], 'D4': -28, 'D5': -23},
'A6': -28}
Пример 2
Двоичные данные:
b'PVDq\x152\x8a`]|\xdamb\xd4\xbfO\x00\x00\x00U\x00\x00\x00[\x00\x00\x00a'
(b'\x00\x00\x00g\x00\x00\x00m\x00\x00\x00s\x00\x00\x00\rxo\xf4X\xbfb\x08\xc1'
b'>&\xb1;?A\xe0Mk-\xaa~\x9fNQ\x1e\xe5c\x02\x00y\x00\x00\x00y\xdb!V'
b'\x05s\xfe\xf8\xbdF-\x9b\xdc\x0c?\n(\x98\x08Z>\xc00\x13\xb0\xc7\xbeoqiq\xb6'
b'>#3\xef)X\xbeg\xd8\xe81\x1d\xbf\xc8!')
Результат разбора:
'A1': 2318538097,
{'A2': -0.31850763641837965,
'A3': {'B1': [{'C1': [86, 5], 'C2': -0.12157907336950302},
'C1': [70, 45], 'C2': 0.5502411723136902},
{'C1': [10, 40], 'C2': 0.21292340755462646},
{'C1': [-64, 48], 'C2': -0.39001521468162537},
{'C1': [111, 113], 'C2': 0.35633400082588196},
{'C1': [35, 51], 'C2': -0.21109746396541595},
{'C1': [103, -40], 'C2': -0.6140427589416504}],
{'B2': 30733,
'B3': [-0.8474797606468201, 0.377017080783844, 0.733171820640564]},
'A4': -6953933662562951103,
'A5': {'D1': 78, 'D2': 1675959889, 'D3': [200, 33], 'D4': 121, 'D5': -37},
'A6': 33}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x4c 0x4b
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
3 | Адрес (uint32) структуры B |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int32 |
3 | Размер (uint32) и адрес (uint32) массива char |
4 | Массив адресов (uint16) структур C, размер 3 |
5 | Структура D |
6 | Массив int16, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива uint8 |
2 | uint8 |
3 | int32 |
4 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DLKW\xa0\xa8\xbd;\xd9\x8b\xa7\x0c\x1dY\xd4$\x00\x00\x00fie\xc6\x04$\xb3~\xa8'
(b'\xf6\xa7\xf6\xe1\xa1\x86g\xbc\xa6p\xcb\x11e\x04\x02\x00\x00\x00\x13\x00'
b'\x00\x00\x15\x00\x19\x00\x1d\x00\x03\x00\x00\x00!\x00\x00\x00\xd1\x14M? f\rc'
b'\xb6\x14ZZ\xf9')
Результат разбора:
'A1': -0.08233707398176193,
{'A2': 15301293149155744059,
'A3': {'B1': 28838,
'B2': 73732555,
'B3': 'fi',
'B4': [{'C1': -14747, 'C2': 9220},
'C1': 32435, 'C2': -2392},
{'C1': -2393, 'C2': -24095}],
{'B5': {'D1': [134, 103, 188],
'D2': 209,
'D3': 541019412,
'D4': -1235022490},
'B6': [23060, -1702]}}
Пример 2
Двоичные данные:
b'DLK\xf6K\x11>Q\x02\xd0\x16R\xfa\xd4\xef%\x00\x00\x00jp\x81|G\xb1\\r\xb0'
(b'\xf8T+\xe2O\xf7\x13SX\x8en\x81\xb0\xf5\xda\x02\x00\x00\x00\x13'
b'\x00\x00\x00\x15\x00\x19\x00\x1d\x00\x04\x00\x00\x00!\x00\x00\x00\x0ck\x0f'
b']\xbb9\xa7\xee93!{\xa4')
Результат разбора:
'A1': 0.14189133048057556,
{'A2': 17281712900604428881,
'A3': {'B1': 28302,
'B2': -621432703,
'B3': 'jp',
'B4': [{'C1': 31873, 'C2': -20153},
'C1': 29276, 'C2': -1872},
{'C1': 11092, 'C2': 20450}],
{'B5': {'D1': [247, 19, 83, 88],
'D2': 12,
'D3': -1151529109,
'D4': 971941689},
'B6': [8499, -23429]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x56 0x52 0x48 0xee
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Структура D |
3 | Размер (uint32) и адрес (uint32) массива uint64 |
4 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | uint16 |
3 | Массив структур C, размер 2 |
4 | Размер (uint32) и адрес (uint16) массива uint16 |
5 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint32 |
2 | uint16 |
3 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'SVRH\xee\x00\x07\x00;4\xba\xe9\xa4\xa0\xbc\xbd\xdd\xa8\xbf\x9fi&\x8b\x00'
(b'\x00\x00\x04\x00B5@C\x9e\x00\x02\x00JRvidu\xeb\xf2\tI\x13\x00'
b"\x00\x00\x02\x00\x00\x00R\xe3.\xaabywrwwlz\x8d/TT'\xd5\xb1\xb3\x03\x00"
b'\xe9Q\xc8\x156\xad\xda\xb0A\xc9\x96)OoE\x18S\xb0:\xe7\x9a\x8d')
Результат разбора:
'A1': {'B1': 'ywrwwlz',
{'B2': 13498,
'B3': [{'C1': -375086916, 'C2': -16931},
'C1': -1463836823, 'C2': 9867}],
{'B4': [36143, 21588, 10197, 45491],
'B5': 893404062},
'A2': {'D1': [50391377, 3356833453], 'D2': 21110, 'D3': 7594324527891958035},
'A3': [15758167430232887151, 4978821404425689741],
'A4': -483480990}
Пример 2
Двоичные данные:
b'SVRH\xee\x00\x05\x00;6)\xac\x13\x93\xff\x9c\x01\xbf\xc1\xeb^\xa8\xe6\x00'
(b'\x00\x00\x05\x00@6\xc8\x880\x00\x02\x00J,\xee\xfe}kj\x0e\xd5\xc9\xf9\x00'
b'\x00\x00\x03\x00\x00\x00Rd!Q\x10eceqn)%\xee\xe0\xe47\x84\xcc\xe2\xe3\xc1\xaf'
b'\xf9\xce\x06\xd6[%\xab\xfbCZl5wC\xde\x0e#\xca\xb7\xd8\xd0\x88%L'
b'\x06\xbd\x1e\xab\xddC')
Результат разбора:
'A1': {'B1': 'eceqn',
{'B2': 13865,
'B3': [{'C1': -1408003073, 'C2': -25599},
'C1': -1077810338, 'C2': -22298}],
{'B4': [10533, 61152, 58423, 33996, 58083],
'B5': 919111728},
'A2': {'D1': [3249535438, 114711333], 'D2': 11502, 'D3': -108812712727426567},
'A3': [12392572855281612611, 16000765879668756616, 2687530486966508867],
'A4': 1679905040}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xef 0x48 0x4c 0x51 0x50
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива структур B |
2 | double |
3 | Адрес (uint16) структуры C |
4 | int16 |
5 | uint8 |
6 | Массив float, размер 8 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | double |
3 | Массив char, размер 4 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint16) массива int32 |
3 | uint8 |
4 | uint8 |
5 | Адрес (uint16) структуры D |
6 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xefHLQP\x02\x008\x00\x00\x00h\x14\xf0DI]\xec\xbf^\x00\xad\xc2s\x9f\x8bm>'
(b'\x04b\xc6>\xed*\x94>x1N\xbf\x0b\xda]\xbe\x8f\xe8f\xbf9\xe2{>\x86*\x0c\xbf'
b'\x8bE\xb0g\xb7\xf2\xd3\xf5\xb7?yjzoK\x1c.x\xe1\x94\xa9\xd4\xe5?arzi'
b'\xc0\xc9\x11);\xf8{\x8d6\xe2\xff\x02\x00\x00\x00T\x00\xd0\x1b\\\x00Vi\x8a'
b'\xff')
Результат разбора:
'A1': [{'B1': 17803, 'B2': 0.09359478641218177, 'B3': 'yjzo'},
{'B1': 7243, 'B2': 0.6822097690417246, 'B3': 'arzi'}],
{'A2': -0.8863874765817288,
'A3': {'C1': -1,
'C2': [689031616, -1921255365],
'C3': 208,
'C4': 27,
'C5': {'D1': 54, 'D2': -30},
'C6': -7706282},
'A4': -15699,
'A5': 115,
'A6': [0.2319779247045517,
0.38746654987335205,
0.2893899977207184,
-0.8054423332214355,
-0.21665208041667938,
-0.9019860625267029,
0.2459801584482193,
-0.5475238561630249]}
Пример 2
Двоичные данные:
b'\xefHLQP\x02\x008\x00\x00\x00d3%\xd16\x1c\xe3?^\x004\xb9\xca\r\x92\xab\xbd'
(b'K\xce\x15\xbf\x19\xc2N\xbf\x13\xe9n\xbf{\xa7}\xbf\xb4\xc4\x1b>\xc4s9>'
b'i\x1a\xdd>\x0b\xf9\xec\xa39\xf2\x8e\xc1\xe4\xbffrfn\xbf(\x08/\xbb\xa2<{\xd4?'
b'rwbq1.H(\x9a(\xa0\xa0\xf1m\\\x02\x00\x00\x00T\x00\xf43\\\x00\xad6(i')
Результат разбора:
'A1': [{'B1': -1781, 'B2': -0.6486277323684795, 'B3': 'frfn'},
{'B1': 10431, 'B2': 0.3200217808887236, 'B3': 'rwbq'}],
{'A2': 0.5971941075200502,
'A3': {'C1': 92,
'C2': [675819057, -1600116582],
'C3': 244,
'C4': 51,
'C5': {'D1': 241, 'D2': 109},
'C6': 1764243117},
'A4': -18124,
'A5': 202,
'A6': [-0.08377466350793839,
-0.5851790308952332,
-0.8076491951942444,
-0.9332439303398132,
-0.9908367991447449,
0.1521175503730774,
0.18110567331314087,
0.4318421185016632]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x46 0x44 0x48
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint16) массива структур B |
3 | float |
4 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | uint8 |
3 | Размер (uint32) и адрес (uint16) массива uint16 |
4 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | int8 |
4 | double |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint16) и адрес (uint16) массива int16 |
3 | uint32 |
4 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BFDH\xd4n7G\xba#\x8fA\x02\x00\x00\x00:\x00Ip\x96><_\x98\xcf\x03\x00'
(b'\xa0\x00\xb7\t\x1c\x88\xf0\x93??\xe8\xf1\xd8\xcf\x9d\xee>7\xdd\xcb'
b'\xa4\xc8\xf3\xbb\xa0w\xf2\xf9t\xcb\xa6$\xfd[\x89uv\xd2\xbf= ;\x81f'
b'\xa78\xa0\xbf\x87\xa0\xd8\xb02J\x9a\xc3?\xeb4\x9b\xbc%*\xb2\xd7?\xbe\x04'
b'\x00\x00\x00&\x00\x92\xaa\xb2\x96]\xbfz\x9e\xa30~\xd8\x89\xa1\xf0'
b'\xb5\xbf\xd6\xd0\x84"\xa3\x06\xea\xd8?,TJ\x13\x97F3\xe2\xbf\xb4\xa4I\xb5'
b'\xdf\x18X\xd7\xbf\xbb\x06\x00\x00\x00.\x00\x8b$i\x13\xf1\x16\xad\x17'
b'\xf9aY\x85\xe1}')
Результат разбора:
'A1': 4724033817100644052,
{'A2': [{'B1': [{'C1': 166,
'C2': -0.288480171337101,
'C3': 61,
'C4': -0.03168223501471901},
'C1': 135,
{'C2': 0.15314605212342247,
'C3': -21,
'C4': 0.3702493065379031}],
'B2': 190,
'B3': [61928, 53208, 61085, 14142],
'B4': 11419650213832469138},
'B1': [{'C1': 163,
{'C2': -0.08570298781750618,
'C3': -42,
'C4': 0.38928380900513293},
'C1': 44,
{'C2': -0.5687592459383475,
'C3': -76,
'C4': -0.36475202414035324}],
'B2': 187,
'B3': [52189, 51364, 48115, 30624, 63986, 52084],
'B4': 1706045058511873163}],
'A3': 0.2938254177570343,
'A4': {'D1': -812097732,
'D2': [25081, -31399, 32225],
'D3': 2283538871,
'D4': 0.7483510971069336}}
Пример 2
Двоичные данные:
b'BFDH\xbc\xb5\xda\xa9R&g\xd4\x02\x00\x00\x002\x00\xd2\x15u>W]\r\x1f\x05\x00'
(b'\x98\x00zc\xab/\r\x03x\xbf\x9fS\x9c\x182\x19\x87\xed]D\x92\xb5\x13\x1c'
b'\xca\xa6\xf8\xcd\xba\xea\xbfHh\xd0\xbc\xde\xa4w\xc8?\x93\xd6\xb9l'
b'\xef\xb4\xae\xea?\xc8&\x8dE&\x1c\x1c\xed?\xa1\x02\x00\x00\x00&\x00\x04Y\x14'
b'\x88\x8a\x0ft;\x1a|\xa5|\n\xb4A\xd3\xbfY\x82\x87_\x86\xd78\xe8\xbf\xa8'
b'`\xb67\x14P\x0f\xdc\xbfa\x0eL\xef\xba0\xf6\xe6\xbf\x18\x04\x00\x00\x00*\x00'
b'T\xd5\x94\xf8\x1f\xf7Nq\xdb\xc1\xfa\xb3\x00\x81\x8b\xee\x1f{')
Результат разбора:
'A1': 15305243995120776636,
{'A2': [{'B1': [{'C1': 19,
'C2': -0.8353032928919819,
'C3': 72,
'C4': 0.19115124584061793},
'C1': 147,
{'C2': 0.8338265110267524,
'C3': -56,
'C4': 0.9096813914769981}],
'B2': 161,
'B3': [21407, 6300],
'B4': 4284066233199122692},
'B1': [{'C1': 26,
{'C2': -0.3008852102671751,
'C3': 89,
'C4': -0.756938707778531},
'C1': 168,
{'C2': -0.43843461965921016,
'C3': 97,
'C4': -0.717552533251707}],
'B2': 24,
'B3': [6450, 60807, 17501, 46482],
'B4': 8164734891155838292}],
'A3': 0.23934105038642883,
'A4': {'D1': 520969559,
'D2': [-15909, -19462, -32512, -4469, 31519],
'D3': 799761274,
'D4': -0.9687965512275696}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x2e 0x43 0x4c 0x5a 0x59
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Адрес (uint16) структуры B |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | Массив структур D, размер 5 |
3 | Адрес (uint32) структуры E |
4 | uint16 |
5 | uint8 |
6 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | Адрес (uint16) структуры F |
3 | Массив float, размер 8 |
Структура F:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива int8 |
2 | uint32 |
3 | Массив uint16, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'.CLZY;\x80\xcb\xb7\x00Q9\xfc\xe9\xdf\x02\xbfm\xd1\x0b3\xb6[\x00'
(b'\x00\x00\x02\x00\x15\xe0Z\xd2\x19\xcd\xc1\xddn\xf6\xf8\xbf\xd9\xc1\\\xfb'
b"\xea\xea\xd0\x00\x17\xbe\xa03J\xbfM\x19\x98\xbe\xba\x90'\xbf?\x97\xa9?n\xf3"
b'\x85\xbfnI)\xbf=\x13V?\x05\xce\xac\x00\x0b\x94\xf31pFB\x894e\x9d\xf0Y\xab'
b'\xb8\xfe\x11\x17;\xa0l"\x10\t3q\xa1.\x97\x0e\xe5k\xdb\xa9k1B\x86t\x16\x08)'
b"\xb26+F\x00\x00\x00'\xb3\xca\xd6\x80c")
Результат разбора:
'A1': 998296503,
{'A2': {'B1': {'C1': 4178471698326056401, 'C2': 2867},
'B2': [{'D1': 148, 'D2': -922833001567931291},
'D1': 157, 'D2': -1127681420654733509},
{'D1': 160, 'D2': 7791807937008214318},
{'D1': 151, 'D2': 1073382677382115650},
{'D1': 134, 'D2': 8364882333063850822}],
{'B3': {'E1': -0.4024269542821175,
'E2': {'F1': [-74, 91],
'F2': 3764048409,
'F3': [52673, 56686, 63224]},
'E3': [-0.31289130449295044,
-0.8011717796325684,
-0.3643810451030731,
-0.7484079003334045,
0.9334033131599426,
-0.9308038353919983,
-0.7385762929916382,
0.5226848125457764]},
'B4': 46026,
'B5': 214,
'B6': 32867}}
Пример 2
Двоичные данные:
b'.CLZYl(\x00\xd1\x00R\x87s\xe6\xb7\x07\xc7Zm<\xd8y\xa6\x02\x00\x00\x00\x03'
(b'\x00\x15\xd94\x15\xc38\n\x99\\s\xd0\xbf\xbe.\x90\xb7\xf2\xdc\xa0'
b'\x00\x18\xbe\xa0eY?]M\x89>\xb8\xbd\xb2>\xd7\xf8/\xbf*{\x8f?$8\xa6\xbf\x07'
b'\x00\xe9>\x8cj\x81\x00\x0bFp}\xca\xe0QT\x86\xe3\xc9\x19"\xecl6\x93\xaeFY:'
b'\x80Lu;#)\r\xf7\x1d\x19\xba\xcb\xa1\x99"T\xcd\xb7\xed\xa7\xb1we>'
b'\x8b\x00\x00\x00(\x83\xd4\xac\x01\xf6')
Результат разбора:
'A1': 1814560977,
{'A2': {'B1': {'C1': -8686345582483645843, 'C2': 15576},
'B2': [{'D1': 70, 'D2': 8105857969122739939},
'D1': 201, 'D2': 1811269949672631878},
{'D1': 89, 'D2': 4215453317605828877},
{'D1': 247, 'D2': 2096912485269971540},
{'D1': 205, 'D2': -5193310414634140021}],
{'B3': {'E1': -0.11789803019461198,
'E2': {'F1': [121, -90, 2],
'F2': 3644069315,
'F3': [14346, 39260, 29648]},
'E3': [-0.31327322125434875,
0.8644643425941467,
0.36082226037979126,
0.4218153655529022,
-0.6659478545188904,
0.6414893865585327,
-0.5273576378822327,
0.2742500603199005]},
'B4': 33748,
'B5': 172,
'B6': 502}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x3 0x4d 0x4e 0x58
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint32) и адрес (uint32) массива структур B |
3 | float |
4 | int8 |
5 | uint8 |
6 | Массив структур D, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | Размер (uint16) и адрес (uint32) массива uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | uint32 |
4 | double |
5 | Размер (uint32) и адрес (uint16) массива uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x03MNX\xa2\xaa\x00\x00\x00\x03\x00\x00\x00_?F\xae6\xcc{I\xbe\x01\xce'
(b'\x14\x90\xd0m\xa6\xbf\xd9(\xef\xd4\xbfDH\x00\x00\x00\x04\x00\x86\xf7>\xfb G'
b'W\x8f\x0e\xd2\xbf\xaf\xec-\x1d\x065\xc0\x00\x00\x00\x04\x00\x96p\xbd'
b'\x99\xac\xaf\xaa\xa3\x00\xfb\xbf\xe5\x98\xb3\xd9/\xa5\x92\x00'
b'\x00\x00\x03\x00\xa6\x8b\x87~\x1f8\xe8\xf4\x01?\x1e\x19\x05\x00\x02\x00'
b'\x00\x00YRL\xa9>3\xb8\xd4\x00\x02\x00\x00\x00[\x1d\xcd\xc5\xbf'
b'\x15\xee\x84\x00\x02\x00\x00\x00]!\xf6\x11\xc6\x05_\rb-\x0c\x85\xc9b\xcb\x8a'
b'\x88g\x9a\xeb\x83\xd4D\xc5"s\x87\x19|\x1fN(\xd1EO\x90\xac\x13\x01\xe4'
b'\x08\xdb+\xcc\xdf\xe6')
Результат разбора:
'A1': 41642,
{'A2': [{'B1': {'C1': 62465, 'C2': 0.6175692677497864, 'C3': [139, 135]},
'B2': 82},
'B1': {'C1': 19625, 'C2': 0.1755097508430481, 'C3': [126, 31]},
{'B2': 29},
'B1': {'C1': 52677, 'C2': -0.5856707096099854, 'C3': [56, 232]},
{'B2': 33}],
'A3': 0.7760957479476929,
'A4': -52,
'A5': 123,
'A6': [{'D1': 73,
'D2': -0.12676268815994263,
'D3': 2429578662,
'D4': -0.3931235864266154,
'D5': [4128359941, 1594712621, 210094434, 3414853735]},
'D1': 247,
{'D2': 0.4904806315898895,
'D3': 1468993234,
'D4': -0.06234875659275074,
'D5': [2599125972, 1153770099, 2266594335, 1311297861]},
'D1': 112,
{'D2': -0.07503639906644821,
'D3': 2862809339,
'D4': -0.6748904458919915,
'D5': [1334881299, 31721691, 734846950]}]}
Пример 2
Двоичные данные:
b'\x03MNX\x11u\x00\x00\x00\x02\x00\x00\x00]?Dk,\x93r0\xbfJ\xb8\xd5&1\xe0'
(b'\xc9?\xe23/\xaf%w\x10\x00\x00\x00\x06\x00wn\xbe\xa89\x1dZ\x11\x14\xc9'
b'\xbf\xeb\x81\xef\xf7\x8e\x7f`\x00\x00\x00\x02\x00\x8f\x87>\xfc\xe1G\xff'
b'\xba\xd7\xb4\xbf\xea\xe8,\xe0}\x9d\x02\x00\x00\x00\x03\x00\x97\xe9\xef\x83'
b'"\x1dA\xbfd\xedy\x00\x02\x00\x00\x00Y\r;:\xbe\x9f\x93o\x00\x02\x00\x00'
b"\x00[\xea\xec0W\xa7(\x05\x06\xb6&\xd6r\xa5'\xe94PN\x1d\xdax\x1a"
b'\x80\x05"\xd6\xbf\x14\xccV\x18\x97y\x97\xd6\xe2\xf7\xed\xb4(\x05ed\xa7\xee')
Результат разбора:
'A1': 4469,
{'A2': [{'B1': {'C1': 7489, 'C2': -0.8942485451698303, 'C3': [233, 239]},
'B2': 13},
'B1': {'C1': 15162, 'C2': -0.3116717040538788, 'C3': [131, 34]},
{'B2': 234}],
'A3': 0.7672603130340576,
'A4': -109,
'A5': 114,
'A6': [{'D1': 48,
'D2': -0.7918828129768372,
'D3': 640803017,
'D4': 0.568748323519431,
'D5': [3962591143,
671418038,
651588261,
669594704,
1310579320,
444597538]},
'D1': 110,
{'D2': -0.3285607397556305,
'D3': 1511068873,
'D4': -0.8596114955034686,
'D5': [3602846924, 1444452217]},
'D1': 135,
{'D2': 0.4939062297344208,
'D3': 4290434996,
'D4': -0.8408417114814315,
'D5': [2547442423, 3988006917, 1701095406]}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x37 0x54 0x4f 0x46
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | int16 |
3 | Массив char, размер 7 |
4 | Размер (uint32) и адрес (uint32) массива структур B |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Адрес (uint32) структуры C |
3 | int32 |
4 | double |
5 | Адрес (uint32) структуры D |
6 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив uint8, размер 7 |
3 | double |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | float |
3 | Размер (uint32) и адрес (uint32) массива uint8 |
4 | uint32 |
5 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'7TOF=K\xd3\x98jkhdvxc\x02\x00\x00\x00\x8d\x00\x00\x00\x910Q\xad\xaa'
(b"'\xf1[\xc5C\xb7&\xc6%\x99\xf0\x9b\xefM\xa2\x93\xd3?\xbaw\xad\xcd\x1c\x93"
b'O\x88\x06\xa6\xe1\xbfV4\x08>\x04\x00\x00\x00.\x00\x00\x00\xa7\x86'
b'\x8e=\x91\xc6\x84a;\x0e\xfc<t\xaf\x8b\xcdh\xb0\x91-\x91\xc4\xc3D\x1e\x1e'
b'\x82\x82_\xd8s\xf0?\xe7\xbf\xc5\xe0s\xcf\x18\xf8\xff\xf7\xa4V\xc9'
b'\xbf\xf4\xcdf\xbd\x04\x00\x00\x00i\x00\x00\x00<t\x8f\xa2z\xf2\xa5'
b'\xd7\x12Y\xd9\xe9\n\x17\x00\x00\x00d\x06;9LP\xb9\x94\xa0~\xd9\xbf2\x00'
b'\x00\x00#\x95k\x02\xf2A1\xa9lR\x00\x00\x00\xed\xc3Om\x1e\x12\xc6\xbcZ'
b'\xf6\xee\xbfm\x00\x00\x00\x8f\xba;\xb0\x00\x19\x1a\x0c')
Результат разбора:
'A1': 19261,
{'A2': -26413,
'A3': 'jkhdvxc',
'A4': [{'B1': 10,
'B2': {'C1': 6625120140844413073,
'C2': [197, 67, 183, 38, 198, 37, 153],
'C3': 0.30588586436209564},
'B3': 960169572,
'B4': -0.39835371517006446,
'B5': {'D1': -0.5515167867966713,
'D2': 0.13301214575767517,
'D3': [186, 119, 173, 205],
'D4': 1032750759,
'D5': 4394402984608712337},
'B6': -6255145899762412253},
'B1': 108,
{'B2': {'C1': 3283599567501373300,
'C2': [145, 196, 195, 68, 30, 30, 130],
'C3': -0.7265550863839823},
'B3': 1833944045,
'B4': -0.9675725638376809,
'B5': {'D1': -0.1979566775261794,
'D2': -0.056348755955696106,
'D3': [197, 224, 115, 207],
'D4': 2727310396,
'D5': 16850597418245681786},
'B6': 872036968597011087}]}
Пример 2
Двоичные данные:
b'7TOF``\xfa\x12shhyhdu\x02\x00\x00\x00\x8d\x00\x00\x00\x0c\xe9\x19\xec\x94'
(b'\xbd,\xcc(\x0e\xd3\xbce\xdcU\x14b\xa2Gu5\xec?x{\x0f#\xec\xfd\xcf8\x9b\xab'
b'\xef?K\x8f@\xbe\x04\x00\x00\x00.\x00\x00\x00\xfck\xaf\xe2\xac\xce\xb6hv,'
b'\t\xa2\xc4%\x9e\xae\xa2T\x8d`\x9aig\xad\xa5\x806\xd4w0\xd4/^\xdc'
b'\xbf\x04\xdb\x98i\x9aR\xe0\xa5\xc1\x8f\xee\xbfu\xe0A>\x04\x00\x00'
b'\x00i\x00\x00\x00\x01\xd4\x8f\x07p\xb9\xbe\xe3\x86\x80/r\x9a\x17\x00'
b'\x00\x00\xce1\xb3Wp\xefq4\xba\x9c\xc7?2\x00\x00\x00\xb3\xdb\xbb\xc2&\xec'
b'\x12K\xeeR\x00\x00\x00\xfc\x13\xa7\xe1\xbe&H%\x15>\xec?m\x00\x00\x00\x90'
b'\xe2\x7fD\x02\xb2\xb1\xe3')
Результат разбора:
'A1': 24672,
{'A2': 4858,
'A3': 'shhyhdu',
'A4': [{'B1': 154,
'B2': {'C1': 14712342530026498316,
'C2': [40, 14, 211, 188, 101, 220, 85],
'C3': 0.881525649939308},
'B3': 1471361486,
'B4': 0.1844704395369905,
'B5': {'D1': 0.98969803901849,
'D2': -0.1880466192960739,
'D3': [120, 123, 15, 35],
'D4': 3803147260,
'D5': 11675912396009295532},
'B6': 5409645753645390771},
'B1': 238,
{'B2': {'C1': 6957310057048319428,
'C2': [154, 105, 103, 173, 165, 128, 54],
'C3': -0.44324870797742943},
'B3': -509144068,
'B4': 0.8825784423981629,
'B5': {'D1': -0.955048393227645,
'D2': 0.18933279812335968,
'D3': [4, 219, 152, 105],
'D4': 126866433,
'D5': 8227936361064085872},
'B6': -2039653433413213552}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x44 0x53 0x4f 0x1f
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | Массив адресов (uint16) структур B, размер 7 |
3 | Структура C |
4 | Массив char, размер 5 |
5 | int8 |
6 | float |
7 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int32 |
3 | int32 |
4 | uint16 |
5 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | uint32 |
3 | int32 |
4 | Размер (uint16) и адрес (uint16) массива int32 |
5 | int8 |
6 | uint16 |
7 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RDSO\x1f\x02\x00\x00\x00D\x00F\x00T\x00b\x00p\x00~\x00\x8c\x00\x9a'
(b'\x00\xba\xe2\xc4\x13\x8f\xd3lwjcx\x10\xafda>Lp\xe1}\x8d\xc6\xd3~\xad3\xbb'
b'\xdd%e@\x03\x03\x00\xa8\x006,\x13\x93\xf1F?ka\xe3\x157\x07W9\x9eBu\xa7'
b"\x0b$\xa7r\x056\x04\xc2\xf9pU\x8aC\xfe0\xe9Y\x1cuN\xdc\x82']\x08\x86\xe4L"
b'\x88\xfcI\x1f\xee\xe7(X\x8c\xab+S\xab\x0e\xc2\\9\x1a\x82\xcd-\x99\xc32'
b'l\x03\xcf\xfb\x9c\x98\x94t\xd7\xad\xf3`\x9b./\xdb\xa8\x05\xa5\x11'
b'\xa4\xb7x\xbb\xaaY\xd4T\xda\x90v\xf8B\ta\xe9\xac\xc1b\x86t\xb3+q'
b'\xc2\x86\xf9 ')
Результат разбора:
'A1': 'ka',
{'A2': [{'B1': 5603,
'B2': 962004791,
'B3': -1485487458,
'B4': 9227,
'B5': 29351},
'B1': 13829,
{'B2': 1895416324,
'B3': -29128107,
'B4': 59696,
'B5': 7257},
'B1': 20085,
{'B2': 1562870492,
'B3': 1290044936,
'B4': 64648,
'B5': 8009},
'B1': -6162,
{'B2': -1416865752,
'B3': 246108971,
'B4': 23746,
'B5': 6713},
'B1': -12926,
{'B2': 851679533,
'B3': -70319252,
'B4': 39068,
'B5': 29844},
'B1': -21033,
{'B2': 781934835,
'B3': 94952239,
'B4': 4517,
'B5': 47012},
'B1': -17544,
{'B2': 1423202730,
'B3': -126447398,
'B4': 2370,
'B5': 59745}],
'A3': {'C1': 331670202, 'C2': 54159},
'A4': 'lwjcx',
'A5': 16,
'A6': 0.22011063992977142,
'A7': {'D1': 9138866379869483084,
'D2': 3720033197,
'D3': 54551845,
'D4': [-2040348244, 1898689396, 553223874],
'D5': 54,
'D6': 4908,
'D7': 0.7771236300468445}}
Пример 2
Двоичные данные:
b'RDSO\x1f\x02\x00\x00\x00D\x00F\x00T\x00b\x00p\x00~\x00\x8c\x00\x9a\x00@\x010'
(b'\x0e\xde\xe2wsjxt\xc6\r\x8f\x1d?&\xd1\xde\xa2\x0e\xcd\x94\xbf\x83\x9e{'
b'\x08$\x82\xe1\x87\x02\x00\xa8\x00\xab\x1b\x84Y\xbfv?tn\xef-\xb2\xe7\x87\x8e'
b'wwSE\xe4u\x0e\x01\xf7\xbc\xfc\x06\xce\xfa\xc6} \xe6\xe2\x878\xf8\xab\xd3'
b'\xe7}@X\xf9\xf0@Z\x7f\xb8b\xc5.HH\xb7\x08i\x19\x03\x17\x96\xdemm\xca\xc41'
b'3\xb5a\x02\xa93c\xe5x\xa0\xf8\xe7n\xc9U\x95\xd8f\xdc\xc1N7U\xaa'
b'\xb2\x7f\xad\x1f\xd6:3\xbcv\xc8\xeeR\x11s\xc1\x880\x19I\xf9B\x9c"i')
Результат разбора:
'A1': 'tn',
{'A2': [{'B1': 11759,
'B2': -1903695950,
'B3': 1163097975,
'B4': 30180,
'B5': 270},
'B1': -17161,
{'B2': -87161092,
'B3': -434078266,
'B4': 34786,
'B5': 63544},
'B1': -11349,
{'B2': 1480621543,
'B3': 1514205433,
'B4': 47231,
'B5': 50530},
'B1': 18478,
{'B2': 1762178888,
'B3': -1776876775,
'B4': 28126,
'B5': 51821},
'B1': 12740,
{'B2': 39957811,
'B3': -446483543,
'B4': 41080,
'B5': 59384},
'B1': -13970,
{'B2': 1725470037,
'B3': 927908316,
'B4': 43605,
'B5': 32690},
'B1': 8109,
{'B2': -1137493290,
'B3': 1391380598,
'B4': 29457,
'B5': 35009}],
'A3': {'C1': 238027072, 'C2': 58078},
'A4': 'wsjxt',
'A5': -58,
'A6': 0.6154640316963196,
'A7': {'D1': -4641859853166391002,
'D2': 142319235,
'D3': -2015264220,
'D4': [-112649936, 1763875906],
'D5': -85,
'D6': 33819,
'D7': 0.9638572335243225}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x4d 0x53 0x21
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Адрес (uint32) структуры B |
3 | int32 |
4 | Адрес (uint16) структуры E |
5 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | int32 |
3 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
3 | int16 |
4 | int32 |
5 | float |
6 | Размер (uint32) и адрес (uint16) массива структур D |
7 | uint64 |
8 | Массив uint64, размер 4 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива float |
2 | uint16 |
3 | Размер (uint16) и адрес (uint16) массива uint16 |
4 | float |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZMS!?\x10L{\x00\x00\x00L\x9c\x90.\xed\x00\x91\xa7\x7f?g\xafQ\xbf\\\xce\x19'
(b'\xf2Z\xd0)>\xb1\x1b\x84\xbfS\xa4D\x8d\xc9!5\x00\x02\x00\x00\x00\x14\x19\xef'
b'\x00\x02\x00\x1c\xbf\x16\x8a\xe3\x00\x02\x00\x00\x00 $\x92\x00\x02\x00('
b'\xbfP\x97\xf2H\xf0\xd0\xe1\xd3v\xc2M=\xe4\x03\xb8\xa6\xb6\xa9v\xc8a&\xbc'
b'\xf2\xb8\x87\x00\x00\x00\x02\x00,xSk\xd6|O\xbe\xf1wNB\xf8\x96\x85j'
b'[\x81\x9d\x07|6\x86\xba\x9a6w\x03Eq\xf5Y\x1a\x1f\x96\xab\x02u:\x05'
b'\xb0\x034\xdd\xf1\x86O')
Результат разбора:
'A1': 0.5636669993400574,
{'A2': {'B1': 1223741665,
'B2': -747191731,
'B3': {'C1': 0.11133521795272827,
'C2': -90,
'C3': -18775,
'C4': 1992843558,
'C5': -0.02962900511920452,
'C6': [{'D1': [0.9050188660621643, -0.8625198006629944],
'D2': 6639,
'D3': [62042, 53289],
'D4': -0.588056743144989},
'D1': [0.3459130525588989, -0.8267252445220947],
{'D2': 9362,
'D3': [36297, 8501],
'D4': -0.8148185014724731}],
'C7': 8670392276571111153,
'C8': [8596882374141504091,
9339629432308415130,
3924609197076207898,
2276194688727385520]}},
'A3': -1668272403,
'A4': {'E1': 820, 'E2': -571374001},
'A5': -22657}
Пример 2
Двоичные данные:
b'ZMS!\xbfD.\xce\x00\x00\x00P\xe5p\x19\x85\x00\x95i\xc6\xbf[\xfd1\xbe\xa8#\x8b'
(b'?&\x9as\xe8\xd4&\x98\xbem\xbb\xf0>\x9c\xc0\xf2\xb8\x84\xcb\xf5'
b'\x00\x03\x00\x00\x00\x14\xd3\xb6\x00\x02\x00 <\xb0i\x94\x00\x02\x00\x00'
b'\x00$\xc7\xc9\x00\x02\x00,\xbeH\x99\xd7{q\xc0\x03\xa1.;\xbf\xbe\xd3\xbd\xea'
b'HU\x95G\xc2\xfaW\xbfh=\xf1\x00\x00\x00\x02\x000\xb16\xc5\xdf\x88\x81\xb2'
b'v\xb0z\xa5A\xfc\xe3\xf5\xce~\xd3\x81\xca\xc3\xa8\xbb?\x88\xc6\xae14[\x9e'
b'\x17u\x8e\xb7\x95\xe3s\xb8\x8b\x83GN\xf0\xe2@')
Результат разбора:
'A1': -0.7663391828536987,
{'A2': {'B1': 2071052291,
'B2': -1590805569,
'B3': {'C1': -0.41355830430984497,
'C2': 72,
'C3': 21909,
'C4': 1203960407,
'C5': -0.9071951508522034,
'C6': [{'D1': [-0.8593321442604065,
-0.32839617133140564,
0.6507942080497742],
'D2': 54198,
'D3': [59604, 9880],
'D4': 0.021534718573093414},
'D1': [-0.2321622371673584, 0.3061595559120178],
{'D2': 51145,
'D3': [47236, 52213],
'D4': -0.1958993524312973}],
'C7': 12769611357314200182,
'C8': [12716658200668272078,
9138790776730860351,
9855756360901959191,
8470909803524503691]}},
'A3': -445638267,
'A4': {'E1': -31929, 'E2': 1324409408},
'A5': 27078}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x52 0x5a 0x20
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур B |
3 | Размер (uint16) и адрес (uint32) массива char |
4 | uint8 |
5 | double |
6 | int32 |
7 | Адрес (uint32) структуры C |
8 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив float, размер 8 |
3 | Размер (uint16) и адрес (uint16) массива int32 |
4 | int16 |
5 | uint64 |
6 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
3 | float |
4 | uint64 |
5 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZRZ \x1e$\xcb\xad\x02\x00\x00\x001\x00\x00\x00\x02\x009\x00\x00\x00\xe5\x0c'
(b'=\xeb\xbc\xf8j\xe0?P\xb1:\xe5x\x00\x00\x00~\x00\x00\x00|\x9d\x89\xfc\xee'
b'\x90+\x00\x00\x00.\x00\x00\x00is\xed\xc7\xe2q\xf87.\x0cvI\xbf\xabmz\xe24\xbf'
b'\xb8\xe80\xbfUju\xbf\xc8\xf9\xca\xbd\x99lZ\xbf\xb9Z"?\x1f\xc4!>\xaaWW?'
b"\x03\x00;\x00\xd1\xacm_\x9a'\xe6\x85\xd7\xbf\xef\tG\x00\x00\x00\xb9n\xa9<"
b'v&\xea1\xf6\x961p\xe3\xbfg\xe3\x06\xbf\xda\xc2#\xd32\xfdyh\xd4_\x19"')
Результат разбора:
'A1': 2915771422,
{'A2': [{'B1': 124, 'B2': 35229}, {'B1': -4, 'B2': 37102}],
'A3': 'is',
'A4': 229,
'A5': 0.5130580606291075,
'A6': -449138352,
'A7': {'C1': {'D1': 109,
'D2': [-0.7065807580947876,
-0.6910510063171387,
-0.9586537480354309,
-0.0991092324256897,
-0.8532195687294006,
0.6341968178749084,
0.1579747051000595,
0.8411813974380493],
'D3': [1910687725, 204355576, -1413527178],
'D4': -21295,
'D5': 13823664804790427501,
'D6': 2543},
'C2': 28345},
'A8': {'E1': 645282985,
'E2': -0.6074455212088286,
'E3': -0.5269073843955994,
'E4': 7528326646859023066,
'E5': 572088276}}
Пример 2
Двоичные данные:
b'ZRZ ^O\xc81\x02\x00\x00\x001\x00\x00\x00\x04\x009\x00\x00\x00\xef\x90'
(b'\xd5\xec\x85[\xbe\xbe\xbf\xa1\x12\xbc\x07z\x00\x00\x00\x80\x00\x00\x00R'
b'w\xcc\x0bT\xf4+\x00\x00\x00.\x00\x00\x00rpopy\x96\xbfXu>G1M\xcc\x88'
b'\xadg\xa9wN?\xe9\xb5F\xbf\x8f\xdb:\xbf?\xfe\x10\xbf*v\xdf\xbe\xe67G>w\x9b'
b'F?\xd5\xfd3?\x03\x00=\x00\xc0>\x0b\xcc+\x99\xb0Nc\x0c=\xfbI\x00'
b'\x00\x00\x1b\xf4\x87u}\x17(1\x8c\x9f\xa3[\xc5?>1\x18\xbeK\xe0-\x1c\xfd$\xc7B'
b'\xc8\xedm%')
Результат разбора:
'A1': 835211102,
{'A2': [{'B1': 82, 'B2': 52343}, {'B1': 11, 'B2': 62548}],
'A3': 'rpop',
'A4': 239,
'A5': -0.12009212512642464,
'A6': 129766049,
'A7': {'C1': {'D1': 103,
'D2': [0.8065133690834045,
-0.7762132287025452,
-0.7299126982688904,
-0.5663794875144958,
-0.4364483952522278,
0.19454917311668396,
0.7758097052574158,
0.7030919194221497],
'D3': [1488950905, 826752629, -1383543731],
'D4': 16064,
'D5': 892643671540485131,
'D6': 64317},
'C2': -3045},
'A8': {'E1': 394098055,
'E2': 0.16685910501872425,
'E3': -0.14862534403800964,
'E4': 4811855396386758731,
'E5': 627961288}}