Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc7 0x44 0x4c 0x55 0x57
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | uint64 |
3 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив char, размер 2 |
3 | Структура C |
4 | Размер (uint32) и адрес (uint16) массива структур D |
5 | double |
6 | int8 |
7 | Структура E |
8 | Размер (uint16) и адрес (uint16) массива uint32 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | double |
4 | int64 |
5 | Размер (uint16) и адрес (uint16) массива uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xc7DLUW\x00b\x8f\xf7\x87i\xb1\xaf\x81~\xde~\xdcR\x9c\x16\x91\xc8Q'
(b'$\xd1\x16\xd6\x91\x83r\xd6\xa8\xa8\xfcb\x85E\x97\x95\xbf\xb4\xe2\x00'
b'4\r\xb7\xc81\xb5\x9au\x84\x0c\xdc$2\xbd%\xcd\xf8\xb3c\xdfd(5\xc2"\xc6]3'
b'3q\x99q3\xa9\xc9a\x89\xc4\t\xab\x03\x81g\xee\xc0&\xea\xf24eO\xca'
b'\x17\x10\x87~\x170T\xc6\x10\x06dk\xbe_j[\xce$\x00\x00\x00\x02\x00\x10'
b'\xbf\xe3\x0cs\x01\xc7\xd8\xe4\x7f?\x15\xf7\xfbo+J\x9d\xbf\xef!P\xc8\xf53'
b'H\xd4\xf5\x82\xadD\x06\x87x\x00\x06\x00\x1a\x00\x06\x00J')
Результат разбора:
'A1': {'B1': -8683477535175602170,
{'B2': 'dk',
'B3': {'C1': -0.2181791514158249, 'C2': -12764},
'B4': [{'D1': 126, 'D2': 3696401430}, {'D1': -111, 'D2': 3360761041}],
'B5': -0.5952696833399185,
'B6': 127,
'B7': {'E1': 0.5858151316642761,
'E2': 1865108125,
'E3': -0.9728168415982532,
'E4': -3101429087692486792,
'E5': [1645662707603908776,
18186244779217895348,
16285073486094283189,
11129947244883882685,
2724106798987437096,
3873696864854553457]},
'B8': [2574332841,
3378612676,
162202497,
1743700006,
3941741669,
1338644240]},
'A2': 10373909154693611902,
'A3': 222}
Пример 2
Двоичные данные:
b'\xc7DLUW\x00Ze\x06d\xfc\xf8\xd3`\x99F\xad/#\xb6~\x91\x03N\x01\xe7D\x07'
(b'.R\xd9\xb5\x80\x9a\x1c\xb8T\xec\x06\x900\x87X\x1dc\xde=\x16\xeb\xe7\xa1\x00'
b'\xa9\xe3\r6\xfd\xaa\xc4\x1br\xd6\xb9~p\x1b\xd3\xb4W\xdb\xae\xb8'
b'\x0f\xd2\n\xdfJx\x88,&\x0c\x0b\xdcQ\r\xf7\x9c\xca\xb0\xfb\xe4\x9d}\x91\xaa'
b'\xdd\xb1se\xbe\xfc\x9f\xfaF\xd0\x00\x00\x00\x02\x00\x10\xbf\xe5~\x92'
b'\xfd\xa0\xed\n\xcc>\xcc\x07\xe1\x9e\x8d\x81\x8a?\xb6\xa6\x19\x9fR\xef'
b'\x10\x82\x1c\xbd7\xf6\xa7\xa8\xe2\x00\x07\x00\x1a\x00\x02\x00R')
Результат разбора:
'A1': {'B1': -295938512859243087,
{'B2': 'se',
'B3': {'C1': -0.4934080243110657, 'C2': 18128},
'B4': [{'D1': -83, 'D2': 790869630}, {'D1': -111, 'D2': 55443943}],
'B5': -0.6717009500202107,
'B6': -52,
'B7': {'E1': 0.398497611284256,
'E2': -1634893430,
'E3': 0.08847198619599461,
'E4': -9071167501371987742,
'E5': [4901937652790821018,
2069497401475870855,
6349340855821069287,
11601459432750775722,
14131014522365702171,
15254914438851465170,
783426741726881292]},
'B8': [198988045, 4154247856]},
'A2': 7279616885360124057,
'A3': 70}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xd9 0x45 0x44 0x49
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | int16 |
3 | Адрес (uint32) структуры C |
4 | Массив int32, размер 4 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int64 |
3 | uint32 |
4 | int16 |
5 | int16 |
6 | float |
7 | int16 |
8 | Массив uint8, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур D |
3 | int8 |
4 | Структура E |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
3 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив float, размер 4 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xd9EDI\x1e\x00\x00\x002A\x82\x00\x00\x00\xaf\x13%n\xd0\xddN\x9f\x99\xd6'
(b'\x97"\x82\x8e\xadr\xef\xd7\xea\t\xdf\xce\xaf\x0bV\xeem}\xee\xf9\xcfy\xe3#'
b'e\x00\xeec\xee>x].\xd2\x9f\xa2\xab3H=\x82Nu5\xd6\xf1\xc4\xe6R\x9f\xb6\xa8'
b'\xbe\xc5\xe7\x02p\xbd\xcc\xb1\xc5\xad\x84\xe8\x01u\xab4\xc6{\xac\x8e'
b'U\x1e\xc6z\xa3\x80\xd24\x8e]S>\xe8\xb0\xa3\xa3\xde8\x03\xb5{\xf3\xb0\x1a'
b'Ib:\x00J\x00Z\x00j\x00\x81\xbe\x04\x00z\x00\x00\x001\x08\x17\xb4\xfb\xde'
b'\x8ex\xe8 s}\xbf\xf8\xd8*\xbffm_?R\xae=\xbf\xf3')
Результат разбора:
'A1': {'B1': 166385647,
{'B2': 9038142080533122783,
'B3': 2043673070,
'B4': 9187,
'B5': 101,
'B6': 0.465606153011322,
'B7': 23928,
'B8': [46, 210]},
'A2': 16690,
'A3': {'C1': 48769,
'C2': [{'D1': 866886303, 'D2': 17426174586101316936, 'D3': 2673010372},
'D1': 3317606582, 'D2': 12521609831883211495, 'D3': 1963059332},
{'D1': 2076587179, 'D2': 9269387449389649580, 'D3': 1569600722},
{'D1': 2968010323,
{'D2': 17544815798795543459,
'D3': 1648958128}],
'C3': 49,
'C4': {'E1': 16751295902361327368,
'E2': [-0.9900379180908203,
-0.6673731803894043,
0.8727630376815796,
-0.7409411668777466],
'E3': -13}},
'A4': [1847923631, -1622221360, 580376217, 1923976834]}
Пример 2
Двоичные данные:
b'\xd9EDI\x1e\x00\x00\x00h\xbap\x00\x00\x00\xfa\xbe\x7f\x97\x18\xff'
(b'\xfa\xd9\r\xb5\xa8\x822H4\x86y\x17!\xc4\xf2\xfa~\xb4~L9\x80\xbc\xab'
b'\xd3(\xeb\xb4\x18\x1bs&|?\x04\xbcR,\x17\x0e\xbd$\xefJ3\x18\x95t\x8b\xb3\x9c<'
b'\xd2\xae\x1f\xe2\xda\xe9\xae\xbc\xf4n\x8c#Y\xdaR \xb8e0x\x00\x7f\xc4R'
b'\x89\x15\x17kyJ\xc2(C\xe5:\x00J\x00Z\x00\x01\xfa\x03\x00j\x00\x00\x00'
b'\r\xdb]\xc2&\x05\x14-TU\xaa{\xbfwkU?a\x9a\x9f=\xc0\x7fI\xbe\x08')
Результат разбора:
'A1': {'B1': -1004464263,
{'B2': -9207243856104457486,
'B3': 684960700,
'B4': -19221,
'B5': 6936,
'B6': 0.9849616885185242,
'B7': -17404,
'B8': [82, 44]},
'A2': -17816,
'A3': {'C1': 64001,
'C2': [{'D1': 616369687, 'D2': 12937562538256845551, 'D3': 2933013660},
'D1': 3923436063, 'D2': 15733645859259464878, 'D3': 1706565714},
{'D1': 2130737200, 'D2': 5366438177878397636, 'D3': 3846383810}],
{'C3': 13,
'C4': {'E1': 6065526285495590363,
'E2': [-0.9830678105354309,
0.8336710333824158,
0.07793117314577103,
-0.1967763900756836],
'E3': 8}},
'A4': [-1753235718, -637862120, -2102872819, -2043393998]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa 0x47 0x55 0x54 0x41
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C |
3 | Структура D |
4 | float |
5 | Структура F |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | int16 |
3 | int32 |
4 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | Адрес (uint16) структуры E |
3 | uint8 |
4 | Размер (uint32) и адрес (uint16) массива float |
5 | Размер (uint32) и адрес (uint32) массива int16 |
6 | Размер (uint32) и адрес (uint32) массива uint16 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
3 | double |
4 | Размер (uint16) и адрес (uint32) массива uint32 |
5 | int8 |
Структура F:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint16 |
3 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\nGUTA\xa0\x92\xdd\x1fB\xe1\xdd\x11\xf5\x03\x00^\x00[\x89\x1b%\x0b\xe9'
(b'd\x1d\x86\x00\x90\x03\x00\x00\x00\x9d\x00\x02\x00\x00\x00\xa9'
b'\x00\x00\x00\x05\x00\x00\x00\xad\x00\x00\x00\xc2\xc8\x15?%\x08\xd9\x85z:h$U'
b',\xfa\xab\xb3}l:7.e=\xb8\xea\x9cj\xaa\xdc\x85\xa6\xc4cd\x06\xecy|F\xac'
b'"\x8fC\x00\x00\x00L\x00\x00\x00U\x00\x00\x00P\xd7\xa46}\x0e\x94`J\nf2I\x08'
b'Ks\xeaz\x03\xde\x15v[{\x05\xd2\xb2\xa3\x9a\x86#\x8c\xea\x87\x92=`\x86'
b'\xebm\x98z\xab?\x07\x00j\x00\x00\x00\xaf\xb9\xd7\xe7\xbe1\x13\x14?\xf6\x0eo'
b'\xbfi\xc4oJ\x19\\\xacE\x9d@\x05\n\x99\x94')
Результат разбора:
'A1': {'B1': 160, 'B2': -8814, 'B3': -572440033, 'B4': 62737},
{'A2': [{'C1': -77, 'C2': 13275878525727566973},
'C1': -22, 'C2': 7189053999053171356},
{'C1': 100, 'C2': 10313995515367910406}],
{'A3': {'D1': 2118073958847449435,
'D2': {'E1': -1943828838,
'E2': 0.07154829800128937,
'E3': 0.053669703882189834,
'E4': [916772688,
1620315773,
845548106,
1934297161,
3724770026,
2069591573,
2746405381],
'E5': -81},
'D3': 144,
'D4': [-0.4528177082538605, 0.5784178376197815, -0.9338220357894897],
'D5': [-15255, 19055],
'D6': [23577, 17836, 16541, 2565, 38041]},
'A4': 0.5850945711135864,
'A5': {'F1': 2085, 'F2': 34265, 'F3': -6054478004851557766}}
Пример 2
Двоичные данные:
b'\nGUTA\xa1\x1e\x86\x81\xa5\xce\x1f\x13\x8c\x04\x00g\x00\x19r\xd4\xde\x8d\x8a'
(b'\xeae\x93\x00\x91\x03\x00\x00\x00\xaa\x00\x02\x00\x00\x00\xb6'
b'\x00\x00\x00\x02\x00\x00\x00\xba\x00\x00\x00%\xf4\xc2\xbd\xc0\xaa\xf9\xc4O'
b'7\xcf\x8b?>}\xaa\xaa\xb2\xdb\xedW\xe4\x1d\xb2\x86\xe7$\x0fj9D\xc0\r'
b'DL\x80\xaeQ\x89I\x987\x05\xb6\xa9^\x9a/\x14\x0c7qC\x00\x00\x00L\x00\x00\x00U'
b'\x00\x00\x00^\x00\x00\x00D\xda\x02\xbe\xb2\x82Q\xfd$\xd2c\x16\xf6\xcdeE\x08'
b'P]\x07\xc8\xc3\xc4\x8a*$\xa9\x9f\x1f\x93\x8e\x1cS\x94m\xbf\xf8,\xc7L\xa4'
b'\xbd\xd6\xbf\x07\x00w\x00\x00\x00\x0c\xab\x97\xf2>\x87\xf5Y\xbf!^'
b'\x03\xbfc\xb0\x92\xbc\rPH\xc9')
Результат разбора:
'A1': {'B1': 161, 'B2': -31202, 'B3': 533636481, 'B4': 35859},
{'A2': [{'C1': -86, 'C2': 9705853013501795250},
'C1': -25, 'C2': 4903786968529899300},
{'C1': 76, 'C2': 375936535512592000},
{'C1': -74, 'C2': 8158002530842468009}],
{'A3': {'D1': 7343834484314501657,
'D2': {'E1': 479105823,
'E2': -0.9280444979667664,
'E3': -0.35532481668333515,
'E4': [3187857988,
4249977522,
375640612,
1164299766,
123555848,
2328150984,
2678662186],
'E5': 12},
'D3': 145,
'D4': [0.47381338477134705, -0.8514026999473572, -0.5131550431251526],
'D5': [-20381, -17262],
'D6': [20493, 51528]},
'A4': -0.09519223123788834,
'A5': {'F1': 43712, 'F2': 50425, 'F3': -6161700272523495601}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc9 0x42 0x43 0x4f 0x4c
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | int64 |
3 | int16 |
4 | Структура B |
5 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив адресов (uint16) структур C, размер 5 |
3 | int16 |
4 | double |
5 | float |
6 | Размер (uint32) и адрес (uint32) массива uint8 |
7 | Массив int64, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint32) и адрес (uint16) массива int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint8 |
3 | uint64 |
4 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xc9BCOL\xe1\xd8\xc2\xbd\xd6m\xfc\xcb\x01\x1a7\xbb\xdb\xe5\x98\xb8\x00^\x00'
(b't\x00\x86\x00\x9a\x00\xb0a\xbb?\xe3\x9e\xcd*\xc5\x90D>\xa3\xda\r\x00\x00\x00'
b'\x02\x00\x00\x00\xbe\x8a\x98\xa1\x93&\x1fI\x1d19\x1e\xdd\x8eA\xf2'
b"\xd5'\x85\x1f\x9c\x9bsf\x83f\xa0\x88H\x99\xf1\xdd\xcc\xd0\x17\xe8"
b'\xa1\xd8\xe5\xa8\x0c\xef\xdb\x08\x9e\xab\x84F\x8b\xd9\x00\x00\x00\x02\x00Z'
b'd\x10\xd4\x9aN\x8f\x0fY\x10@Ve\xcd\x1b`\xcb\x00\x00\x00\x04\x00l\x9ea'
b'\x12\x15@\xf4\x16\xb8A\xb96\xdb\x00\x00\x00\x02\x00\x82\xfb4\xb8i'
b'\xc9\x96\xb0\xe3w@\x17\xbc\xf5\xb7\x00\x00\x00\x03\x00\x94Y\xab\xaf.'
b'\xdd\xf2\xb5o\x13\xf7\xf0\xe9\xd6q\x1d\x95\x00\x00\x00\x04\x00\xa8\xd6\xb2')
Результат разбора:
'A1': -505888067,
{'A2': -2995460228304455749,
'A3': -9243,
'A4': {'B1': 39096,
'B2': [{'C1': -2663704720093836327, 'C2': [-6744, 3311]},
'C1': 1171030898349138123, 'C2': [25616, -11110, 20111, 3929]},
{'C1': 4680390893377238747, 'C2': [-24991, 4629]},
{'C1': -5700581586161044041, 'C2': [-1228, -18327, -13930]},
{'C1': 1438883493083946389,
{'C2': [22955, -20690, -8718, -19089]}],
'B3': 25019,
'B4': 0.6131349406609918,
'B5': 0.32002297043800354,
'B6': [214, 178],
'B7': [-8459834246643627747, 3546900118454268629]},
'A5': {'D1': 2847717096865097347,
'D2': 102,
'D3': 11567575468926160080,
'D4': 401121752}}
Пример 2
Двоичные данные:
b'\xc9BCOL\x90A\x033\xd8\x06\x0e?A\xc6i\x93[P\xd2H\x00`\x00r\x00\x88\x00'
(b'\x9c\x00\xb0\x8cG?\xe4\xb8W\xe6\x80\xc9\x88=N\xc4\xaa\x00\x00\x00'
b'\x03\x00\x00\x00\xbe54e=S\xa1\xecB\xeb\x03\x0e\xaf\x08J\xf9\xf2\xf2U\xe2'
b'Zy\x87\xf5\\t\xbayr\xe4\x12i2\x01\xf1\xbd\xac\xb7\xc0\t5$\xb6Y\xe2!Wf'
b'\xb7Q\xd9\xcf\x00\x00\x00\x03\x00ZG,\xf9=\xc0\x1b\xac\xdb\xec\x91'
b'Y\xb4\x00\x00\x00\x02\x00n\x17\xa5l\xdf$#{\xfb?\x98:\xf53#\xf95'
b'\x00\x00\x00\x04\x00\x80\x03)d\xfc\xd5\x0c\xb6\xc1\x8d\x90\xef\xb6\xc4\x10'
b'\x00\x00\x00\x03\x00\x96m"u\xbd\xbd\x9e\xd3_\xf3\x9e\x07Q\x9f\x17'
b'\x00\x00\x00\x03\x00\xaaD\xbb=')
Результат разбора:
'A1': -1874787533,
{'A2': -2880599246807602797,
'A3': 23376,
'A4': {'B1': 53832,
'B2': [{'C1': -2152343048232511025, 'C2': [-16375, 13604, -18855]},
'C1': -4603896133489436236, 'C2': [18220, -1731]},
{'C1': 4582477445648873781, 'C2': [6053, 27871, 9251, 31739]},
{'C1': -5277781634664971248, 'C2': [809, 25852, -10996]},
{'C1': -3215583748866072809, 'C2': [27938, 30141, -16994]}],
{'B3': -29625,
'B4': 0.6475028516781984,
'B5': 0.050480522215366364,
'B6': [68, 187, 61],
'B7': [3833800496869665858, -1512348904945157646]},
'A5': {'D1': 17462112008412853596,
'D2': 116,
'D3': 13436897287123579393,
'D4': -239227721}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x39 0x45 0x45 0x54 0x56
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | Массив структур B, размер 5 |
4 | Размер (uint16) и адрес (uint16) массива char |
5 | uint8 |
6 | Структура C |
7 | float |
8 | Размер (uint16) и адрес (uint32) массива int16 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | Структура D |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
3 | int64 |
4 | Массив uint8, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'9EETV-*N\xe1\xa9!\xf7h\x10\xa1\x92\xd0cyC7\xa5\xb1i\xcb3\x88\x1c'
(b'\x98\xe6\x19\xd3L\xda\x8e<\n\xe8NK\x00\xb0\x1b\xda\xe6f\x82\\,7-\xad'
b"f\xfem\x8ez\xa8p\xf7\x94\x12\xe8SL\tao'\x1f\xd8z\xca\xc9(!\n\x02\x00y"
b"\x00\xa9\x0c\x9e\x15J\xbf\x934\xa5\x84\x88l\x82p\x0b>\xad\x12'\xc6\x00\xd1p"
b'\xa2\xc4\xf9e\xec"4\xd06^\xbf\x03\x00{\x00\x00\x00zb\x89\x18g\xdcu\xb9')
Результат разбора:
'A1': 7563551112705223213,
{'A2': -795696880,
'A3': [{'B1': 927168867, 'B2': 10960785349150355877},
'B1': 1288903142, 'B2': 21197381764419290},
{'B1': -421913680, 'B2': 7398619477830304358},
{'B1': 2056154622, 'B2': 5499994736455807144},
{'B1': 661610761, 'B2': 729909461761316895}],
{'A4': 'zb',
'A5': 169,
'A6': {'C1': 12,
'C2': {'D1': -0.789392352104187,
'D2': 8107161612817085587,
'D3': -3386489048663245301,
'D4': [112, 162, 196, 249, 101, 236, 34, 52]}},
'A7': -0.8680238723754883,
'A8': [6281, -9113, -18059]}
Пример 2
Двоичные данные:
b'9EETV\x1e\xfc\x9c\x90\rs\x80!\x0f_#\xc7\xc2\xb0k\x14\xb3\x12('
(b'\xcc\x1b\xbf\x81\xf7o\x01\x18\xc4I]wu\x11r_jw\xe9\xd2\x90\x03H\xc5'
b'c\xf1\xff\xf7n\x83\xc4\x95\xffy$\xd6\xe8/>L\xa3\xed\xc0e\xb8\xc1"\xce'
b'\x98\xe4(\x1d\xb8\x05\x00y\x00n\xf6\xa4:\x83\xbd\xd9\xae|1\xd7\xff\x819\xb1'
b'\xff\xe6\xf3\xaeq\xff\x8b\x1d\x9dnth\xbc@\xeb\xdd\xe1\xad>\x07\x00~\x00\x00'
b'\x00cmlfbv\xae:\xfc\xc2\x89\xf27cE\xbbl\xfe1')
Результат разбора:
'A1': 2414055902368562206,
{'A2': -953983217,
'A3': [{'B1': 342601922, 'B2': 17834746125474075315},
'B1': -1005059729, 'B2': 7664970510118640969},
{'B1': -1865225865, 'B2': 7996141075645679619},
{'B1': -6962045, 'B2': 11766848301902996601},
{'B1': -1201291027, 'B2': 13266805039584649921}],
{'A4': 'cmlfb',
'A5': 110,
'A6': {'C1': -10,
'C2': {'D1': -0.06407669186592102,
'D2': 4143874431870873305,
'D3': -8358837387146100815,
'D4': [29, 157, 110, 116, 104, 188, 64, 235]}},
'A7': 0.33961382508277893,
'A8': [-20874, -966, -30270, 14322, 17763, 27835, 12798]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4d 0x4a 0x45 0xae
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | int16 |
3 | uint16 |
4 | double |
5 | Размер (uint32) и адрес (uint32) массива адресов (uint16) структур B |
6 | Структура D |
7 | Размер (uint16) и адрес (uint32) массива uint8 |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | uint32 |
4 | uint8 |
5 | Адрес (uint16) структуры C |
6 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | double |
3 | float |
Структура D:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры E |
2 | float |
Структура E:
Поле | Описание |
---|---|
1 | Массив uint64, размер 5 |
2 | double |
3 | uint32 |
4 | int16 |
5 | Массив uint8, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'MJE\xaeW\xe8\xcb,\xcc0\x12\n\xd4\xe19(?\xed\x93\x10\xf6E\x99b'
(b'\x00\x00\x00\x02\x00\x00\x00u\x00y=\x11\xf2\xab\x00\x02\x00\x00\x00\xb2ovv"'
b'a?\xd8l-{q\xf2\xa4\xbf>i\xc3\xc9\x00\x03\x00,\xd8\x87\xeao\x17\x00/\x7f/R'
b'\xf7\x1f\xdfT\x8ape\xb4\xb1\xbf\xb1\xb1Og\xd1\xd6\xd0?P^\xe9\xb5\x00\x02'
b'\x00Qr\x13\x149\xfc\x00S\xdf\xea\xc9w/\xa4D\x9f\x00=\x00aK\x90\x95'
b'\x10 \x92\x02\x97+X3=1u^\x1b\xc9\x86\x91C\xadL\xec\xf19\xcc7@o\xa7K'
b"Y\x1b\xecL\x16\x0eM/\xfb\xbf\xc6\xac\x0e\x07\x1aR\xf0\xfbx\xba\xddI{j?\xdds'")
Результат разбора:
'A1': 6334536269161304586,
{'A2': -11039,
'A3': 14632,
'A4': 0.9242024240491384,
'A5': [{'B1': 201,
'B2': 'ovv',
'B3': 3632786031,
'B4': 23,
'B5': {'C1': 8801, 'C2': 0.381602640678276, 'C3': -0.7438012957572937},
'B6': 9164634988067378314},
'B1': 181,
{'B2': 'pe',
'B3': 1913852985,
'B4': 252,
'B5': {'C1': -19279,
'C2': -0.06911178860340361,
'C3': 0.8139482140541077},
'B6': 16134930128745809055}],
'A6': {'D1': {'E1': [5445015845989384855,
3123302679497235995,
14521453768359079153,
4164764505301535577,
2012066791140700155],
'E2': -0.17712569567506575,
'E3': 4218993373,
'E4': 18811,
'E5': [106, 63, 221]},
'D2': 0.03563181683421135},
'A7': [115, 39]}
Пример 2
Двоичные данные:
b'MJE\xae\xfd:\xedA\xefH)7\xce\x082\t?\xeb\x9cR\xc9\xb7.P\x00\x00\x00\x02'
(b'\x00\x00\x00u\x00y?.\xd2\xcc\x00\x05\x00\x00\x00\xb2my\xc1y?\xda\xe69'
b'\x1ci\xe6\xbc\xbeZ\x88&\xa3\x00\x02\x00,Nj\x93\xec\xa2\x00.\xef\x08\xed\xba'
b'\x8b\xe7d\x85gox\xa2\xa4?\xea\xf0\x11\x1b\xa6\xd0,\xbf5\xa2\xf78\x00\x03'
b'\x00P\xc9I\xe3\xe2\xd1\x00S@\xc6}m\x8c\xabp2\x00<\x00a\xc0 \x90'
b'\xb9\xcb\xb0\x06\x1bh\xc7\x048\xac\xfb\xec\xe7\x15T^-\x84\x0c\xf2'
b'(\x8c\xc9\xff\x82w\xaf\xf62\x8d\x9d;W\xb2\xa5"\x1f\xbf\xeb\xc3\xac-\xbb\x92'
b'\x92lF\x9a\xecg9\x95V\xaa0\xe2\xc8|s')
Результат разбора:
'A1': 18247157707688126775,
{'A2': -12792,
'A3': 12809,
'A4': 0.8628324451214642,
'A5': [{'B1': 163,
'B2': 'my',
'B3': 1315607532,
'B4': 162,
'B5': {'C1': -16007,
'C2': 0.4203017022588076,
'C3': -0.21340999007225037},
'B6': 17224278160345359493},
'B1': 56,
{'B2': 'gox',
'B3': 3377062882,
'B4': 209,
'B5': {'C1': -23900,
'C2': 0.841805032736834,
'C3': -0.7095178961753845},
'B6': 4667555973281050674}],
'A6': {'D1': {'E1': [13844224382197564955,
7550007941776796903,
1536956922422161960,
10144920571447604786,
10204377578536772127],
'E2': -0.8676358121125125,
'E3': 1816566508,
'E4': 26425,
'E5': [149, 86, 170]},
'D2': 0.6829040050506592},
'A7': [48, 226, 200, 124, 115]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x43 0x4a 0xd5
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
3 | Массив структур B, размер 4 |
4 | Массив int32, размер 4 |
5 | uint32 |
6 | uint64 |
7 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Адрес (uint16) структуры D |
3 | uint8 |
4 | int64 |
5 | Адрес (uint16) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | Массив float, размер 6 |
2 | Размер (uint32) и адрес (uint32) массива int32 |
3 | Массив uint16, размер 6 |
4 | double |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RCJ\xd5;\x824?\xd7\xfc\xccPF\xbf\xa3&\x8fp?\x06\x95\x8e\xe3\xbe\x08\x85NB'
(b'\xbf\x18\x8f^\xd0\xdb\xff1\x0b\x1a\xb0\xd0l^\x18\xbf\xfd\xc5\xb1\xf0'
b':\xae\xa0\x02xZ;[\xd1\xf6d\xe9\xaa\xadS\x00N\x140`C\r\x11W+\x87\x00`'
b'\xa6\x88E\x8b\xab\x844\xabG\x19?d\x8dz?z\xc4|\xbf\xbaT\xff>\x10\x8a\xa6<\xb2'
b'\x8fh\xbf\x02\x00\x00\x00K\x00\x00\x00\xb1/\xee\x05$U\x14lxE\x80BTj\xae9N'
b'g\xda?\xbc\xbc\xdf')
Результат разбора:
'A1': 0.7051121592521667,
{'A2': -809,
'A3': [{'B1': -0.7746703624725342, 'B2': 163},
'B1': 0.939684271812439, 'B2': 6},
{'B1': -0.44444718956947327, 'B2': 8},
{'B1': -0.7590106129646301, 'B2': 24}],
{'A4': [-607101297, 436941311, 1584189616, -973226216],
'A5': 2923098289,
'A6': 17785096713941811872,
'A7': {'C1': 2913659236,
'C2': {'D1': [0.5987498164176941,
0.97871994972229,
-0.9873729944229126,
0.4986932873725891,
0.02032950520515442,
-0.9084426164627075],
'D2': [1166583392, 881109899],
'D3': [12209, 1518, 21796, 27668, 17784, 17024],
'D4': 0.412555271462826},
'C3': 78,
'C4': 3122983615267352596,
'C5': {'E1': 48316, 'E2': -33}}}
Пример 2
Двоичные данные:
b"RCJ\xd5\xa3\x84'\xbf\x98\r\xbci\xea\xbe\x91\x1a\xd0\x1c?`\xb7\xc7Z\xbf"
(b'L@c\xda>\xe4 \xbd\xc6\xf0@j\xa1\x1e\xc6\x07w\x83)\xf4\xde\x9b>"v]\xc7\xa6'
b'6T\xe0B\xa3\xc4O\xe46\xa3S\x00q\xe0\xa4\x1e&\xd1\x9fm`\x87\x00~k2\xf5\x8c'
b'\xe8\xcb\xd7\x87\x7f\x10\xbf\xe4\xae\xf1>\xe5\xdd\xaa>\xc2Y\xc2=\x98'
b'\xe2a\xbf\xbf:\x12\xbf\x02\x00\x00\x00K\x00\x00\x00<y1\x16\xff\xa4\xc3\xf9L'
b'\xfa\xf1:p\x13o\x87|w\xbc?\x1fb\x8a')
Результат разбора:
'A1': -0.6543676257133484,
{'A2': 3480,
'A3': [{'B1': -0.45783793926239014, 'B2': 145},
'B1': 0.6125503778457642, 'B2': 96},
{'B1': -0.8546099066734314, 'B2': 76},
{'B1': 0.42653846740722656, 'B2': 228}],
{'A4': [-255410912, 513894976, -2089351226, -1679887319],
'A5': 1568023102,
'A6': 14169242383890687687,
'A7': {'C1': 2738283599,
'C2': {'D1': [-0.5644459128379822,
0.4720374345779419,
0.33372417092323303,
0.09489776194095612,
-0.8823637962341309,
-0.5712088942527771],
'D2': [-181245058, -674502516],
'D3': [31036, 5681, 42239, 63939, 64076, 15089],
'D4': 0.11119821840754951},
'C3': 113,
'C4': 6948385520739067104,
'C5': {'E1': 25119, 'E2': -118}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x44 0x59 0x4f 0x9b
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Адрес (uint16) структуры B |
3 | uint64 |
4 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | uint64 |
3 | uint32 |
4 | int16 |
5 | Массив char, размер 6 |
6 | int8 |
7 | Массив адресов (uint16) структур D, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int32 |
2 | Массив int16, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"LDYO\x9bOW\x00 k\xacwA\x9bp\x1b\xcba\xd8\xe9\xca\t~\xc5:l\x93Z'k%Y\xb84O\xab"
(b'\x19\x04\x00\x15\x00\x00\x00b[\xeb\xf3g\x83\xe9U\xdc\xdd\x91\n?c\xbc\n\x03'
b'\x00/\x00\x00\x00\xbd\xc5\x9cDW\xc6\xd8\x10\x19\xadP\xe1\x02\x00E'
b'\x00\x00\x00L\xb1\x165\x11\x002\nHT\xcd\xc1MQ\x90c\xea\x9cy1nkjqtz\xf9%\x00'
b';\x00M\x00')
Результат разбора:
'A1': 79,
{'A2': {'B1': {'C1': -10143, 'C2': -23, 'C3': 202},
'B2': 5858551777905347122,
'B3': 2632606608,
'B4': 12665,
'B5': 'nkjqtz',
'B6': -7,
'B7': [{'D1': [986021385, 660247404, -1202117269, 430657332],
'D2': [23394, -3093]},
'D1': [1441366887, 177331676, 180118335],
{'D2': [-14915, 17564]},
'D1': [282642007, -514806503], 'D2': [-20148, 13590]}]},
{'A3': 1977250941898615584,
'A4': -53}
Пример 2
Двоичные данные:
b'LDYO\x9b\xa5c\x00A\xf9 Z\xe0>Y?\xa5\xa9\x19\xffLg{*\xd9$*\x894\xe1y\xd7'
(b'\xfb\xc14\x85\x94O\x16X^\x05\x00\x15\x00\x00\x00\xa0\x92\x05i\xdd=\xfcm\x15'
b'\xc0B?\x02\x003\x00\x00\x00\x97\xa2!\x99U)i:Ls\x9e=\xba\xfb\xc2\x99a\xa8\xec'
b'\xda\x1d\xd9|)\x05\x00E\x00\x00\x00\xb8@\x10H\x11\x00U\xa4{\xd7\x0e$^'
b'\xe8\x05s\xb0aftmqgzfo\xfc)\x00;\x00Y\x00')
Результат разбора:
'A1': -91,
{'A2': {'B1': {'C1': 6569, 'C2': -1, 'C3': 76},
'B2': 16743860110773429333,
'B3': 1638953733,
'B4': 29798,
'B5': 'mqgzfo',
'B6': -4,
'B7': [{'D1': [-651527321,
881404452,
-69764639,
-1803209535,
1582831183],
'D2': [-28000, 26885]},
'D1': [1845247453, 1061339157], 'D2': [-23913, -26335]},
{'D1': [979970389,
{1033794380,
-1715274822,
-622024607,
696047901],
'D2': [16568, 18448]}]},
'A3': 4564748830622415169,
'A4': -91}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x4f 0x49 0x57 0x53
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
3 | Размер (uint16) и адрес (uint32) массива адресов (uint32) структур B |
4 | int32 |
5 | Адрес (uint16) структуры C |
6 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Массив char, размер 2 |
2 | Адрес (uint16) структуры D |
3 | float |
4 | uint64 |
5 | int8 |
6 | int8 |
7 | Структура E |
8 | Структура F |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива float |
2 | uint64 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | Массив uint16, размер 3 |
3 | uint16 |
4 | int64 |
5 | Массив uint16, размер 2 |
Структура F:
Поле | Описание |
---|---|
1 | uint16 |
2 | double |
3 | float |
4 | int64 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'POIWSU\xf6%\x05\x006\x00\x00\x00~\xf0@ub\x00@\x9a\xa7!\xb4\xc7\x9d\xd9'
(b'3\x17\xc1\xd4\x00\xa4\x0b\xde\xb5\xbb\x98\xfeg \xad\x9b:\xe6\x08gD\x8f\xd3v'
b'Xh\x18\x00\x00\x00\x1e\x00\x00\x00$\x00\x00\x00*\x00\x00\x000\x00'
b'\x00\x00\xad\xa5\x1b?8\x15\xb3>\x02\x00\x00\x00J\x00\x00\x00\xd5vY\x19Im'
b'\xe7\x02qaR\x00}\xd3\x7f\xbfIw9\x92\x03\x84_\x82\x00O\x10{\xb03\xdev\xbf\xbf'
b'\xd3R\xd7?\xeb&\x00\xa0\xe4+_\x95m\xfd\xda\x84\x98\x1aP\xf6gt\xfc\xfc'
b's\xb1n\x8a\xd5?\xcb\t\xba;\xb0\xaf3\xee8t\x11\xa7\xb2')
Результат разбора:
'A1': -2475,
{'A2': 37,
'A3': [{'B1': 3650996148, 'B2': 5939},
'B1': 2751517889, 'B2': 56843},
{'B1': 4271422389, 'B2': 8295},
{'B1': 3862600621, 'B2': 26376},
{'B1': 1993576260, 'B2': 26712}],
{'A4': 1967190142,
'A5': {'C1': 'qa',
'C2': {'D1': [0.6079967617988586, 0.34977126121520996],
'D2': 209256068421351125},
'C3': -0.9993208050727844,
'C4': 9394372498591151945,
'C5': 0,
'C6': 79,
'C7': {'E1': -0.12290753137538624,
'E2': [21203, 16343, 9963],
'E3': 40960,
'E4': -8873501468680836124,
'E5': [6808, 63056]},
'C8': {'F1': 29799,
'F2': 0.33657424287225957,
'F3': 0.0056774369440972805,
'F4': -6408213006908149840,
'F5': -78}},
'A6': 564632128}
Пример 2
Двоичные данные:
b'POIWS\xb2\xb7\xc0\x07\x00B\x00\x00\x00PP\x19dv\x00\xda\xcb\xd3\x9a\x118\x87k'
(b'\xc6U0[\x86\x93\x10\xc8\x14a\xfd\x1cu\x9eV\xde\xec\\\x8c\x0c\x8d\xc2"<'
b'\x03\xaab\x11gh\xa1A\x10\x0fh\xcc\xb38\x18\x00\x00\x00\x1e\x00\x00\x00$\x00'
b'\x00\x00*\x00\x00\x000\x00\x00\x006\x00\x00\x00<\x00\x00\x00\x9c\xcf'
b'\xc2=f\x93\xb7\xbe\x02\x00\x00\x00^\x00\x00\x00\xf8m\x08\xa7\x04\xf7'
b"\xad\x91sxf\x00\xf3\xb5\x90>\x11\xc8\xdf\x14_d\x04\x97\xbfO\xa8'\xaf\x8e"
b'f\xa9\xef?+\x94q\xcc\x95\xcc\xccHle\xbf{\xe5A\xba\xeb\x8d\x0cIoSX\x9c\xd7'
b'\xb6\x7f\xad\xf4\xd6?o\xc04\xbf_\x9c\xcb-\xa6\x1aFm\xb5')
Результат разбора:
'A1': -18510,
{'A2': 192,
'A3': [{'B1': 1804023825, 'B2': 21958},
'B1': 2475055920, 'B2': 51216},
{'B1': 486367508, 'B2': 40565},
{'B1': 1559027286, 'B2': 3212},
{'B1': 1008910989, 'B2': 43523},
{'B1': 1751585122, 'B2': 16801},
{'B1': 3429371664, 'B2': 14515}],
{'A4': 1679380560,
'A5': {'C1': 'sx',
'C2': {'D1': [0.09512254595756531, -0.3585464358329773],
'D2': 10497317905824771576},
'C3': 0.28263816237449646,
'C4': 10881932959168841745,
'C5': -65,
'C6': 79,
'C7': {'E1': 0.9894287859726676,
'E2': [37931, 52337, 52373],
'E3': 18636,
'E4': -1460782675248847508,
'E5': [3213, 28489]},
'C8': {'F1': 22611,
'F2': 0.3586839434823277,
'F3': -0.7060613036155701,
'F4': 7874010299539102815,
'F5': -75}},
'A6': -1697395750}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x51 0x4d
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint16) и адрес (uint32) массива int16 |
3 | Массив структур B, размер 2 |
4 | int8 |
5 | Размер (uint16) и адрес (uint32) массива char |
6 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Структура C |
3 | double |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint16) массива int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'EQM\xf8\xee\x03\x00>\x00\x00\x00\xe9t\xe2N\x11\x819\xf5:\x15\xa8\x01\xdb'
(b"\xa1h\xb6\xdc?\xa8U\xfcL\x97'X\xeagY\x10r\xa4\x89\x1e\x86\xba?j\x02\x00D\x00"
b'\x00\x00\xc6Ns>\x02\x00F\x00\xdb\xdd%\x04\xf7%gukaY\xea\x83oK\x8a')
Результат разбора:
'A1': 61176,
{'A2': [-8741, 1061, 9719],
'A3': [{'B1': 17670296524302742761,
'B2': {'C1': 58, 'C2': 21},
'B3': 0.44863334470940197},
'B1': 16886290333610825128,
{'B2': {'C1': 103, 'C2': 89},
'B3': 0.1036089979210788}],
'A4': 106,
'A5': 'gu',
'A6': {'D1': 0.23760518431663513, 'D2': [-363241109, -1974767741]}}
Пример 2
Двоичные данные:
b'EQM\n\xce\x03\x00>\x00\x00\x00\xbcX\x0f\x958\xd7\xc3\xe3\xe4\xaeJs\x95'
(b"w\xcaf\xe2?\xde\x04\x96%\xab<\x9fg\xb4\xc2\xa8\xaaJLh\xf7\xcc\xbf'"
b'\x06\x00D\x00\x00\x00\xef\x0fO?\x02\x00J\x00L\x97/o\x11\xc6nimckwUV'
b'\xef\xda\xbcJ&t')
Результат разбора:
'A1': 52746,
{'A2': [-26804, 28463, -14831],
'A3': [{'B1': 16412198105087170748,
'B2': {'C1': 228, 'C2': 174},
'B3': 0.5750477157231242},
'B1': 7466753412971234526,
{'B2': {'C1': 180, 'C2': 194},
'B3': -0.22630027508906392}],
'A4': 39,
'A5': 'nimckw',
'A6': {'D1': 0.8088368773460388, 'D2': [-621849003, 1948666556]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x55 0x4a
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив char, размер 5 |
3 | Массив структур B, размер 2 |
4 | int16 |
5 | uint8 |
6 | Адрес (uint32) структуры C |
7 | uint64 |
8 | float |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | double |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
3 | Адрес (uint16) структуры D |
4 | Массив double, размер 3 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int64 |
3 | uint64 |
4 | Размер (uint32) и адрес (uint16) массива float |
5 | int64 |
6 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CUJ\x06npuju\x8a\xfb\xed\xb4\x90\xa90\xef.\xeb?v\x1a\xe9\x80\xe8\x10\x08F'
(b"\x80\xd7\xbf\xe7y\xfep\x00\x00\x00\x05\xbf\xea\xcd'\xb6\xa37\xa0\x8f"
b"l\xbf\x88'\xc7\xbdb\xf0\x14?\x91\x96\xc4\xbe\t\xb5|=<\xab\xac\xee\x80\xee"
b"\xe6\xbfQx!tg\xa2\xb7\xc8.\xdaQ\x1d?\xdd\x9c\xc0\x04\x00\x00\x002\x00U\xde2'"
b'/V\xa3\xb9\xa4\xea@n\xb3\x82\xdcQ\xa1\xc5\x8d\xfaB\x00\xe0\xb0\xadY%\xd2'
b'\xc8\xbf\x00\xa0\xa5\xb9\xc9\xcf\xcc\xbf4\xa6\x03UY\xa0\xd6\xbf')
Результат разбора:
'A1': 6,
{'A2': 'npuju',
'A3': [{'B1': -1142, 'B2': -19, 'B3': 0.8494792890965273},
'B1': 6774, 'B2': -23, 'B3': -0.3672041968126294}],
{'A4': 31207,
'A5': 254,
'A6': {'C1': -14943,
'C2': -1395,
'C3': {'D1': -0.716614214097127,
'D2': -3983536780172232623,
'D3': 13879211414793607726,
'D4': [-0.09724336862564087,
0.581792950630188,
-0.3839612305164337,
0.06169608607888222],
'D5': -5070113994967949739,
'D6': 5898733319109012132},
'C4': [-0.1939131439097599, -0.22509118618768298, -0.3535369234292347]},
'A7': 4009248375364566789,
'A8': -0.9240665435791016}
Пример 2
Двоичные данные:
b'CUJmlwirm\x04\xb5\xe3$c{~}\xeb\xd5\xbf\xcc\xe5q0\xfbg\x9f\x9a\xfb\xc3\xbf\\'
(b'f7h\x00\x00\x00\xe4\xdaX\x7f)\xdae&\x86N\x02\xbf\xc3r\r=\xdcLQ\xbeD\x98'
b'\xcd\xae\xa9p\xd2\xbf\x9e\xf0\xdc\xf2=\xee\x13\xc4\x85\x0e\x05\x10\x80d'
b'\x18\xca\x02\x00\x00\x002\x001\xd3\xf4\xe0\xc5\xd4\xbbN\x10Z\xf5\x01'
b'>\xbc\xaa\x88w\xb2\x0fJ:\x00.\xae\xf24rR\xe8?L\xfd\x89\x84\x84.\xe7\xbf\xec#'
b'\xb7\xf0l\x89\xe0?')
Результат разбора:
'A1': 109,
{'A2': 'lwirm',
'A3': [{'B1': -19196, 'B2': -29, 'B3': -0.34249818183666236},
'B1': -6708, 'B2': 113, 'B3': -0.1561158445692512}],
{'A4': 26204,
'A5': 55,
'A6': {'C1': -19849,
'C2': 18959,
'C3': {'D1': -0.2881263930379456,
'D2': -4317845667883192162,
'D3': 14562499896289857157,
'D4': [0.03453327342867851, -0.20439475774765015],
'D5': 5673362101951058737,
'D6': 9847890509705861648},
'C4': [0.7600642236843151, -0.7244284237530478, 0.516775579592943]},
'A7': 2766857417854081764,
'A8': -0.5090106725692749}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x41 0x47 0x56 0xfe
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint16) и адрес (uint16) массива int16 |
3 | int16 |
4 | Структура B |
5 | int8 |
6 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 8 |
2 | Структура D |
3 | Размер (uint16) и адрес (uint32) массива float |
4 | Массив int64, размер 4 |
5 | Адрес (uint32) структуры E |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив int8, размер 2 |
3 | int32 |
4 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'IAGV\xfe\x1b\xd0\xab\xf8\x00\x04\x00h\x85\xfb\x00\x00\x00p\x00\x00\x00s\x00'
(b'\x00\x00v\x00\x00\x00y\x00\x00\x00|\x00\x00\x00\x7f\x00\x00\x00\x82\x00'
b'\x00\x00\x85\xbf\xe2y\xe9\xe4\xf7\xdd`=\x8c\xf6O\x00\x04\x00\x00\x00'
b'\x88\xf7\xf4\xf4p\xf4 \x9aD\xfd\xc2x\xdbD\xdb\xa4\x14\xfa\xda@T\xf3\xa3A'
b'\xf7\xa9\x86\xf8\xed@\xb5\xaa=\x00\x00\x00\x98Cl\xd9\xab\xae\x89*u\x066\x80'
b'\xa8\n\x8e8\xebG\xf7\x02\xbaE(\xad\n\x88\x13\xc3\xf7\x97\xf3\xab'
b'k\xaa\x1d\xdd\xbf!\xe8M?\x14Sp=F\x98K\xbf|\x0e\xd8\xf9\x8d\xd7\x060\xc4XL'
b'\xb9\xa2i\xbd\xc4\x087\xa3')
Результат разбора:
'A1': 466660344,
{'A2': [-21586, -30422, 29958, 13952],
'A3': -31237,
'A4': {'B1': [{'C1': 168, 'C2': 2702},
'C1': 56, 'C2': 60231},
{'C1': 247, 'C2': 698},
{'C1': 69, 'C2': 10413},
{'C1': 10, 'C2': 34835},
{'C1': 195, 'C2': 63383},
{'C1': 243, 'C2': 43883},
{'C1': 170, 'C2': 7645}],
{'B2': {'D1': -0.5773820373569087, 'D2': 1032648271},
'B3': [-0.6324508786201477,
0.5793981552124023,
0.048485081642866135,
-0.9846014976501465],
'B4': [-579569686054659516,
-161433753483500524,
-370913285695651337,
-6231019336543917507],
'B5': {'E1': -464478764961343412,
'E2': [-71, -94],
'E3': 1774044168,
'E4': 14243}},
'A5': 67,
'A6': 27865}
Пример 2
Двоичные данные:
b'IAGV\xfe\xc9oQ\xc4\x00\x02\x00hX\xe4\x00\x00\x00l\x00\x00\x00o\x00'
(b'\x00\x00r\x00\x00\x00u\x00\x00\x00x\x00\x00\x00{\x00\x00\x00~\x00'
b'\x00\x00\x81\xbf\xe2\x84\xa0\xda@\x8b\x82\x13\xde\xcd\xa6\x00'
b'\x04\x00\x00\x00\x84\x1cOZ\xee\x06zk\x8a\x82\xe9\xea\x9a\xdc\xe1O'
b'\x12X\x98\x18\xfa{:\xff\xb0+S\xcc\xad\xd1&\xa9\x90\x00\x00\x00\x94H\x0e\xda'
b'=.\t&wq\x14\x11\xf0~\x0bH"R\xe2<\xe00g\xcd\xd7\x00\xa2(a\x0e\xaaC'
b'\xbf,\x1b\x84\xbf\x07B\xa1>\xd4\xae\xc6\xbe~a\x85t\x05\xf1\xd4\x0b\x93q\xa1'
b'\xb47\xd0\xf0x\xd0-\x17')
Результат разбора:
'A1': -915451452,
{'A2': [15662, 2342],
'A3': 22756,
'A4': {'B1': [{'C1': 119, 'C2': 28948},
'C1': 17, 'C2': 61566},
{'C1': 11, 'C2': 18466},
{'C1': 82, 'C2': 57916},
{'C1': 224, 'C2': 12391},
{'C1': 205, 'C2': 55040},
{'C1': 162, 'C2': 10337},
{'C1': 14, 'C2': 43587}],
{'B2': {'D1': -0.5786899817215814, 'D2': 333368742},
'B3': [-0.6722948551177979,
-0.5283604264259338,
0.41539591550827026,
-0.2484188824892044],
'B4': [2039949134579526538,
-9013415228353720558,
6383879935886032816,
3122064013608266128],
'B5': {'E1': 8360354176312766881,
'E2': [-76, 55],
'E3': -789546800,
'E4': 11543}},
'A5': 72,
'A6': 3802}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x21 0x48 0x44 0x4e 0x42
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | int64 |
3 | uint16 |
4 | int16 |
5 | Адрес (uint32) структуры B |
6 | Структура C |
7 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | double |
3 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | uint8 |
4 | Структура D |
5 | Массив структур E, размер 2 |
6 | Размер (uint16) и адрес (uint16) массива int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | Размер (uint16) и адрес (uint16) массива char |
4 | int64 |
5 | float |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
3 | int8 |
4 | int64 |
5 | uint32 |
6 | double |
7 | Массив int16, размер 4 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'!HDNB?\x05\x93\xff\x8e\xc2P\xfb;Y \x9e\x9b\xf7\xfd;\x83\x05_l\x8f\x00\x00'
(b'\x00\x10\xb3\x8eg\x84\x07w\xb3Mq\x1d;RVi\xaf\x02\x00\x9c\x00f\xb3>\xc0`< '
b'<\x14I\x13\xbe\xa4\xb2A\xbfI\xee\x931\x83\x83=\xb8z\x81\xd7q\x93-\x01'
b'\x14\xee\xe5\xed\x11\\\xdc?\x92\x17\xa1\xc3\x12\xc7\xa28\xcc\x9d\x9d\xbe'
b'\xab\xa4 \xc0\xd1L\xe2-\x9eT\x0c\xb8{\xbfn\xf0\x9cr\xc9\xed\xd3\xc8?\x99'
b'\x91\x1f>9\xc2\xf9,\x02\x00\x9e\x00Fm\xb7\x19W\x8c\x12]?\xd2 \xbf\xf0'
b'\\\x91\x95\x80\xfe\xe4?\xc1pl\xf9^zYR\x05\xf3\xe4')
Результат разбора:
'A1': -337556052623817409,
{'A2': 4322883465090455867,
'A3': 1411,
'A4': 27743,
'A5': {'B1': -0.6282081007957458, 'B2': 0.6560671731230325, 'B3': 193},
'A6': {'C1': 16,
'C2': -29005,
'C3': 103,
'C4': {'D1': 3010922372,
'D2': -5807015333338451635,
'D3': 'pl',
'D4': 4332529227770278758,
'D5': -0.1438334584236145},
'C5': [{'E1': -0.7566320896148682,
'E2': -4535,
'E3': -109,
'E4': -2917916151834770639,
'E5': 19764081,
'E6': 0.44311950905077535,
'E7': [6034, -15455, -14574, 14498]},
'E1': -0.30784451961517334,
{'E2': -23381,
'E3': 32,
'E4': 888508946406232512,
'E5': 1858042808,
'E6': 0.19396755539239718,
'E7': [-28263, 15903, -15815, 11513]}],
'C6': [1501191929, -453835438]},
'A7': 6706577100829584710}
Пример 2
Двоичные данные:
b'!HDNB\xdbA\x85~\xea6\xdd\xd9?\x8b\xa1\x9768\x81\xf05\x92\xa0\xf3\x8f\x00\x00'
(b'\x00\x03\xea\x89<\x80{\xbc\xbdd\x03\xa9O;,\xb6\x0b\x03\x00\x9c\x00b\xf7\xf9'
b'\x1d\xc2\x1a\xa3g\xfe\ra\xbf\xf3\xb6h\xbfG\xfa;{\xfd\xf7\xbd\r;\xc2\xea'
b'\xbeO\xa4\xae\xa8+\xfc+\x04\xe0\xd1\xbf\x16O\x86\xe9\xd3\xa9\xff(t\xaa\xf3>'
b'Zo\xb8 \xefF\xbd%k$\x81\xabl\xba\x00\x18\xaf\xa0\x1a\xc4H\xd3?G;pf\xaf'
b'\xc4{\xa1\x04\x00\x9f\x00r%g\xca\x11\x14\xc2\xc3\x11{8\xbf\xc0\xd8\xb2R\x83'
b'/\x9e?\x19cgn\xefjX^\xf3{\x9a\xef\xf3\x8b\x18C\x9c;.\xea')
Результат разбора:
'A1': -2747979816853224997,
{'A2': -1116549425487836353,
'A3': 37429,
'A4': -3168,
'A5': {'B1': -0.7206278443336487, 'B2': 0.02947812263729399, 'B3': 25},
'A6': {'C1': 3,
'C2': -30230,
'C3': 60,
'C4': {'D1': 3183246208,
'D2': 843910613429715812,
'D3': 'cgn',
'D4': 7467842028139312994,
'D5': -0.8791197538375854},
'C5': [{'E1': -0.9090415835380554,
'E2': -1465,
'E3': 59,
'E4': -1530595993144787589,
'E5': 2930003902,
'E6': -0.27929786963857817,
'E7': [20246, -5754, -22061, 10495]},
'E1': 0.4759098291397095,
{'E2': 28506,
'E3': -72,
'E4': -9141063533821759712,
'E5': 12217515,
'E6': 0.3013162860904557,
'E7': [15175, 26224, -15185, -24197]}],
'C6': [1582852847, -275088397, 1125682163, -366068836]},
'A7': -4340885024188979854}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xdc 0x57 0x4c 0x52
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | float |
3 | int16 |
4 | Размер (uint32) и адрес (uint16) массива структур C |
5 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | uint32 |
4 | Размер (uint16) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | Адрес (uint32) структуры D |
3 | uint8 |
4 | int32 |
5 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int16 |
3 | int16 |
4 | int8 |
5 | uint16 |
6 | Размер (uint16) и адрес (uint16) массива int16 |
7 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив uint16, размер 5 |
3 | int64 |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"\xdcWLR*i\xd6\x13\xc2'\x01\xdbT\x1b\xb4\x85}\x05\x00'\x00\x00\x00\x06"
(b'\t\x06?B\xc6\x02\x00\x00\x00f\x00\x98\x00\x00\x00zwody{\xe3_\xc4'
b'\x91\xd3\xcb\x00\xfaQ-\xd6\x93\x9a\xeb\xbf\x89Vf.\x80T_\x04\x00,\x00-'
b'S\xb6\xdf|\xbe\xbb@\xa0\xaf\x9d\x0c`\x91\xe3?\xe2\x89\xa9\xaf\xf6'
b'f\xf4\x02\x00K\x00u\xa5\xb3JU\x0c\x9f\xcc\xc05\xe1\x9b4\x00\x00\x00,\xd4'
b'q\x8a\x16>\\\xa6u\xb3\x82\xd9yH\x8dQ\xa4<~m\x9dO\x00\x00\x00\x8d'
b'\xd8\xb4\xf2\x99m^\xe4v\xb5\x85\x8c\x93\x91\xb94U\xf3\xc3\xfedBEC\x19'
b'\xba\x86E^\xa9\x9cNe`')
Результат разбора:
'A1': {'B1': 42, 'B2': 6114482189357012585, 'B3': 2105914395, 'B4': 'zwody'},
{'A2': 0.5235751867294312,
'A3': -14782,
'A4': [{'C1': 11232318047821696085,
'C2': {'D1': -0.8626193221230658,
'D2': 22153,
'D3': 11878,
'D4': -128,
'D5': 24404,
'D6': [-7301, -15265, -11375, 203],
'D7': 3753268013},
'C3': 44,
'C4': 378171860,
'C5': 8780192655820086334},
'C1': 11343861835336093000,
{'C2': {'D1': 0.6114959951787462,
'D2': -30238,
'D3': -20567,
'D4': -10,
'D5': 62566,
'D6': [-16772, 16571],
'D7': 1253287285},
'C3': 141,
'C4': -1712147240,
'C5': -7814724238964400531}],
'A5': {'E1': 47505,
'E2': [21812, 50163, 25854, 17730, 6467],
'E3': 7299944297259173562,
'E4': 96}}
Пример 2
Двоичные данные:
b"\xdcWLR\x19\xb30`\xa3O\xab\x149?\xa6p\x05\x04\x00'\x00\x00\x00w\xa65\xbf\xb1"
(b'v\x02\x00\x00\x00c\x00\x95\x00\x00\x00yssg\xc3\x0c\xf4\xf0\xf5\xc4`z\x1c'
b'\xe8}$\xd2\xbf\xe4\xde\xb4\xcc\xe5dV\x03\x00+\x00\xeb\x13h\xaa'
b'\x7f\xa0\x89\x10\x1cY\xf7\xa1K\xe1\xec?]0\xd6\x83\xd7\x8a`\x02\x00H\x00\x13'
b'\x0cJ\x93-\xce\xb1\x1e\\\xea\xe7W1\x00\x00\x00,\x19\xf3b\x04`v\xf9\xf2'
b'l,\x83\x9c\xde\xec[\xb3\x9f\xc1:\xd1L\x00\x00\x000\xafq\xd7\x85l`\xb9'
b'\xcb\xcbn\xf2\xb1)\x82x\xfe\xe1\xcc\xb4\x93\xc2i\xb8\x92\xee]"\x903\x9c\x86'
b'\x96\xf1')
Результат разбора:
'A1': {'B1': 25, 'B2': 4113100718227861683, 'B3': 91268671, 'B4': 'yssg'},
{'A2': -0.7095713019371033,
'A3': 30385,
'A4': [{'C1': 6334289082292751917,
'C2': {'D1': -0.28347728411782747,
'D2': -8476,
'D3': -13132,
'D4': -27,
'D5': 22116,
'D6': [3267, -3852, -15115],
'D7': 2858947563},
'C3': 44,
'C4': 73593625,
'C5': -7168837335399172512},
'C1': 15076575594229263582,
{'C2': {'D1': 0.9025018847849284,
'D2': 12381,
'D3': -31786,
'D4': -41,
'D5': 24714,
'D6': [-24449, 4233],
'D7': 2471103507},
'C3': 48,
'C4': -2049478225,
'C5': -5624311163056988052}],
'A5': {'E1': 33321,
'E2': [65144, 52449, 37812, 27074, 37560],
'E3': -7600215575865696786,
'E4': 241}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x3e 0x53 0x59 0x42
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | Адрес (uint32) структуры B |
4 | Структура D |
5 | int16 |
6 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint32) массива структур C |
3 | Размер (uint32) и адрес (uint16) массива float |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
3 | Массив int16, размер 6 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив int32, размер 8 |
3 | int64 |
4 | Размер (uint32) и адрес (uint16) массива double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'>SYB\xe4?\xd23I2x\x1d\x94\x00\x00\x00w\xa0(\xffP\xe6\xdb\xec\xf1e\xda\xc1'
(b"\t\xf0\xa3\x89\x03Y\x9a\x96D\xf2'\x03S0\xe0\xf5\xccg\xdc\x8d\xda\x8f\x92`"
b'0\x1d\xa7X\x8a\x1e\x9aL0\x91\x8a\xca\xa1\x00\x00\x00\x03\x00\x8d7'
b'\xc7+\x1a\xecU\x121k.\xde\xd0$U\x8f\x06\xefr_\xe7\xc5x1T\xeb]3b\xc2'
b"\xd3\xa1V4%D\xca)\xd0^\xeb=\xe8B\xf8>mH\x9a2\xa7\xfa'\xa98\x8e\x83\x00"
b'\x00\x00\x02\x00\x00\x00Q\x00\x00\x00\x02\x00o\xbf\xeew|\xfa\x98\x08'
b'\xcc\xbf\xd6\xba\xff\x93\x87\xfa\xf0?\xaa\xec\x94Qn\xc5\x00')
Результат разбора:
'A1': 228,
{'A2': 0.28438024452813093,
'A3': {'B1': 3650161071256800899,
'B2': [{'C1': -34,
'C2': 53284,
'C3': [21903, 1775, 29279, -6203, 30769, 21739]},
'C1': 93,
{'C2': 13154,
'C3': [-15661, -24234, 13349, 17610, 10704, 24299]}],
'B3': [0.11340898275375366, 0.23172226548194885]},
'A4': {'D1': -6905989305637016335,
'D2': [1708835081,
-257718013,
1503303236,
-232324269,
820049356,
1742507482,
-1886232528,
497506442],
'D3': 2205158739035212449,
'D4': [-0.9520859617626001, -0.35516347319928254, 0.0525862073331016]},
'A5': 14279,
'A6': 3106054743146982190}
Пример 2
Двоичные данные:
b'>SYB!\xbf\xd3\xd7\xe8\x93\xee\xde|\x00\x00\x00w\x03\xff&\xbbzg\xa3'
(b'\x13\x9c\xa6O\xe2\xbd\x89\xbf\xbf4\xed\xfc\x9e<\xdb=\x8d?\x1f:\x9a>\x1cX'
b'\xc8h\xb9\x10\xbf=\xbd\xbc\xd8\xaa}\x99\r\x82T\xcf#\x00\x00\x00'
b'\x03\x00\x8d\x15\xf2\rU\x87\x1b3Y;F\x8c\x97\xbc\xc8\xe5\x96\xdf,\x84\xcf,'
b'6\xf9\xb7\x86\x8f\xf9\xf3\x9f\xb8\xd5\x1c/\xa2\x8fY\xa1(]\xd1>'
b'\xd5\xa2\xfe\xbd\xe2\xfe\xe9-\xca\xcbn\xfa\xe2\xc6\x81\x00\x00\x00\x02\x00'
b'\x00\x00Q\x00\x00\x00\x02\x00o\xbf\xeb\xfe\x8a\x8d\xbcw\x18\xbf\xe8\xf0'
b'\xc4nN4\x16?\xe2\x9bs\x91\xe53\xd6')
Результат разбора:
'A1': 33,
{'A2': -0.3100530094775207,
'A3': {'B1': 3299673354518316673,
'B2': [{'C1': -116,
'C2': 38844,
'C3': [-14107, -26913, 11396, -12500, 14073, -18554]},
'C1': -113,
{'C2': 63987,
'C3': [-24648, -10980, 12194, -28839, -24280, 24017]}],
'B3': [0.417259156703949, -0.11083776503801346]},
'A4': {'D1': 287991487829353235,
'D2': [-1666822174,
-1115045953,
888011934,
1021001101,
1059011226,
1042045128,
1756958911,
1035844824],
'D3': -6161600431872749789,
'D4': [-0.874821926907063, -0.7793905405429793, 0.5814760064619076]},
'A5': 5618,
'A6': 960822646408821574}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xf3 0x4f 0x54 0x46
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | int8 |
4 | uint8 |
5 | Структура B |
6 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур C |
2 | Размер (uint32) и адрес (uint32) массива uint8 |
3 | uint64 |
4 | Адрес (uint16) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
3 | uint32 |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint32) и адрес (uint16) массива uint8 |
3 | int64 |
4 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xf3OTF$\xd4 \xc3\x00\x03\x00%\xb6\x14\x00\x02\x00B\x00\x00\x00\x03\x00\x00'
(b'\x00FS~\xa8\xcc\x9e\xb2\xf0\xdd\x00K\x05mlg!\xa8\x9a\xee\xb3( i+\xc8\x19^'
b'\x8d\xfa\xb7\xd9Y\x94\xcc\xe3\x8a\xb88J\x85i\x00(\x005/\xe1\xc9\x9a0@'
b'\xe7Z$\x00\x00\x00\x02\x00I\xd4\x91)\xf6\x90\xad\x9a\x89\xfa\xc0\xc7\xa3')
Результат разбора:
'A1': 617881795,
{'A2': 'mlg',
'A3': -74,
'A4': 20,
'A5': {'B1': [{'C1': 564697838,
'C2': -1289215895,
'C3': 734533982,
'C4': -115},
'C1': -88614567,
{'C2': -1798511734,
'C3': 3090696837,
'C4': 105}],
'B2': [47, 225, 201],
'B3': 6016431749002883293,
'B4': {'D1': 1088903716,
'D2': [154, 48],
'D3': -3129674127079794039,
'D4': 4206938019}},
'A6': 5}
Пример 2
Двоичные данные:
b'\xf3OTF\x19H\r`\x00\x02\x00%\x15\xbd\x00\x02\x00A\x00\x00\x00\x05\x00\x00'
(b'\x00E\xb9\xb6\x94\x92F:87\x00L\x84ho{\x94\xa2i\xbeI\xde%;\x0b\x81\xc5\xf4'
b"\xee\r\x1e\x02\x18\xf4\x9e%\x84\x92\xa3\x01w\x00'\x004\x82\xb5+"
b'\xd2\x98\xb9\x85\xfe\xc5)L\x00\x00\x00\x02\x00Jp\xa2Q\x1d/\xea'
b'\xfb\xce\xe0\xbf\xb4\xf8')
Результат разбора:
'A1': 424152416,
{'A2': 'ho',
'A3': 21,
'A4': 189,
'A5': {'B1': [{'C1': 2073338473,
'C2': -1102455259,
'C3': 990609861,
'C4': -12},
'C1': -301130238,
{'C2': 418684453,
'C3': 2224202497,
'C4': 119}],
'B2': [130, 181, 43, 210, 152],
'B3': 13382046698742364215,
'B4': {'D1': -20633268,
'D2': [185, 133],
'D3': 8116138664274885582,
'D4': 3770660088}},
'A6': -124}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x4a 0x53
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | Адрес (uint32) структуры B |
3 | Массив char, размер 3 |
4 | Массив uint16, размер 2 |
5 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 4 |
2 | float |
3 | Адрес (uint16) структуры D |
4 | int32 |
5 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива float |
2 | uint32 |
3 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | double |
3 | uint16 |
4 | int64 |
5 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'EJS/\r\x89o?\x89\x14\x18x\x00\x00\x00xef\xbf\xd2#\x8e\x05\x08\xb6sO\x03'
(b'\x1b\xbe+\xf3M\xbd2\xfao>Sx\x98>\xe7\xa3T?\x84\xfd(>z\x0ch?\xf8\xa4'
b';?\xef\x1a\x11>\x99\xf8.\xbeuW.?d\x86\x81>\x9b\x11\xc7>\xb8\xa18\xbf\xbe\xde'
b'\xb0\xbe\x00&\x19l\x82\xbe\xcc5l\xcb\x1b\xab\xf1A\xd7?\xe9HNT\xa9\xfe'
b'\xe6\xe2[t~<\xabZ\xe1C*\x92\x02\x00\x1e\x00\xa2*lr\x08\x04\x00&\x00]\x00\xc4'
b'\xcfF\x04\x006\x00!\xf7\x12\xb4\xa4\x04\x00F\x00*\xf5\xf2Z\xc6\xbbY-?V\x00j$'
b'M\xd7kU\t~\xba]\x1d ')
Результат разбора:
'A1': 1735162661991681327,
{'A2': {'B1': [{'C1': [-0.05028073117136955, 0.23435285687446594],
'C2': 1919691426,
'C3': 8},
'C1': [0.2977930009365082,
{0.8306259512901306,
0.1650295853614807,
0.9064403772354126],
'C2': 3485728861,
'C3': 70},
'C1': [0.7329859733581543,
{0.14170430600643158,
-0.17087019979953766,
0.6810219883918762],
'C2': 3021141793,
'C3': 164},
'C1': [0.25297844409942627,
{0.38880619406700134,
-0.7212176322937012,
-0.34544938802719116],
'C2': 1525871914,
'C3': 198}],
'B2': 0.6771504282951355,
'B3': {'D1': 3876682846627767808,
'D2': 0.36339990339108996,
'D3': 18665,
'D4': 8384544613023175758,
'D5': -7914438759982351234},
'B4': -682810262,
'B5': 2314108839098144107},
'A3': 'xef',
'A4': [53951, 36387],
'A5': 13698546331356104709}
Пример 2
Двоичные данные:
b'EJSf\x15(\x033~\x81\xab|\x00\x00\x00qxi\xe4L\xec)\xcc\xca\xb9Q\xfe)'
(b'\xc5\xe8\xa0vM\xbe\xd7|]\xbf\r=8\xbf\xca\n\x0f?\xb8CQ\xbf@$E\xbf\xad\xda'
b'\xb8=\xfal1\xbe\xb5\xe6>\xbf\xe1V \xbf\x0c|d\xbf\xe3KE\xbe\xd5\xa9'
b'\xd0\xbd\xc6bQ?y\x97R\xbf\x9f\xd5\n\x9f\xd02\xd7\r\x18K\xd8\xfe\x169'
b'\xcb\xbf8\xec\xf6\x9f\xecqO\xe1F\xe94\xe1\xd7d\x11\xe7\x04\x8c'
b'\x04\x00\x1e\x00\x9d\x1c\xc2O\xad\x04\x00.\x00\x97z\xde\xa5\x7f\x04\x00'
b'>\x00\xa0\xc2w\xad\xff\x03\x00N\x00/\x14F}\xd6\x02\xad\xd2\xbeZ\x00D\xe5'
b'\xff\x9d\x96\x8crd\xb7\xa7\x8b\x8c')
Результат разбора:
'A1': -6088446463666809498,
{'A2': {'B1': [{'C1': [-0.20064783096313477,
-0.8651861548423767,
-0.7196815609931946,
0.5587583780288696],
'C2': 1338121373,
'C3': 173},
'C1': [-0.8174395561218262,
{-0.7700843811035156,
0.09026084095239639,
-0.17326727509498596],
'C2': 2782821015,
'C3': 127},
'C1': [-0.7457078099250793,
{-0.6263256669044495,
-0.8925178050994873,
-0.19267229735851288],
'C2': 2910306976,
'C3': 255},
'C1': [-0.10188642889261246,
{0.8179134130477905,
-0.8226237893104553],
'C2': 2101744687,
'C3': 214}],
'B2': -0.411476194858551,
'B3': {'D1': 997321714088727967,
'D2': -0.21267974322889738,
'D3': 60472,
'D4': -1637373683172597770,
'D5': -8357300946600468172},
'B4': -1644174012,
'B5': 10127372593178774678},
'A3': 'qxi',
'A4': [19684, 10732],
'A5': 16772858559480842956}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x51 0x52 0xa3
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | Адрес (uint16) структуры B |
3 | Размер (uint16) и адрес (uint16) массива структур C |
4 | Размер (uint32) и адрес (uint16) массива char |
5 | Размер (uint16) и адрес (uint32) массива int16 |
6 | Структура D |
7 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | uint8 |
3 | uint8 |
4 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int32 |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AQR\xa3\x00\x05\x00\x00\x00,\x001\x00\x02\x00=\x00\x00\x00\x03\x00Q\x00\x02'
(b'\x00\x00\x00T\x00\x04\x00\x00\x00X\x93\xd5hd\r\xc0R\x0b\t\xbayzjgzxX\xad'
b'_\xa8#\x00\xf4\xeet/\xdek\x0b\xcc\xcb\x89\x1d\xa3\xd0\xc9\xff\xacp\x02(o'
b'\x91\xa5&u\x16qev\xb5\x89\xba{F\xadA4\x104?c<(\xc5t\x05\xe4V\xb5')
Результат разбора:
'A1': 'yzjgz',
{'A2': {'B1': 2019077471, 'B2': 12115528474529378270},
'A3': [{'C1': 1795935435, 'C2': 137, 'C3': 29, 'C4': -1546597889},
'C1': -1401945560, 'C2': 111, 'C3': 145, 'C4': -1524206314}],
{'A4': 'qev',
'A5': [-19063, -17797],
'A6': {'D1': [1185759540, 271859555, 1009304948, 98850485], 'D2': 37845},
'A7': 7522152397276907962}
Пример 2
Двоичные данные:
b'AQR\xa3\x00\x04\x00\x00\x00,\x000\x00\x02\x00<\x00\x00\x00\x04\x00P\x00\x02'
(b'\x00\x00\x00T\x00\x02\x00\x00\x00Xb\x1d\xbe[\xb8\xabu\xcdV\x1bbgkq\xa3\xbc"n'
b'M\xb9\x18>\xb4\xbf\x9f\x99\xc4\xbes\xf5\xf7H3\x11\x82\x05\x934\xd9\xe3.\xf5'
b'\x92\xe6\xe2&fnyx\xe5\x86\xeeL\xb0~\xc0\xa1\xc8\xcc\r\xb7')
Результат разбора:
'A1': 'bgkq',
{'A2': {'B1': -1547951506, 'B2': 5600534269211418521},
'A3': [{'C1': -994151435, 'C2': 247, 'C3': 72, 'C4': 856785413},
'C1': -1825252893, 'C2': 46, 'C3': 245, 'C4': -1830362586}],
{'A4': 'fnyx',
'A5': [-6778, -4532],
'A6': {'D1': [-1333870431, -926151241], 'D2': 25117},
'A7': 13716760136642287131}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x54 0x44 0x46
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур B |
3 | Размер (uint32) и адрес (uint16) массива uint16 |
4 | int16 |
5 | Структура E |
6 | uint16 |
7 | uint32 |
8 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | Структура C |
3 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива int32 |
2 | int32 |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | uint64 |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint32) массива int16 |
3 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'TTDF\xbac\xa5A\x02\x00\x93\x00\x02\x00\x00\x00\x97\x00W\x7f\xf0Q#\xbf'
(b'\x03\x00\x00\x00\x9b\x00\x00\x00<\xf0\xfb\xbe\xbba\xc14%\xf8\x9b\xef'
b'db\xe3\xb5<\r\x7f\xd2\x9ah\x94-\xfd\xca\x02\x00,\x00\x00\x00\x03\x00\x00\x00'
b'.\x00\x00\x00\xb1X\xd3 N\x01\x97\xf9~\xd5T\xaf\xf1\xdd_\x9eVr\xc0\xa4'
b'\x1d\xd4boihi\xae\xf4"\xbd\'\x16_\x8cG\x18\xbaI\x05\x00^\x00\x00'
b'\x00\x03\x00\x00\x00c\x00\x00\x00ED\xff\xe8\x9b\x89\xda"\n\xfc\x9c'
b'\x98\xb5\xc7Gh\xd6}ys\xd55:\x00o\x00\xe3\x97g\x9c\x16\xdd5g\xc7\xf5')
Результат разбора:
'A1': 1101358010,
{'A2': [{'B1': 'db',
'B2': {'C1': [222082531, 1754976895, -889377388],
'C2': 550721713,
'C3': 4187423054},
'B3': {'D1': 2941572478, 'D2': 56817, 'D3': 15284553856824286815}},
'B1': 'boihi',
{'B2': {'C1': [-1121782610, -1939925465, 1236932679],
'C2': -385924027,
'C3': 584747419},
'B3': {'D1': 2560424970, 'D2': 51125, 'D3': 3879133619688990791}}],
'A3': [38883, 40039],
'A4': 32599,
'A5': {'E1': -0.6379690170288086,
'E2': [-8938, 26421, -2617],
'E3': -0.49206721782684326},
'A6': 25019,
'A7': 4163187905,
'A8': -4197}
Пример 2
Двоичные данные:
b'TTDF\x1cn\x9e\xdf\x02\x00\x94\x00\x04\x00\x00\x00\x98\x00\xa1\x96'
(b'z\xee\xe0\xbe\x06\x00\x00\x00\xa0\x00\x00\x00\x00\x84\x1b?BB5\x08'
b'\x0e\xe1\x9f\x15knnx\x10\xd8S9y}\xb0(\xb27\xce\xf7\xb5\xaa\x11k\x04\x00,\x00'
b'\x00\x00\x04\x00\x00\x000\x00\x00\x00J\xc4(\xbe\x13\x19\xc7x\x8f\x9a'
b'\x1b5\xf1\x9d\x98\x8d,\xe1\xec\x89K\xabgwaf\xce:)\xc1^\xbf\x0c\x16'
b'\x04\x00d\x00\x00\x00\x02\x00\x00\x00h\x00\x00\x00;n\xfc\xac\x18/'
b'\xdb\xc0w\x04\xdb\x04P\xf1~\x82\xc8\xd1\xb6\xcc\xfd\xde@\x00p\x00\xa8{\xf5/'
b'\xfd\xe3\xc3Z#f5[\xb7\x89\xbek\xd0\xfc\xa0\xd0')
Результат разбора:
'A1': 3751702044,
{'A2': [{'B1': 'knnx',
'B2': {'C1': [961796112, 682655097, -137480270, 1796319925],
'C2': -1104624566,
'C3': 2026314003},
'B3': {'D1': 891001487, 'D2': 40433, 'D3': 12343110854222056856}},
'B1': 'gwaf',
{'B2': {'C1': [-1054262578, 369934174],
'C2': -1392742853,
'C3': 3235589912},
'B3': {'D1': 81462391, 'D2': 61776, 'D3': 16068224131103490686}}],
'A3': [31656, 12277, 58365, 23235],
'A4': -26975,
'A5': {'E1': -0.4393194317817688,
'E2': [26147, 23349, -30281, 27582, -816, -12128],
'E3': 0.60748291015625},
'A6': 16962,
'A7': 3775793205,
'A8': 5535}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa0 0x4a 0x44 0x45
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 2 |
2 | Массив uint32, размер 5 |
3 | Адрес (uint32) структуры C |
4 | Структура D |
5 | Структура E |
6 | double |
7 | Размер (uint32) и адрес (uint16) массива char |
8 | Адрес (uint32) структуры F |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | uint16 |
3 | uint32 |
4 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | double |
Структура F:
Поле | Описание |
---|---|
1 | double |
2 | uint64 |
3 | Размер (uint32) и адрес (uint16) массива int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xa0JDE\xcc\xfa\x9b2\xc0\x91\xaa\x83\\\xd0\x90\x0cl\xc8\x1f\xc3\xaf\xe8\x9aq'
(b'\xd5\xc3j\x06A\\\x88a\xea4\x0c\xe6B\x93\x95pM\x93\x8f,\x1e\x8f\xceb'
b'\xd8D\x18\x08j\x00\x00\x00,\x0f\xd1]\xea#\xd9?\xde\x96\xf92|t_\xf1'
b'\xd6\xb3\xb6\xcfw\xaa\xeb\xbf\xc0_\xde\x83\xfa\x12\xa3\xbf~\x17\x1d\xd1'
b'H\xc9\xe7?\x04\x00\x00\x00t\x00|\x00\x00\x00x[\x82\xb3\x94\x19\xdb?\x01\x97'
b'obpp\x88F\x07\x81\xb8\xad"u\xc7\xf0\xd9?r\xa21i\xc6\x82=u\x02\x00\x00\x00'
b'x\x00')
Результат разбора:
'A1': [{'B1': 849083084, 'B2': 37312, 'B3': 3495723946, 'B4': -932442992},
{'B1': -391134433, 'B2': 29082, 'B3': 107660245, 'B4': 1636326465}],
{'A2': [3859559658, 1888850754, 747606861, 1657704222, 135808216],
'A3': {'C1': 0.423436332036935, 'C2': -26879},
'A4': {'D1': 0.3928171077898124, 'D2': -1053995711001422114},
'A5': {'E1': -0.8645590836437076, 'E2': -0.03725417003369058},
'A6': 0.7433208545923973,
'A7': 'obpp',
'A8': {'F1': 0.4053209918881424,
'F2': 8448052264696914546,
'F3': [18056, -32505]}}
Пример 2
Двоичные данные:
b'\xa0JDE\xa7\xab\xaa\x1f{\xf8\xd3\xf1\x8eb\x99%j\x17\x81\x05\x82 \xc9\xd7'
(b'\xaeF\x9b\x9e\xc7J\xe9\x1c\xef\x94\xea8y\x8b\xf3\x80\x11\xa5rF'
b'\x11\xd7\xfd\x9a8\xeb\xf8\xc9j\x00\x00\x00ttp.\x95\x1a\xec\xbf\xddc\x15\x92'
b'k\xba4\xe5\xa0\x0cK\xc5\xf7\x8f\xc4?\xc0\xb3\xe4=\x1f\xe7\xc4? \x8c\xa2v'
b'$m\xca?\x04\x00\x00\x00t\x00\x84\x00\x00\x004\xb4\xca\xf9\x8cB\xed\xbf\xc1b'
b'inqe\x82W\x19NK2:\x1dL\xb0\xcf\xf8\x04\xb4\xb5@\xd1\xa3\xe8\xbf\x94W\x7f\xa1'
b'~\xfc\xbf\x06\x06\x00\x00\x00x\x00')
Результат разбора:
'A1': [{'B1': 531278759, 'B2': 63611, 'B3': 1653535187, 'B4': 392832409},
{'B1': 545392001, 'B2': 55241, 'B3': 2660976302, 'B4': 485051079}],
{'A2': [954897647, 2163444601, 1181918481, 2600326929, 3388533560],
'A3': {'C1': -0.9143738631006557, 'C2': 25281},
'A4': {'D1': -0.8782449633614662, 'D2': -1930713369059957795},
'A5': {'E1': 0.16064355023818155, 'E2': 0.16330328485619638},
'A6': 0.20645576279375266,
'A7': 'inqe',
'A8': {'F1': -0.7699972404349187,
'F2': 486384905584859028,
'F3': [22402, 19993, 12875, 7482, -20404, -1841]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x54 0x55 0x41
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | Адрес (uint32) структуры B |
4 | Адрес (uint32) структуры E |
5 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint16) и адрес (uint16) массива char |
3 | int32 |
4 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур C |
5 | int32 |
6 | Размер (uint16) и адрес (uint32) массива double |
7 | Массив int32, размер 4 |
8 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint16 |
3 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | int32 |
3 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DTUA\xc5\x86I\xab\xa5\xa7}\x9dl\xa4r\xc8\x00\x00\x00\x80\x00\x00\x00\xb5'
(b'\xc3yskh\xb3\xbc\x03\xf8\x93\xa8\xaa)\x08\xb3\xd9\\\x88R\x8ebc;/'
b'\x14\xb1\x07\xe2M\xb3k\xc6\xea\x06\xfd\x85c\xd0\x81Ig\xeb\x83Zy\xee\x1e\xa8'
b"\x00\x00\x00\x1c\x00\x00\x00'\x00\x00\x002\x00\x00\x00=\xbf\xe8GW"
b'\xc9\xc2\xd1.?\xea.\x95e\xee\xc5\x80\xbf\xe1\xfd@G\n\xab`\xbf\xe8\x8e\xa3'
b'\x01\x85 ?\xc5O\x15h\xed\x0e8\x95\x9a\xc3\xd6\xc3\xf6FU\x00\x03\x00\x19'
b'\xb8 \x83\x0c\x00\x00\x00\x04\x00H\x16J\x1c\xf0\x00\x05\x00\x00\x00X'
b'8\x00\x9e\xcf8\xbe\x87jr%C.E\xb7"\x82Y\xa0\xde\xc7\xfb\x97q\xdc\xceV?\x1agL')
Результат разбора:
'A1': -4213599399791067747,
{'A2': 1822716616,
'A3': {'B1': -7666600088466733483,
'B2': 'ysk',
'B3': -1205828852,
'B4': [{'C1': 7544580526017063082, 'C2': 10504, 'C3': 179},
'C1': 15662543492245250875, 'C2': 12052, 'C3': 177},
{'C1': 568101936004786694, 'C2': 64901, 'C3': 99},
{'C1': 15024370542566398585, 'C2': 60958, 'C3': 168}],
{'B5': 373955824,
'B6': [-0.7587088528294197,
0.8181864729760235,
-0.5621644389660609,
-0.7674117116630477,
0.16647594092693097],
'B7': [939564751, 952010602, 1915044654, 1169629826],
'B8': {'D1': 1503715015, 'D2': -5}},
'A4': {'E1': 151, 'E2': 1910296150, 'E3': 0.6031386852264404},
'A5': 195}
Пример 2
Двоичные данные:
b'DTUA\xbd;y\x1c\xa8\xb7\x06L\x99\xde\x93\xb1\x00\x00\x00Y\x00\x00\x00\x8e'
(b'\xa6ct\xe3.Zvn\x16\xabo\xfbq\xe6<@\x11\xde.q\xf0\xe3\x07\x182\x00\x00\x00'
b'\x1b\x00\x00\x00&\xbf\xad\xe8"\xb1|\x03`?\xe0]\x17r3\x9c@\xbf\xe6:Kd\xe7r'
b',\xbf\xef\xdb\x8f\x87\xe13\xae0Iy\x99\xf6\xa2B4\x00\x02\x00\x19\x88ct'
b'u\x00\x00\x00\x02\x001\xfaz\xbc\xd8\x00\x04\x00\x00\x009v\xb9M\xb7HY\xd1'
b'e\x0b\xf6\xa1\x0b\xb1\x11\xbe\x81O\x05\x86\x8dx\xb8\xf8cCy\xbfZ\x95\x80')
Результат разбора:
'A1': -4811118612918630836,
{'A2': -1713466447,
'A3': {'B1': 3479445889295204916,
'B2': 'ct',
'B3': -2006748043,
'B4': [{'C1': 16370121160237951855, 'C2': 64369, 'C3': 230},
'C1': 4341489686744789219, 'C2': 1816, 'C3': 50}],
{'B5': -92619560,
'B6': [-0.05841167847211781,
0.5113637190342004,
-0.6946160288603713,
-0.9955518392467775],
'B7': [1991855543, 1213845861, 200712459, -1324237183],
'B8': {'D1': 1325762189, 'D2': 120}},
'A4': {'E1': 184, 'E2': -127712391, 'E3': -0.8538436889648438},
'A5': 166}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x42 0x4b 0xff
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив char, размер 8 |
3 | uint8 |
4 | int8 |
5 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | uint8 |
3 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур C |
4 | uint8 |
5 | Структура D |
6 | int16 |
7 | Размер (uint16) и адрес (uint16) массива uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | int8 |
3 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int32, размер 8 |
2 | Размер (uint32) и адрес (uint16) массива uint64 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'KBK\xffG\xe0\xb6\xdawtpydbzfP"?^\xc3\x96\x04\x00\x05\x00\x00\x00}_\xc9\xa4'
(b'1\xe9l\xd8F\x95\xe39\xd8\x03\xe9X>\x1c\x9enV@\xbe\xbdPJ\xfa\xd7'
b'\x9f\x0e\xf3\xd4=\xbb\x00\x00\x00\x03\x00\x87u\xd6K\x00\x02\x00\x9f\xc7'
b'x\xb7\xa9">\xf7@\\"\xa1;x\xb1Q\xba\xfd\x95\x85\xb8\xfa\xe3L\x17\x86'
b'\xecn\x0f\x9df\x0c=\xc9\xd2\xbc\xb81\x9d\x8e/\xd1\xe3u\xfd\x99"\x10[\xc3'
b'\x96\x00K\x00U\x00_\x00i\x00s\x02%\x83p\xb4\xa6z\n@\x8f!\x89\xdd2\nd\xb4'
b'\x9av\x9f8\xe2\xf6\xacP\xe7')
Результат разбора:
'A1': 1205909210,
{'A2': 'wtpydbzf',
'A3': 80,
'A4': 34,
'A5': {'B1': 0.8701719045639038,
'B2': 4,
'B3': [{'C1': 14373440147804845888, 'C2': 92, 'C3': 34},
'C1': 11618012366708080021, 'C2': -123, 'C3': -72},
{'C1': 18078376993126903311, 'C2': -99, 'C3': 102},
{'C1': 882083008980988317, 'C2': -114, 'C3': 47},
{'C1': 15124061705696579675, 'C2': -61, 'C3': -106}],
{'B4': 95,
'B5': {'D1': [-911986199,
1826113173,
-482748413,
-380092900,
-1636936128,
-1094889398,
-86532338,
-204194373],
'D2': [154674282304535050,
4651973816102292068,
13013844499466745516],
'D3': 117},
'B6': -10677,
'B7': [80, 231]}}
Пример 2
Двоичные данные:
b'KBK\xff_\x87\xad\x07uoomenza\xd6\x04\xbd\xd0B\xfdg\x00\x06\x00\x00\x00'
(b'\x87x\x87\x8f\xbf\x98\x12\xeff\x92(\xb3\xd5\x061\xf6\xf7\x8d\x8a\x0b~(o\x97'
b'\xb8\x97E\xfb\xb0HQ\x0e\xfa\x80\x00\x00\x00\x03\x00\x93\x08\x8e\xd2\x00'
b'\x03\x00\xab\xfbEu%.\xa1u\x05H\xa6\xb7\xf6\xc1\xf9g%&\xa9\xbd\xf19{i3\xc7'
b'$9r\xd2#]\x95\xdbU/\x8dD|\x14\x12\x9e{?\xb1/\xa2\xcbB\x08\xdd\xb5\xe0Z'
b'\xa0\xb08\x0e\xa7\xb8\x96\x00K\x00U\x00_\x00i\x00s\x00}:\xf9\x07\x05\x81'
b'\xcc\x88\xaek\x1e\xe3r\x01]\xa0\t\xc6\x14d\x1c\xae\xc8\x0c\xe1\xf7|+')
Результат разбора:
'A1': 1602727175,
{'A2': 'uoomenza',
'A3': 214,
'A4': 4,
'A5': {'B1': -0.10169027000665665,
'B2': 103,
'B3': [{'C1': 18106006679469520133, 'C2': 72, 'C3': -90},
'C1': 13255995830133139113, 'C2': -67, 'C3': -15},
{'C1': 4142019953402591602, 'C2': -46, 'C3': 35},
{'C1': 6743537175973676156, 'C2': 20, 'C3': 18},
{'C1': 11419791310368983874, 'C2': 8, 'C3': -35},
{'C1': 13105574561845874343, 'C2': -72, 'C3': -106}],
{'B4': 120,
'B5': {'D1': [-2020622440,
317679250,
682874118,
838268813,
-1978958296,
1872214167,
1174122568,
1359936128],
'D2': [4249435443634669742,
7718856890148298761,
14273143193398152417],
'D3': 8},
'B6': -28974,
'B7': [247, 124, 43]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x1f 0x42 0x4f 0x4d 0x59
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int8 |
3 | int16 |
4 | Массив int8, размер 4 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | Структура E |
3 | Размер (uint16) и адрес (uint32) массива uint16 |
4 | double |
5 | Размер (uint32) и адрес (uint32) массива int8 |
6 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
3 | Массив структур D, размер 5 |
4 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив uint16, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x1fBOMY\n\xe4\x1b?\xea\xb2\xc60X\xa78{\x8f\xc4\xea?S\xcf\xc2%\x9f\xc3['
(b'\t\x7f\xae\x1d\xa17\xcf\x08\xe3?\x97\x7f\x95\xda[\x18\xafRO\x82TS\x91\xee'
b'\xd7\xeb\xbf\xe2\xb1/;\x81\xb8\xc0\x87\xdc\x08c\xd2)\xbd\n\xee\xbf'
b'\x1f\xcd\xc4\xc4+\x84\xcf,\x9b\xe4H\xdcF\x8f\x0c\xec?\xa3\xecx\nP\x96\xc2'
b'\x92\xd4\xc4g\x81\xc0 T\x158}.\xd0\x1b\xcf\x13\x90\x04\xfbO\x03\x00\x92\x00'
b'\x00\x00tW2\x93\x83\xb3\xdf\xbf\x02\x00\x00\x00\x98\x00\x00\x00\x00\xff'
b'\xd3{\xfe\xfcZ\xbb\x89\xfbp,\xd7\xcb\x9fk')
Результат разбора:
'A1': {'B1': {'C1': 0.6089483499526978,
{'C2': 818328298,
'C3': [{'D1': 0.8364941984811862,
'D2': 83,
'D3': 9153948613354046159},
'D1': 0.594825371409504,
{'D2': -105,
'D3': 5715823396241708415},
'D1': -0.8701088751210053,
{'D2': -30,
'D3': -2555862364834811983},
'D1': -0.9388109032471172,
{'D2': 31,
'D3': -7265203932278504243},
'D1': 0.8765331634515658,
{'D2': -93,
'D3': -3129224840225326868}],
'C4': -1065261116},
'B2': {'E1': 2004152949526582304, 'E2': [5071, 1168, 20475]},
'B3': [64393, 11376, 52183],
'B4': -0.4953316628901725,
'B5': [-97, 107],
'B6': 0},
'A2': -1,
'A3': 31699,
'A4': [-2, -4, 90, -69]}
Пример 2
Двоичные данные:
b"\x1fBOMYlc:\xbf\xb2\x0c\x1d\xcb\xe0\xd0\xa10\xb1'\xb0?\xf8\xa8\x9d"
(b'\xfac\x13\x95\xfdS\x90O\xc1\xc0S\x0c\xd7\xbfkRv\x0f\xea)\x85\x1d\xe4\x04'
b'\x814\x7f\x17\x03\xd7\xbf\x1e\xed&$\xa3\xe8x\x1bNf\x0bX\xf1\x0b\r\xe7\xbf'
b'\xdf9E\n\x14\xba\x07\xae? 89\xd3M\t\xc6\xbf$\xadJ\xb1|\x11\x1eu\xf0\x00\xbc'
b'\xfb\xb5\xbfk5\xcf\x04\x12&>\xea9/=\x05\x1d\x02\x00\x92\x00\x00\x00&\x05'
b'a)j\xc4\xe8\xbf\x02\x00\x00\x00\x96\x00\x00\x00B\xd7r\xc5\xdb4\x89H{\xe6'
b'\xd6\xc2\xb48')
Результат разбора:
'A1': {'B1': {'C1': -0.7280795574188232,
{'C2': 3407678642,
'C3': [{'D1': 0.06310565411860436,
'D2': -8,
'D3': 6052157384770100648},
'D1': -0.3601273901342603,
{'D2': 107,
'D3': -2009303443670337966},
'D1': -0.35956370756504463,
{'D2': 30,
'D3': 5628225099894367981},
'D1': -0.7203426088093294,
{'D2': -33,
'D3': 4588613566118643001},
'D1': -0.17215893567703322,
{'D2': 36,
'D3': -1119955871876429139}],
'C4': -1241793536},
'B2': {'E1': 4478286691332090815, 'E2': [14826, 15663, 7429]},
'B3': [59003, 49878],
'B4': -0.7739764030631349,
'B5': [-76, 56],
'B6': 66},
'A2': -41,
'A3': -14990,
'A4': [-37, 52, -119, 72]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xe3 0x54 0x4a 0x47 0x56
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint64 |
3 | Адрес (uint32) структуры C |
4 | Структура D |
5 | uint64 |
6 | uint8 |
7 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур F |
8 | Структура G |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int64 |
3 | uint8 |
4 | uint8 |
5 | double |
6 | Размер (uint32) и адрес (uint32) массива uint16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | Адрес (uint16) структуры E |
3 | int32 |
4 | int8 |
5 | int8 |
6 | int16 |
7 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | Массив int8, размер 3 |
2 | int8 |
Структура F:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | float |
4 | float |
5 | double |
6 | int8 |
Структура G:
Поле | Описание |
---|---|
1 | float |
2 | int64 |
3 | Размер (uint16) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xe3TJGVG\x00\x00\x00Z\x8a\xd2\r}.\x17\xb4O\x00\x00\x00\x84k\xf4\r*y\xd3'
(b'?m\x00\xf4\xa7\x11\xf1=\x1f\\\x91\xcd\x9c\xd7\x1a\xb3\x17\xd0\x02\x1b'
b'\x96\x02\x00\x9f\x00\x8eV\xf9;\xb5\xd7T\xaa\xddy\x9d\x05\x02\x00\xa3'
b'\x00\x00\x00\xc1\x92\x86\xe9a(\xfa*\xd2\xafA\xfb\x0f\x9c\xfa\x1b.'
b'\x99h\x9d\xa7\xe88Xp@x\xbf\xca\xbf\x03\x00\x00\x00I\x00\x00\x00(\xb9\x7f'
b'\xc6\xc6\xcb\x02b%\x9a.\x00}?\x19\xce\x0c\xbf\x90\xc1\x1b\xec\xad'
b'\xfb\xee\xbfZ17\xfe\x11\xd9Z\x0c\xf9\x19?\xbb^m\xbf\x94\xecZ\xce\x19\x1d'
b'\xe4?sq\x00\x88\x002}')
Результат разбора:
'A1': {'B1': -63, 'B2': 146},
{'A2': 12976891965929065050,
'A3': {'C1': -79581230,
'C2': -7104259988860003313,
'C3': 167,
'C4': 232,
'C5': -0.20896819254329713,
'C6': [59782, 10337, 11002]},
'A4': {'D1': 0.30427028048296045,
'D2': {'E1': [40, -71, 127], 'E2': -58},
'D3': -250501132,
'D4': 61,
'D5': 31,
'D6': -28324,
'D7': -51},
'A5': 1946346789185181596,
'A6': 150,
'A7': [{'F1': 1644350406,
'F2': 39461,
'F3': 0.9882839918136597,
'F4': -0.5500198006629944,
'F5': -0.9682225810520766,
'F6': 90},
'F1': 301872945,
{'F2': 23257,
'F3': 0.6014564037322998,
'F4': -0.927226722240448,
'F5': 0.628552344357916,
'F6': 115}],
'A8': {'G1': 0.007609195075929165, 'G2': 404613534485632949, 'G3': [50, 125]}}
Пример 2
Двоичные данные:
b'\xe3TJGVG\x00\x00\x00\x1f\xec\r%YOX\x1fM\x00\x00\x00@\xe2i\x1a\xc6[\xc2'
(b'\xbfk\x00\x9f\x93PH\x88p\xf1\xaf\xc7\x81\x04Sz\xa9}\xe8\xff\x91\x03\x00\xb4'
b'\x00\xdeb\xa7>\xbcyk\xb4G\xf4L\xb1\x06\x00\xba\x00\x00\x00\x96'
b'\xfd\x05\xac\xce\xc3\xcd\nT\xbc!xq[\x84y\xb5\xbf\x86\xce\xd8!V\xa8i'
b'=\xe3\xbf\x02\x00\x00\x00I\x00\x00\x008\x81L\x05*\xa9\xdb\xe6\xfc'
b'\xa6\x02\xe0f?\xb7\t\x0e?\xe0\xa0\xcc] \xf7\xd0?\xdb\xfe\x83\x0e np'
b'\xf5r\xb2>\x92\xe6\xcd>\xec\xba\x92\x19%\xf0\xe6?\x03\xe9\xdc_QG\xdc{'
b'\xea\xf0\xbe2\x97\xbf\xbe 8\xc1f\x8db\xe7?\x1fo\x00\x86\x00\x9d\x003\x93'
b'\x97\x8d\xdd\xf9')
Результат разбора:
'A1': {'B1': -106, 'B2': 253},
{'A2': 2258642457418656799,
'A3': {'C1': -1135342899,
'C2': -4632663032303880159,
'C3': 134,
'C4': 206,
'C5': -0.6012466705151907,
'C6': [44037, 50126]},
'A4': {'D1': -0.14342571534850102,
'D2': {'E1': [56, -127, 76], 'E2': 5},
'D3': 1213240223,
'D4': -120,
'D5': 112,
'D6': -20495,
'D7': -57},
'A5': 18440126841123701889,
'A6': 145,
'A7': [{'F1': 3873155370,
'F2': 42748,
'F3': 0.9018555879592896,
'F4': 0.5548357367515564,
'F5': 0.26508340034571454,
'F6': -37},
'F1': 537822206,
{'F2': 28782,
'F3': 0.3485333025455475,
'F4': 0.4021497368812561,
'F5': 0.7168145656085847,
'F6': 3},
'F1': 1365236969,
{'F2': 56391,
'F3': -0.4705389440059662,
'F4': -0.37420040369033813,
'F5': 0.7307803160599669,
'F6': 31}],
'A8': {'G1': 0.32692617177963257,
'G2': -5670889241959499332,
'G3': [51, 147, 151, 141, 221, 249]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa6 0x48 0x57 0x52
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Адрес (uint32) структуры E |
3 | Адрес (uint16) структуры F |
4 | Адрес (uint16) структуры G |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | uint32 |
3 | Массив char, размер 4 |
4 | int16 |
5 | uint16 |
6 | Массив uint32, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint32) и адрес (uint32) массива адресов (uint32) структур D |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив int32, размер 2 |
Структура F:
Поле | Описание |
---|---|
1 | int64 |
2 | uint16 |
3 | int8 |
Структура G:
Поле | Описание |
---|---|
1 | double |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xa6HWR\x00I\\;\x03\xb1aice\xb2SH\xe5\xf7\xa8\xd3\x9e\xff\x1fU\x04\x00\x00'
(b'\x00V\x00b\x00mI\xbf\xe4\x9cx\x0e\xc6\xcfN\xc2\xbf\xe0q\xcb\xfa\xf7\xd6|'
b'\x99?\xa1\xb5\x81\xd5\xcb\xe9`\x00\x00\x00"\x00\x00\x00+\x00\x00\x00'
b'4\xa1\x00\x00\x00\x03\x00\x00\x00=DJ \xfc\x1f\x00\xcfl\xb3\xc4\x15\xab\xcfB'
b'\x82~\xfc\xdfKj\xbf\x1d_z\xec\x18\xcd\xbf\xe0\x06\x1c\xeb\x9e\xaev\x9e%')
Результат разбора:
'A1': {'B1': {'C1': 161,
{'C2': [{'D1': 73, 'D2': -0.644100216732548},
'D1': 194, 'D2': -0.5138912107201601},
{'D1': 153, 'D2': 0.03458791479893608}],
{'C3': 1145708796},
'B2': 1547371441,
'B3': 'aice',
'B4': -19885,
'B5': 18661,
'B6': [4155036574, 4280243460]},
'A2': {'E1': 520146796, 'E2': [-1278995029, -817724802]},
'A3': {'F1': -225378534500245638, 'F2': 60440, 'F3': -51},
'A4': {'G1': -0.5007462121915995, 'G2': 40485}}
Пример 2
Двоичные данные:
b'\xa6HWR\x00<Ea\xed5atoh\x1c\xef\xd3\xd2Oh\xeb\x0f\xbd\xc2F\xe4\x00\x00'
(b'\x00I\x00U\x00`\xa0\xbf\xd0\xd2C\xfc~\x07\xf8E?\xeb\xa4\xd4M\x90JD'
b'\x00\x00\x00"\x00\x00\x00+_\x00\x00\x00\x02\x00\x00\x004w\rnj\xa3f\x04'
b'\xd7\xdb\xf2;^J\xc1p\xf3\xce\xe5\x17\xee\n\xdcR\xf8\xd1\x11\xed?\xee\xad\x8f'
b'\xf2\x99\xcc\xd2\x04N')
Результат разбора:
'A1': {'B1': {'C1': 95,
{'C2': [{'D1': 160, 'D2': -0.2628335920090872},
'D1': 69, 'D2': 0.8638707652010642}],
{'C3': 1997368938},
'B2': 1164045621,
'B3': 'atoh',
'B4': 7407,
'B5': 54226,
'B6': [1332275983, 3183625956]},
'A2': {'E1': -1553595177, 'E2': [-604882082, 1254191347]},
'A3': {'F1': -3538395621077789960, 'F2': 53521, 'F3': -19},
'A4': {'G1': 0.958686803655292, 'G2': 1102}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x24 0x4c 0x46 0x45
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 5 |
2 | float |
3 | Структура C |
4 | int8 |
5 | Адрес (uint16) структуры D |
6 | Размер (uint16) и адрес (uint16) массива float |
7 | double |
8 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint16) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Массив int32, размер 2 |
3 | double |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'$LFE\nB\xba5\x00\x02\x00\x00\x00d\x9f\xe3\xa4#\x00\x04\x00\x00\x00f\\#\xf3*'
(b'\x00\x04\x00\x00\x00j\r-\x9cf\x00\x03\x00\x00\x00nK\x83\xf7\xcf'
b'\x00\x05\x00\x00\x00q?Vw\x1f?\xe3YP\x00pD\xfe\xb8Y\xd3\x9d\xfb\xbf'
b'\xf5\x84\xbf\xdc\xac\xda\xf0\x99\xad\x9cf\x84\x00v\x00\x03\x00\x82\xbf\xe2'
b'\xd2\x98\x9c\x18\x99F\xef\x14kjsvkfyfvfagrciqco\xc6\xaaoc\xad\x03'
b'\xc1\xd2\x16vl\xd1\xbf]\x8a\x8a\xbfG[\xb3>\x0c\xc2_')
Результат разбора:
'A1': [{'B1': 172145205, 'B2': 'kj'},
{'B1': -1612471261, 'B2': 'svkf'},
{'B1': 1545859882, 'B2': 'yfvf'},
{'B1': 221092966, 'B2': 'agr'},
{'B1': 1266939855, 'B2': 'ciqco'}],
{'A2': 0.8377551436424255,
'A3': {'C1': 0.6046524056020244,
'C2': [-1202072675, -71305852],
'C3': -0.44805024620173994,
'C4': 102},
'A4': -124,
'A5': {'D1': 3333058403, 'D2': 12467021301555817681},
'A6': [-0.865395188331604, -0.7787429690361023, 0.13746021687984467],
'A7': -0.5882075356246694,
'A8': -4332}
Пример 2
Двоичные данные:
b'$LFEn\xd5s\x93\x00\x03\x00\x00\x00d\xd5\xdc\xf0+\x00\x03\x00\x00\x00g'
(b'\x96\xb0[M\x00\x04\x00\x00\x00j\xb4A\xd0\xaf\x00\x02\x00\x00\x00n\x1eG\xeb1'
b'\x00\x02\x00\x00\x00p?>?\xef\xbf\xedO\xe5\x94N\x9c\xeey\x18_u$\tM\xa4?\xd7'
b'\xe1\xc7HG*x\xe6A\x00r\x00\x06\x00~\xbf\xcc0W\x96L2\x88\xb6&ojhspdfukcgy'
b'ek\xbf6\xb8u\xe8\xd5KvN\xa5\xd5F=\xfa\xc7\xc4>\xea\x9d\x80?P]\xab\xbfi'
b"\xd6\x95?'\x99\x87?\x0e\x03\x90")
Результат разбора:
'A1': [{'B1': 1859482515, 'B2': 'ojh'},
{'B1': -706940885, 'B2': 'spd'},
{'B1': -1766827187, 'B2': 'fukc'},
{'B1': -1270755153, 'B2': 'gy'},
{'B1': 508029745, 'B2': 'ek'}],
{'A2': 0.7431630492210388,
'A3': {'C1': -0.9160030266401955,
'C2': [2031640437, 604589476],
'C3': 0.3731554227676166,
'C4': -26},
'A4': 65,
'A5': {'D1': 3208034421, 'D2': 16777398958336365894},
'A6': [0.12245133519172668,
0.4582328796386719,
0.8139292597770691,
-0.9134305119514465,
0.6546863913536072,
0.5547418594360352],
'A7': -0.22022528494598625,
'A8': -18906}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x4f 0x54
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 3 |
2 | Структура D |
3 | int32 |
4 | Массив int16, размер 8 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 6 |
2 | int32 |
3 | uint64 |
4 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив uint16, размер 7 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int64 |
3 | int64 |
4 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"BOTnucorh'\xcb\xa8nCO\xf9o\xb7)\x92G,\x81\x13\xa5\x90>~\xe9\x03?\x0f"
(b'\x00\xc1y\x9b\x01\x99\xaembrudr\xc5D\xda\xa3L\xb6\xc3\xed\xfaEw\xd0v\xf0\x87'
b'\xb02\x0ep\xbc\xad\xe2\x9a\xb5d\x91r\x90R0vkjwmt}\xca\xe3\xf6\x90\xf2\x91'
b'\r\x8d$\xa3M\xa2\x9c\xb90\\\x06\xf8\xdct\xb0\x01\xf5\xb0]\x1d\t#;E'
b'a\xfc\xd7\x9av\xd7g%\x13>\x80i\xd707*\r\xe2\x11\xa6\x9a1c\xd1\xee3v\xa4'
b'_8\x96+\x0f{\ri\xf3\xcb\xcb\x07D\xbe\x84')
Результат разбора:
'A1': [{'B1': 'nucorh',
{'B2': 1856555815,
'B3': 5157230391127002947,
'B4': {'C1': -1525448404,
'C2': [16016, 59774, 16131, 15, 31169, 411, 44697]}},
'B1': 'mbrudr',
{'B2': -1545976635,
'B3': 15021552026150745676,
'B4': {'C1': -1333268362,
'C2': [3634, 48240, 58029, 46490, 37220, 36978, 12370]}},
'B1': 'vkjwmt',
{'B2': -152843651,
'B3': 5594355350360945296,
'B4': {'C1': 817470626,
'C2': [1628, 56568, 45172, 62721, 23984, 2333, 15139]}}],
'A2': {'D1': -671325883,
'D2': -9205899536921823590,
'D3': 1288606918347118441,
'D4': 1664195238},
'A3': 1983114961,
'A4': [24484, -27080, 3883, 3451, -3223, -13365, 17415, -31554]}
Пример 2
Двоичные данные:
b'BOTnlqynv\x10\x0f>\xb9D*^\x96\xd0\xae8\xa4\x8e\xffo\x90d\xb0\xf3'
(b'\xc9\x8ar\x05\xc9\x86\x17u\xd6\xa3Rmoolusb/\xe7\x88%LR\xfe\xb2Q\xbbzW: '
b"Q\xe2\xedR\x9a'\x1c\x9f|\x98w\xe4\x94\x1e\x1dheujnc$\x92\x8bx\xd1\x9b\xca"
b'\xd8\xd2\xc7\xbe\xd9S\x1c\xb1mYc`HN\xf6\xc6\xad\xa6\xd5\xfa(\x0e\x9d('
b'J!\xa2\xb2\xed1\xc3$}\xa9-\xbe\x93\xdb\x07<8<\xc3\x1e\xaa\xe4q\x1a\x88\xc6 `'
b'\x85\x11\xff\xb8VN\x11W\x91\x18\xb3\xc4"Dv')
Результат разбора:
'A1': [{'B1': 'nlqynv',
{'B2': -1187115248,
'B3': 11833400231815162436,
'B4': {'C1': -1871708274,
'C2': [45156, 51699, 29322, 51461, 6022, 54901, 21155]}},
'B1': 'moolus',
{'B2': -1998114974,
'B3': 8843752122484935717,
'B4': {'C1': 1361066583,
'C2': [60898, 39506, 7207, 31903, 30616, 38116, 7454]}},
'B1': 'heujnc',
{'B2': 2022412836,
'B3': 15690197860199603153,
'B4': {'C1': 1840323667,
'C2': [25433, 18528, 63054, 44486, 54694, 10490, 40206]}}],
'A2': {'D1': -1574876632,
'D2': 3290298599617981874,
'D3': -4378562907229940802,
'D4': 1910811166},
'A3': 549881882,
'A4': [-31392, -239, 22200, 4430, -28329, -19688, 8900, 30276]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x4e 0x4a 0x6f
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Структура E |
3 | uint8 |
4 | uint8 |
5 | float |
6 | double |
7 | Структура G |
8 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура C |
3 | uint16 |
4 | Массив адресов (uint16) структур D, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int8, размер 3 |
2 | double |
3 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | int32 |
4 | int16 |
5 | int64 |
6 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива uint64 |
2 | Структура F |
3 | uint8 |
Структура F:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | int8 |
4 | int32 |
5 | int64 |
6 | int8 |
Структура G:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
3 | Массив int8, размер 8 |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LNJou\x00\x02\x00\x88\x00\xb7r\x16\xf6\xec\xae\x06\xed\x1a\x80\x06\x86}\xe1'
(b'Q\xa0jA\xc7C\xcaB?\xf4bM<r\xaa\xde\xbf\xd6\xc96\xbf:i\xe8&\x9c\xed\x1ap&BX'
b'\xfb\xf8c$\x8e\xb2\xdb\xe3?*\xde\xe5\xf3\x9b\x7f\\\xc4\x15\xcd\x00'
b'T\xfa\x0f\xc0 \x87\x9br\x00\x80\xb3\\\xc9(\x1fl\x82\xda\xbfW\x8fZ\x16_'
b'\xf2\xf7\xc1\xd2\xe0\x96\xf6\xbc(\x85\xb6\x18\xf9\xe3\xffv\x04\xc0\t\xe4'
b'\xf5\xc8\x7f\xc8\xa2*~\xd9\xbf\x844y9\x00W\x009\xf0)}D)e\xe1^\xa1\xc3\x0e'
b'\xba\xa8\x08\x8f')
Результат разбора:
'A1': {'B1': 192,
{'B2': {'C1': [9, -28, -11], 'C2': -0.398325594871491, 'C3': -124},
'B3': 31028,
'B4': [{'D1': 0.6205685402120471,
'D2': -203039190,
'D3': -1000570981,
'D4': -13035,
'D5': -7239781866700909568,
'D6': 3011510386},
'D1': -0.4142103485384234,
{'D2': 375033687,
'D3': -1040715169,
'D4': -7982,
'D5': -497447075794061674,
'D6': 74907619}]},
'A2': {'E1': [16241433005315977273, 10306673264302465374],
'E2': {'F1': 183,
'F2': 114,
'F3': 22,
'F4': 112127222,
'F5': 5900135001420208877,
'F6': -96},
'E3': 106},
'A3': 65,
'A4': 199,
'A5': 0.760898768901825,
'A6': -0.47915321244140263,
'A7': {'G1': -0.7140172719955444,
'G2': 26938,
'G3': [-24, 38, -100, -19, 26, 112, 38, 66],
'G4': 88},
'A8': 251}
Пример 2
Двоичные данные:
b'LNJou\x00\x02\x00\x88\x00\x9c\xcb\xe3\x87\xa9\xb0\x89\xdbZ\x08\xa9\xcd\x1c`'
(b'\xf5d3\xe3\xa0\xee\x8f\x8a\xbe\xd6*\x0e\x8a\xc0s\xef\xbf\xac\x12\x1a'
b'?\x1e\x02\xf1\x9f\xd2M:\xea\xe3\xbc~\x0e8\xc1\xde\xa9\x03\x11\xc1?#z\x0b'
b'\x14\xc2D\xc7u\x8a\xe8\xa5\x13X<\xc9\x15\x03\xa2\x7f\x9b+FZ\x07\xfd\x03\xcf'
b'\x84\xe7?\x0b\xb2\xbb\x8d\xcaGm\x12\x7f!\xe8\xb6G\x8eu\xb8\x1e"\x16\x98V'
b'\x85`]\xc8n\x0c_i\x17\xda\xb0\xea\xbf*\xd0\x169\x00W\x00P\x16\x947zY\xc9V'
b'\x8d5\x00\x87\xcfx}X')
Результат разбора:
'A1': {'B1': 96,
{'B2': {'C1': [93, -56, 110], 'C2': -0.8340883691080037, 'C3': 42},
'B3': 5840,
'B4': [{'D1': 0.13333173555793976,
'D2': 336296483,
'D3': 1975993538,
'D4': -6006,
'D5': -6772545460590079067,
'D6': 1177262975},
'D1': 0.7349619939707097,
{'D2': -1917079029,
'D3': 309151690,
'D4': 8575,
'D5': 2458605261628618472,
'D6': 2237044758}]},
'A2': {'E1': [6253627939033978448, 6376385480144991629],
'E2': {'F1': 156,
'F2': -53,
'F3': -29,
'F4': -1984910969,
'F5': -765580267023213861,
'F6': 100},
'E3': 51},
'A3': 227,
'A4': 160,
'A5': -0.270629346370697,
'A6': -0.9828798958199865,
'A7': {'G1': 0.6018474102020264,
'G2': 542,
'G3': [-15, -97, -46, 77, 58, -22, -29, -68],
'G4': 126},
'A8': 14}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x54 0x41 0x57 0x90
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | float |
3 | uint8 |
4 | Адрес (uint16) структуры B |
5 | uint32 |
6 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 4 |
2 | Структура D |
3 | Массив int8, размер 2 |
4 | float |
5 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint16) и адрес (uint32) массива int32 |
3 | Массив float, размер 5 |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ATAW\x90\xbe\xfe\x91Y\xbfz\x89\xe8R\x00\xac\x04\xec\x1b\x1e\xe9fQ2'
(b'\xae\xb7\xd3\x86_\xc6\xea\x07\xdb\x9c\xfa\x9d\x8a\x00\x02\x00\x00\x00\x1c?'
b'~\xe0\xd7\xbf\tZ\xcd?\riZ>\xa8\xb1r\xbe\xb3&h\x9e|\xa2\t\xd1\x98\xe3\x17{'
b'\x90\x00\x02\x00\x00\x00@?}p\x92\xbe\xe2\xe7\x9b\xbe\x88\xc5w\xbdl2\xe6\xbf'
b'^\xa9\xa2\xc4\xefG\t\xb3\x16 \x01\xfa`\x00\x02\x00\x00\x00d\xbe\x9e\xda\x10?'
b'\x01\xe5\x1d\xbe\xa8!T?Xl\xb9>P\x8e\x0b\xe0\x1cw\xc4k\x04\xf1"&'
b'\x81\x00\x02\x00\x00\x00\x88\xbf\x08\xbc\xa7\xbe\x83N\x8a\xbfxK\x83>'
b'\xc0L\\\xbf\x16O\xd6\xd9\x00\x00\x00$\x00\x00\x00H\x00\x00\x00l'
b'\x00\x00\x00\x90B:\x00\x8b\x1b\x81\xa0x\xdec\xf5C\x99\x91\xbe\x0c\xe6M\x9f')
Результат разбора:
'A1': -0.49720266461372375,
{'A2': -0.9786667823791504,
'A3': 82,
'A4': {'B1': [{'C1': 138,
'C2': [1606871559, -610469219],
'C3': [0.9956182837486267,
-0.536541759967804,
0.5523887872695923,
0.32947880029678345,
-0.3499023914337158],
'C4': -98},
'C1': 144,
{'C2': [2090994129, -1729947781],
'C3': [0.9899989366531372,
-0.44317325949668884,
-0.2671315371990204,
-0.05766572803258896,
-0.8697758913040161],
'C4': -60},
'C1': 96,
{'C2': [-280557133, 371196410],
'C3': [-0.3102574348449707,
0.507402241230011,
-0.3283792734146118,
0.8454089760780334,
0.20366685092449188],
'C4': -32},
'C1': 129,
{'C2': [477611115, 82911782],
'C3': [-0.5341286063194275,
-0.256458580493927,
-0.9699022173881531,
0.37558257579803467,
-0.5871556997299194],
'C4': -39}],
'B2': {'D1': 1111097483, 'D2': 1982041752007341379},
'B3': [-103, -111],
'B4': -0.13759727776050568,
'B5': 159},
'A5': 82582302,
'A6': -1628524937126358138}
Пример 2
Двоичные данные:
b'ATAW\x90\xbfZ}\n\xbd\x8d`\xc3\x86\x00\xac\xe7\xcd\xc1\xa7R-qhD\x90m\x8b'
(b'\x04\x16\xa3\xae$;\xf9\xd6\xe2\x00\x02\x00\x00\x00\x1c>z\xce\xa1>\xd0.\xdf?'
b'h\x9e\xa1?\x0cV\xa5\xbe;^\xe0G\xbb\xaa3\xdb\xb7H\xef\x02\xbe\x00\x02\x00'
b'\x00\x00@\xba[\xab<\xbf\x14\xb9\xac?\x04\xce\xb8?\x0c\x16r\xbe\xef\xbdo@'
b"@\xea?9I9`\xcb\xdc\x00\x02\x00\x00\x00d\xbf*\x9a\x81\xbeA\xba'\xbe"
b'\x9c\xee\xed\xbe\xa1?h\xbfa\xb3\xc4\xfe\x11\xfeF\xdaB\xd5\xf6\x0b'
b'\xb3\x00\x02\x00\x00\x00\x88\xbdY\x19\x8c\xbfU,\xc4>\xdd\xb0\xc7\xbd'
b'\xd7\x14\x82\xbdo_\xf3\t\x00\x00\x00$\x00\x00\x00H\x00\x00\x00l'
b"\x00\x00\x00\x90\x8c\xcd$\x80\x9b'SJh6bU@\x01>$f\xc1\xf3")
Результат разбора:
'A1': -0.8534704446792603,
{'A2': -0.0690322145819664,
'A3': 134,
'A4': {'B1': [{'C1': 226,
'C2': [68592558, 607910358],
'C3': [0.24492885172367096,
0.40660759806632996,
0.9086704850196838,
0.5481970906257629,
-0.18297910690307617],
'C4': 71},
'C1': 190,
{'C2': [-1146473509, -1219956990],
'C3': [-0.0008379702921956778,
-0.5809581279754639,
0.5187792778015137,
0.5472174882888794,
-0.4682421386241913],
'C4': 64},
'C1': 220,
{'C2': [1089093433, 1228497099],
'C3': [-0.666420042514801,
-0.1891866773366928,
-0.3065103590488434,
-0.31493687629699707,
-0.8816492557525635],
'C4': -2},
'C1': 179,
{'C2': [301876954, 1121318411],
'C3': [-0.05300287902355194,
-0.832714319229126,
0.43298932909965515,
-0.10501958429813385,
-0.05844111368060112],
'C4': 9}],
'B2': {'D1': 2362254464, 'D2': 11179996179011625557},
'B3': [64, 1],
'B4': 0.16054822504520416,
'B5': 243},
'A5': 3889021351,
'A6': 5921513777702923659}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x47 0x57 0x4d
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | Массив адресов (uint16) структур B, размер 2 |
4 | int64 |
5 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры C |
2 | float |
3 | Массив uint8, размер 7 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | uint32 |
4 | int16 |
5 | Размер (uint16) и адрес (uint16) массива float |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint32) массива int32 |
3 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XGWM\x00d\x17?\x02\x00\x1e\x00\x00\x009\x00[\x00vd\xcd\xb7\xdb\xb0'
(b'\xad\xe2p\x00\x00\x00kiz&\x17>\x83\xbf\xb9\xbe\xe8\x97\xad>\xa3=\x07B'
b'\x00\x8e\xaa\x1d\xf8\x03\x00 \x00,\x00\xe9\xe0\x16?=\xefS\x99s\xa8i\x19%'
b'R\xbf-\xd3\x17?\xc4\x1d\xaf\xfeq\xa2\xd1\xb5\xc1\x02\x00F\x00N\x00\xc0\xb0s'
b'\xbf\x8aK\xaf\xa99?\xee#\xb6\x9c\x16\n\x9a=\xfa\xb0\x03\x90\xf1\x02\x00h\x00'
b'\x00\x00\xe8)\xa8g')
Результат разбора:
'A1': 0.59136962890625,
{'A2': 'ki',
'A3': [{'B1': {'C1': -93,
'C2': 1853,
'C3': 2861432898,
'C4': -2019,
'C5': [0.1476077139377594,
-0.36278924345970154,
0.3390495777130127]},
'B2': 0.5893693566322327,
'B3': [61, 239, 83, 153, 115, 168, 105]},
'B1': {'C1': -60,
{'C2': -20707,
'C3': 3517084158,
'C4': -15947,
'C5': [-0.8208785653114319, 0.5930660367012024]},
'B2': -0.9519157409667969,
'B3': [138, 75, 175, 169, 57, 63, 238]}],
'A4': -2112838192438877066,
'A5': {'D1': 4052747184, 'D2': [379368995, -96626166], 'D3': 1739074024}}
Пример 2
Двоичные данные:
b'XGWM\\\x8f\x1e\xbf\x04\x00\x1e\x00\x00\x007\x00]\x00ZlOwc\t\xe2\xbcr\x00'
(b'\x00\x00fpho\xef\xda,\xbf!!\xe4>\xec5\x01\x19\xc4\x1c\xeb{\n\x02\x00"\x00*'
b"\x00%%\xbe>\x16v\xa1\nI'\xba%\xb0'?O8t?\x1b\xbd8?\x01\x8bd\x0f"
b'"\x13\xe7\x1a_\x03\x00D\x00P\x00\xd3t>\xbfC\xcf\x05h\x92\xcbIe\xe4'
b'\x0f\x00\xccJ\xa0^\xd31\xf6\x81\x02\x00j\x00\x00\x00\x19\xad\xc6\x9c')
Результат разбора:
'A1': -0.6193749904632568,
{'A2': 'fpho',
'A3': [{'B1': {'C1': -20,
'C2': 309,
'C3': 3944530969,
'C4': 2683,
'C5': [-0.6752156615257263, 0.44556525349617004]},
'B2': 0.3713771402835846,
'B3': [22, 118, 161, 10, 73, 39, 186]},
'B1': {'C1': 1,
{'C2': 25739,
'C3': 3876790799,
'C4': 24346,
'C5': [0.6550315022468567,
0.9539842009544373,
0.7216355204582214]},
'B2': -0.7439700961112976,
'B3': [67, 207, 5, 104, 146, 203, 73]}],
'A4': -4836292727034385318,
'A5': {'D1': 2180395475, 'D2': [1041509, 1587563212], 'D3': -1664701159}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x49 0x4f 0x57
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Структура B |
3 | int8 |
4 | Адрес (uint32) структуры D |
5 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
3 | Массив char, размер 8 |
4 | uint8 |
5 | Размер (uint32) и адрес (uint16) массива структур C |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | float |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива double |
2 | uint32 |
3 | uint64 |
4 | float |
5 | Размер (uint16) и адрес (uint16) массива uint8 |
6 | int32 |
7 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'EIOWU\x05\xb78\x0f\xac%/htrmydhrS\x03\x00\x00\x00$\x00\x163\x00\x00\x00'
(b'W\x00\x00\x00\xb0\xc8\xdc\xbe\x18g{M\xbf\x8a\xd9\xdf\xdf\xbd\x96\x13'
b'\x90\xba\x12\xa4\xbe\t\x81e\xbf \x9f?w\xee\xdc\xbf\xb4v~\xcfZ\xb9\xd3'
b'?t\x10\x1af\xc6\x00\xe6\xbf\xba\xd1\x03\x00\x00\x00=\x00H\x1c\x1aZ\n\xd6\x18'
b'\xc8\x151\x08\x96\x17\xb4;\xbf\x02\x00U\x00\xa2\xb6\x1b\x95O')
Результат разбора:
'A1': 1365,
{'A2': {'B1': 14519,
'B2': 790998031,
'B3': 'htrmydhr',
'B4': 83,
'B5': [{'C1': -0.43121862411499023, 'C2': 24},
'C1': -0.8026642203330994, 'C2': -118},
{'C1': -0.10931367427110672, 'C2': -106}]},
{'A3': 22,
'A4': {'D1': 36883, 'D2': -0.3204553723335266, 'D3': -0.8965001702308655},
'A5': {'E1': [-0.45205479825063044, 0.3081881548222143, -0.687594603936772],
'E2': 1511660616,
'E3': 10810944875124020746,
'E4': -0.7332167029380798,
'E5': [186, 209],
'E6': -1793345886,
'E7': 79}}
Пример 2
Двоичные данные:
b'EIOW\x13\x96[JL\xfd\x89Bdscbxuhzh\x04\x00\x00\x00$\x00\x1e8\x00\x00\x00'
(b'b\x00\x00\x00\xf2|\xdd\xbc\x82}\x11\xfe\xbe\xd9g\x8a\xb3\xbe\x8eA'
b'\x013\xbf\x88$=}k\x81\xbe\xca\xf6`?8|\xd7\x9e\x08\x11\xe4\xbf\xfc\xff'
b'\x11\xc3\xeb\xc2\xd1?\x84e\xd1\xb9/D\xda\xbf\xbc\xe7\xb9\x1b\xcc\xc1'
b'\xecc\x03\x00\x00\x00B\x00\xbb5%\xb4W"\x19\xbe\x86{w\xee\x8d\xb8"?'
b'\x08\x00Z\x00\x8d\xf6\x90\xd3\xc5')
Результат разбора:
'A1': 38419,
{'A2': {'B1': 19035,
'B2': 1116339532,
'B3': 'dscbxuhz',
'B4': 104,
'B5': [{'C1': -0.0270371176302433, 'C2': -126},
'C1': -0.4962271749973297, 'C2': -39},
{'C1': -0.35066530108451843, 'C2': -114},
{'C1': -0.6992378830909729, 'C2': -120}]},
{'A3': 30,
'A4': {'D1': 15652, 'D2': -0.2527731955051422, 'D3': 0.8787657022476196},
'A5': {'E1': [-0.6270793058755606, 0.2775220303519743, -0.41041176935467427],
'E2': 3022337467,
'E3': 17183338721900569175,
'E4': 0.6356285214424133,
'E5': [188, 231, 185, 27, 204, 193, 236, 99],
'E6': -745474419,
'E7': 197}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x42 0x55 0x49 0x4a
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 2 |
2 | int32 |
3 | int16 |
4 | uint32 |
5 | int32 |
6 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | int32 |
3 | Адрес (uint32) структуры C |
Структура C:
Поле | Описание |
---|---|
1 | Массив int8, размер 8 |
2 | uint64 |
3 | Массив uint64, размер 3 |
4 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint32) массива int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XBUIJ\x02\x00\x00\x00?\x00p\x05=\x12A\x00\x00\x00\x02\x00\x00\x00q'
(b'\x00\xa1\x89\x14_s\x00\x00\x00\x90z\x19\xbb\xdd\xfc\xc3W\xa8U\xc9AQ\xe6\xb8'
b'&\xeeB\xa0-\xf0f\x05\x00\x00\x00\xa3\x00\x00\x00em\x9f\xe18\xc6\x14\n?'
b'p\x8dT\xb0\xfd\xdd\x96n\xbb \xfc\x0b\xaa\x99R\x1dw\xec\xd7\x1ee\xbb\xd6c'
b',\xf6H\x9f\xeb\x96P>\xff\x0b6\x18\xc9\n\x19JQij\xd9Bm\x1e\n\xb2\xf3AK'
b'\xb8\xf2\x02\xaeD\xc5s\xa2\x8e*\x00U\xb4\x9b\xaa\x04\x95\xfe\x04\xf3'
b"\xa1'\xc2[|\x91\xaa\x82Y\x07\n\x8fr\xc3QW\x869|H9\x04\x08\xe4\x97K\xb0H\xd3")
Результат разбора:
'A1': [{'B1': 'em',
{'B2': 305988976,
'B3': {'C1': [-97, -31, 56, -58, 20, 10, 63, 112],
'C2': 13505898212718826637,
'C3': [8583107284774419488,
3198636260706932716,
18392226537356085494],
'C4': 5857521799462925835}},
'B1': 'ij',
{'B2': 1595181473,
'B3': {'C1': [-39, 66, 109, 30, 10, -78, -13, 65],
'C2': 8342149398938171467,
'C3': [12293617885005909666,
13990328832582653188,
722644682958535771],
'C4': 8951333443967611535}}],
'A2': -1155958128,
'A3': -803,
'A4': 1437095875,
'A5': -430882359,
'A6': {'D1': 7417478752620127928, 'D2': [14664, 2052, -26652, -20405, -11448]}}
Пример 2
Двоичные данные:
b'XBUIJ\x02\x00\x00\x00?\x00\x16\xc2\xd3TA\x00\x00\x00\x02\x00\x00\x00q'
(b'\x00\xc0\xffESs\x00\x00\x005\xc1-\x01\xad\xc3\xa7_\xa5\x8e\xb0\xd2O\x80\x9a'
b'\xecv%\xbf\xecE\xfd\x03\x00\x00\x00\xa3\x00\x00\x00na\x97os\xf14\xaeb'
b'\xae\xf6\x0f\x08\x122^\x04\x94\xe83\x9dn\xa8\xac\x1b\x15V\xae\xbd'
b'l\xc7\x80\x0f;\x9c*\xef\x0b\xa9K\xd5\xae\xd3\x16s\n\xd0\xccM\x99hu\x7f'
b"98\x84n.A\xedF\x99\t\xdd{\x106\xc1\xdc\xa7\x070\x88\x14]\xb99\xb1'\x89\xf4"
b'-\xf8\xc3T\xeb\xe0!]\x85\x1e\xeb\x1cwB#\xfc\x88\x84UG\xe5H\x06\xde$')
Результат разбора:
'A1': [{'B1': 'na',
{'B2': 1423163926,
'B3': {'C1': [-105, 111, 115, -15, 52, -82, 98, -82],
'C2': 10665753386664071158,
'C3': [1520999138577953768,
4255761766899625558,
12598058722060610204],
'C4': 11046710654910273235}},
'B1': 'hu',
{'B2': 1397096384,
'B3': {'C1': [127, 57, 56, -124, 110, 46, 65, -19],
'C2': 13922333422237882694,
'C3': [13356854645004675036,
14121087159916540217,
16942125483261225812],
'C4': 6162200806654375708}}],
'A2': 19775797,
'A3': -15443,
'A4': 2393202599,
'A5': -2142252368,
'A6': {'D1': 18250253370700262554, 'D2': [-6841, 1608, 9438]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x53 0x47 0x5a 0x56
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | Адрес (uint32) структуры B |
4 | Структура E |
5 | float |
6 | int32 |
7 | Структура F |
8 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | Размер (uint32) и адрес (uint16) массива uint8 |
3 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | uint64 |
2 | int16 |
Структура F:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива int16 |
2 | Массив uint16, размер 5 |
3 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FSGZV\x94>\x0b>\x02\x00\x00\x00<\x00A\x00\x00\x00\x88H\xc3\xa4\xd67\xe8\xb5V'
(b'*\x0fwe?\xac\x90\x08i\x02\x00\x00\x00_\x00\x00\x00K\x98+\x9b=\xe3]'
b'\x9f8\x92\xa9\xf4\xea\xbe#cc\xb8\xe7*L\xf9\x82\x0f\x82t\xd4\xda\r\xb3\xde'
b'\xfda9.\x0f\xfbc\x03\x00\x00\x00>\x00\xa8\x1aD\xdb\x92\xca\xf1\x8d\xd6\x7f')
Результат разбора:
'A1': 0.13598090410232544,
{'A2': 'cc',
'A3': {'B1': [{'C1': 76, 'C2': 998343864279335673},
'C1': 179, 'C2': 7204368720114875870}],
{'B2': [184, 231, 42],
'B3': {'D1': 6824, 'D2': 3398622020}},
'A4': {'E1': 13107788110488619144, 'E2': 10838},
'A5': 0.8963479399681091,
'A6': 1762169004,
'A7': {'F1': [-29199, 32726],
'F2': [38987, 39723, 58173, 40797, 37432],
'F3': -0.4588978588581085},
'A8': 35}
Пример 2
Двоичные данные:
b'FSGZVc\x05\x13?\x03\x00\x00\x00<\x00B\x00\x00\x00N\xef\xd0\x82K\r\x0f\xa6E'
(b'\xb4\\\xbc:?\x15\x1ch\x85\x02\x00\x00\x00`\x00\x00\x00\xd4\x86\xc3'
b'\xb4\xd2\xac\xfc4\x98\x9aJ\x7f[?\x9enrs[(ss\xc0\x0c\x1ek\x99\xc0\x95\xc3\x11'
b'\x96\xcb\xcd\x94@\x17.\xdc\x03\x00\x00\x00?\x00QH\xe8\x82\xda,\xb1K;\x82')
Результат разбора:
'A1': 0.5743009448051453,
{'A2': 'nrs',
'A3': {'B1': [{'C1': 115, 'C2': 14093382374085496000},
'C1': 17, 'C2': 15865644103414696854}],
{'B2': [91, 40, 115],
'B3': {'D1': 18513, 'D2': 752517864}},
'A4': {'E1': 11965797352915136334, 'E2': -19387},
'A5': 0.7294366359710693,
'A6': -2056774635,
'A7': {'F1': [19377, -32197],
'F2': [34516, 46275, 44242, 13564, 39576],
'F3': 0.8574110269546509},
'A8': -98}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x69 0x55 0x42 0x57 0x52
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint16) и адрес (uint32) массива структур B |
3 | int16 |
4 | Размер (uint32) и адрес (uint32) массива char |
5 | Адрес (uint32) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | double |
3 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Структура D |
3 | uint16 |
4 | uint16 |
5 | uint64 |
6 | Массив uint8, размер 4 |
7 | int64 |
8 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив double, размер 2 |
2 | uint8 |
3 | int16 |
4 | float |
5 | int8 |
6 | int64 |
7 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'iUBWR\xa2\x04\x00\x1a\x00\x00\x00kv\x02\x00\x00\x00R\x00\x00\x00T\x00'
(b'\x00\x00\xca@\xc09\x11\xfeh\xdf\xe0\xbf\xc6\\\xc0\x9c\xff\x96^\x08'
b"\xc8\x9c\xc0\xc3\xe6?\x02Z\x7f'\x98\xa5\xca.t\x95\xf6\x1d\xe4?^\xea:+"
b'\xb5\xd8\x92zW]\xf5\xf8\xe2\xbf\xb1\xbf7\xbfai\xdb\x996n\xe8G\xb8\xbf'
b'\xe7?|\xcc\x8d\xd0\x1b\xa8\xd7\xbf\xcf^\xdd\xbaS\x08?[\x0c\xb1\xd9P\x9f\x97'
b'\xe6G\xc0U\x85\x18\x9a\x8b\x99?\x8f\x04=\x17\xc4\xd0\x99*R\x12'
b'\xb6\xef\x1d\x87\xc1^nK\x941\xe3\xdc\x86\x9d\xd5\x840\xa9\xf7*\xa7~')
Результат разбора:
'A1': -94,
{'A2': [{'B1': 16586, 'B2': -0.5272717439891537, 'B3': 2629852358},
'B1': -26881, 'B2': 0.7113955556999476, 'B3': 662657538},
{'B1': -23144, 'B2': 0.6286576193828861, 'B3': 725281374},
{'B1': -10059, 'B2': -0.5928904364662506, 'B3': 3208101809}],
{'A3': 30315,
'A4': 'ai',
'A5': {'C1': -26149,
'C2': {'D1': [0.7421533016635695, -0.36963553778259217],
'D2': 207,
'D3': -8866,
'D4': 0.5325275659561157,
'D5': 91,
'D6': 5180995131848372492,
'D7': 0.02494660162604645},
'C3': 1167,
'C4': 5949,
'C5': 17273013564937457860,
'C6': [29, 135, 193, 94],
'C7': -7095741294528148626,
'C8': 9126310413073417429}}
Пример 2
Двоичные данные:
b'iUBWR\xa5\x03\x00\x1a\x00\x00\x00\xf7\xb0\x03\x00\x00\x00D\x00\x00\x00G\x00'
(b'\x00\x00\x80f\xc2\xd6\xbf\xbf}\xb5\xec?\xe0\xdb\x80\xe90\x9e,\x87'
b'\xfe\xd0\xdb\x19\xd7\xbf\xb1-\x1c\xde\x1f\x13ZS\x01\xe3\xef\xb9\xe5\xbf'
b'{\xee[esugW\x9c\xa0V\x86l3h\xe5\xbf\x18\xcd\xa3\x97k\xbf\xe4\xbf\xcd\xed\xdd'
b'\x1214\xbf\x8b%`\xc0\n\x8c\x08o\xec\xfc\x88\xf2B\x04Q\xd5?\xe9\x9b\xe4'
b's\xad(\xdb\xaf\x8b\xe4\xb2F \xd5+?m\x10\xd5]Z\xa9\x7f\xee\x85\xbfl'
b'\xed\xc8\x1df\xbf')
Результат разбора:
'A1': -91,
{'A2': [{'B1': 26240, 'B2': 0.8971546883683106, 'B3': 3917536224},
'B1': -25040, 'B2': -0.3609532872161363, 'B3': 3726388657},
{'B1': 4895, 'B2': -0.6789473947234044, 'B3': 1700523643}],
{'A3': -20233,
'A4': 'sug',
'A5': {'C1': -25513,
'C2': {'D1': [-0.6689698333381848, -0.6483667337146555],
'D2': 205,
'D3': -8723,
'D4': -0.7038737535476685,
'D5': -117,
'D6': -1409898760774852571,
'D7': 0.33306986368019387},
'C3': 39913,
'C4': 29668,
'C5': 5094385417111414957,
'C6': [32, 213, 43, 63],
'C7': -1261103165054054291,
'C8': -4655000416026837115}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xd9 0x54 0x56 0x59
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Адрес (uint16) структуры B |
3 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур C |
4 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив char, размер 7 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
3 | uint16 |
4 | int16 |
5 | double |
Структура D:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры E |
2 | Массив int8, размер 4 |
3 | float |
Структура E:
Поле | Описание |
---|---|
1 | Массив uint8, размер 6 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xd9TVY\xf7\xf0O\xaf\x12\x00\x06\x00\x00\x00o\x00\x85\x00\xefltdwwixu\x0e'
(b'x+\xfb\x16b\xd4\x9a\x0fIp\xaa\xdc\xbf?\xfbC\xfd\x7f|\xac\xe2P\xb2\x95'
b'\x99\xd3?/\x86\xce\xa9\x93\x9f\x0c)5xx\xb1\xe0\xbfm\x8d-\xadf\xcd\xd0'
b'\x17\xd1\xb4\x012\xb1\xbf\xcf\xa2U3/\xc18\xb9\xd7o\xc7\xb1\xd9\xbf\xc29}'
b'\xba\xc2)b\xb7\x02\xdd\x0c>\xec?\x1b\x00)\x007\x00E\x00S\x00a\x000x \xe7J'
b'u\xb7\xe4\xfe\xa3{\x00\x00\x00n\xb1s\xe9)jF\xbf')
Результат разбора:
'A1': 2941251831,
{'A2': {'B1': 27887, 'B2': 'tdwwixu'},
'A3': [{'C1': 14,
'C2': 120,
'C3': 64299,
'C4': 25110,
'C5': -0.44790274748667724},
'C1': 63,
{'C2': -5,
'C3': 64835,
'C4': 31871,
'C5': 0.3062490693442139},
'C1': 47,
{'C2': -122,
'C3': 43470,
'C4': -24685,
'C5': -0.5216638896756947},
'C1': 109,
{'C2': -115,
'C3': 44333,
'C4': -12954,
'C5': -0.06716929115745462},
'C1': 207,
{'C2': -94,
'C3': 13141,
'C4': -16081,
'C5': -0.40147577211509455},
'C1': 194,
{'C2': 57,
'C3': 47741,
'C4': 10690,
'C5': 0.8825744930852404}],
'A4': {'D1': {'E1': [48, 120, 32, 231, 74, 117], 'E2': 2751390903},
'D2': [110, -79, 115, -23],
'D3': -0.7750573754310608}}
Пример 2
Двоичные данные:
b'\xd9TVY\xeb\xe9\x17\xda\x12\x00\x03\x00\x00\x00E\x00U\x00,ygrgavyk\xb0'
(b'\xa2\xb6a~\xf1l\xc4\xe9\x8b\xa3\x86\xd4?\xb7p\xe3\xcf\x1c\x06\xf8'
b'\xa4~\x15\x02\xf7\xe3?\x90D\xa8\xc6\x03\xbf\xc2\xe0\x80\x16\x9ep\xe9'
b'\xbf\x1b\x00)\x007\x00}\x86\x8e\xa918f\x94@\xa0K\x00\x00\x00\xe1~\x15'
b'\x87\x8a\x0fk?')
Результат разбора:
'A1': 3659000299,
{'A2': {'B1': 31020, 'B2': 'grgavyk'},
'A3': [{'C1': 176,
'C2': -94,
'C3': 25014,
'C4': -3714,
'C5': 0.3207177034701718},
'C1': 183,
{'C2': 112,
'C3': 53219,
'C4': 1564,
'C5': 0.6239023608988239},
'C1': 144,
{'C2': 68,
'C3': 50856,
'C4': -16637,
'C5': -0.7949972571869}],
'A4': {'D1': {'E1': [125, 134, 142, 169, 49, 56], 'E2': 2688586854},
'D2': [-31, 126, 21, -121],
'D3': 0.9182058572769165}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x48 0x59
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | float |
3 | Структура B |
4 | uint8 |
5 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 2 |
2 | double |
3 | int16 |
4 | uint8 |
5 | Адрес (uint32) структуры D |
6 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int32 |
3 | Массив int32, размер 6 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
3 | int16 |
4 | int64 |
5 | Массив int64, размер 3 |
6 | uint16 |
7 | uint8 |
8 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'XHY\x02\x00\x00\x00`\x00\xd6\x7f\xb0>\xe1W{V\x18\xcc\x1f\xa3\xf1VL'
(b'\x92\xe4\x1f\x0ese\xf3li\xb0\x89\xc3=V\xceP\xa6\x1c\x9f[\xb4\x81n\xc5\xc0R/j'
b'\xfd\x9f\xac\x97\x0e`)C\x89t\x18\xc3\x19 r\xf5Al\x1b\xe7\x88\xa1\xfa5'
b"\xf8\x98(R\x18\xa8\\\xdd?\xf7q]b\x00\x00\x00Z_\x89\xacsa\xfe'U?\x87\x8f"
b"\x9d'\xa97\x14\xee.\x95-\x92\x1d&;u\x83}\xad\xa6\x0cq1|\xe6KC&\x89\x86"
b"\xfb9'\x06g{\x1cbA")
Результат разбора:
'A1': 'sa',
{'A2': 0.3447253108024597,
'A3': {'B1': [{'C1': 1450924001,
'C2': -1558197224,
'C3': [-1840490767,
1930305508,
1768747877,
1036224944,
-1504653738,
-1269063908]},
'C1': 3234164353,
{'C2': -43372718,
'C3': [244821151,
-1992087200,
432216180,
1106604576,
-1998120084,
-130680159]}],
'B2': 0.458780311346922,
'B3': 29175,
'B4': 93,
'B5': {'D1': 0.8326414823532104,
'D2': -121,
'D3': -25201,
'D4': 3284583103312931111,
'D5': [-5945451393532420718,
4849222844874296486,
7423664165753358630],
'D6': 7291,
'D7': 98,
'D8': 65},
'B6': 90},
'A4': 95,
'A5': -21367}
Пример 2
Двоичные данные:
b'XHY\x04\x00\x00\x00`\x00\xa1\x03\xa6<\xf9\xc3\xa1\x95\xde\xaec\x82\x08\\x'
(b'}\x90\x0e\xaa)vJ\x9e\x1e\x8b\x0b/\x86\xcf\xd5\xbaQ\xeb\xda \x95;\x87"'
b'\n\xe5\xab\xb1\xec\xc3\xa4\xb7\xd5\xd0\x10\x00\x03n\xa2\xdeL\xa3\\\xaa'
b'{\xda\xe3\x1f\xda\x97p\xdfi\xde\x08|$t7\xe4\xbf\x8ecid\x00\x00\x00\\B\xaf6'
b'zcud\x94kf>\x8e\xa7\xb4\xa0\x92\xa9\xff\xb1W\x08\xdet\xffiPfy\x94\xe8@'
b'\xc2f\xf1\x91\xdc\xbc\xf0\x8e.:K\xb2\x99\x0b\xea\xef"2\xcf')
Результат разбора:
'A1': 'zcud',
{'A2': 0.020265402272343636,
'A3': {'B1': [{'C1': 2510406649,
'C2': -2107396386,
'C3': [2105039880,
699010704,
513690230,
-2043737205,
1371198927,
-1793008917]},
'C1': 170035003,
{'C2': -323900443,
'C3': [-709385021,
50335952,
1289658990,
2074762403,
-635444262,
1776251031]}],
'B2': -0.6317692482555477,
'B3': 25486,
'B4': 105,
'B5': {'D1': 0.22501975297927856,
'D2': -114,
'D3': -19289,
'D4': -2447609975465733472,
'D5': [-1687590480014344332,
-1099761689606831552,
-1582001853045264754],
'D6': 8943,
'D7': 50,
'D8': 207},
'B6': 92},
'A4': 66,
'A5': 13999}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x75 0x59 0x4e 0x42
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | Массив структур B, размер 4 |
3 | double |
4 | Адрес (uint32) структуры C |
5 | Массив float, размер 6 |
6 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | Адрес (uint16) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint8, размер 8 |
2 | float |
3 | int8 |
4 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
3 | uint16 |
4 | Размер (uint32) и адрес (uint32) массива uint16 |
5 | int64 |
6 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'uYNBgutuoapd\r\x98CQK\x08\x05\x83b\x0cG\xac\xbf\xea\x1fLL\xe2\x00>'
(b'\x00\x00\x00`\xbf\x11\xf7?\xbf\x08\xe6b>\x0c\x12\xef?\x00E\xcd\xbd\x9c\xda~'
b'\xbf_w\xab0\x95\xc9\xb84\xfb\x8bI\x8b3\xfc \xbe\xa5\xf1\xa5.X\xd5\x00'
b'\x00\x00\x02\x00\x00\x00D/!\xc7\x08\x16\x18\xca-\x19\x03Z\xcd\x07N?\xd9\x0f'
b'\xbd\xcdk\xb3\xc0\\\x98\x00H')
Результат разбора:
'A1': 'gutuoapd',
{'A2': [{'B1': 3480, 'B2': 67},
'B1': 20811, 'B2': 8},
{'B1': 1411, 'B2': 98},
{'B1': 3143, 'B2': -84}],
{'A3': -0.8163205625169281,
'A4': {'C1': {'D1': [3, 90, 205, 7, 78, 63, 217, 15],
'D2': -0.10030307620763779,
'D3': -64,
'D4': 23704},
'C2': {'E1': 3198546341,
'E2': 46,
'E3': 22741,
'E4': [35635, 64544],
'E5': 3396214431558453805,
'E6': 25}},
'A5': [-0.5701789259910583,
-0.534765362739563,
0.13679097592830658,
0.5010650753974915,
-0.07658861577510834,
-0.8729197382926941],
'A6': 3500926078350494537}
Пример 2
Двоичные данные:
b'uYNBhbpwnavx\x92\xe9u\xf3up"v\xdc{\x9aj?\xec&\xa3t\xaa\x8e.\x00\x00\x00d'
(b'\xbe\x04\xe1==\x8a\xaf\x15>\x98\xea\xaf\xbe\xbcc\x1a>\x80%\xcc?Qjs'
b'\xb7\xfb\xdckZ\xfd\x1av\xb6]-s\xde\xaa\x1c\xfd\xb7\xe7\x81\x97\\\x9e\xe9\x00'
b'\x00\x00\x04\x00\x00\x00D\x07\xc1\x85\x97\xe4\xc2s\x8c*\x17\x85\xc3\xb6'
b']%\xee\xc1=\xd4\x0f\x17\x80G\xa5\x00L')
Результат разбора:
'A1': 'hbpwnavx',
{'A2': [{'B1': -27927, 'B2': 117},
'B1': -3211, 'B2': 112},
{'B1': 8822, 'B2': -36},
{'B1': 31642, 'B2': 106}],
{'A3': 0.8797166136395782,
'A4': {'C1': {'D1': [23, 133, 195, 182, 93, 37, 238, 193],
'D2': 0.10354440659284592,
'D3': -128,
'D4': 18341},
'C2': {'E1': 3085402519,
'E2': 92,
'E3': 40681,
'E4': [46685, 11635, 57002, 7421],
'E5': 558874716195156876,
'E6': 42}},
'A5': [-0.12976546585559845,
0.06771675497293472,
0.29866549372673035,
-0.36794358491897583,
0.25028836727142334,
0.8180305361747742],
'A6': 13257432281741335158}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4f 0x48 0x45
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур B |
2 | Структура C |
3 | uint16 |
4 | double |
5 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
3 | Структура D |
4 | Размер (uint32) и адрес (uint16) массива uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | uint64 |
4 | Массив int16, размер 4 |
5 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'OHE\x00\x04\x00\x8fy\xdb\xbd\xab\x7f<\xc7\x04\xf5\x9a\xab\xa2(\xa0U$\x13'
(b'T\xe4t\xa0\xb2X\xd1\x98_\xaeE\x00\x00\x00\x05\x00\x9f\xd3D\xbf\xc7Wz\x13'
b'f\x0e\xe0\x8b#4j\x88\x9a/\xe6yixB\xf1$F\x82Z\x19\x13\x00\x00\x00\x03\x00;'
b'+=|\xcdvno\x10\xa6\xf4\xcb\xe8\x05\xa0\x1b\x00\x00\x00\x03\x00P<\x01\xe8`fls'
b'\xbc\xf4\x94\x84\xc0\xd2&\xa4\x00\x00\x00\x03\x00e\xaav\n\x99stzy\xbd\xea'
b'\x83E\xc1wH\x00\x00\x00\x03\x00zR\xd9\xd6E\x00\x00\x00>\x00\x00\x00S\x00'
b'\x00\x00h\x00\x00\x00}4\xc1\x89\x84\xdd9\xd8\x92\xd9\xab\xd7x\xc68S|jOBR')
Результат разбора:
'A1': [{'B1': 4823676561143765267, 'B2': 'yix', 'B3': 725449933},
{'B1': 1199915507349037083, 'B2': 'vno', 'B3': 1006757984},
{'B1': -4831073202370107740, 'B2': 'fls', 'B3': -1435104615},
{'B1': 8772425498719516488, 'B2': 'stz', 'B3': 1390007877}],
{'A2': {'C1': 2044444075,
'C2': 2134689540,
'C3': {'D1': 62874,
'D2': -85,
'D3': 11684765520750662884,
'D4': [29856, -19880, -11880, 24494],
'D5': 69},
'C4': [885098884, 3711555730, 3651917688, 3325580156, 1783579218]},
'A3': 54084,
'A4': -0.18235708186340727,
'A5': 10025914827619839974}
Пример 2
Двоичные данные:
b'OHE\x00\x03\x00z\x06\x88\x93\x8b\x9a\x80{\xf5\xc7\x87o\xe0\xb4\x00(\xf1\xd7'
(b'\xe3\x0b\x84z\xa5\x1a\xec\xde\xe98\n\x00\x00\x00\x03\x00\x86z\x96\xbf'
b"\xd55~\x88ij`~\x89%\x86ji\xe0?psw\xd8\x96'V\x0c\xb6T\xe5\x00\x00"
b'\x00\x03\x00;T\xa0\xe5\xa7azirw\xe4\xab\t\x06\xc2\xec\x00\x00\x00\x03\x00'
b'P\r\xfa\xd7\x97dua\xb7i\x1f[\x9f2\x83H\x00\x00\x00\x03\x00eX\xb2PQ\x00\x00'
b'\x00>\x00\x00\x00S\x00\x00\x00h\xceW\x8b\x88\xfe\xd0\xf2\xa1\xf5^<\xe2')
Результат разбора:
'A1': [{'B1': -2840039264476572443, 'B2': 'psw', 'B3': 1419830695},
{'B1': 8248312665794331372, 'B2': 'azi', 'B3': 234542999},
{'B1': -5230615013840747704, 'B2': 'dua', 'B3': 1488080977}],
{'A2': {'C1': 109613963,
'C2': -1702855691,
'C3': {'D1': 51079,
'D2': 111,
'D3': 16191566736159925003,
'D4': [-31622, -23270, -4898, -5832],
'D5': 10},
'C4': [3461843848, 4275106465, 4116593890]},
'A3': 31382,
'A4': -0.3313900310655864,
'A5': 9117860179829448767}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xf 0x53 0x54 0x53
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint8 |
3 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 5 |
2 | int64 |
3 | Размер (uint16) и адрес (uint16) массива char |
4 | Адрес (uint32) структуры D |
5 | int32 |
6 | int64 |
7 | int32 |
8 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint32) и адрес (uint16) массива int8 |
3 | Массив uint32, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x0fSTS\x00\x00\x00&\x04o8\xbe\xfcgnqj\x04\t\xe1\x00\x00\x00\x02'
(b"\x00\x11l\xf6)\xbe\x16\xed$\x15\xf5\xcd,\x94A\xdb\xd0\xbe\x0f'"
b'\x18\x0b\xd0\xbb\xe9\xe8\xf0\xed\xa6\xc7d4\xbc*N^|\x80\xfcwfN\x00\x04'
b'\x00\r\x00\x00\x00\x13\xaa\x1a\xd3\x8b\xa6\xee\xce@\xa5\x11\x16\xec\xa7\x1a'
b'\xfc\x0f\xd4K')
Результат разбора:
'A1': {'B1': [{'C1': 16859, 'C2': -12098},
{'C1': 3879, 'C2': 6155},
{'C1': -12101, 'C2': -5656},
{'C1': -3859, 'C2': -22841},
{'C1': 25652, 'C2': -17366}],
{'B2': 5647087876202522190,
'B3': 'gnqj',
'B4': {'D1': 225,
'D2': [4, 9],
'D3': [1828071870, 384640021, 4123864212]},
'B5': -1441082485,
'B6': -6417965641913788692,
'B7': -1491403761,
'B8': 54347},
'A2': 4,
'A3': 1865989884}
Пример 2
Двоичные данные:
b'\x0fSTS\x00\x00\x00$k\x1f\x1b\xb6\xb1jh\xb6\xdf\xe5\x00\x00\x00\x02\x00\x0f'
(b'se\xadN\xc9{{\xec\x8dw9d\xb8)\xf3\xba5V\x12\xf5\xf2\xfe\xf0\xf9\x1c \xad4'
b'\x18\xb5\xa0\xaf\x92\xbc\xd9}\xb3\xae\xeah\x00\x02\x00\r\x00\x00\x00\x11'
b'\x81\xdc\x8f\xf9\xd3\x80\xc3\xfc\xdbG\x1a\xeeNP\x08\x1e\xde\x9a')
Результат разбора:
'A1': {'B1': [{'C1': -18391, 'C2': -3142},
{'C1': 13654, 'C2': 4853},
{'C1': -3330, 'C2': -3847},
{'C1': 7200, 'C2': -21196},
{'C1': 6325, 'C2': -24401}],
{'B2': -7873178914641745304,
'B3': 'jh',
'B4': {'D1': 229,
'D2': [-74, -33],
'D3': [1936043342, 3380313068, 2373400932]},
'B5': -2116251655,
'B6': -3206347443909747986,
'B7': 1313867806,
'B8': 56986},
'A2': 107,
'A3': 521909937}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x44 0x53 0x49 0x5f
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | Массив структур B, размер 2 |
3 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | int64 |
3 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур D |
2 | Адрес (uint32) структуры E |
3 | double |
4 | Массив int8, размер 6 |
5 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива uint64 |
2 | int8 |
3 | Массив uint64, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'SDSI_?\xb9\xd1\x8f3\xefB\x10\x96n2(G\r\xd6\xb7r~\x0f4\x1f\xf6Z'
(b'\xef\xd5\xa5\x0f\x9c\xeb\xd5\xae\x1a\x00\x00\x00\x02\x00W\x00\x00\x00{\xbf'
b'\xdf\x07B\xdeqW\xd0\xa5\x14\xf2\x9d\xe3\xa6\xb8\x82\x1etf\x7f\x82'
b'\xb4\xa7\x07K\xa88\x19\x1c\xe0s>N\xa0\x14>\xb0t>B\x00?\x00K\xac\r\xa7#\xce'
b'\x9b\xab\xc3\xae>\xfeO3\xd0s\x16\xb1\x89\x19\x88\x08\x9e]\x14\xe1\xd9z&C'
b'Y\xf6\xaa\x00\x04\x00\x00\x00[cT\t\xb8>b\x0c\xaek\x9d\x83"\xba%\xfe\xbf\x9d')
Результат разбора:
'A1': 0.10085387247023214,
{'A2': [{'B1': 38510, 'B2': 3614216825727316606, 'B3': 3892},
'B1': 8182, 'B2': 6552690887755623381, 'B3': 44570}],
{'A3': {'C1': [{'D1': 2194491616276031239, 'D2': 1269315609},
'D1': 2080789739289449534, 'D2': -1334559166}],
{'C2': {'E1': [12397749121452846019,
12555752427280691990,
12792784288573447444,
16274173033237313194],
'E2': 99,
'E3': [6055573752048823915, 11349953668800495517]},
'C3': -0.48481818888592176,
'C4': [-91, 20, -14, -99, -29, -90],
'C5': 47234}}
Пример 2
Двоичные данные:
b'SDSI_?\xdc\xa1\xdd\xb1\xb0:T?\xb1\xb1H\x13\xb1\xe5\xfcj\xb7*l\xbf\xb9\x96'
(b'\xaal\x94\x80a\t\xe8\xf9\xef\x00\x00\x00\x02\x00W\x00\x00\x00{\xbf'
b'\xe8\x81\x19U9\xdf\xf0\xaa\xa6q\xe3c3\xd8(\x02i8\xa4\xe2w\x04:\xdf'
b'\xf1\xe4\x1f\xd9:!cG\x93\x8e%*\x14\xac\xcd\x00?\x00K\xde\xdc\x8d\x93\x8d'
b'\xf5\x8d[5\xee7Q\x9e\xcb%]\x94\xc0 \xd0&\xa8\nH\x10\x12\xd3\xe5\x85'
b'\x02\xa0\x94\x00\x04\x00\x00\x00[\x08B!< \xcbIi\xa8\xb3K\x1a\xb0\x85b\t\xb8')
Результат разбора:
'A1': 0.4473795161474403,
{'A2': [{'B1': 16305, 'B2': -5672262075884475721, 'B3': 10860},
'B1': 49081, 'B2': -7590134836914746904, 'B3': 63983}],
{'A3': {'C1': [{'D1': 173732341455717434, 'D2': -537795553},
'D1': -2793883908543640027, 'D2': 705998029}],
{'C2': {'E1': [16058866036177735003,
3886104352163308893,
10718603191515613768,
1158221036920152212],
'E2': 8,
'E3': [4765155992281901480, 12919449301496760760]},
'C3': -0.765759149987387,
'C4': [-86, -90, 113, -29, 99, 51],
'C5': 55336}}