Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x52 0x4e 0xbf
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур B |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | Массив char, размер 4 |
4 | Адрес (uint32) структуры C |
5 | uint8 |
6 | int32 |
7 | Адрес (uint16) структуры D |
8 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | uint16 |
3 | int64 |
4 | double |
5 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив uint32, размер 7 |
3 | int64 |
4 | int32 |
5 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'SRN\xbf\x03\x00\x00\x00+\x00\x00\x00\x02\x00\x00\x00|\x00\x00\x00cxcz'
(b'~\x00\x00\x00\x89,\x16D\xd3\x87\x00\xe1\x10\xe5[\xff\x87\x1a\xc7MR9\x12\t'
b'\xad\xac\x91\xca\xa1\xd3r\xbf\x86\x1b\x086]0\xb1\xac\xb6\x19\x04\xd0'
b'\xbf\x97V\x87\x0f\xe5P\xa4\xc5#\xa7\x99\x92\xc4\xa0\x82\xfb\xea\xff\r'
b'\xe4G\xca\xf9\x14\x07\xde?j\xb9\xe4c5\x02K\xea\xcao\x01\x10\rt\n\x96'
b'N\x90\xff\xe0O\xc5 i\xbd\xe6\xbf\xbctgK\xe4*\x06\xb7\x05DV\xde\x94'
b'\xef\xe5\x83\x07\xff\t\x1c8BhJ,\x8e\x1e\xdf\xfdO\xf6\xc8\x8f\xce\x1aRE'
b'\xb5l::&\xaa\x96\xf7\x07tPe\x8c\x1d*a\xe4\xda=\xbf')
Результат разбора:
'A1': [{'B1': -7949788987743710643,
{'B2': 41418,
'B3': 6716564808587506387,
'B4': -0.25025027121843646,
'B5': 151},
'B1': 2577647029086816086,
{'B2': 39335,
'B3': 1008783207503545490,
'B4': 0.46918224710054646,
'B5': 106},
'B1': -3825162460640058183,
{'B2': 367,
'B3': -31438791064154864,
'B4': -0.7106214180043899,
'B5': 188}],
'A2': 'tg',
'A3': 'cxcz',
'A4': {'C1': 6216099669318755403, 'C2': 222},
'A5': 137,
'A6': -750512596,
'A7': {'D1': 148,
'D2': [126084591,
941361663,
743073858,
4259257998,
2412312143,
1163008718,
976907445],
'D3': 7300462573535013414,
'D4': 1630150028,
'D5': -0.7416212558746338},
'A8': -4099814979939266335}
Пример 2
Двоичные данные:
b'SRN\xbf\x02\x00\x00\x00+\x00\x00\x00\x02\x00\x00\x00a\x00\x00\x00udrw'
(b'c\x00\x00\x00\xdf\xbd\x87\xb0\xe5l\x00\x7f\xe9\xb7=\xe9\xcc\x80g-'
b'\xa5\xdb\x0fd\t\xf8Io\xbct#\xc2C\xceJ\x80\x11h\x9d}\x9f;\x0b\xec?\n\xf1^'
b'\xfd>\n\x8d1\xd7\xf9!!\x10k%A\x1d\xc6\xb9\\|\x8e\xff\xb4l\xd2\xbf\xf6za\x87'
b'o{C"\x8d\x9b@\x8c^G@\x16zef\xfd\xfeU\x9e\xaa\\\x1dSk\x9d\xfelRo4\xb9\xd5'
b"\xba\xc7\x88W\xa2c.\x85S#\xe0'\xf1\x1d\xca\xf8\x84C\xdf\xf9>")
Результат разбора:
'A1': [{'B1': 5330020484360414509,
{'B2': 48239,
'B3': 1261090145424253812,
'B4': 0.8763712039043812,
'B5': 10},
'B1': -2940414006550241551,
{'B2': 8697,
'B3': -5060324965666320351,
'B4': -0.28788495022485505,
'B5': 246}],
'A2': 'za',
'A3': 'udrw',
'A4': {'C1': 4655469818118107015, 'C2': 140},
'A5': 223,
'A6': -441415747,
'A7': {'D1': 94,
'D2': [2048278599,
4278019685,
1554685525,
2641056541,
1867672830,
3134568756,
2723645639],
'D3': -1069639944147489181,
'D4': -2064070115,
'D5': 0.4880314767360687},
'A8': 7458186285060450687}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x4a 0x42 0x4c 0x4e
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | Структура B |
4 | int64 |
5 | Структура D |
6 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур C |
2 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
3 | uint8 |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | Массив uint64, размер 4 |
4 | uint8 |
5 | Массив uint64, размер 4 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FJBLN\\\xa1\x00\x00\x00\x05\x00k\x00\x00\x00\x02\x00\x00\x00p#k\x0c'
(b'Z\xff\xd2]C5?s\x19\xdc=\xcd\xa4X\xf4F\xab\xbd\xcf\xbfB\x89T\xaa\xb1\xf3Qx'
b'\x8f\x1ar> #(7\x9a/\rj{\n\x03\xe0\x18\x01E$wh\xe9\xaf\xd0\x80\x18\x15'
b'\xc1\x12/\x1f"\xcfO\x8cEM\xc1\xa3:\xcd\xe2O\xcc\xf7\xf0\xe8x\xb6O\xf5'
b'\xc1\x06ihfabiP\xf1S_r\xa4\xe8\x92\x8a\x16\xf6*')
Результат разбора:
'A1': 23713,
{'A2': 'hfabi',
'A3': {'B1': [{'C1': 20721, 'C2': 21343, 'C3': 114, 'C4': -92},
'C1': -5998, 'C2': 35350, 'C3': 246, 'C4': 42}],
{'B2': 35},
'A4': 7713640316571304757,
'A5': {'D1': 0.9496133327484131,
'D2': 1036887128,
'D3': [17601945025346749065,
6100884303828782874,
8232052504250522159,
966720352969299969],
'D4': 69,
'D5': [2627684260480319512,
1567554138896781135,
10107570432765513186,
5750243438309717583]},
'A6': -171899287}
Пример 2
Двоичные данные:
b'FJBLN\x00\x0b\x00\x00\x00\x02\x00k\x00\x00\x00\x04\x00\x00\x00m\xc6\xed\x1e'
(b'\xca\x7f\xfc\x0bv\xac\xbf@;&F\xe7a\x9fTD\x154\x80m\xbf\x02\xe3l\x8d\xa5\rR'
b'Y\xa9\xd7(!\x18\xdb7\x01\x98\xc5\xb6\xdbnZ\xee\x08\x9e\x9a\xb9'
b'\xec\xa1\xf4\xfat\xe5J\xc4n\x1f\x968\xc4\xff\x987\n\xc0ei?{z\xe7'
b'\xc8\xb8~\xbe\xf3\x00\x17\x08\x85\x02%ea\xd8\xa5\x9c8e\xb5\x94\x1c\x06_\x91'
b'\xcdC\x17\xc2\x7f\nh\x1c\xbd\x16\x9b\xeb\xb4')
Результат разбора:
'A1': 11,
{'A2': 'ea',
'A3': {'B1': [{'C1': -10075, 'C2': 39992, 'C3': 101, 'C4': -75},
'C1': -27620, 'C2': 1631, 'C3': 145, 'C4': -51},
{'C1': 17175, 'C2': 49791, 'C3': 10, 'C4': 104},
{'C1': 7357, 'C2': 5787, 'C3': 235, 'C4': -76}],
{'B2': 198},
'A4': -1360427386381044052,
'A5': {'D1': -0.750902533531189,
'D2': 1189568927,
'D3': [6072001512839429890,
16387628884127013289,
15503678107863679384,
14246815738251577502],
'D4': 154,
'D5': [13397261065066440010,
14154285408930037656,
3966193963643140986,
16701802072612470807]},
'A6': 142934565}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xdd 0x56 0x41 0x4e 0x44
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | float |
3 | uint16 |
4 | float |
5 | Размер (uint16) и адрес (uint16) массива структур E |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | int32 |
3 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint8 |
3 | int64 |
4 | Массив uint16, размер 7 |
5 | float |
6 | Размер (uint16) и адрес (uint16) массива int16 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив int32, размер 3 |
3 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xddVANDN\xf2U\x0b#!\x00\x00\x00\x01X\xb1\\?w\xcc[\xc9\x88=\x04\x00D'
(b'\x00\x044UE\xeb\x11\xfe\x19\xf3\xee\xb5X_1\x82G\xb8\x8f^\xbc\xf3%\xfb'
b'\xd6\xb8\x98I{\x03\x89X\xd8JN?\x02\x00\x1d\x00\x96g\xac\xba]\xf5\xb2.'
b'\x82\xbb\x89Ob=S=\xa2\xeb\x8915\xa5\x97\xc8\x7f\xdd\xc89u\xadW:\xea1\x1b\x18'
b'\xd6\xeb\xc0M\x18Yt\xa4\x1aL~$\x9b\xdc\xc2\x83e\xba\xa7b\xd3\xc4 \x9b'
b'\xb8\x8c\x82\xb2\x04\x91Z/')
Результат разбора:
'A1': {'B1': 78,
{'B2': 587945458,
'B3': {'C1': {'D1': 436081131,
'D2': 243,
'D3': -5168018898819697170,
'D4': [24207, 62396, 64293, 47318, 18840, 891, 22665],
'D5': 0.8058295249938965,
'D6': [13316, 17749]},
'C2': 1}},
'A2': 0.8620810508728027,
'A3': 52343,
'A4': 0.06679030507802963,
'A5': [{'E1': -1163106410,
'E2': [783480157, 1334426498, 1028865378],
'E3': -94},
'E1': 892439019, 'E2': [2143852453, 1966721245, -365275219], 'E3': 49},
{'E1': -338290661,
{'E2': [1494764992, 1276814452, -593812354],
'E3': -62},
'E1': -1480956541,
{'E2': [549770082, -2104706917, 1519453362],
'E3': 47}]}
Пример 2
Двоичные данные:
b'\xddVAND{\x05K\xa3a%\x00\x00\x00:s\xb3\xb0\xbdl\xb5C\r6\xbf\x05\x00H'
(b'\x00\xc3\xb8\x0b\x9eB\x86Nf\xbcC\xa4Vz\xfb\xad\xbb\x15\xf3@\xf7\x81\xce\x14'
b'4\xeb=U\n\xf7\xc4Q\xb5P\xa1\xf1@]\x04?\x04\x00\x1d\x00\xe06^;&!\xa7\x85'
b'\x8e\x06\x16-Q\x91\xb2\xc8\x8e \xc2\xb0\xdf\xa7|./\xca\xc0\xa4'
b"\x18\xab\xb4\xb4\xa1i\x9d'0D\xcd\xff\xeb;\xf1F\x8eJ%\x8c\x8f\xeba\x8cj\x84S`"
b'\x17\x8f^8\x1c\xcfK\x9bNw\xb2\x8a\xc5\xa6\xea8\xce(\xd50E|\x91\xcf'
b'\xc7g\xfb\x9d\xe3')
Результат разбора:
'A1': {'B1': 123,
{'B2': 1638091525,
'B3': {'C1': {'D1': 1453605820,
'D2': 122,
'D3': -9081718710783463941,
'D4': [5326, 60212, 21821, 63242, 20932, 20661, 61857],
'D5': 0.5170478820800781,
'D6': [-18237, -25077, -31166, 26190]},
'C2': 58}},
'A2': -0.08627977222204208,
'A3': 46444,
'A4': -0.7111398577690125,
'A5': [{'E1': 996030176,
'E2': [-2052644570, 756418190, -927821487],
'E3': -114},
'E1': -542064096,
{'E2': [791575719, 413450442, -1581992789],
'E3': 105},
'E1': 1144006557,
{'E2': [1005322189, 1250838257, -342914011],
'E3': 97},
'E1': 1401186956,
{'E2': [1586435936, 1271864376, -1300803941],
'E3': -118},
'E1': 954902213,
{'E2': [819275982, -812549051, -1644468281],
'E3': -29}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xd1 0x46 0x4a 0x42
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | int64 |
3 | Размер (uint32) и адрес (uint32) массива структур E |
4 | Размер (uint32) и адрес (uint32) массива uint16 |
5 | float |
6 | Адрес (uint16) структуры F |
7 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | Массив структур D, размер 2 |
4 | Размер (uint32) и адрес (uint32) массива uint8 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | int64 |
3 | Размер (uint32) и адрес (uint32) массива uint16 |
Структура F:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xd1FJB\x00*C3\xf3\xd4\xf6\x9b\x870\x00\x00\x00\x03\x00\x00\x00K\x00\x00'
(b'\x00\x04\x00\x00\x00~>*\x12\xeb\x00\x86\xab\x94=R\x83\xdaT\xb7;n\x88\xe3'
b'2\x96\x95\xd2\x16\xdb\x01\x00\x00\x00\x02\x00\x00\x00(T\xbd\xc5\xcc\x81'
b'\xc4\x83Sc:\xc0b)\xde\xb0\xdd\x07\x10m\xfa\xd4\x00\x00\x00\x02\x00\x00\x00?'
b'\xff\xda\xedj\n\xea\xf0\xb2l\x00\x00\x00\x02\x00\x00\x00C\x9d\x0b.'
b'\xda\xef\x15\x99\x9c\xd9\x00\x00\x00\x02\x00\x00\x00G\xa90E=r\xc8'
b'{\x87\xbf\xe5%\xb3hG\x93\xdc\xb5')
Результат разбора:
'A1': {'B1': 21687,
{'B2': {'C1': 15214,
'C2': -120,
'C3': [{'D1': -7374, 'D2': 38549}, {'D1': -11754, 'D2': 56065}],
'C4': [131, 218]}},
'A2': 4842482120349419312,
'A3': [{'E1': 41, 'E2': -2400175578978321708, 'E3': [21693, 50636]},
'E1': 255, 'E2': -2671362408836976020, 'E3': [33220, 33619]},
{'E1': 157, 'E2': 805822103740325081, 'E3': [25402, 49250]}],
{'A4': [43312, 17725, 29384, 31623],
'A5': 0.1660877913236618,
'A6': {'F1': -0.6608521496497093, 'F2': -75},
'A7': -1416348334}
Пример 2
Двоичные данные:
b'\xd1FJB\x00*(\xd1\xab\xa3\xad~\xfb@\x00\x00\x00\x04\x00\x00\x00O\x00\x00'
(b'\x00\x02\x00\x00\x00\x93?/\xe7Z\x00\x974\xf6\xf3\xe6Sq\xe2\x80\xfd\xda\xeeM'
b"\x97\xdcM\x11\x1a\x00m\x00\x00\x00\x02\x00\x00\x00(n\xf9'\xa6)"
b'\xb2\x88\xc7\xbb-\x1f\xfbP\x84\xd4G\xa6\xd2\xae\xaaX\r\xbe\xd8\x06'
b'\x00\x00\x00\x02\x00\x00\x00?\x80H\xc5\x9d\x8fLMV%\x00\x00\x00'
b"\x02\x00\x00\x00C\x94\xe5\xbf'\xb8\x87\xd1\x959\x00\x00\x00\x02\x00\x00"
b'\x00G\xd4\x1f4\xdb\x12u\xe7\xe9\x9f\x00\x00\x00\x02\x00\x00\x00K6'
b'\xaa\xd1\xc3\xbf\xca]]$\x9b!\xc8\xd7')
Результат разбора:
'A1': {'B1': -7552,
{'B2': {'C1': 64986,
'C2': -18,
'C3': [{'D1': 19863, 'D2': 56397}, {'D1': 4378, 'D2': 109}],
'C4': [83, 113]}},
'A2': 2941320751128443712,
'A3': [{'E1': 166, 'E2': -3265485384632575994, 'E3': [28409, 10150]},
'E1': 128, 'E2': 5243770579928831525, 'E3': [10674, 35015]},
{'E1': 148, 'E2': -1891749644966193863, 'E3': [47917, 8187]},
{'E1': 212, 'E2': 2248662986298747295, 'E3': [20612, 54343]}],
{'A4': [13994, 53699],
'A5': 0.6871238946914673,
'A6': {'F1': -0.20597423827554295, 'F2': -41},
'A7': 888599526}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xf6 0x54 0x43 0x47 0x50
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Размер (uint32) и адрес (uint32) массива float |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint64 |
3 | Размер (uint32) и адрес (uint16) массива структур C |
4 | Размер (uint16) и адрес (uint32) массива int64 |
5 | uint32 |
6 | Адрес (uint32) структуры D |
7 | Массив uint8, размер 7 |
8 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | Массив int16, размер 3 |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xf6TCGPs\x00\x00\x00\x02\x00\x00\x00\xa0\x00\x00\x00\x13\x96\xc1'
(b'\x89\xc9\x9aAY\xcc\xec\xe0\x0f\x9e\x82\x94\x17H\xee\x0e8h#\xbe<\x0esW'
b'm\xfa\x16\xbb\xad\xdd\xd4@m\x9c\xe7l\xa2\xb6g\x02bK4\xc7\xd2v\xef\xf8'
b'\xea\xfe\x997\x01\x82k\xe9|"\x1cX\xf8,\\P\x9e/\x17\xed\xc6a\xe9\x88'
b'Y\x85\xb8N\xbf\x95\xaa\xd2\\\x92\'\xc2\xaaS"R\x03u\x06\x01Tq\xc4~-\xbddQ'
b'\xad\xc6j[\x03\x08\x00\x00\x00\x11\x00\x05\x00I\x00\x00\x00\xce\x15\xa3'
b'\x95q\x00\x00\x00\x0f\x08\x1b\x94R\xc6\x98\xba\x08Y\x83\x85\xccWRm\xca\xff='
b'\xecF(\xbf')
Результат разбора:
'A1': {'B1': 11646,
{'B2': 241904406538314941,
'B3': [{'C1': [-27117, -30271, -25911], 'C2': 65},
'C1': [-13223, -7956, -25073], 'C2': -126},
{'C1': [6036, -4536, 14350], 'C2': 104},
{'C1': [-16861, 3644, 22387], 'C2': 109},
{'C1': [5882, -21061, -11043], 'C2': 64},
{'C1': [-25491, 27879, -18782], 'C2': 103},
{'C1': [25090, 13387, -11577], 'C2': 118},
{'C1': [-1809, -278, 14233], 'C2': 1}],
{'B4': [-551660019902747774,
-4112605391432426452,
-4661585681409578655,
-6142303432203916651,
6053126473799311955],
'B5': 2510493134,
'B6': {'D1': 113, 'D2': -60},
'B7': [15, 8, 27, 148, 82, 198, 152],
'B8': 5933435907890284730},
'A2': [0.12489781528711319, -0.657332181930542]}
Пример 2
Двоичные данные:
b'\xf6TCGPl\x00\x00\x00\x05\x00\x00\x00\x99\x00\x00\x003\xe3\xaa\xe0\x82k#'
(b'\x04h\x0b\xa8C\x06:\xbf2o\xa2\r\x9f\xbf\x13\xa1vg\t\xefJ\x8f\xc2\x82'
b'\xf7c\xe6\x00*\xc6}h\xf0\xdctT\xea\xcd\xab\xf8+G"\xa7\xb9Y\xdfd2@\xac\xc5'
b'#\xd1\x07\x8b\xc2\xc8\xbf)\xb2_L\x85\x9e\xb7\xa8R\xc3\x9c\xd0d\xc2qj\xf9'
b"\x90\x1e.j\x9e$\x06\x85\x8e\xda#\x84D\xfb'\xe2\xa6u\x07\x00\x00\x00\x11\x00"
b'\x05\x00B\x00\x00\x00\x0eg<~j\x00\x00\x00ch@\xe5cX\x1f<_\xd47\xe9\x94\xd2'
b'\x0eV\x03m\xbf\x1b\x9d\xce\xbd\x87\xb5\xba=(G5?\x14f\x7f\xbf')
Результат разбора:
'A1': {'B1': 55950,
{'B2': 8477712009918710819,
'B3': [{'C1': [-7373, -8022, 27522], 'C2': 35},
'C1': [26628, -22517, 1603], 'C2': 58},
{'C1': [12991, -23953, -24819], 'C2': -65},
{'C1': [-24301, 26486, -4343], 'C2': 74},
{'C1': [-15729, -2174, -6557], 'C2': 0},
{'C1': [-14806, 26749, -8976], 'C2': 116},
{'C1': [-5548, -21555, 11256], 'C2': 71}],
{'B4': [4625870677708744482,
-3980466254952282708,
-5215584755378935361,
8197225118913745576,
2638663177999546730],
'B5': 2117887758,
'B6': {'D1': 6, 'D2': -123},
'B7': [99, 104, 64, 229, 99, 88, 31],
'B8': 1068079791025184572},
'A2': [-0.9258321523666382,
-0.10088559240102768,
0.09116654843091965,
0.7081170082092285,
-0.9976513385772705]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x41 0x56
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Структура B |
3 | uint32 |
4 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | uint16 |
3 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C |
4 | uint64 |
5 | Адрес (uint16) структуры D |
6 | int16 |
7 | Размер (uint32) и адрес (uint32) массива uint16 |
8 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | double |
3 | uint8 |
4 | double |
5 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint16) массива int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GAV\xcc\x81\x00\x02\x00\x00\x009@\xa1\x00\x02\x00E3\x0c*[Ip\xab\x82\x00M9'
(b'@\x00\x00\x00\x04\x00\x00\x00cG\xa1\xcb\x10dq\xbf2\x9e\xc50\xe5:\x13\xa4'
b'<\x00\x02\x00kne?r\x1b\xab\xec\xbf\x01\xa1\x90\xde\x00\x00\x00;\x00\x00\x00'
b'@\xb4\n\xa2\xd7?\xe1g\xc0|\xd5S\x1a\xc5?\xd8\xaa\x02F*j\x18\x17\x07'
b'!\xd4\x9fe\x1b\x9c\x8b\x1e\xad~\x84')
Результат разбора:
'A1': -13183,
{'A2': {'B1': 'ne',
'B2': 16545,
'B3': [{'C1': 0.9457346796989441, 'C2': -20},
'C1': -0.5063714981079102, 'C2': -34}],
{'B4': 3678361567217363842,
'B5': {'D1': 3020595927,
'D2': 0.5439150274420144,
'D3': 197,
'D4': 0.3853765187465412,
'D5': 23},
'B6': 14656,
'B7': [1825, 54431, 25883, 40075],
'B8': 5161629919208390450},
'A3': 2663723237,
'A4': {'E1': 974365756, 'E2': [7853, 32388]}}
Пример 2
Двоичные данные:
b'GAVx\xc5\x00\x04\x00\x00\x009\x81~\x00\x02\x00G\x18a\r\xa9\x828c\x02\x00O;'
(b'\xeb\x00\x00\x00\x04\x00\x00\x00e\xf1l\xd8\x11UM\n\xbe1\x1b\x8f'
b'\x98\x96\x8b\x87\x13\x00\x02\x00mxqnp>\x17\xd85W>\x89A\x924\x00\x00\x00=\x00'
b'\x00\x00B\x0c`*\xd7\xbf\xe2\x1d\x81\xdfY\xd4vZ?\xd9\xb1\xdeS\x83\xf10'
b'\x83\xefx\x162\xcb\x19Y\xf5\xb8r\x93\xf1')
Результат разбора:
'A1': 30917,
{'A2': {'B1': 'xqnp',
'B2': 33150,
'B3': [{'C1': 0.14828570187091827, 'C2': 87},
'C1': 0.26807838678359985, 'C2': 52}],
{'B4': 1756700351336571650,
'B5': {'D1': 207629015,
'D2': -0.5661019670793752,
'D3': 90,
'D4': 0.40148122936058694,
'D5': -125},
'B6': 15339,
'B7': [61304, 5682, 51993, 23029],
'B8': 17396517029582539454},
'A3': 823889816,
'A4': {'E1': 2525726483, 'E2': [-18318, -27663]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xf2 0x46 0x4d 0x47
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | double |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Адрес (uint16) структуры C |
3 | Массив uint32, размер 3 |
4 | uint16 |
5 | Размер (uint32) и адрес (uint16) массива int64 |
6 | Массив uint16, размер 7 |
7 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint16) и адрес (uint32) массива адресов (uint32) структур D |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xf2FMGP\x00\x00\x00\x80\x9b\x8b\xde\x13\x16\x95\xbf\xfd9\x19\x98'
(b'\x9a\xc1\x06i\xd2\x88\x94 \xdc\x1a\xa7q/h\x10\x00\x00\x00\x19\x00'
b'\x00\x000\xaf\xca\x83\x91\xfes\xa3\x02\x00"\x00\x00\x00T-4\xe8'
b'\xe9\x0c\x05\xca)[!\x94;r\xa1/\xa6,g\xf5\xdb\xcb\xe6\xc3W\xa8*\x00'
b'\xf2~\xed\xe3\xef\x08\xd8D\xbe{\xb1*3\x86\x03\x00\x00\x008\x00O\x13\\u'
b'\xd6\x15K|i\xd3u$\xbc^\xe0\xd4\xc5\x94\xdc\xfd\xbd\x83')
Результат разбора:
'A1': {'B1': 43095,
{'B2': {'C1': 11778037351438790448,
'C2': [{'D1': 253, 'D2': -3285087024597952199},
'D1': 136, 'D2': 7507344066374017172}]},
{'B3': [3823992562, 1155008751, 716274622],
'B4': 34355,
'B5': [-3889688504401908396, 3432149991246879529, -4330549846094697306],
'B6': [4943, 30044, 5590, 31819, 54121, 9333, 24252],
'B7': 9493022713397499104},
'A2': -0.02059203191575021}
Пример 2
Двоичные данные:
b'\xf2FMGP\x00\x00\x00\x80&\x9d\x13\x11h\xbf\xbfi\xb1\x8e\xa6*b\xfe\x87'
(b' \x1e\x08Q\xe3t\xbe\x94\x1f\t\x10\x00\x00\x00\x19\x00\x00\x00\xc82\x96{\xe60'
b'Ri\x02\x00"\x00\x00\x00\xe6\xc0\xb4\xa9\x95\xf1G\xbb3\x92\xad\x0e'
b'\xdb\xb1+\xee{\x13v\xad\x19\xa2\xab\xbb\x8b\xf6*\x00\x89B\xf1O\x18|\xd9\x9f'
b'\x03\xf8\x08\x94\xaf`\x03\x00\x00\x008\x00\xeaF\n^d\xc8\x84D8\xb0\x18\x02'
b'\x87\xc6\xa6L\xd5\xf7:\x99Y\xdb')
Результат разбора:
'A1': {'B1': 63115,
{'B2': {'C1': 7589182088546759368,
'C2': [{'D1': 105, 'D2': 2344121828645441201},
'D1': 30, 'D2': 657407616345133320}]},
{'B3': [1341211273, 2681830424, 2483615747],
'B4': 24751,
'B5': [-4951723640170954522,
-1284737714281934285,
-4923663536431426693],
'B6': [18154, 24074, 51300, 17540, 45112, 536, 50823],
'B7': 15805832845778570406},
'A2': -0.12268168190817086}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x4f 0x48 0x50
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | int32 |
3 | Массив char, размер 2 |
4 | uint8 |
5 | Структура B |
6 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур C |
2 | double |
3 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
3 | Размер (uint16) и адрес (uint16) массива uint8 |
4 | double |
5 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива float |
2 | int16 |
3 | Массив uint32, размер 8 |
4 | int8 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AOHP9h:\xcf\xe5hv\xc6\x00\x03\x00\x00\x00u?\xeb\xbc\xfa.\xd8\xa3|-\xe3'
(b'\x00\x00\x00\x93Yc\x87\x1c\x02\x83\xd3\xea\x08\xb4K\x00\x03\x00 \xbf'
b'\xba,\x8f\x9c\x93\x8f@\xa8\x02 O\xd1\xac\xa8\xb0\xd1\xaeI\xcc\xbdk\x8dkX'
b'\x04\x00\x06\x00;\xbf\xe6\xe5\x10\xdf\xa1\xa2\x98\x8a%\xe7\xc3UK&~j\x1f1'
b'\x8a\xa4\xd8\x0c\x7f\x00\x04\x00Y?\xe2\xf4\x9a\x03^\x07*\xb7\x1e\xef'
b'f\x00#\x00A\x00]?"\xb7a\xbf`VD;\x8ald\xbe\x1c\x96\x89>u\xb2\x0c\xbeW6-\x00'
b'\x00\x00\x06\x00\x00\x00{\xf7\xf5pQ\x13j\x0b\xd6Tl\xdc-\x1b\xa4\x82\xc7#'
b'z\xe1\x1d\xca\xd3\xee\x12\xdd&\xa6\xec@\xf0\xec\xfd\x13bP\xc8')
Результат разбора:
'A1': 57,
{'A2': 1748684773,
'A3': 'hv',
'A4': 198,
'A5': {'B1': [{'C1': 469926867,
'C2': -368528309,
'C3': [89, 99, 135],
'C4': -0.10224244663873794,
'C5': 2818711631},
'C1': 1238154603,
{'C2': -1922344956,
'C3': [209, 172, 168, 176, 209, 174],
'C4': -0.7154621475029499,
'C5': 2317739971},
'C1': 1780429194,
{'C2': -1529344897,
'C3': [85, 75, 38, 126],
'C4': 0.5923585954444424,
'C5': 3072257894}],
'B2': 0.866818515297481,
'B3': 11747},
'A6': {'D1': [0.6356106400489807,
-0.8763163089752197,
0.004224346950650215,
-0.1529179960489273,
0.23993700742721558,
-0.21016760170459747],
'D2': -2059,
'D3': [1884361578,
198595692,
3693943716,
2194088826,
3776826067,
3994213670,
2800500976,
3976008546],
'D4': 80,
'D5': -56}}
Пример 2
Двоичные данные:
b'AOHPe\x7f\xc1)\xc2fo,\x00\x02\x00\x00\x00Z?\x96|K}\x83E@\xb2k\x00\x00\x00n'
(b'I\xf1\xff\xd6\x90\xfb\x9e\xed\xcf\xdab\x1f\x00\x04\x00 ?\xbdx[r\x02\x1a\x90'
b'\xd5XQ\xc97\xbcE\xaaF\xa5T\xf8up\x15w\x83\xc3\x00\x06\x00<?\xe0S\xd2\xa4\xd4'
b'<\x96\xcd\x03cI\x00$\x00B?>q~\xbe\xdayN\xbche\xd1>\xfe\xbe\xa7\x00\x00'
b'\x00\x04\x00\x00\x00^\x8f\xb5\xc9\xe0\xb1\x86\xa8\x93\x0798\xb4f\xaca\x86Y5'
b'\x7f\xa2J\xdc!\xf1? \x17/\xd5\x06L_\x96\x94\x9c\x89')
Результат разбора:
'A1': 101,
{'A2': 2143365570,
'A3': 'fo',
'A4': 44,
'A5': {'B1': [{'C1': -1862557971,
'C2': -807771617,
'C3': [73, 241, 255, 214],
'C4': 0.1151177552547813,
'C5': 3579335113},
'C1': 1425569136,
{'C2': 360154051,
'C3': [55, 188, 69, 170, 70, 165],
'C4': 0.5102322787587521,
'C5': 3439551305}],
'B2': 0.02195852235383211,
'B3': 45675},
'A6': {'D1': [0.7439192533493042,
-0.4267067313194275,
-0.014184431172907352,
0.49754831194877625],
'D2': -28747,
'D3': [3386945926,
2828207929,
951346860,
1636194613,
2141342428,
569458464,
389010694,
1281332884],
'D4': -100,
'D5': -119}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x80 0x4e 0x48 0x59
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
3 | Адрес (uint32) структуры B |
4 | Массив структур C, размер 3 |
5 | Структура D |
6 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | uint16 |
3 | uint64 |
4 | int16 |
5 | Размер (uint32) и адрес (uint32) массива char |
6 | int8 |
7 | float |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив uint16, размер 4 |
3 | uint16 |
4 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
3 | uint8 |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x80NHY\x10\xc9"\x00\x00\x00X\x80\x90\x0e}\x15\xd5\x17\xa9\x14\x1cw\xd2\x9d'
(b'>\x06\xbc\xcc\xee\x9f\xe6q&\xc1\xce\x14]\x1b\x10=[\xceaGD\xf6\xffL3\xee\xe09'
b'\xec\n\x91\xab\xb9\xe3\x14\x93\xb1u\xd2\xa9x\xc1\x91"Y\xe3\xe5F6\xc115'
b"&\x90y'Gyugblmw\x00\x05\x00Q\x83\\\xb32\xb6I5\xbd\x1d2'\x1e\x00\x00\x00\x02"
b'\x00\x00\x00V[\xbf8"\xd7')
Результат разбора:
'A1': 16,
{'A2': 51490,
'A3': {'B1': 'yugbl',
'B2': 33628,
'B3': 12912583507175087410,
'B4': 10014,
'B5': 'mw',
'B6': 91,
'B7': -0.7192816138267517},
'A4': [{'C1': 2156924541,
'C2': [5589, 6057, 5148, 30674],
'C3': 40254,
'C4': 113036526},
'C1': 2682679590,
{'C2': [49614, 5213, 6928, 15707],
'C3': 52833,
'C4': 1195702015},
'C1': 1278471904,
{'C2': [14828, 2705, 43961, 58132],
'C3': 37809,
'C4': 1976740216}],
'A5': {'D1': -1047453095, 'D2': -7195, 'D3': 70, 'D4': 54},
'A6': -4525777710781749433}
Пример 2
Двоичные данные:
b'\x80NHYj%L\x00\x00\x00Yc\x87\xa3\xf9\rk\xe3\xd1\x05/\x1b\xfc|H\x98V\xf6'
(b'\x03ho\xa2P\x109]\x05\x99\x1e\xb2\x8b\x08\xae\x17\x88)\xa0\xd3\xa4&\xf4\xf4'
b'I\x1e\x95\xcd\xf33\xb6k3\xd4@\xa4\xfea\xfa\x80\x06\x0b\xe9\x94+\xc3\x8c\x96'
b'\xf2\x05\xcaB\x07xbwdphdv\x00\x06\x00Q\x83K7`6\xaa\xafD\xef\x07\xd1'
b'\x1a\x00\x00\x00\x02\x00\x00\x00W\x85>\x0e\xf0\xed')
Результат разбора:
'A1': 106,
{'A2': 9548,
'A3': {'B1': 'xbwdph',
'B2': 33611,
'B3': 3990249376563130119,
'B4': -12006,
'B5': 'dv',
'B6': -123,
'B7': 0.13959093391895294},
'A4': [{'C1': 1669833721,
'C2': [3435, 58321, 1327, 7164],
'C3': 31816,
'C4': 2555835907},
'C1': 1752146512,
{'C2': [4153, 23813, 39198, 45707],
'C3': 2222,
'C4': 394799520},
'C1': 3550750452,
{'C2': [62537, 7829, 52723, 13238],
'C3': 27443,
'C4': 3561006334}],
'A5': {'D1': 1643806726, 'D2': 3049, 'D3': 148, 'D4': 43},
'A6': -4355940773350718969}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x48 0x4a 0x55 0x7b
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int32 |
3 | Размер (uint32) и адрес (uint32) массива структур D |
4 | int8 |
5 | int8 |
6 | uint64 |
7 | Размер (uint32) и адрес (uint32) массива uint8 |
8 | float |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив структур C, размер 4 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
3 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | Структура E |
2 | int32 |
3 | uint8 |
4 | Массив uint16, размер 8 |
5 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint16) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"RHJU{6C/\x17@\xd7\xf1o'\x16\x874\x94\xf1{V\x93x3\x1f;\x9c\\72\xb6\xa7"
(b'Q\xcdz\x830\x85\x92\x00\x00\x00\x02\x00\x00\x00M}\x0c]^\x18\xf7\xc2\xb8\x9f'
b'\xaa\x00\x00\x00\x05\x00\x00\x00\x89\xbe\xb2\xc8\x8fu\x88L\xbc\x02\x81\x0c'
b'T\xf9\x00\x00\x00\x02\x00E\x82eL\xdf\x85\xa1\xc1g\r(\xb0\xe5m5R6M\xc1W\xf3'
b'\xda\xb0\x85\xe5\x00\x00\x00\x02\x00I[\xfc7/\x8cHU\x1a\x9e\xb9\xde]\xd7`'
b'\x07\x10\xc2X1(\x05\x8al\xd8m\xd0h\x88')
Результат разбора:
'A1': {'B1': 13891,
{'B2': [{'C1': 12055, 'C2': 1087893871, 'C3': 39},
'C1': 5767, 'C2': 882176379, 'C3': 86},
{'C1': 37752, 'C2': 857684892, 'C3': 92},
{'C1': 14130, 'C2': -1230548531, 'C3': 122}]},
{'A2': -2093972078,
'A3': [{'D1': {'E1': -7, 'E2': [30088, 19644]},
'D2': -2107290401,
'D3': 133,
'D4': [41409, 26381, 10416, 58733, 13650, 13901, 49495, 62426],
'D5': 45189},
'D1': {'E1': -27, 'E2': [641, 3156]},
{'D2': 1543255855,
'D3': 140,
'D4': [18517, 6814, 47582, 24023, 24583, 4290, 22577, 10245],
'D5': 35436}],
'A4': 125,
'A5': 12,
'A6': 6727842345740967850,
'A7': [216, 109, 208, 104, 136],
'A8': -0.34918639063835144}
Пример 2
Двоичные данные:
b'RHJU{c\x8cN^\x97\xcf\xbda\xc08\x155.9&\xbe\x98\xe6\x989\x885u^\x8a?_'
(b'-z\xde\x13\x9b\x1c\x8e\x00\x00\x00\x03\x00\x00\x00Q\x1d3\xb7\x93\x02'
b'\xce\x99\x97\x93\x92\x00\x00\x00\x05\x00\x00\x00\xab=\xb2\xd2(\xb9L\x1e'
b'Ae`\xd1\xe5\x91\xa8\x00\x01\xfb\x00\x00\x00\x02\x00E\x1c\x1d0g5\xed\x02O'
b'\x8c\xc5\xda\xab\xcdQ3B\xf4L\xb8UJ\x11\xa4B\x00\x00\x00\x02\x00IDa'
b'\xeb\x99\x0b\xafA=e\x88\xcb\x8bb\xa3\x03)\x95w\x07\x96\x0c\xfe'
b'\x9a\x05\x00\x00\x00\x02\x00M\x00\x93\xc56\x87\xe3(7\x85\xb3K\x8d\x01i5\xd6'
b'\xbe\xf1\x9dv\x83\x1a\xcdb\xae\xf8Z\x11')
Результат разбора:
'A1': {'B1': 25484,
{'B2': [{'C1': 20062, 'C2': -1747993247, 'C3': 192},
'C1': 14357, 'C2': 892221734, 'C3': 190},
{'C1': 39142, 'C2': -1741060043, 'C3': 117},
{'C1': 24202, 'C2': 1063202170, 'C3': 222}]},
{'A2': 328932494,
'A3': [{'D1': {'E1': -5, 'E2': [47436, 7745]},
'D2': 471674983,
'D3': 53,
'D4': [60674, 20364, 50650, 43981, 20787, 17140, 19640, 21834],
'D5': 4516},
'D1': {'E1': 66, 'E2': [25952, 53733]},
{'D2': 1147267993,
'D3': 11,
'D4': [44865, 15717, 35019, 35682, 41731, 10645, 30471, 38412],
'D5': 65178},
'D1': {'E1': 5, 'E2': [37288, 1]},
{'D2': 9684278,
'D3': 135,
'D4': [58152, 14213, 45899, 36097, 26933, 54974, 61853, 30339],
'D5': 6861}],
'A4': 29,
'A5': 51,
'A6': 13227919616880645010,
'A7': [98, 174, 248, 90, 17],
'A8': 0.0873149037361145}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xbe 0x47 0x55 0x53
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int64 |
2 | Структура B |
3 | Размер (uint16) и адрес (uint16) массива char |
4 | uint64 |
5 | int64 |
6 | Адрес (uint32) структуры E |
7 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | Структура C |
3 | uint16 |
4 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур D |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
3 | uint16 |
4 | uint16 |
5 | Размер (uint32) и адрес (uint16) массива int16 |
6 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | int64 |
3 | float |
4 | Размер (uint16) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xbeGUS0\x1fx\xd4\xd65\x12\x1e\xbf\xce_i\xb5\x9a\x82`\x9d\x00\x00\x00'
(b'\x02\x00x,P\xde\x00\x04\x00\x80\xf9\xd0\x14(Tm\xf9\x8ag \x05\x1a*'
b'h\xc0\x00\x00\x00\x86\xe5\x07\xf4\x9a\t\xed\x85\xc3\xd3#\xa5\x99p\xc7'
b'\xb5\x0e\xf2\x99D\xc0\xbf\xdb\x1c<\x00\x00\x00\x03\x008734.\xb5\x1f\xea\xc0'
b'\xb1\xf4\xb9\x8f\\\xaa\x11\xde\xcb\xde\xd8\x03b\x01\xcb\xd0\xed\xc1\x00\x00'
b'\x00\x03\x00X~\xcc\xe1E\x00\x00\x00>\x00\x00\x00^moqjI\xc0\x8c\x01"\x00E\\'
b'Bd\xd4?Ww\x97\x00\x02\x00\x00\x00\x84')
Результат разбора:
'A1': 3467623093620773406,
{'A2': {'B1': -0.23728677146302157,
'B2': {'C1': -99,
'C2': [{'D1': 3542328729,
'D2': 8126663128417649856,
'D3': 49115,
'D4': 7228,
'D5': [-2918, 2541, -31293],
'D6': 926102574},
'D1': 3113180330,
{'D2': 1287690701441819137,
'D3': 52176,
'D4': 60865,
'D5': [-19169, -5440, -19980],
'D6': 2127356229}]},
'B3': 11344,
'B4': -34},
'A3': 'moqj',
'A4': 18000909874047613322,
'A5': 7430974591447230656,
'A6': {'E1': -116,
'E2': 81628041146688724,
'E3': 0.8416685461997986,
'E4': [73, 192]},
'A7': 58631}
Пример 2
Двоичные данные:
b'\xbeGUS\xdc\xf89.O\xfd\xe8\xeb\xbf\xe8YW\xb4N\xda\xcc\x06\x00\x00\x00'
(b'\x03\x00\x9cI\xd3W\x00\x07\x00\xa8f\x8a\xad02u\xfe\xcb\xc5w\x1fx\x11\xb2'
b'd\xb1\x00\x00\x00\xb2tR\x81:\xb0\xa0\xa7\x86\xa5n\xa8Y\x85\xc9)\xf0\x96\xc8'
b'\xfb*Uj\xa3\x0ef\xe9\x00\x00\x00\x04\x008\xcb\x15\xcdX\xe5v4`:\xfb'
b"\xac'\x9c\xdf\x11\xf4\xc7\x94\xcb\xf6\xff\xca\t\xa0\xf1(\x00\x00\x00\x03"
b'\x00Z\xbd.\x18\x98\xca\xa2\x00)\xe4\xcb#\xf3\x96[\xb85\x8d.\xe3\xc1/\x0b'
b'T\x0b\x98\xb1m\xeb\x00\x00\x00\x04\x00z\xe1t\xb1Y\x00\x00\x00@\x00\x00\x00`'
b'\x00\x00\x00\x82efkkavx\xc1\xa4\xec-\xec^\x92gN@\xd0\xb7>\x9a\xdf1\x00'
b'\x03\x00\x00\x00\xaf')
Результат разбора:
'A1': -2524204720067843861,
{'A2': {'B1': -0.7609060784951338,
'B2': {'C1': 6,
'C2': [{'D1': 2824439241,
'D2': 3022081139917084010,
'D3': 41742,
'D4': 26345,
'D5': [-32454, -20320, -22650, -23186],
'D6': -887763624},
'D1': 2888277215,
{'D2': 1293878434853224394,
'D3': 2464,
'D4': 61736,
'D5': [-6794, 13408, 15099],
'D6': -1121052520},
'D1': 2522593333,
{'D2': 10173319027133993995,
'D3': 39089,
'D4': 28139,
'D5': [-13662, 41, -6965, 9203],
'D6': -512446119}]},
'B3': 18899,
'B4': 87},
'A3': 'efkkavx',
'A4': 7388908561171349195,
'A5': -4217867925455739727,
'A6': {'E1': 45,
'E2': -1414532260555599689,
'E3': 0.30248406529426575,
'E4': [193, 164, 236]},
'A7': 29778}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x54 0x5a 0x49 0x48
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | float |
4 | Адрес (uint16) структуры B |
5 | Структура C |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint16 |
3 | uint64 |
4 | Структура D |
5 | uint8 |
6 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | Размер (uint32) и адрес (uint32) массива структур E |
4 | Массив float, размер 5 |
5 | int16 |
6 | Массив uint64, размер 4 |
7 | Структура F |
8 | Адрес (uint16) структуры G |
Структура E:
Поле | Описание |
---|---|
1 | float |
2 | int64 |
Структура F:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint16) массива int16 |
Структура G:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PTZIH.5\x99z\x04\xbfu\x00\x03\x97\xe1\x02\xb77\x03\x82<\x15\x11\xccw\xe2\xf1'
(b'\xe9\xb6\xe3?n>\x18)\x02\x00\x00\x00\x81\x00\x00\x00\xa9\xfc]?\x87\x9a\xf6>'
b'\xe2\xefM\xbf\xe3X\x9f\xbe\x16-L?\x08\xdb\x06L^H\xd8\xc2tT\xe5\x9a'
b'\x0eU\x0e\xf07\xac\xd8\xcf\r\xdcp\xf6\xca\xfc\xe4\x1f\xae\x03+\x93\x98\xb9*T'
b"\x01\xc30\xddX<\x03\x00\x00\x00\x99\x00\x9f\x00I*\xeb\x92\xf5't\xc4\xaf\xe6"
b'\x8a^\xc6\xe6\xae\xa57\xe6>E\xa7\x8a\xf2\x14!\xf0A\x95\x04>\xbfR\r\xfa'
b"b\xf5\xd9FJ\x044D'\x0e\xa6\xc4\xe4\x02\xf0\x84x*\xf2\x1e\x80")
Результат разбора:
'A1': 46,
{'A2': 53,
'A3': -0.5174956917762756,
'A4': {'B1': 1948775826, 'B2': 12602978716602511300},
'A5': {'C1': 3,
'C2': 57751,
'C3': 1230956602253096706,
'C4': {'D1': 0.6160783504781135,
'D2': 689454702,
'D3': [{'E1': 0.4496432840824127, 'E2': 4751333980728108869},
'E1': -0.7422574162483215, 'E2': 5352204855127182674}],
{'D4': [0.867136538028717,
0.48164770007133484,
-0.8044415712356567,
-0.311225026845932,
0.7975629568099976],
'D5': -9464,
'D6': [6085703230667246598,
12409651242589919973,
18215642607442055128,
13373600906431307748],
'D7': {'F1': 4348468641726026794, 'F2': [13316, 10052, -23026]},
'D8': {'G1': 58564, 'G2': 9232082550380621826}},
'C5': 73,
'C6': -5334}}
Пример 2
Двоичные данные:
b'PTZIH0L}\x11F?u\x00\x85\x18\x17\xc2\xeb\xb8\xec\xced\n}\xa4\xb2\x9f\xa3'
(b'6i\xd8?5\xcbh\x14\x02\x00\x00\x00\x81\x00\x00\x00\xcaM;>\x07k\xde>\x03:\xfa>'
b'\xc3\xac\x86\xbd\xd9\xefo\xbf\x00\xa9=A\xa7\xbb\xa2\xdb}\xe4"\x8c'
b'\xf6\x10\x7f\xd5\xf6\xa0\x80G\x13o\xb4XrH\xb4\x1e\x0bp\xef\xd8\x0e_\xebD'
b'\x9fr\x82)\xfa\xe3\x03\x00\x00\x00\x99\x00\x9f\x00\xef\x81+F#\x86'
b'\xb1\x03\x83\x9cm\x08*\xe5\xc9b7_>\xd2\x1dH\x9d\xb8cE\xceE\x1b >\xcb\xff\xe0'
b's\\sz\x1f\x11\xb66\x00@E\xbd1P\x05\xfcR\x1c\x19b\xdf')
Результат разбора:
'A1': 48,
{'A2': 76,
'A3': 0.7737043499946594,
'A4': {'B1': 2978358086, 'B2': 14548080386977334019},
'A5': {'C1': 133,
'C2': 5912,
'C3': 9010124844405681090,
'C4': {'D1': 0.3814217183960784,
'D2': 342412085,
'D3': [{'E1': 0.21798470616340637, 'E2': -3583348283939480110},
'E1': 0.15635402500629425, 'E2': 2268252203252776907}],
{'D4': [0.18291392922401428,
0.43441030383110046,
0.48872384428977966,
-0.06575920432806015,
-0.9372535347938538],
'D5': -22272,
'D6': [16464557304715886909,
11598692632061447202,
5220332450056718208,
6849650606165663412],
'D7': {'F1': 16427488231032833259, 'F2': [-18927, 54, 17728]},
'D8': {'G1': 12733, 'G2': 16096455627617600848}},
'C5': 239,
'C6': 11137}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xe3 0x52 0x54 0x4f 0x59
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Адрес (uint16) структуры B |
3 | uint32 |
4 | Адрес (uint32) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
3 | Массив char, размер 8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
3 | double |
4 | uint32 |
5 | Массив адресов (uint32) структур D, размер 2 |
6 | Массив int32, размер 8 |
7 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив uint64, размер 4 |
3 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xe3RTOY\xc9\xa9\x11\x00RLgev\x00\x00\x00\x02\x9c\xc1~\xcesjqqjokb\xbd\xb3'
(b'\xc7\x04\xee\x1d\xb9\x8cVe\x03\xf4\x843\xde\xb5JO\x98\xc4\x1f\xbb'
b'\xc3\x0e\xd4\x82{\xc9\xae\xed\xc9\x92\x9b\x15%\xa4\x85\xc9\xfc\xd5%\xa0'
b'){\xd1qU\xfb\xccp\xac\x0c\xc6i\xc6\xe3\x86\xb9\xc0M\x8f\x13n9\xdd\x87'
b'\x10\xa1P\x80:\xeac\x01,\x07\xc7\xa7<\x19\x88)\x9e\xd1\xdc\xf1'
b'\x08\xc4\xbc\xf1\xd9\xd8\x1c\x84p\x13.\xb7\xdfX\xb4?\x94\xe9\x9ft'
b'\x1e\x00\x00\x00J\x00\x00\x00K|Y\x13\x87)\x85\xfc\xfc^\xa6\x81R-D\xd9'
b'\x08z\x17r\x9c!\xfb&\x1bN\xe0\xb8\xb4\x12$\xdd\xef')
Результат разбора:
'A1': 43465,
{'A2': {'B1': 2126617602, 'B2': -50, 'B3': 'sjqqjokb'},
'A3': 1701268562,
'A4': {'C1': -3652,
'C2': 2216483033,
'C3': 0.07948110792319851,
'C4': 1956637076,
'C5': [{'D1': 80196541,
'D2': [17583008792587083246,
14166159810191307652,
14518341671051311903,
11827883754285297070],
'D3': 8874800625074620805},
'D1': -78286383,
{'D2': [16412922191335420108,
4138266613805791622,
16877943637312309213,
1818512822811492707],
'D3': 14125806161959463304}],
'C6': [324631627,
-58381945,
-2119803140,
-649843374,
1914141192,
653992348,
-1193259493,
-584838476],
'C7': -17}}
Пример 2
Двоичные данные:
b'\xe3RTOY\xe2B\x11\x00?t64v\x00\x00\x007\x05\x1exegdugedgoC\xcd'
(b'\x84\x13\xcc\xf1X\x06p \xb2\tyq\xde\x95O\xb8\xf9a\xf5\x88\xed"\x8eZ'
b';\xce\x08\x9a,\xa81\xb2\x0b/\x07"\xdb|(^a\xd1\x90N\xc7m\xdf\xe1.v\xf1\t'
b'\x8c\x04rUf\x1d\x86XcX\x1f\x9ai\xfc\xe7Y\xe3"\xcc`}S\xa2H\xe7\xf0\xf5\x93'
b'\x81\x85\x7f\xd0\xa3I\x8fX\xee\xf5m\x068\xac2\xf9W\x9e\xe6\xbf'
b'\xf8\xe2\x17\xe4\x1e\x00\x00\x00J\x00\x00\x00\xcb\x07_qk\x99\x1c\x1d'
b'\xfc\x9b\x9a\x0e7Iq<V;\x82E\x19\xda\xa2O[\xba\x92\t\x9d\x99\xe1\xb3F')
Результат разбора:
'A1': 17122,
{'A2': {'B1': 2015233335, 'B2': 101, 'B3': 'gdugedgo'},
'A3': 875983935,
'A4': {'C1': 22671,
'C2': 107869678,
'C3': -0.7068290583750985,
'C4': 3826770680,
'C5': [{'D1': 327470403,
'D2': [698656557710766540,
7059876542836273529,
14860570961956931829,
3389999070871067144],
'D3': 15087443754654310919},
'D1': 1841778320,
{'D2': [327647805565755871,
6369031631074121074,
2513951869909965343,
17358923150745493708],
'D3': 5306314032091862005}],
'C6': [1902053323,
488413547,
245013500,
1014057271,
1166162774,
1336072729,
160610907,
-1277060707],
'C7': 70}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x59 0x52 0x4b 0x4e 0x89
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint32 |
3 | Размер (uint32) и адрес (uint16) массива double |
4 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | uint64 |
3 | uint8 |
4 | int16 |
5 | Массив int16, размер 6 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
3 | uint16 |
4 | Массив адресов (uint16) структур D, размер 3 |
5 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint16 |
3 | Размер (uint32) и адрес (uint16) массива int16 |
4 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'YRKN\x89^\x00\x00\x00\xa3\xe2\xd9\xe5\x02\x00\x00\x00\x85\x001\x84!c\xc1'
(b'\xf1\xa0q\xdb\xf7 \xfa\xe2\xe8\xe2\x15\x1e\xf5\x19?,\xbd\x04\x00\x00'
b'\x00\x1b\x00\xe1\x0e\xfb\x9f\xc4\xe8L\xeb\xbe\x9b\x8c\x02\x00\x00\x000\x00'
b'\xb5\x13Z\xc3J\x18\xd8:O\xa8\xaf.\x7f\x86r\x81\x7f&\x85\x8f>^\x1f\x08'
b'\x00\x00\x00A\x00\xa8K\xf8\x02u\xe4S#\x004\x00Q\x00%c\x18\xfa\xe5\xd5\tBM>'
b'\xc1\xbb\x91!\xebk\xa2\xad\x01\xe3\xba\x80\x80\xb1\x05\n\x9e\xc0\x1d\x7f'
b'\t\x1c\x02\xa9\xbf\xea\xe0mfH\x05\xeb?')
Результат разбора:
'A1': {'B1': {'C1': -1973,
{'C2': 29954,
'C3': 21476,
'C4': [{'D1': 0.6013964414596558,
'D2': 48428,
'D3': [-2085, -1504, -5918, 5602],
'D4': -31},
'D1': -0.45957112312316895,
{'D2': 35995,
'D3': [-1266, -15201],
'D4': -75},
'D1': 0.280312716960907,
{'D2': 8030,
'D3': [23059,
19139,
-10216,
20282,
-20568,
32558,
29318,
32641],
'D4': -88}],
'C5': 4195902245},
'B2': 13529163257139025381,
'B3': 145,
'B4': -5343,
'B5': [-23957, 429, -17693, -32640, 1457, -25078]},
'A2': 3856261795,
'A3': [-0.04884421935963301, 0.8443948746271677],
'A4': 8187809935453684785}
Пример 2
Двоичные данные:
b"YRKN\x89Z\x00\x00\x00\xe5}\xd6e\x02\x00\x00\x00\x81\x00\xe6'\x06T\xeb"
(b'\xa2\x82e.\x85XI\r\xec\xba\xbe\xbc\x8c\x02\x00\x00\x00\x1b\x00\x07'
b'h\x86\x98\xb7x)\xfe\x15te\x99\x14m\xeb\x9e>\xe0\x01\x06\x00\x00\x00,\x00'
b'hS\xa1\xaf\xe2&\xf0\xc6\xec\x91\xadT?\x1ed\x04\x00\x00\x00E\x00\xfe\x87;'
b'!b\xc0\x8d\x1f\x008\x00M\x00\xc6\x17]f\xe7f\xa5\xb6\xa84`\xbbB3\x08P\x07\xdd'
b'cR\x8e\xaf!\xf0\xad\xa8\xef\x0c\x99\xd2k\xae|\xe5\xbf\xb0\x90\x8f'
b'\xde\xe1\x00\xb9\xbf')
Результат разбора:
'A1': {'B1': {'C1': 15239,
{'C2': 25121,
'C3': 36288,
'C4': [{'D1': -0.36508217453956604,
'D2': 36028,
'D3': [-31442, 18776],
'D4': 7},
'D1': 0.310389906167984,
{'D2': 480,
'D3': [-31128, -18536, 10616, 5630, 25972, 5273],
'D4': 104},
'D1': 0.8307734131813049,
{'D2': 25630,
'D3': [-24237, -7505, -4058, -4922],
'D4': -2}],
'C5': 1717376966},
'B2': 13501849582080190183,
'B3': 66,
'B4': 2099,
'B5': [1872, 25565, -29102, 8623, -21008, -4184]},
'A2': 1708555749,
'A3': [-0.6714698892508593, -0.09766971286404913],
'A4': 7314587876413810662}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x58 0x50 0x44
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Структура B |
3 | Размер (uint32) и адрес (uint32) массива структур D |
4 | Размер (uint16) и адрес (uint32) массива int8 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Массив uint16, размер 2 |
3 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива uint16 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HXPD\x0e;\x00\x00\x00\x03\x00\x00\x00)\xbf\xc9#\xb8M,\x9b@\xce\x86'
(b'\x02/\x7f\x00\x00\x00\x02\x00\x00\x006\x00\x02\x00\x00\x00Nxmz\xca]\xef\xe1'
b'\xac\xfb\xd1\x01G\xe7\x00\x00\x00\x02\x00\x00\x00,Q_\xd9W\x00\x00'
b'\x00\x03\x00\x00\x000\xf11\x82\x084\xd1')
Результат разбора:
'A1': 3643,
{'A2': {'B1': 'xmz',
'B2': {'C1': -0.19640258568071012, 'C2': [52870, 559], 'C3': 127}},
'A3': [{'D1': [51805, 61409], 'D2': 1365236055},
'D1': [44283, 53505, 18407], 'D2': 4046553608}],
{'A4': [52, -47]}
Пример 2
Двоичные данные:
b'HXPD\xfb\x9f\x00\x00\x00\x03\x00\x00\x00)?\xc9D\xac\xc19\xbf\x80\xc5\xbe'
(b'\xe9;\r\x00\x00\x00\x06\x00\x00\x00R\x00\x03\x00\x00\x00\x9afea/\xeb\x8d\x08'
b'\xefJ\xbaf`d\xb4\xb7\xec\\$\x1a\xec@Y\x02\x99\xcc\x95\xae9E\xa1\xff'
b'\x7fT\x96g\x07}\xdd\x8d8\xac\x00\x00\x00\x03\x00\x00\x00,o\xb1\xbfB\x00\x00'
b'\x00\x04\x00\x00\x002Y\xb6\xf8\xc2\x00\x00\x00\x03\x00\x00\x00:_\x05'
b'\x15\xfd\x00\x00\x00\x04\x00\x00\x00@n\x97\x1cI\x00\x00\x00\x03\x00\x00'
b'\x00H\x89\x98\xbe\xa7\x00\x00\x00\x02\x00\x00\x00N^\x91H\xc2\x9dS\x7f')
Результат разбора:
'A1': -1121,
{'A2': {'B1': 'fea',
'B2': {'C1': 0.19740828928797427, 'C2': [50622, 59707], 'C3': 13}},
'A3': [{'D1': [12267, 36104, 61258], 'D2': 1873919810},
'D1': [47718, 24676, 46263, 60508], 'D2': 1505163458},
{'D1': [9242, 60480, 22786], 'D2': 1594168829},
{'D1': [39372, 38318, 14661, 41471], 'D2': 1855396937},
{'D1': [32596, 38503, 1917], 'D2': 2308488871},
{'D1': [56717, 14508], 'D2': 1586579650}],
{'A4': [-99, 83, 127]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x4a 0x55 0x59
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Адрес (uint32) структуры B |
3 | uint16 |
4 | Массив адресов (uint16) структур C, размер 2 |
5 | Размер (uint16) и адрес (uint32) массива uint8 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | Размер (uint32) и адрес (uint16) массива char |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | int32 |
3 | Размер (uint32) и адрес (uint32) массива int32 |
4 | uint32 |
5 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | uint32 |
3 | int8 |
4 | uint16 |
5 | uint32 |
6 | int64 |
7 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BJUY\xd9w\xea!\x1c\x00\x00\x00\xf3\xb3-\x00i\x00\x02\x00\x99\x00\x00\x00rehf'
(b'\x92\xc25\x04\x00\x00\x00\x18\x00\x13\xa2c\xd9;\xe9\xe5\x9b\xd0\x0f=\x8d({x'
b'$XRv\xa3\x02\xbevap\xf7\xbb\x1f\xc1\xbdej\xfa\x89.\x8d\xbdj\xd0h\xf7\x96\xd3'
b'\x02\x00\x00\x00%\x00\x00\x005z\xc5\xcbvR\xa4\xf0\xc0j\xe5\xbf\xbd\xae=+'
b'\xb4F\xed\x88\xba\t\xdbG\xc3/\xd4\x05q\x1e\x8d\xe2\x91@\x8cx\xb1\xff\x88\xbc'
b'\xb3\xbf1E@\x98uW\xaa\x86j\xa1\x03\x00\x00\x00]\x00\x00\x00\xc9=\x06\xec'
b'\x8c\xad\xfc')
Результат разбора:
'A1': 569014233,
{'A2': {'B1': -15726, 'B2': 53, 'B3': 'rehf'},
'A3': 46067,
'A4': [{'C1': {'D1': 2627985796669181904,
'D2': 2742440536,
'D3': 2,
'D4': 30398,
'D5': 3153555553,
'D6': 3353486732434456863,
'D7': 3496656269},
'C2': -745080984,
'C3': [-647781869, -1679431365],
'C4': 3418716725,
'C5': 118},
'C1': {'D1': -4375287678136423098,
{'D2': 1896207407,
'D3': 30,
'D4': 57997,
'D5': 2022457489,
'D6': 4985977041158995889,
'D7': 1467324480},
'C2': -1586854230,
'C3': [-1057971118, -1111497366, -1272234578],
'C4': 3959832009,
'C5': -116}],
'A5': [173, 252]}
Пример 2
Двоичные данные:
b'BJUYv\xe3\xcec\x1a\x00\x00\x003\xb3+\x00g\x00\x02\x00\x97\x00\x00\x00vo\xd2I'
(b'\x1e\x02\x00\x00\x00\x18\x00\xf0\x10\xb00\x15\xf6\x95aX\x0e\xd2\xc0\xedGE H'
b'\x80\x9c)\xf2\xc0\x99Yu2\xf7\xfa\xdc\x98\x186,X\xbf{\xf1\xa1{b\x7f'
b'\xdb\xde\x02\x00\x00\x00#\x00\x00\x00\x82\xfd\x8e\xee\xae\xc7\xcf\xc2U\xc0'
b'\x1a\x044<\x0b\xc3\xc8\x94\xc6\x97\xa5D1\xb1s\xd9\x1d\xab`\xfc/\xfd\x98\xc2'
b'`s\xa3dr\x16\xfa\xd7\x13K\x1c\xc9\x9d{.eb\n\x03\x00\x00\x00[\x00'
b'\x00\x00\xb2h\xd5\xe3\xe9\x04\x8b')
Результат разбора:
'A1': 1674503030,
{'A2': {'B1': 18898, 'B2': 30, 'B3': 'vo'},
'A3': 45875,
'A4': [{'C1': {'D1': 2325343869074542168,
'D2': 698122312,
'D3': -14,
'D4': 39360,
'D5': 4147279193,
'D6': -4658925203662250758,
'D7': 2074210683},
'C2': -556040350,
'C3': [816845040, 1637217813],
'C4': 4002348418,
'C5': -82},
'C1': {'D1': 8336498556145223316,
{'D2': 1621827033,
'D3': -4,
'D4': 64815,
'D5': 1935721112,
'D6': 5409905046520489123,
'D7': 2073938204},
'C2': 174220590,
'C3': [1438830535, 872684224, -926741700],
'C4': 3822414002,
'C5': -23}],
'A5': [4, 139]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x4f 0x44 0x52
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива адресов (uint32) структур B |
2 | uint8 |
3 | double |
4 | int8 |
5 | uint8 |
6 | Размер (uint32) и адрес (uint16) массива float |
7 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint16) массива структур C |
3 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint8 |
3 | float |
4 | Размер (uint16) и адрес (uint32) массива int8 |
5 | uint32 |
6 | int16 |
7 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив uint32, размер 4 |
3 | double |
4 | uint32 |
5 | uint8 |
6 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RODR\x02\x00\x9a\x00\x00\x00J\x98B5\xb4(\xe0\xec\xbfM9\x02\x00\x00'
(b'\x00\xa2\x00\xaa\x00\x00\x00\xb7\xf1\xbdr\xba\xa7s\x0cE\xe8\x8f\x19\xba'
b'F@\xc8~?\x07\x00\x1f\x00\x00\x00\x8c}\x14v_j\xd6\xady\xa9\x01\xe1\x88'
b'\xbe\x05\x00&\x00\x00\x00\xa7\xb7\x92\x8b\xeb\x0bn\xd0\xbe\x99\xbc{\x02'
b'\x00+\x00\xf8c9V\x8fb]~\xae\x19\xd1\x13\xb3\xdf\x89\xcb\xf0\xfdA?\x05'
b'\x00\\\x00\x00\x00b_h\xb7\xd9\xee>B$\x8e\t0n\xbf\x08\x00a\x00\x00\x00O\xdfY'
b'\x0e\xf3d\xf4\xe3\x06\xe8\xce\x0f\x02\x00i\x00ES\x00\x00\x00\x91\x00'
b'\x00\x00w\xe4\x11?x\xd5n?\xf2\xe7C\xb6\xf3\xc2\xe5M\xa4\xa0\xa8\xca@\xcc'
b'b\x96X\x7f\xea:^(\xb1\xf9\xed?\x8c\xc1\xafe\xb7\x95\xec\x8f6\xf0\xed\xe8'
b'\xc9')
Результат разбора:
'A1': [{'B1': 2075957694,
{'B2': [{'C1': -70,
'C2': 70,
'C3': 0.9952430725097656,
'C4': [-73, -15, -67, 114, -70, -89, 115],
'C5': 1981054348,
'C6': 27231,
'C7': -21034},
'C1': 121,
{'C2': 169,
'C3': -0.26734164357185364,
'C4': [12, 69, -24, -113, 25],
'C5': 2341648295,
'C6': 3051,
'C7': -12178}],
'B3': -8},
'B1': 265218054,
{'B2': [{'C1': -119,
'C2': 203,
'C3': 0.7577810287475586,
'C4': [99, 57, 86, -113, 98],
'C5': 3077070690,
'C6': -4391,
'C7': 16958},
'C1': 36,
{'C2': 142,
'C3': -0.930420458316803,
'C4': [93, 126, -82, 25, -47, 19, -77, -33],
'C5': 240770895,
'C6': 25843,
'C7': -7180}],
'B3': 69}],
'A2': 74,
'A3': -0.9023631591499734,
'A4': 77,
'A5': 57,
'A6': [0.5698923468589783, 0.9329447746276855],
'A7': {'D1': 59378,
'D2': [3270751811, 2695122405, 3426798248, 2136512098],
'D3': 0.9367299831809224,
'D4': 1706017164,
'D5': 183,
'D6': -3897603861525828459}}
Пример 2
Двоичные данные:
b'RODR\x02\x00\x97\x00\x00\x00g\xe0syO\xbd\x0c\xaa\xbfRr\x02\x00\x00'
(b'\x00\x9f\x00\xa7\x00\x00\x00\xe1oYp>Y\xdf\xb4\x7f\xea\x105(y\xf4$\xbe'
b'\x14\xbf\x07\x00\x1f\x00\x00\x00F:\x8c\x9a\x8a\xa8\xc6\xfe\xdd\x11\x8b\x8a'
b'\xd1\xbe\x06\x00&\x00\x00\x00\x8c\x88DG\x0e\xdf\x95\xc2\x1bH\x04\xcb'
b'\x02\x00,\x00\x13\x8dI%\x91\xf3Yi\xbe\x80L/\x80\x87\xcc\xbe\x03\x00]\x00'
b'\x00\x00\xa7\x03)\xe3@\xc2\xdb>\xb3\xe96\xfdk\xbf\x06\x00`\x00'
b'\x00\x00\xb5\xc7\xb0#\xec&\x86\t;2bD\x02\x00f\x00GT\x00\x00\x00\x8e'
b'\x00\x00\x00[\xfc\xd1\xbe \xd10\xbfR\xb7\xb7|\xdf\x9dmgZ\xa6\x0e\xf1\x04'
b'>M\x99~\xa3nFA\xfc\xa7\x1e\xed?\xd4\x82\xec*ZR\xe9z8\xa2\xe6P\x86')
Результат разбора:
'A1': [{'B1': 3406055451,
{'B2': [{'C1': 121,
'C2': 244,
'C3': -0.5810263156890869,
'C4': [-31, 111, 89, 112, 62, 89, -33],
'C5': 2592881222,
'C6': -22390,
'C7': -314},
'C1': -35,
{'C2': 17,
'C3': -0.4092601239681244,
'C4': [-76, 127, -22, 16, 53, 40],
'C5': 1195673740,
'C6': -8434,
'C7': -15723}],
'B3': 19},
'B1': 1147286075,
{'B2': [{'C1': 76,
'C2': 47,
'C3': -0.3994712829589844,
'C4': [-115, 73, 37],
'C5': 3811115943,
'C6': -15808,
'C7': 16091},
'C1': -77,
{'C2': 233,
'C3': -0.9218324422836304,
'C4': [-111, -13, 89, 105, -66, -128],
'C5': 598788021,
'C6': 9964,
'C7': 2438}],
'B3': 71}],
'A2': 103,
'A3': -0.050878444625346964,
'A4': 82,
'A5': 114,
'A6': [-0.4101284444332123, -0.6906909942626953],
'A7': {'D1': 46930,
'D2': [2648669367, 2790942573, 1040511246, 2742982989],
'D3': 0.9099922110419365,
'D4': 720143060,
'D5': 90,
'D6': -8768254890083686062}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x69 0x41 0x59 0x4c
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | Структура B |
4 | uint64 |
5 | int16 |
6 | Адрес (uint32) структуры C |
7 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур D |
8 | float |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | int16 |
3 | int64 |
4 | Размер (uint16) и адрес (uint16) массива char |
5 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | Массив uint16, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'iAYL\x1f%\x04\x00\x00\x00.\x00*\xab\x8b\xdf\x81?M\xba\xfd\xa0/\xfd'
(b'u\xa9\x18\xd6o\xe4\xfc"8\x00\x00\x00\x02\x00\x00\x00]\x00\xe9m\xb9\xbdqpplfh'
b'ttfl\x1dYO<B\x0e\xd9DQ\xc8\xebdOR\x0b\xc6\xda}\x06\x002\x00\xef;\xb5\x8c{;'
b'\xea\xda\xe5M\xfd<\x92!zO\x00\x00\x00V\x00\x00\x00')
Результат разбора:
'A1': 9503,
{'A2': 'qppl',
'A3': {'B1': -21718, 'B2': 11600633056116989835},
'A4': 16460610564473093423,
'A5': 8956,
'A6': {'C1': 4961012142167775517,
'C2': -14255,
'C3': 9068778551591789803,
'C4': 'fhttfl',
'C5': 239},
'A7': [{'D1': 59, 'D2': [36021, 15227, 56042]},
'D1': 229, 'D2': [64845, 37436, 31265]}],
{'A8': -0.09054166823625565}
Пример 2
Двоичные данные:
b'iAYL\x92\xc2\x04\x00\x00\x00.\x00\x1e/\xbb}3\x8a\x0fP>\xe0NH\x98\xd8JK'
(b'\xef\xf3\xaf\x038\x00\x00\x00\x03\x00\x00\x00d\x00\nKB?jhhuhsravj\x801\xebl'
b'\xc0P\xb9\x96\x8f\x7fqm\xfbr\xfcT\xe3\x11\x06\x002\x004\x81\xcd\xfed|l@)\\'
b'4\x14\x966\x81\xaa\x81\x8ctocqO\x00\x00\x00V\x00\x00\x00]\x00\x00\x00')
Результат разбора:
'A1': 49810,
{'A2': 'jhhu',
'A3': {'B1': 12062, 'B2': 16158440540725280187},
'A4': 17577350655483856974,
'A5': 943,
'A6': {'C1': -7585943309937593984,
'C2': 32655,
'C3': 1288967361595665777,
'C4': 'hsravj',
'C5': 52},
'A7': [{'D1': 129, 'D2': [65229, 31844, 16492]},
'D1': 41, 'D2': [13404, 38420, 33078]},
{'D1': 170, 'D2': [35969, 28532, 29027]}],
{'A8': 0.7589575052261353}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x8e 0x45 0x50 0x45 0x4e
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур D |
3 | double |
4 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура C |
3 | int64 |
4 | Массив char, размер 3 |
5 | double |
6 | int32 |
7 | float |
8 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | float |
3 | int16 |
4 | Размер (uint16) и адрес (uint16) массива char |
Структура D:
Поле | Описание |
---|---|
1 | Массив float, размер 3 |
2 | Массив uint16, размер 2 |
3 | float |
4 | float |
5 | int8 |
6 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x8eEPEN\x00\x00\x00\x1d\x00\x02\x00{\xbf\xee\x8097Q\x00\x92g\xdb\xb9\xa7pxj'
(b't?\xcf?)\xf0\xae\xa6\x07\x00\x04\x00\x19\xcf@\xce\xcdo\xcb7\x14hnv'
b'?\xdf\xf3\xa3\xa8\xe5WX\x81;$\xd9?Q\xe1K\x10>\x9d\xeew?l\x98\xad>\xa7\x11'
b'\xb4\xd2\xcd\xea\t>\xc4\x86b>\x7f\xe3\xddBq\x10>\xf2\xce\x9e\xbe\xc5X\xc8'
b'>-H\x98*5?\x15\xbe\xf6/5>=\xd0\x8e\x05\xfd@\x00E\x00`')
Результат разбора:
'A1': {'B1': 63,
{'B2': {'C1': -49, 'C2': 0.6638287305831909, 'C3': -23033, 'C4': 'pxjt'},
'B3': -3512580327609780460,
'B4': 'hnv',
'B5': 0.49924556249367447,
'B6': -2126830375,
'B7': 0.8198439478874207,
'B8': 16},
'A2': [{'D1': [0.30845996737480164, 0.9242046475410461, 0.32630693912506104],
'D2': [53965, 59913],
'D3': 0.3838377594947815,
'D4': 0.24989266693592072,
'D5': 66,
'D6': 28944},
'D1': [0.47423261404037476, -0.38544297218322754, 0.16922223567962646],
{'D2': [10805, 16149],
'D3': -0.4808289110660553,
'D4': 0.18536588549613953,
'D5': 5,
'D6': 64832}],
'A3': -0.9531522827528696,
'A4': 1742453159}
Пример 2
Двоичные данные:
b'\x8eEPEN\x00\x00\x00\x1c\x00\x02\x00z?\xeb\xca\xcf\xbb8<(5\xab5\x13tyz'
(b'\xd8\xcf?3\xb2r\xbf\x1f\x00\x03\x00\x19od\xf2H\xd0\xdd\xd1\x8fvxj?'
b'\xe2\\\xd4!\xe8\xb2&.s\r\xfa>\xa8H\x91{\xbeJA\x92<\xb6\x160\xbf\x08$\xe4'
b'f\x82\xe3\x82\xbbm\xb0\x01>\xabI\xfa\xdc|\xc1?o\x96\xd7\xbfc\x1eL?'
b'\x0e\xd6@\x9b\x04\x08\xf4\xbf5\xc6\xc8\xbf!\x8d\x81\xdeV*\x00D\x00_')
Результат разбора:
'A1': {'B1': 216,
{'B2': {'C1': -49, 'C2': 0.7019416093826294, 'C3': -16609, 'C4': 'tyz'},
'B3': 8026806830436831631,
'B4': 'vxj',
'B5': 0.5738316213879144,
'B6': 779292154,
'B7': 0.3286786377429962,
'B8': 123},
'A2': [{'D1': [-0.19751575589179993,
0.022227376699447632,
-0.5318129062652588],
'D2': [26242, 58242],
'D3': -0.0036268236581236124,
'D4': 0.3345487713813782,
'D5': -36,
'D6': 31937},
'D1': [0.9358953833580017, -0.8871810436248779, 0.5579566955566406],
{'D2': [39684, 2292],
'D3': -0.7100644111633301,
'D4': -0.6310654282569885,
'D5': -34,
'D6': 22058}],
'A3': 0.8685072571405543,
'A4': 900412691}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x4c 0x52
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint32 |
3 | Массив int8, размер 5 |
4 | Размер (uint16) и адрес (uint16) массива структур B |
5 | Массив char, размер 7 |
6 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Адрес (uint16) структуры C |
3 | uint64 |
4 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | float |
3 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint64 |
3 | Размер (uint16) и адрес (uint32) массива int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ILR\xe0AV=\x81p\xf0\xdbt\xf4\xa704!.\xc3\xf5\x02\x00I\x00ljsbqiae\x008\x92D'
(b"N'i\x94-\xb8\x00c\xbf\x906y\x8a\xe5\xed\xb1\x01(\x0c\xc7\xb0P\xd7\x12"
b'\x0c\xcf\x0cD?\xa6{\xce6\xb0\xdb\xe8\x823]!\x00y\xd5"\x11%N\xe4\x13z\xbdQ'
b'5\x00@\x019\x90\xe4\xf6\x87\xee\xfamz\xb6j\xd1\x88\x83\xd0\x026\x15\x02\x00'
b'c\x00\x00\x00')
Результат разбора:
'A1': 15848290789098930656,
{'A2': 816313460,
'A3': [52, 33, 46, -61, -11],
'A4': [{'B1': 23859,
'B2': {'C1': 3284365645797691960,
'C2': -0.8867297172546387,
'C3': 122140235042207376},
'B3': 1433356502518912377,
'B4': 122},
'B1': 20925,
{'B2': {'C1': 869994419599117352,
'C2': 0.7658204436302185,
'C3': -9013713104301818970},
'B3': 17187977964415418688,
'B4': 250}],
'A5': 'ljsbqia',
'A6': {'D1': 182, 'D2': 1528412218122097002, 'D3': [109, 122]}}
Пример 2
Двоичные данные:
b"ILR\xae\x9c2\xc3V\x06{mw\xe8<\xea'\xb9\xc6\xb9\xa0\x03\x00]\x00mbirzne\x86"
(b'\x00U\xc3\xf8\xb8(\xea\xefi\xddJJ\xbf>0\xc6f\xa9F\xc1YK\xf4L\x10\x83k\x1b'
b'\xa7}\x8b\xe4\xbe"\xa3R\\\xbdC\x92\x9b\xd9.\x1c\xac\xff\x04\xe1\x08$\xaf`'
b'>\x8a\x1e\xefG\xc5W\x826\xf7\xd6!\x00S\x95\xee\x96\xc5,#\xb3R\x8az5\x001\x86'
b'\x8e\xc7\x8d+{\x19\xc8s\xacI\x00\x1e\x7f\x02M\xd8\x91\x82@\xa5\xbc?\xa5w'
b'!\xbdEr\xa9\xf31\x02\x00\x84\x00\x00\x00')
Результат разбора:
'A1': 7888906141981383854,
{'A2': 3929860215,
'A3': [39, -71, -58, -71, -96],
'A4': [{'B1': -10505,
'B2': {'C1': 7633577354039182165,
'C2': -0.7902048230171204,
'C3': 6467528233268424766},
'B3': 12908210184126371155,
'B4': 82},
'B1': 31370,
{'B2': {'C1': -6405407834346032053,
'C2': -0.4463767111301422,
'C3': -7236647170654166238},
'B3': 1836109161021998641,
'B4': 200},
'B1': -21389,
{'B2': {'C1': 639798118214020825,
'C2': 0.21941810846328735,
'C3': 3927798329847520906},
'B3': 4648438123590745886,
'B4': 165}],
'A5': 'mbirzne',
'A6': {'D1': 165, 'D2': 3599406835460546935, 'D3': [-68, 63]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x66 0x44 0x4a 0x54
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | float |
3 | Массив структур C, размер 6 |
4 | double |
5 | int32 |
6 | Структура D |
7 | Массив float, размер 4 |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint32) и адрес (uint16) массива int16 |
3 | float |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | Структура E |
3 | Адрес (uint16) структуры F |
4 | Структура G |
5 | int16 |
6 | uint16 |
7 | Адрес (uint16) структуры H |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
Структура F:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | float |
4 | Массив float, размер 2 |
Структура G:
Поле | Описание |
---|---|
1 | float |
2 | uint8 |
Структура H:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'fDJT\x86\xe7R\x8d\xf5\xc5\x0ea?m\x85\xf2\xdc\x00\x00\x00\x03\x00\x80\xbc'
(b'\x00\x17\xec\x8a\x00\x00\x00\x02\x00\x86>\xe7*\xb0W\x00\x00\x00\x02\x00'
b'\x8a=\xef\x9f\x814\x00\x00\x00\x03\x00\x8e\xbe\xee\xa7\xb5;\x00\x00\x00'
b'\x03\x00\x94\xbfh\x90\xe2\x95\x00\x00\x00\x02\x00\x9a\xbe`\xa3\x92\xbf\xcf'
b'\x19\xcf\xb3\xac\xb1\x08\x1dJ\x10j\xb9\xd1\xaeq\xb0\x00\x9e\xbf\x06\x0f'
b'5\xf4\xa03\xbae\x00\xb3?%2\xb8\xbd\x81$D>\xceu)?g\x08+\xbb\x8a\xe8\xe9'
b"\x9fe'\x00!&d\xa4?l\xf5\xec\x99Z\x04W(\x82\xf9\xf9\xbc\xf7\x91h\xbeue\xbf"
b'\xe2\xe7\xa2\xf1D\x9b\xe0?\nKM\xbeg\x8b\xc8\xbe\xf5x-\xe2\x89\xe5\x02\x8b'
b'\xd5')
Результат разбора:
'A1': {'B1': -2031660403, 'B2': -171635103},
{'A2': 0.9278250932693481,
'A3': [{'C1': -36, 'C2': [-17526, -5911, -24731], 'C3': -0.007818203419446945},
'C1': -118, 'C2': [9984, 8486], 'C3': 0.45149755477905273},
{'C1': 87, 'C2': [25764, 16236], 'C3': 0.11700344830751419},
{'C1': 52, 'C2': [-2580, -26278, 1111], 'C3': -0.4661232531070709},
{'C1': 59, 'C2': [10370, -1543, -17161], 'C3': -0.9084607362747192},
{'C1': -107, 'C2': [-28312, -16779], 'C3': -0.21937397122383118}],
{'A4': -0.2429751994435565,
'A5': 491393130,
'A6': {'D1': -17967,
'D2': {'E1': 44657, 'E2': 176},
'D3': {'F1': 101,
'F2': -0.5907759392038052,
'F3': 0.5402114987373352,
'F4': [-0.22611916065216064, -0.47943249344825745]},
'D4': {'G1': -0.5236695408821106, 'G2': 244},
'D5': -24525,
'D6': 47717,
'D7': {'H1': 3800687874, 'H2': 35797}},
'A7': [0.6453051567077637,
-0.06305745244026184,
0.40323761105537415,
0.9024683833122253]}
Пример 2
Двоичные данные:
b'fDJT\x1eXD-\xf2\xd6\x87\x7f\xbf\x1b{\x83\x82\x00\x00\x00\x02\x00\x80?'
(b'8\xaf\x14\xa1\x00\x00\x00\x03\x00\x84\xbfs?R\x14\x00\x00\x00\x02\x00'
b'\x8a\xbe\x86\x9e\x9b\x8f\x00\x00\x00\x02\x00\x8e\xbf\x06\xd7\xaf'
b'\x87\x00\x00\x00\x03\x00\x92?|\x8f\x06\x85\x00\x00\x00\x02\x00\x98>\xfd'
b'\x9b\xf9?\xd7\xe8<9\x92\x9b\x18)HOF\x1b\x8a\x16\xbd\xb7\x00\x9c>\xb0\xc5'
b'\xb6\x0f\x80\xc1\xfd\xa6\x00\xb1\xbd\x86\x08\x97?\x7fD\x83>\xe8W5'
b'\xbf,\xb9\x8c"\xb8\xa8\xe7\x8c\x0c\xd8\xd4\x19\x8bc\xa4Q\xc5\x03\xbe'
b'\x1d\x1f\x1d"\x9c\xf9\xa1\xaa\xd7\xef\x16 \xb7?\xd4\xd6r\xf4\x18\xa2'
b'\x0c\xbd\xb9#\xd6?\\\xc4\x06>\x02\xc0mH\x1c0\x90\xed\x9a')
Результат разбора:
'A1': {'B1': 509101101, 'B2': -220821633},
{'A2': -0.6073533892631531,
'A3': [{'C1': -126, 'C2': [8888, -22297], 'C3': 0.721421480178833},
'C1': -95, 'C2': [-29684, -10028, 6539], 'C3': -0.9501849412918091},
{'C1': 20, 'C2': [25508, 20933], 'C3': -0.2629288136959076},
{'C1': -113, 'C2': [958, 7455], 'C3': -0.5267285704612732},
{'C1': -121, 'C2': [7458, -25351, -24150], 'C3': 0.9865573644638062},
{'C1': -123, 'C2': [-10257, 5664], 'C3': 0.4953306019306183}],
{'A4': 0.37354951498348177,
'A5': 692604742,
'A6': {'D1': 7050,
'D2': {'E1': 5821, 'E2': 183},
'D3': {'F1': 183,
'F2': 0.3255889304878401,
'F3': -0.09040038287639618,
'F4': [0.8623660802841187, 0.12768717110157013]},
'D4': {'G1': 0.3452584147453308, 'G2': 15},
'D5': -32575,
'D6': 64934,
'D7': {'H1': 1209806992, 'H2': 60826}},
'A7': [-0.06544607132673264,
0.9971391558647156,
0.4537903368473053,
-0.674706220626831]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x4e 0x41 0x2
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура B |
3 | Структура C |
4 | double |
5 | Массив float, размер 8 |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint16) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint16 |
3 | Массив структур D, размер 4 |
4 | int8 |
5 | uint32 |
6 | int64 |
7 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint16) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LNA\x02+L\x8f-k\xbbi\xcag\x05\x00m\x00\x00\x00Z\x9b\xb9\x87s\x03\x00r\x00'
(b'\x00\x00\xd2\x02\x02\x00u\x00\x00\x00\xdd\xca\x03\x00w\x00\x00\x00\xcc\r'
b'\x02\x00z\x00\x00\x00\x06\x88\x98!%q\xd4\xba\xe7v\x16xX\x18!\x04\x1dX'
b'+\xe0<\xee?H\xa6W\xbf\xbf\x95?=\xac\x83>?\xa3\xccT\xbf\xa3\r\x9b>\xda\xaeL'
b'?\x82\x9aI\xbf\xc1B\xa5>hqybmQ\xc9\xab\xdf\x08\x91\xeb"\xba?')
Результат разбора:
'A1': 43,
{'A2': {'B1': 7478906384880078668, 'B2': 'hqybm'},
'A3': {'C1': 90,
'C2': 47515,
'C3': [{'D1': 29575, 'D2': [81, 201, 171]},
'D1': 722, 'D2': [223, 8]},
{'D1': -13603, 'D2': [145, 235, 34]},
{'D1': 3532, 'D2': [186, 63]}],
{'C4': 6,
'C5': 622958728,
'C6': 6374869972492670065,
'C7': 8472},
'A4': 0.9449311110082879,
'A5': [-0.8423810005187988,
0.04677366837859154,
0.7441966533660889,
-0.8312475085258484,
0.30283841490745544,
0.799543023109436,
-0.7875138521194458,
0.3227749168872833]}
Пример 2
Двоичные данные:
b'LNA\x02\xa6\xa5\xfab\xacK\xcc}\x99\x03\x00m\x00\x00\x00%\xf0\xbc\x8a/'
(b'\x03\x00p\x00\x00\x00zP\x02\x00s\x00\x00\x00\x03\xdb\x02\x00u\x00\x00\x00#\n'
b'\x03\x00w\x00\x00\x00\xe8\x0e\xee\x01\x15Xe*\xf5q\x1e\r#O\xba\x8e\xc2\xfc'
b'|\x9a?\xee?B-\xce\xbc\t\x1a/\xbb\xa7\xa49\xbd\x02\x84*\xbf\xc4\x92N'
b'?\xb9\xbf;\xbf\xe6\xec3>\xa5\xbe\xbf>tdm\x9b|lDu\xf3\xe7\xa4 \x9d')
Результат разбора:
'A1': 166,
{'A2': {'B1': 11060220885278587557, 'B2': 'tdm'},
'A3': {'C1': 37,
'C2': 48368,
'C3': [{'D1': 12170, 'D2': [155, 124, 108]},
'D1': 20602, 'D2': [68, 117]},
{'D1': -9469, 'D2': [243, 231]},
{'D1': 2595, 'D2': [164, 32, 157]}],
{'C4': -24,
'C5': 352448014,
'C6': 2525708440818050392,
'C7': -17841},
'A4': 0.9452640954169327,
'A5': [-0.02516806498169899,
-0.002671839902177453,
-0.04532304033637047,
-0.6660767793655396,
0.806926965713501,
-0.733394205570221,
0.17570838332176208,
0.37450137734413147]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x41 0x4f
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Адрес (uint32) структуры B |
3 | Размер (uint32) и адрес (uint32) массива uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | Адрес (uint16) структуры E |
3 | Размер (uint32) и адрес (uint16) массива int32 |
Структура C:
Поле | Описание |
---|---|
1 | Массив структур D, размер 4 |
2 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | Массив uint16, размер 5 |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | double |
4 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RAO\xf5-\xb3OK\x00\x00\x00\x08\x00\x00\x00\x87\x00\x00\x00\xb2a\xdfM\xa0'
(b'\xd91\xfc\xb6\xc6\xe8\xbf\xe0\x03\x96I\xac\xce\xb6?\xd2\x03\xadd\x9b'
b'\x10\xea\xbf\x1a!\xbe\xb7\x95\x88\x01\xb2\r\xafY\xc0x\x1eK\xd4%p<m\xf3'
b'\xae\xac\xd1:\x82\xd1\xe8\x80\xcf\x98q\xbd\xdcY=\xdbU \xd6/Af\xc9\xce'
b'\xa5\xad\xf6\x80*\x17\x95\xef\xe9\xb0\xf21\xd7Y$\x8c\x92\xb4\x93\x9a'
b'\xd5\xfa\x99\xda\x16\x9d4\xc2N\xa8j\xa8\xf2P\x10\x13\x00\x07\x00\x00'
b'\x00/\x00R\xd0K\xb3\xe4\xd7\xa6\x9aa\x0c\x14\xe4\xfdck`')
Результат разбора:
'A1': 1337142773,
{'A2': {'B1': {'C1': [{'D1': -128, 'D2': [39119, 48497, 23004, 56125, 8277]},
'D1': -42, 'D2': [16687, 51558, 42446, 63149, 10880]},
{'D1': 23, 'D2': [61333, 45289, 12786, 22999, 35876]},
{'D1': -110, 'D2': [37812, 54682, 39418, 5850, 13469]}],
{'C2': 1175706307901542082},
'B2': {'E1': 1306485170,
'E2': -0.7742571759870778,
'E3': 0.08909107967885133,
'E4': -0.8145272222828857},
'B3': [-1212276454,
-1308522347,
-1067864307,
-733274504,
1832677413,
-777212173,
-388922822]},
'A3': [53330, 45899, 55268, 39590, 3169, 58388, 25597, 24683]}
Пример 2
Двоичные данные:
b'RAOn\xb6\xcc\x13K\x00\x00\x00\x02\x00\x00\x00\x87\x00\x00\x00\xd5'
(b'\xa1V\xea\xda\x00\xa8\xd0\x1e\x86\xe2?>\x10\x94/\x9c)\xef\xbfT\xc4pK\x8c'
b'\xcb\xec?\x05\xf7\x17\xe7\xc9e\x94\x94\x16Q\xe7Y\x11H\xe0,\x83\x9f\xd0\\\xf0'
b'\xe4\xe6l1\xc6\\\xf4d\x16|!\xad\x9fIs\x912\xbd\x1a\x12\xf9/t\x15^=*\x84'
b'\x0fd\xceI{\xdc\xa6\x83\xff\x17\x10\x08\xc8-9\x8eZ\x18\xce\xf8Ce\xe3W'
b'VQ\xd1\x8e[\xe9\xe1\x13\x00\x07\x00\x00\x00/\x00*\xe0\xa1\x01')
Результат разбора:
'A1': 332183150,
{'A2': {'B1': {'C1': [{'D1': 100, 'D2': [31766, 44321, 18847, 37235, 48434]},
'D1': 26, 'D2': [63762, 29743, 24085, 10813, 3972]},
{'D1': 100, 'D2': [18894, 56443, 33702, 6143, 2064]},
{'D1': -56, 'D2': [14637, 23182, 52760, 17400, 58213]}],
{'C2': -2168101076646930857},
'B2': {'E1': -363421227,
'E2': 0.5788721156423222,
'E3': -0.9738293580308051,
'E4': 0.8998471711585219},
'B3': [-417859835,
-1802213943,
1508331798,
752896017,
1557176195,
1827071216,
-195246543]},
'A3': [57386, 417]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x45 0x4c 0x63
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | Адрес (uint32) структуры B |
3 | int64 |
4 | uint64 |
5 | Размер (uint32) и адрес (uint16) массива структур C |
6 | Структура D |
7 | uint8 |
8 | Размер (uint32) и адрес (uint16) массива uint16 |
Структура B:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | float |
3 | int8 |
4 | Структура E |
5 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива uint8 |
2 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'IELc\x04\x00>\x00B\x00\x00\x00\x8b\x1c\xd8\xbc#\r\x87\xaf\xd0\x05\x15\x9b'
(b'\xde\x98G\xf9\x02\x00\x00\x00O\x00\x14\x98Us\xbf\xf1\x04\x00\x00\x00'
b'a\x00`\xe8\t0\x99I\x1f1\x9e\x0c\x05\x00\x00\x00e\x00mnrzr\x92\xaa\x83\x91H'
b'\x8c\x06\xd1;\xc3=\x115\xa1w\xea\x13v\xef\x91\x99T\xae f\xf8\xf7W*'
b'\xdb\x12{\x8e*\xa7\xc5\xc4\x86\xee\x15{\x88\xa43')
Результат разбора:
'A1': 'mnrz',
{'A2': {'B1': 471831850783511154, 'B2': 1036205009, 'B3': 17},
'A3': -5798651548072928117,
'A4': 17962493720642520528,
'A5': [{'C1': 53, 'C2': 11065889049845331873},
'C1': 84, 'C2': 15792531765864046766}],
{'A6': {'D1': 20,
'D2': -0.9505248069763184,
'D3': -15,
'D4': {'E1': [18, 123, 142, 42], 'E2': 3539628754421278816},
'D5': -98},
'A7': 12,
'A8': [50599, 34500, 5614, 34939, 13220]}
Пример 2
Двоичные данные:
b'IELc\x04\x00>\x00B\x00\x00\x00\x19\xb7\x8fTu~/L`\x80\xe7N\x97f\xa0"'
(b'\x02\x00\x00\x00O\x00\xd4\x03\x16p\xbfd\x02\x00\x00\x00a\x00\xe6\xed'
b'\x7f\xc9#\xdcD3\x9a\xb3\x08\x00\x00\x00c\x00tgkwN^\x16(:\ty\x1e\xae\xb0'
b't\xa9\xa3-]K\x11|"u\xcc\x92W\xd1]\x04\x9c\xbc\x12\x9c\x06}\x91\xa9'
b"\x83'\x960\x8b\xce/\xcc\xcaz\\\x14\xa9CU")
Результат разбора:
'A1': 'tgkw',
{'A2': {'B1': 2195796438705135182, 'B2': -1451970386, 'B3': 163},
'A3': 5489745513182902041,
'A4': 2495106993613144160,
'A5': [{'C1': 45, 'C2': 10577958415757298525},
'C1': 87, 'C2': 476276261875113425}],
{'A6': {'D1': -44,
'D2': -0.9378358721733093,
'D3': 100,
'D4': {'E1': [125, 145], 'E2': 3694319640613219814},
'D5': -102},
'A7': 179,
'A8': [33705, 38439, 35632, 12238, 51916, 23674, 43284, 21827]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x18 0x4e 0x4a 0x5a
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура B |
3 | double |
4 | Размер (uint16) и адрес (uint16) массива int8 |
5 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Структура C |
3 | Массив uint8, размер 6 |
4 | Размер (uint32) и адрес (uint32) массива double |
5 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива адресов (uint32) структур D |
2 | float |
3 | Размер (uint16) и адрес (uint32) массива uint64 |
4 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x18NJZ\x16>\x83\xf4,\x00\x03\x00\x00\x00P\xbf(yE\x00\x03\x00\x00\x00'
(b'\\\xaf\xe0\xaf\xd5>\xeec\xcf\rf\x0f&\x86O\x00\x00\x00\x02\x00\x00\x00t\xc1'
b'5UX\x8e\xcd\xc8\x99\xbf\xd7\x81@\xfe\xb6V\xc0\x00\x03\x00\x84&\xfeJ~\xa4'
b'\\\xbf\xa17\xbbd[0\x00\x00\x00D\x00\x00\x00H\x00\x00\x00L`MSQ\xc4\x14\xe9N'
b'9\x1b\xa8\x047\x8a980\x1b\x80\xe1\xc9e\x18d\xbf\xb7"\xb2\xb6{\x12P'
b'\xbf\xc2\xab\xd8\t\xbf\xa7\x00\x9b\x19\xf8')
Результат разбора:
'A1': 22,
{'A2': {'B1': 0.25772225856781006,
'B2': {'C1': [{'D1': 254, 'D2': 74, 'D3': 32420},
'D1': 92, 'D2': 191, 'D3': -24265},
{'D1': 187, 'D2': 100, 'D3': 23344}],
{'C2': -0.658100426197052,
'C3': [6939294211494963534,
4115067420598221112,
3466506045426571364],
'C4': 12673322681839281103},
'B3': [13, 102, 15, 38, 134, 79],
'B4': [-0.09037320094200507, -0.14586925960548314],
'B5': 13922127661927090329},
'A3': -0.3672640311645914,
'A4': [-101, 25, -8],
'A5': 38}
Пример 2
Двоичные данные:
b'\x18NJZ\xfd>a\x11_\x00\x02\x00\x00\x00L\xbfIh#\x00\x03\x00\x00\x00TBG\xb1'
(b'\xb8\x96\r\xe7:\x18\x0fU\xc0\xa1\xf8\x00\x00\x00\x02\x00\x00\x00ls'
b'\x1c1\xb5\x19<\xbe\xc4?\xe1\xa9.4\x02\xed\xe2\x00\x03\x00|6\xb9T\x92\xd1'
b'dZ\x9f\xc7\x00\x00\x00D\x00\x00\x00H_\xc0SC\x92\x8e\x15\xa9\xbd\xea\xdcH'
b'\xe6`\xd5z.jm\x0c\xf1\x08\xabV?\xd1\xad\x0bR\x92\xc0\\\xbf\xd8!;'
b'\xb0\xef\x18\xd8\x8c|\x9f')
Результат разбора:
'A1': 253,
{'A2': {'B1': 0.21979282796382904,
'B2': {'C1': [{'D1': 185, 'D2': 84, 'D3': -27951},
'D1': 100, 'D2': 90, 'D3': -24633}],
{'C2': -0.7867452502250671,
'C3': [6899606178818299305,
13684992623379535226,
3344605575626926934],
'C4': 4775981336199292730},
'B3': [24, 15, 85, 192, 161, 248],
'B4': [0.27618678153794973, -0.3770283916350201],
'B5': 8294559267591864004},
'A3': 0.551901914200638,
'A4': [-116, 124, -97],
'A5': 54}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x78 0x53 0x4a 0x48
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив структур B, размер 5 |
2 | Массив char, размер 7 |
3 | int16 |
4 | Адрес (uint32) структуры C |
5 | int8 |
6 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | uint16 |
3 | int8 |
4 | Массив uint32, размер 3 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint64 |
3 | Размер (uint16) и адрес (uint32) массива int64 |
4 | int16 |
5 | uint64 |
6 | Размер (uint32) и адрес (uint16) массива int16 |
7 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'xSJH\x0f\x8a\x1b\xf24\xdb\xed\x0c\xe9jZK/jAGX\x1c\xab\xd4\xef\xe42B'
(b'\xfc\xb0F\xfe\xba[\x1e(\xb8\xf6Qvhghkim\x1bpm\x00\x00\x00O\x8f<\x89'
b'\x19\r\x04\x01\xc3\x80\xdf\x8d\xd3\xcd\x193\xcf\xd1;6\xa1\xee\x88\xde'
b'V\x87w\xbdRi\x89\x02\x006\x00\x00\x004\x82\xce\xa6\xfd7\xce\x05\x82\xb9\x02'
b'\x00\x00\x00F\x00\x8c\xe01\xbfJ\x00\x00\x00\xf9\x037\x1f\xf1\x87b'
b'\xa8\xb5\x84\x03\xf3`D\x83')
Результат разбора:
'A1': [{'B1': 15, 'B2': 7050, 'B3': -304401166},
{'B1': 12, 'B2': 27369, 'B3': 1781484378},
{'B1': 65, 'B2': 22599, 'B3': -271275236},
{'B1': -28, 'B2': 16946, 'B3': -28921604},
{'B1': -70, 'B2': 7771, 'B3': 1375123496}],
{'A2': 'vhghkim',
'A3': 28699,
'A4': {'C1': {'D1': 136,
'D2': 9901536229458400990,
'D3': [-9168483299484923588, -3328385413683114529],
'D4': -32204,
'D5': 13367253027249825486,
'D6': [13883, -4447],
'D7': -0.6948325634002686},
'C2': 1017,
'C3': 55,
'C4': [1653076255, 59028904, 2202296563]},
'A5': 79,
'A6': 143}
Пример 2
Двоичные данные:
b'xSJHB\xcb\x892\xdf1_f\xa5\xa5dj\xd0\xe9\xae+\x15\xa8G\xe7\x8d\xcf|\xac'
(b"\xad\xc0\xdc0B\xfd\xd2\xf3\xb5DRzdqzpjl\xee\xdd\x85\x00\x00\x00s]'c"
b'Z\x05\x05\xaf\xcd+\r\x92\x99\x80\xa0\xb1D\xc1*\x1cL\x9eOK\xf6Aw\xd9'
b"\xb8\xe5}\x89I\xb7g4\x8f\xeb\xbe'\xc6\xc9\xca\xdex\x0f_\xee6\xc6\x9a\x98"
b'}\x02\xc5\x05\x006\x00\x00\x00\x06X8+\xa5F\x97SW9\x02\x00\x00\x00^'
b'\x00\x83\x990\xbeb\x00\x00\x00xz\x04\xc7\xb6\xf6\x11\x04v\xfb\xf9'
b'\x8e\xfd\xf8\x1b')
Результат разбора:
'A1': [{'B1': 66, 'B2': -30261, 'B3': 1597103922},
{'B1': 102, 'B2': -23131, 'B3': -372217244},
{'B1': -82, 'B2': 5419, 'B3': -1914222680},
{'B1': -49, 'B2': -21380, 'B3': 819773613},
{'B1': 66, 'B2': -11523, 'B3': 1380234739}],
{'A2': 'zdqzpjl',
'A3': -8722,
'A4': {'C1': {'D1': 95,
'D2': 14196047069810407150,
'D3': [3156371349956092711,
-4520292823062703603,
4753069262066424874,
-5239505517650847369,
-3907391925748026265],
'D4': 22534,
'D5': 4131863092326116152,
'D6': [-8502, 3960],
'D7': -0.17246060073375702},
'C2': 31352,
'C3': 4,
'C4': [301381319, 4194006532, 469302670]},
'A5': 115,
'A6': 93}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x51 0x48 0x43 0x46
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint64 |
3 | uint8 |
4 | Массив uint16, размер 8 |
5 | Адрес (uint32) структуры D |
6 | float |
7 | double |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
3 | Массив структур C, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив uint8, размер 5 |
3 | Массив uint8, размер 4 |
4 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'QHCFLP\x907Q\xaf\xc2\x97\xc4\xd9I\xc1\xf6\xe2\xabF\xc1\t|v\x01{\xbf\xb4'
(b"F\x92\xf2a\xd4\xcbW#5m\xd9\x8el\xae\x9e\xe4L\x16*\xaa;\x8c'\xf9\x98,\xd3\x92"
b'H\x00\x00\x00U\xf7#?\x94\xc7hDM\x0e\xdf?\x95f\xc2^-\xbc')
Результат разбора:
'A1': {'B1': 20556,
{'B2': 144,
'B3': [{'C1': 20791,
'C2': [175, 194, 151, 196, 217],
'C3': [73, 193, 246, 226],
'C4': -85},
'C1': 49478,
{'C2': [9, 124, 118, 1, 123],
'C3': [191, 180, 70, 146],
'C4': -14}]},
'A2': 15667237104604927073,
'A3': 142,
'A4': [44652, 58526, 5708, 43562, 35899, 63783, 11416, 37587],
'A5': {'D1': 26261, 'D2': 3157089986},
'A6': 0.6404927372932434,
'A7': 0.48524791412921187}
Пример 2
Двоичные данные:
b'QHCFc\x96\x81z\xb3\x83\\\xf0\x87\x8dm\xf1\xd1\xfc\xd2\xcc\xa7\x8f\xf0\x9d'
(b'K8\xa7!\x0e\xfaA\x9a\xce\xfdA\x8d\xcej2O\x81\xde\xed^\xea\xaf\xf8~'
b'\xf3r\xbd\x0f\xd7\xb0\x07\xeeH\x00\x00\x00\xcaOX= \x86|\xcd\x12\xb2\xa5?'
b'\x11\xfet\xe6\x0fa')
Результат разбора:
'A1': {'B1': -27037,
{'B2': 129,
'B3': [{'C1': 45946,
'C2': [131, 92, 240, 135, 141],
'C3': [109, 241, 209, 252],
'C4': -46},
'C1': 42956,
{'C2': [143, 240, 157, 75, 56],
'C3': [167, 33, 14, 250],
'C4': 65}]},
'A2': 3632943155520589466,
'A3': 79,
'A4': [56961, 24301, 45034, 32504, 29427, 4029, 45271, 60935],
'A5': {'D1': -495, 'D2': 1628431988},
'A6': 0.05281046777963638,
'A7': 0.04237421759013338}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x4a 0x45 0x54 0x44
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Адрес (uint16) структуры B |
3 | Размер (uint32) и адрес (uint16) массива int8 |
4 | double |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | Адрес (uint16) структуры C |
3 | Массив структур D, размер 2 |
4 | uint32 |
5 | int64 |
6 | Адрес (uint32) структуры E |
7 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int64 |
3 | int32 |
4 | double |
5 | float |
6 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint16) массива uint16 |
Структура E:
Поле | Описание |
---|---|
1 | int16 |
2 | uint16 |
3 | uint16 |
4 | int64 |
5 | uint8 |
6 | float |
7 | Массив int32, размер 3 |
8 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PJETD\xb2"`\x00\x02\x00\x00\x00\x96\x00\xd8\xc0\xed\xd9\xbb\x01\xce?n'
(b'l\xe7N\xc8*4\x15.\xf3\xacDr\xd0\x97w\xca`(RM\xfe\xe7\xbf\xba\x80^>O'
b'|9\xd8\x16\xd1\x08v\xbb+\x83W\x96\xc3\x86\xd87\x90\xd2T$.\xc73\xec'
b'\xd9\x0e\xc1*U\xbf\x03/Sy\xa3s`\xdcN\xe1\xc2\xb6\x8e\x18\x02\x00\x00\x00'
b'\x17\x00\x19\x00X&\xa2\xff-\x02\xd7?\x02\x00\x00\x005\x00\xa4N'
b'\xca\x8e\x97\xe6\xd3\xbf\x03\x00\x00\x009\x00\x06}\xbd\x1d\xeaw\x93\xce'
b'\xc4\xee9\x82?\x00\x00\x00\xf7N{\xec')
Результат разбора:
'A1': 8882,
{'A2': {'B1': 'nl',
'B2': {'C1': 20199,
'C2': 4948597469823118024,
'C3': 2006438002,
'C4': -0.7497927288668731,
'C5': 0.21728792786598206,
'C6': 31823},
'B3': [{'D1': 0.35950803722571356, 'D2': [55353, 53526]},
'D1': -0.3109492201267392, 'D2': [30216, 11195, 22403]}],
{'B4': 498957574,
'B5': -9062950246059640854,
'B6': {'E1': -15466,
'E2': 55430,
'E3': 36919,
'E4': -2743761142409833262,
'E5': 14,
'E6': -0.8326836228370667,
'E7': [2035494659, -597658717, -1228742322],
'E8': 6286},
'B7': 20215},
'A3': [123, -20],
'A4': 0.23442791119624107}
Пример 2
Двоичные данные:
b'PJETD\xe3\xe8^\x00\x04\x00\x00\x00\x94\x00\xb6\xe7M\x98*\xcd\xee?l'
(b'y\x8c\x9f\xb9y\x01N\xef\xffDKBxw\xdf\xa4\xf1\xc8\xe3Q\x86\xea\xbf\x88'
b'\xc6\x13\xbf@\x1d5cw\xd1\xecG\xb2\xe2N\xba1b8d\xbe\x9a\xd0\xae\xd6'
b'\x98>\xd3\x7ft\\]\xbf\xbe?\x02g\xbd\x92\xa6f\x9bx\xbf\x16\x16\x9a\x02\x00'
b'\x00\x00\x17\x00\x19\x00\x80s\xf4\xbd\xd8\xd5\xdb\xbf\x02\x00\x00\x005\x00'
b' CS\xc86N\xe8?\x02\x00\x00\x009\x00]\x11b\xdb9m\xfeI\xabO\xca\xa0=\x00'
b'\x00\x00\x85a\x93\x9d\x10\xcf')
Результат разбора:
'A1': 59619,
{'A2': {'B1': 'ly',
'B2': {'C1': -24692,
'C2': 5423741254531905977,
'C3': -545818558,
'C4': -0.8288964699673227,
'C5': -0.5772480964660645,
'C6': 7488},
'B3': [{'D1': -0.4349271636036107, 'D2': [25397, 53623]},
'D1': 0.7595476067163851, 'D2': [18412, 58034]}],
{'B4': 3680637277,
'B5': -6860583485246116551,
'B6': {'E1': -17842,
'E2': 25137,
'E3': 25656,
'E4': -3224972235327366466,
'E5': 127,
'E6': -0.864691972732544,
'E7': [1728200638, 1722192573, 381647003],
'E8': -26090},
'B7': 24965},
'A3': [-109, -99, 16, -49],
'A4': 0.9625447249120416}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xde 0x59 0x4e 0x58
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Структура B |
3 | uint64 |
4 | double |
5 | Размер (uint32) и адрес (uint32) массива int32 |
6 | float |
7 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 3 |
2 | Структура D |
3 | int8 |
4 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | float |
3 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | int64 |
Структура E:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива int8 |
2 | uint16 |
3 | uint64 |
4 | uint8 |
5 | Структура F |
6 | int8 |
7 | uint8 |
8 | int64 |
Структура F:
Поле | Описание |
---|---|
1 | Массив int64, размер 3 |
2 | uint32 |
3 | float |
4 | uint32 |
5 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xdeYNX\x15C\x00\x00\x00J\x00\x00\x00Q\x00\x00\x00\xcb[\xfd#D\xb6\x06'
(b'\xd7x\x82\xd68.\xbfm]4\xa8\xea\xbc1*4=\x17\xd2\xea\x8cO\xb0[\xad\xe0?\x02'
b'\x00\x00\x00X\x00\x00\x00\xd6\xb2\xa5>e\x00\x00\x00\x00\xfdX\x01\xbf'
b'\xc9\xe6\xacz\x87`?\xbb%kM\xa3"\xbeA\xf3\x00\\,\x80K\xfbY\x93G\xf8\x98\x18'
b'\xd9\x05\x00`\x00\x00\x00\xff\xb6\x13\x04<i\xffT|.\xb7\x03O\xfa\x93g\xba'
b'\xb4uGh\xc6\t[W\xc0NS2\xd7\xbb\x89_D\xe8h\xe5\xe3\x94)\x10\x0e\xbe\xben'
b'\xb7\xc2X\xc68K\xee\xdd\xd7M\xbc\x8f\xe6R\x8c\xc0')
Результат разбора:
'A1': 21,
{'A2': {'B1': [{'C1': 0, 'C2': -0.5052641034126282, 'C3': -6455},
'C1': -84, 'C2': 0.8770672082901001, 'C3': 9659},
{'C1': 107, 'C2': -0.1588260680437088, 'C3': -3263}],
{'B2': {'D1': -53, 'D2': 1143209307, 'D3': 3330647780301932214},
'B3': -65,
'B4': -1472963219},
'A3': 15138635966684708074,
'A4': 0.5211618846482484,
'A5': [-2144576512, -1822819509],
'A6': 0.32363003492355347,
'A7': {'E1': [71, -8, -104, 24, -39],
'E2': 46847,
'E3': 3349645678815740947,
'E4': 183,
'E5': {'F1': [8481608952272539395,
5674631579004463175,
-1710136913327345069],
'F2': 2497963368,
'F3': -0.13873352110385895,
'F4': 3266801342,
'F5': 1262011992},
'E6': -18,
'E7': 221,
'E8': -4572188371480457769}}
Пример 2
Двоичные данные:
b"\xdeYNX[C\x00\x00\x00J\x00\x00\x00Q\x00\x00\x00\xfc\xfb\x90\x1c\xe2\xcd'"
(b'\xf1\x99\x1f"\xd6\xa9\xfe\x07\xe8\xbf\x90\x91\x1dXL\x03\x80\xdf.\xf4'
b'\x17\xf6?\xf5\xe4\xd5?\x03\x00\x00\x00X\x00\x00\x00\x19\x06\x1f?f'
b'\x00\x00\x00w\xb3Sr?"E\x04t\x89\x04\xbf\x99\t\xec\xe6\xca\xe8\xbeQE'
b'^\x89\xce\x9d\xc0\x94\x9a\xb14N\x15G\xa1\xcf\x02\x00d\x00\x00\x00'
b'\xe7\x17&\x8f\x95\xa6i\xd7\xb5W<9Td\xa0#<\x1c4\xb8\xdfu\xff\xba'
b'\xdd\x17\xe1\x9eB\xef?\x1dB\x92\xc4\x16 \x88Hz\xe0X?g\x0e\xa9\xadV\xf5e9x'
b'\xf7\x17#\x1c1T\x8f\xfc\xbc')
Результат разбора:
'A1': 91,
{'A2': {'B1': [{'C1': 119, 'C2': 0.9465896487236023, 'C3': 17698},
'C1': 4, 'C2': -0.5177223682403564, 'C3': 2457},
{'C1': -20, 'C2': -0.45467299222946167, 'C3': 17745}],
{'B2': {'D1': -4, 'D2': 3793522939, 'D3': -6208737517161601075},
'B3': -2,
'B4': -1866471417},
'A3': 3377558997205261713,
'A4': 0.34209948774548526,
'A5': [-1647408802, -1315269440, 1192578612],
'A6': 0.6211867928504944,
'A7': {'E1': [-95, -49],
'E2': 6119,
'E3': 6320194500850716454,
'E4': 60,
'E5': {'F1': [3754942313032602681,
-2227067695491850312,
-4282287602281790818],
'F2': 1216880662,
'F3': 0.8471752405166626,
'F4': 2913537639,
'F5': 962983254},
'E6': 120,
'E7': 247,
'E8': -4828827108684061929}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x45 0x41 0x4f
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | uint64 |
3 | uint64 |
4 | Структура B |
5 | Размер (uint16) и адрес (uint16) массива uint8 |
6 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Структура C |
3 | int16 |
4 | int64 |
5 | Адрес (uint16) структуры F |
6 | int16 |
7 | Размер (uint16) и адрес (uint32) массива uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур D |
2 | Адрес (uint16) структуры E |
3 | int16 |
4 | Размер (uint32) и адрес (uint16) массива int32 |
5 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint32 |
3 | double |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | uint64 |
Структура F:
Поле | Описание |
---|---|
1 | int64 |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DEAO\x92\xd4\xab\x04\x1c\xdc\xdc\x8b\x86\xcfP^\xb51U\x07"\xf2\xc8]'
(b'\x00\x02\x00g\x00k\x9d\x07\x00\x00\x00\x02\x00wA\xa9\x10\x04\xbf('
b'\x1f\x1b\x83\xfb]\x00\x7f-7\x00\x06\x00\x00\x00\x88\x00\x03\x00\x94M'
b'\xa713\xb4\xd7\xe3]O\xab\xf9B\x86@\x9e\x00?\xd6\xb0\xfbA\x82\x02 \xf5'
b'\x16\x97\x9a4\xda-m?\xe5I\x9a\xea\xc5\xed\x9c\x00G\x00W\xcd\xc0\xdf\x05\xfc'
b'\x8b\xbdh\xa7~z\x8d)4\xf8\xd1A\xec\x07\xa6\x93\xb6\xe6\xe3w\n\xb1\xa3\xf3'
b'\xc13\xfcNi\x93\xab\xf5\x1don\xe72%\xd2')
Результат разбора:
'A1': -27948,
{'A2': 12323006215311034063,
'A3': 5791265394329592562,
'A4': {'B1': 51293,
'B2': {'C1': [{'D1': 1336670530,
'D2': 2252381696,
'D3': 0.3545520915722893},
'D1': 4111898522,
{'D2': 886713709,
'D3': 0.6652350030339451}],
'C2': {'E1': -842998011, 'E2': 18197846976504953485},
'C3': -25337,
'C4': [691337425, 1105987494],
'C5': 65},
'B3': -22256,
'B4': 342036210774178653,
'B5': {'F1': -7802795439743651421, 'F2': -13},
'B6': 11575,
'B7': [49459, 64590, 27027, 44021, 7535, 28391]},
'A5': [50, 37, 210],
'A6': 5595495160178271069}
Пример 2
Двоичные данные:
b'DEAO\x8b9Jrx\xe6\x06=C \x0f\xcd>\x08\xcd\xd5\xda\xae\x18U\x00\x03\x00w'
(b'\x00}(\xeb\x00\x00\x00\x02\x00\x89\x96(\x1f\x8dk\xed\xaaTr%\xe8\x00\x91\xce'
b'\x16\x00\x04\x00\x00\x00\x9a\x00\x05\x00\xa2\x0b\x98\xa1\xd3zSgE\x1b'
b'S\x1a\xac\xfep>\x90\xbf\xc5\xb9\x83c\xdb\xca\xb8M\x99\x90\xd4#'
b'\xfd\x07\xfd\xbf\xeb8UXA\x9d\xc0\xc6\xceb\xa0;\x93eE?\xdel\xeb\x17D\xa9T\x00'
b'G\x00W\x00g\xfa\x1f\xe5\xae\xe4\x9fI\xd1\x95\xa5\x96G3BW\x8a\xb6\xcfV'
b'\x9fl\xbf\x03\xf8\x9a\xc4\xd7\xc4Y\xe5\xb6DJ\xca\x14\x00\xf2\xad\x11'
b'\x99\x9b&')
Результат разбора:
'A1': -29895,
{'A2': 5364483035494171424,
'A3': 1138634488328608430,
'A4': {'B1': 6229,
'B2': {'C1': [{'D1': 458431148,
'D2': 4268768912,
'D3': -0.16972391487032268},
'D1': 1301909716,
{'D2': 603785213,
'D3': -0.8506266330486412},
'D1': 3335414432,
{'D2': 999515461,
'D3': 0.47539784691129694}],
'C2': {'E1': -98572882, 'E2': 16473967126452213319},
'C3': 10475,
'C4': [859985802, -1227925857],
'C5': 150},
'B3': 10271,
'B4': -8256244176036682264,
'B5': {'F1': 7835986242931316676, 'F2': 89},
'B6': -12778,
'B7': [58806, 17482, 51732, 242]},
'A5': [173, 17, 153, 155, 38],
'A6': 835595660539684677}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x42 0x52 0x4e
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Адрес (uint16) структуры B |
3 | int32 |
4 | Размер (uint16) и адрес (uint16) массива char |
5 | Структура D |
6 | int64 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint32) массива адресов (uint32) структур C |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | Массив uint8, размер 7 |
3 | uint8 |
4 | float |
5 | uint32 |
6 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int32, размер 6 |
2 | int64 |
3 | int16 |
4 | uint64 |
5 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WBRN\xc9\x00\x9f\x07\xe8\x91\n\x00\x04\x00\xa9\xad\xf3xF\nR#\xcaA4\xb3\xd7y'
(b'4P\x9cSPO3\x82\x88|\tl\xc7\xc9\xc0\xaa\xfcI\xed\x89d$\x88qBd\rJ\x134\xd8O'
b'P\xda\xa5z\x1a\x9d\xe9o\x02~\xa0Y8\x1dj\xd6~\xd6\x0c\xc9\xfe+#_'
b'\\\xbf\x17\xa8\x9c-h\x90\xcc\xf29V\x9b\xc5\x8cvq=tn\x87\xcfw\xf5'
b'.\x04\x1f\xbf\x1bI\x10\x82k\x8f\xd2j-+\xd2\xe9\x91Zn\xbbZ\x123\xdf'
b'\xa4\xf2\x99:\x18?I\xb8\xdao5\x0c\x8d!\xf8\x00\x00\x00E\x00\x00\x00_\x00'
b'\x00\x00y\xbf\x1e\xfb\x97\x00\x03\x00\x00\x00\x93ivec')
Результат разбора:
'A1': -55,
{'A2': {'B1': -0.6210264563560486,
'B2': [{'C1': 9124390942599206526,
'C2': [214, 12, 201, 254, 43, 35, 95],
'C3': 92,
'C4': -0.592416524887085,
'C5': 761827532,
'C6': 62009},
'C1': 6240798915725180276,
{'C2': [110, 135, 207, 119, 245, 46, 4],
'C3': 31,
'C4': -0.6065835952758789,
'C5': 2188087250,
'C6': 27181},
'C1': 3157843099236875098,
{'C2': [18, 51, 223, 164, 242, 153, 58],
'C3': 24,
'C4': 0.787976861000061,
'C5': 1865747597,
'C6': 8696}]},
'A3': 132681994,
'A4': 'ivec',
'A5': {'D1': [-1376552890,
173155274,
1093972951,
2033471644,
1397772083,
-2104984567],
'D2': 7838455505801202157,
'D3': -30364,
'D4': 2632478512158427667,
'D5': 886591312},
'A6': -2691610947546943742}
Пример 2
Двоичные данные:
b'WBRN4\x00\x9f\xb6\xdd\xa4\xc5\x00\x02\x00\xa9\xe3\xee\xf2\xe0\xd1'
(b"!\xee\xc4\xa4\xd8&\xfc\xd4R'\xa1\x7f^\xfd_Gn\xabM\x8a\xb8c\x86,+^\xf0\xe3"
b'&\xf8\x08\xcd\x06\x0e%fJo\xbcq\x18\xab\xd6\xe2"I2{zo\x97\xa1f(\xb9\t'
b'Z\x0e\xc7\x88M\x1a\rdP<\xa8\xfb\xd2JbWxk\xb6\xe6\xcePG!\xe1\xd5\x96c'
b'\xd2C\xb8~r\x06\x85\xbc\x8f\xcf\xd6!\x1d\xc5z\xfd\xda\x18\x80"!\xc9*\xe4'
b'\xc3G\xbeA\xd1\xc0\x187\xd6?7\x0c\xecQ9\xc7`\xae\xaa\x00\x00\x00E\x00'
b'\x00\x00_\x00\x00\x00y\xbe\xde;\xd5\x00\x03\x00\x00\x00\x93gv')
Результат разбора:
'A1': 52,
{'A2': {'B1': -0.43405023217201233,
'B2': [{'C1': 8041073119835261274,
'C2': [14, 199, 136, 77, 26, 13, 100],
'C3': 80,
'C4': 0.020627889782190323,
'C5': 1247958904,
'C6': 27574},
'C1': -1815425333342382698,
{'C2': [99, 210, 67, 184, 126, 114, 6],
'C3': 133,
'C4': -0.017555158585309982,
'C5': 555599226,
'C6': 64986},
'C1': 1765448582433531075,
{'C2': [71, 190, 65, 209, 192, 24, 55],
'C3': 214,
'C4': 0.715040922164917,
'C5': 1362741088,
'C6': 44714}]},
'A3': -1226988347,
'A4': 'gv',
'A5': {'D1': [-470879520,
-786305340,
-1529338116,
-732813407,
2136931679,
1198435149],
'D2': -8450895272842928400,
'D3': -7386,
'D4': 17872760547110643274,
'D5': 1874620696},
'A6': -6064411211322983558}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x43 0x43 0x48
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур B |
3 | Структура C |
4 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | int16 |
3 | float |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | float |
3 | uint32 |
4 | int64 |
5 | int32 |
6 | Размер (uint16) и адрес (uint16) массива char |
7 | int64 |
8 | Размер (uint32) и адрес (uint16) массива int64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint64, размер 4 |
2 | int32 |
3 | double |
4 | float |
5 | double |
6 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UCCH\x04\x00\x02\x00I\x94\xc8Gt{C\xe1j\xbft$h\x07\xbb\xa5%\xb1\xcd\xbc'
(b'\xebM\x1b\xa1-\xf0_\x04\x00\x00\x03\x00M\x10y\x10b\xde\xa4I\xbb\x00\x00\x00'
b'\x03\x00P\x00h*O\xe8S>\xa4V\xb4\xdcg\xf2\xb4\xbfp!\xe7\x009\x00Axsu'
b'l\x1b\xcc*\xc7\x8aAi\x8a\x80q$\xce\xd6\x19\xe2\xf3\x16G\xfa\x07$+x\xf4\xddDf'
b'\x19\x9f\x86,cc\re1\xc4\xe3\x02t\x9fm\x7f\x19\xce\xcd"\xea\x1c]F\xefC\xe8F'
b'\x188\x13\xfa?\xe7Y\xe2\xd6\x97\xe8\x90>\xcc\t!?\xef\xf2Aa\xe7~\xc8D')
Результат разбора:
'A1': 4,
{'A2': [{'B1': 10831, 'B2': -6061, 'B3': 0.3209739923477173},
'B1': 56423, 'B2': -3404, 'B3': -0.9380173087120056}],
{'A3': {'C1': -7725846595144261270,
'C2': -0.9536805152893066,
'C3': 129738021,
'C4': -5634639839973629651,
'C5': -262208512,
'C6': 'xsu',
'C7': 1186997993616984507,
'C8': [7790044464575824233, -8466642896553633310, -930477133818221704]},
'A4': {'D1': [17644334120414709292,
7161582560727065346,
8403555822357892386,
16869460863466334278],
'D2': 406328314,
'D3': 0.7297224227215953,
'D4': 0.39850714802742004,
'D5': 0.9983221924012122,
'D6': 68}}
Пример 2
Двоичные данные:
b'UCCH\x91\x00\x02\x00I\xc0)\xa1\xfc\x8c\xa8\xc1M>\x8d\xe8\xba\xe9Od'
(b"\\\x1d\xd8\x9b\xd8S'3\x8b/;\xec\x03\x00\x02\x00MPu\xd3\xfa\x0e\x98u"
b'8\x00\x00\x00\x02\x00O\x00_3-I,= &\x04\xf3[\xe5\xfa\xbf(B\xb4\x009\x00'
b'Ayl\xdc\x0c\x18\xea@\x82\xea\x9f4F\xa3\xdf\xe9\xe9u\x01\x90~\x96\x10\xe1'
b'7c\xe0\x94\xdb\xeb\x8aW\xd9\xab|\xa0\xad\xa1\xb6\x1cC\x10\x98\x0c'
b'\xf0\xc1J\xd8\x82\\\r\xc5LO\xde?\xd0\x9b\x1a\x1aR*|=\x8e`F?\xdb*\xc3LaB<-')
Результат разбора:
'A1': 145,
{'A2': [{'B1': 13101, 'B2': 18732, 'B3': 0.03909875452518463},
'B1': 62299, 'B2': -6662, 'B3': -0.6572678089141846}],
{'A3': {'C1': -4599967438318550707,
'C2': 0.2771661877632141,
'C3': 3914294364,
'C4': 2150640175479731083,
'C5': 792456195,
'C6': 'yl',
'C7': 5797773166249538872,
'C8': [-2590668291261142369, 3766878320439424257]},
'A4': {'D1': [10411924387769312224,
10726425916924865404,
11578088020569690264,
932457650069855245],
'D2': -984854562,
'D3': 0.2594666726151116,
'D4': 0.06951956450939178,
'D5': 0.42448503931976567,
'D6': 45}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xb1 0x45 0x53 0x55 0x43
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива адресов (uint32) структур B |
2 | Структура C |
3 | int32 |
4 | uint16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 2 |
2 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | Массив int8, размер 4 |
3 | Размер (uint32) и адрес (uint16) массива uint32 |
4 | int64 |
5 | float |
6 | uint32 |
7 | int16 |
8 | double |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int64 |
3 | Массив uint32, размер 7 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xb1ESUC\x00\x00\x00\x02\x00o\xbe\xfd+{~\x18\xe2\x03\x8c\xb6tX[\xf6\x12\x86j'
(b'e\xbeG\x80^\xef\xfa7\xd7hudC\xcd\xcbp\xdf\x1bK\x11\x1b5\xbe\xd4'
b'\x9e\x00\x00\x00\x03\x00w\xaev\x94\x13\x94B\xd2\xc5\xbf8\xa1\rt\xc8\x96&\xc9'
b'\x82?\xda7\xf2@\xaaL|\xd0\xda\xf1dH\x9fkgM\x03G@\xc9\x1b\xbaUhf\xa0Is5\x86'
b'o\rL\x00\x00\x00[\x00\x00\x00e\xf3>:\xca$N\x85\xe5\xc2Z\xda\x18')
Результат разбора:
'A1': [{'B1': 'kg', 'B2': 5549357509428099669},
{'B1': 'hf', 'B2': -6896854680615318196}],
{'A2': {'C1': {'D1': -16643,
'D2': 3133236611102510262,
'D3': [1951947766,
310798949,
3192356958,
4026152919,
1752523843,
3452661983,
457904411]},
'C2': [53, -66, -44, -98],
'C3': [4080941770, 609125861, 3260733976],
'C4': -5875345852045536571,
'C5': -0.7212074398994446,
'C6': 1959302694,
'C7': -13950,
'C8': 0.40966469111408066},
'A3': -790957724,
'A4': 18591}
Пример 2
Двоичные данные:
b'\xb1ESUC\x00\x00\x00\x02\x00o\x89\x8bb\x8d\x17\xe0+wa\xe5,\xd1K $\xea\xa1'
(b',\xdb\xa1\xb0 t\\\xf0\x12\x17z\x95\xab\x92\xaa~\x91E\x9dC\xbe\x02\xa6\x10'
b'\x94\x00\x00\x00\x02\x00w\x82L\xf6\xb6\xfc\x15_1\xbfb\x07\xc3\xc4\x08Fk_'
b'}\xbf\xdd\x82\x11\x9d[V(\xd2F\xe0`\xb9\xb7is{\x0e\x10\x1b&gc8yq5\xd7\rQx'
b'\x8e\x90G\x00\x00\x00[\x00\x00\x00e`U>\xbai\xbf\xba\xf4')
Результат разбора:
'A1': [{'B1': 'is', 'B2': 8867042425133556536},
{'B1': 'yq', 'B2': 3879584247569092679}],
{'A2': {'C1': {'D1': -30325,
'D2': 7101358439002497509,
'D3': [751913760,
619356460,
3684806688,
1952247826,
393909675,
2460647057,
1167934398]},
'C2': [2, -90, 16, -108],
'C3': [1616199354, 1774172916],
'C4': -9057593484775170255,
'C5': -0.8829309344291687,
'C6': 3288876651,
'C7': 24445,
'C8': -0.46106376997826937},
'A3': -767106976,
'A4': 47543}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4f 0x46 0x46 0x43
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint32 |
3 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив char, размер 8 |
3 | Массив структур C, размер 7 |
4 | Массив uint16, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив float, размер 2 |
2 | int16 |
3 | float |
4 | Размер (uint16) и адрес (uint32) массива float |
5 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'OFFC\xa0\x87p\x05\x7f\xd3f\xbbwstyvklc\xe9?\x98\x19\x8b\xa2\x05\r'
(b'H\x7f\x94\x1f.\xe0k\xfb+wv\xc4B\xaf\x9cW\x00kn\xfeK\xcdko\x0b\t\xf5\xe4'
b"j\xb6-\xa5L\xe6\xfa\x00a\xfe\x17L~\xc7\x1d^\xadi\xbd\xaa\r'\x01\xaa"
b'\xdd\x86\x04\xc4G\xcd\x0f\xa7\x04c\xa7a\x96\x01\xd4V\x9c\x05\x1b\xc1'
b'\t\xfc\x0b,\xb7\xe6D\x807\x98O\x84\x00z\xbfNn\xb9\xbfk\x0c\xd1?SD$>\r'
b'\x99\xdc\xa7\xd3\xbe\xe5\x12F\x00\x02\x00\x00\x00r\xbe\xe8\xd1\xf3')
Результат разбора:
'A1': {'B1': 11567337336846116539,
{'B2': 'wstyvklc',
'B3': [{'C1': 16807319569854235917, 'C2': 1216320543},
'C1': 3377818447038084804, 'C2': 1118805079},
{'C1': 30239860980542319, 'C2': 185202148},
{'C1': 7689383601764760064, 'C2': 1644042060},
{'C1': 9135302661617860010, 'C2': 220660138},
{'C1': 15962451170326024103, 'C2': 73639777},
{'C1': 10809154049115757505, 'C2': 167512876}],
{'B4': [47078, 17536]},
'A2': 932728708,
'A3': {'D1': [0.8252584934234619, 0.13828223943710327],
'D2': -22573,
'D3': -0.44740504026412964,
'D4': [-0.8063769936561584, -0.9181643128395081],
'D5': -0.45472678542137146}}
Пример 2
Двоичные данные:
b'OFFC\xdb%\xcb\x7fb\x0e\x94\x8caokfheah\xd0\xdfh}\xb7"\xbei0\xc0~l\x06\x12t('
(b's\x1d\xb9O\x18\xa6$\x84\xa9z\x94\xe7\x176p\xfc\xc0\xfb\x0b\x9dz>>\xf4'
b'\xb2\xda\x13\xcde\xbew\x9d\xd5\xe2\xe8ST\x9ad\xed\x9c\x0b\xfaOj\xf6aC'
b'\x9e\xd0\xbb\xf2\xe4a`*o\xb4\x83\xeb\xae\xe3;/\xbek\xe2\xbf\xe4\xc5\x9e@'
b'\x12\xcco\xc2\x00\x82\xbf\x1f\x9c\x01=\xec\x87\xa3=\xee%\x12\xbe\r'
b'c\xed\xbe\x9b\xe2q\xbe\xe9\xec\xbe\xa8\xf0\xbf|\x9c\xb9\x00\x04\x00\x00'
b'\x00r\xbfV\x8d\xa2')
Результат разбора:
'A1': {'B1': 15791251416410920076,
{'B2': 'aokfheah',
'B3': [{'C1': 15050863368848195177, 'C2': 817921644},
'C1': 437539830887201103, 'C2': 413541508},
{'C1': 12212237059816321276, 'C2': -1057289315},
{'C1': 8808547141876847565, 'C2': 1706981277},
{'C1': 15412136319414592749, 'C2': -1676936625},
{'C1': 7707454755346365426, 'C2': -463380438},
{'C1': 8049203482292599599, 'C2': -1100225857}],
{'B4': [58565, 40512]},
'A2': 315387842,
'A3': {'D1': [-0.3044619858264923, -0.45688432455062866],
'D2': -22288,
'D3': -0.9867663979530334,
'D4': [-0.6234741806983948,
0.11549308151006699,
0.11628164350986481,
-0.13807649910449982],
'D5': -0.8380986452102661}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa1 0x47 0x4d 0x52
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint32 |
3 | uint64 |
4 | int8 |
5 | uint64 |
6 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int64 |
3 | double |
4 | Размер (uint32) и адрес (uint32) массива структур D |
5 | int8 |
6 | int64 |
7 | Размер (uint16) и адрес (uint16) массива uint16 |
8 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Массив char, размер 7 |
3 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив uint8, размер 7 |
3 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xa1GMR?\xe9\x8a\xd9\xe3#\x97Nanilqqkt\xdc\x87\xceq\x1df\xa5\xb9\xe6\xf1Mk'
(b'8@\x8a?\xe6\xee\x1c\xef\xc5\xd78\x00\x00\x00\x02\x00\x00\x00_\x16'
b'\xf2\xb2\xc2R\xde\xe3N\xd3\x00\x02\x00\x85l`%\xa2\xe2\xb1SP\xb8\xd6}i'
b'J\xfb\xadw\x8a\xf4\xffF\xe7\n|\x07\xde\xf6\x1c\xf7@\x83\xa3\x8d\x88\xbe!\xe3'
b'\x1a\x1c\xfcH\x14R\x80\x1d\xc1\x0b\xecvl\xb5\x02\xf4\xb8\x8f.y\xc5D\x9a\xf2'
b'\x8e\xb1\xd3aNS\xf6\xfb\xa7RhKe')
Результат разбора:
'A1': {'B1': {'C1': 0.7981995998677378,
{'C2': 'anilqqk',
'C3': 8420754724006749861},
'B2': -5051084617235808118,
'B3': 0.7165665324271009,
'B4': [{'D1': 2374549025,
'D2': [227, 26, 28, 252, 72, 20, 82],
'D3': 9231747068135369909},
'D1': 49592463,
{'D2': [46, 121, 197, 68, 154, 242, 142],
'D3': 12813692353843231655}],
'B5': 22,
'B6': -958490109493948717,
'B7': [21096, 19301],
'B8': 7809283135378641744},
'A2': 3101064553,
'A3': 5403102906905067334,
'A4': -25,
'A5': 755487491684628288,
'A6': -31837}
Пример 2
Двоичные данные:
b'\xa1GMR?\xd0<\xf4\xd3\xb3\xb7Tresfcvn\x0cmQKc\xd2\x8brSmj\xdc{\x15\x1d\x9a?'
(b'\xd3@e\xb91}\xd8\x00\x00\x00\x02\x00\x00\x00_\x93\x1e\xb6\xa6\xd7pd\xc6\x94'
b'\x00\x02\x00\x85\xb0\x8b\xf3g\xbb\x9a\xa0\x83\xc6;\x0fP\\GQ\xce'
b'\x07\xdf\xce\x16\xd0\xa3\xf9\x01\x94\xf9\xa7\x15\xa4\x1c\x99PhCF\xde'
b'\xc8\xd3\xf53\xd2J\xcf\xf0\xf5}\x1b\x7f.t\x89#(?`e\xb8\xd3\x8aa\t0\x85d'
b'\x7f\x95,\xbd\xd5\xeae\xfc\x07')
Результат разбора:
'A1': {'B1': {'C1': 0.2537204806711675,
{'C2': 'resfcvn',
'C3': 895461285155736434},
'B2': 6011578572799810970,
'B3': 0.30080550275121487,
'B4': [{'D1': 1349010246,
'D2': [222, 200, 211, 245, 51, 210, 74],
'D3': 14983745877942677108},
'D1': 2300782655,
{'D2': [96, 101, 184, 211, 138, 97, 9],
'D3': 3496311184849419733}],
'B5': -109,
'B6': 2213139711133009556,
'B7': [60005, 64519],
'B8': 12721529199292752003},
'A2': 3325759312,
'A3': 6649373320173047318,
'A4': -48,
'A5': 11815476836738471332,
'A6': 7321}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x47 0x55 0x54
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Массив char, размер 4 |
3 | Структура D |
4 | Структура E |
5 | Массив uint8, размер 6 |
6 | uint8 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | uint32 |
3 | uint32 |
4 | double |
5 | Массив структур C, размер 6 |
6 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | int64 |
3 | int8 |
4 | float |
5 | double |
Структура E:
Поле | Описание |
---|---|
1 | int32 |
2 | uint8 |
3 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"DGUT\x00\x00\x009ibfzf'\x12Q\x0b\xe9\xfb\xec\xce\xa8w=\xcc\xe27?"
(b'\xe5\x9b\xfdZm\xf6pPYX\xb4"\xbf\xc88d\n;\xfb\xd0\xe39Q\xf7|\xf0\xbbr'
b'p\x00\x00\x00\x02\x00\x00\x007$\x8b\xba\xa7\xf2\xa8\xc2<\xbf\xe8\x8a'
b'2_\xa4\xdeZ\x14.\xd8b\xe7\xa9(hS\x1d\xd4/\x07\xf2\xb0J\x12\xab\r\x18r\r\x1b'
b'\xcb\xd0Zsv.\xf1Ub\xfd\xde\xa5\x1a/\xe7\x05\x9da=\xa3)_1\xbd)9\xe3\x98'
b'm\xae\xe5\x81\xb4\n\x0f\x15\xdcr\x90')
Результат разбора:
'A1': {'B1': 'rp',
{'B2': 613137063,
'B3': 4071146044,
'B4': -0.766869723133776,
'B5': [{'C1': 20, 'C2': 785933031, 'C3': -1456969645},
'C1': 29, 'C2': 3559852018, 'C3': -1337322837},
{'C1': 13, 'C2': 410127643, 'C3': -875537805},
{'C1': 118, 'C2': 787567970, 'C3': -35740390},
{'C1': 47, 'C2': 3875904865, 'C3': 1034103135},
{'C1': 49, 'C2': 3173595619, 'C3': -1737642267}],
{'B6': -9100637887101373808},
'A2': 'ibfz',
'A3': {'D1': 26151,
'D2': 1319849265378152104,
'D3': 119,
'D4': 0.10004084557294846,
'D5': 0.6752917066766724},
'A4': {'E1': 1348032692, 'E2': 34, 'E3': -0.18922091006967756},
'A5': [227, 57, 81, 247, 124, 240],
'A6': 187}
Пример 2
Двоичные данные:
b'DGUT\x00\x00\x009cuwk\xda{\xa4t~e\xfc\xdcjF\xa5=\x83\xbb\xd5\xbf\xecoTB'
(b'e\x014.\xca\x0f\xa9\x83\xbf\xeb_\x882\r^b\xf4\xf5\x8dafN)ho\x00\x00\x00'
b'\x02\x00\x00\x007/J\xa7..\xa0C\x81?\xc8\x03\xeb.\xbb\xc8h\x0f\xb9[|n\x1d\xc3'
b'\xa3M\x18\xad\\ qk\r\t\xec\x00\xbed\xb3\xb0v\x16z\xd9q\x85\x83\xc6\x15\xe4np'
b'\xc4(\xc5\xcb\x8ad\xcfBE\xb3\xfc\xfdpo\xe3\xb7c\xda\x1f_\xa0Ho\xe48\xb4z')
Результат разбора:
'A1': {'B1': 'ho',
{'B2': 793421614,
'B3': 782254977,
'B4': 0.18761958867941364,
'B5': [{'C1': 15, 'C2': 3109780590, 'C3': 499360589},
'C1': 24, 'C2': 2908495985, 'C3': 1796016620},
{'C1': 0, 'C2': 3194270640, 'C3': 1981184729},
{'C1': 113, 'C2': 2240005653, 'C3': -462524220},
{'C1': 40, 'C2': 3318450788, 'C3': -817740365},
{'C1': -4, 'C2': 4252004323, 'C3': -1218192865}],
{'B6': 6890587075284350074},
'A2': 'cuwk',
'A3': {'D1': 55931,
'D2': -6596508577691833786,
'D3': -91,
'D4': 0.06432310491800308,
'D5': -0.8885899826782748},
'A4': {'E1': 784994217, 'E2': 131, 'E3': -0.8554116227705431},
'A5': [244, 245, 141, 97, 102, 78],
'A6': 41}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xd3 0x4e 0x4b 0x59 0x45
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | Размер (uint16) и адрес (uint32) массива структур B |
3 | Структура C |
4 | Адрес (uint16) структуры F |
5 | Массив uint16, размер 3 |
6 | int32 |
7 | Размер (uint32) и адрес (uint32) массива uint64 |
8 | Адрес (uint16) структуры G |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | int8 |
3 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | uint8 |
3 | int64 |
4 | Структура E |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
3 | uint8 |
4 | int8 |
5 | int16 |
6 | Массив int64, размер 2 |
Структура F:
Поле | Описание |
---|---|
1 | int8 |
2 | int8 |
Структура G:
Поле | Описание |
---|---|
1 | float |
2 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xd3NKYEn\x02\x00Q\x00\x00\x00\x9f+\n\xf7I.f\x189oH\x9bR>;KF\xae\xd1\xef'
(b'\t1\x177\x0b\x96T\x9avQ\x0er!0bl\xb5\x86\xdag\x00r\xfb\xb0%4\x18^'
b'\xa9\xd81\x08\x00\x00\x00i\x00\x00\x00\xa9\x00rhqrxkwb\x05\x00I'
b'\x00\x00\x00\x12\x94nq\xc9\x03\x00N\x00\x00\x00_\xfe\xe5b@\xe2\tG\xa0}'
b'cV\xf6T\x11q\x1a\x1d\xc2\xed\xd0\xd3\xe9\x06dR\t\x95u\x8f)\xea\xfe^L7F\x9c'
b'\xb5\\\x95\xdb\xb9\x0eg\x811(\x84\x0c|\xa8\xf8\xbb2\xd1\xa1\xfe\xea\xbe%('
b'\xa63\xe2\x0b*[\xd3\x06\xf3\x7f\x14\xe2<3')
Результат разбора:
'A1': 110,
{'A2': [{'B1': 'rhqrx', 'B2': 18, 'B3': 3379654292},
'B1': 'kwb', 'B2': 95, 'B3': 1080223230}],
{'A3': {'C1': {'D1': -97, 'D2': 1240926763, 'D3': 26158},
'C2': 24,
'C3': 5420995100983979833,
'C4': {'E1': 44614,
'E2': 209,
'E3': 239,
'E4': 9,
'E5': 5937,
'E6': [1031736194860714807, -2700271449453616782]}},
'A4': {'F1': -30, 'F2': 9},
'A5': [64370, 9648, 6196],
'A6': 836282718,
'A7': [1248893847585267783,
16849040350505671281,
2994741560191640582,
13086411820550258410,
3567245692799522140,
3655788925060678696,
11972861111281033681,
17511916589577658931],
'A8': {'G1': 0.027597663924098015, 'G2': 51}}
Пример 2
Двоичные данные:
b"\xd3NKYE\xfa\x02\x00T\x00\x00\x00j\x02\x0f\x9f\xa3pM'\xf9\x0c\xe7\n\x0f;Ky"
(b"\x9cG\x1br\xb5D7Y*=\x1e\x06h\xb9\x18'\xf9r*\x8b\x0e'<j\x00\xfe\x03\xe9"
b'=\x8b\x08\x19T\xeb\x0b\x05\x00\x00\x00l\x00\x00\x00\x94\x00rbgjiobewpl'
b'\x04\x00I\x00\x00\x00\x99b\xe4\xaeo\x07\x00M\x00\x00\x00\xed\x02\x93'
b'.\xe8R\x96\x98\xdd\x8fc\xd3\x80i\nk\xe3m\xc0\x03\xde,\x98\x82\xa5\xb0M'
b'\xb0l\xa5\xef\x08H\x88Vq\x17\xef\xb7\xf1\x19\x87\x17R\xb1h\x12\n"\x1a\xbf'
b'\xb4')
Результат разбора:
'A1': -6,
{'A2': [{'B1': 'rbgj', 'B2': -103, 'B3': 1873732706},
'B1': 'iobewpl', 'B2': -19, 'B3': 3895366402}],
{'A3': {'C1': {'D1': 106, 'D2': 2745110274, 'D3': 19824},
'C2': 39,
'C3': 8740144437636041977,
'C4': {'E1': 18332,
'E2': 27,
'E3': 114,
'E4': -75,
'E5': 14148,
'E6': [1781569503088159321, 4334449157242812711]}},
'A4': {'F1': 82, 'F2': -106},
'A5': [1022, 15849, 2187],
'A6': 199971865,
'A7': [750272458330725784,
10965383300435010411,
17268327850695501186,
13253838003925174280,
1326505056400775665],
'A8': {'G1': -0.6020818948745728, 'G2': -76}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x51 0x4d 0x50
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int64 |
3 | double |
4 | Адрес (uint16) структуры D |
5 | int32 |
6 | uint16 |
7 | Адрес (uint32) структуры E |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | uint64 |
3 | Массив адресов (uint16) структур C, размер 8 |
4 | int8 |
5 | uint8 |
6 | Размер (uint32) и адрес (uint16) массива uint16 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | int16 |
3 | int16 |
4 | float |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
3 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | Массив int8, размер 6 |
2 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'QMP\x03\x00C\x00\xab\x1a\x92\xdeR\x95]qF\x00P\x00Z\x00d\x00n\x00x\x00\x82'
(b'\x00\x8c\x00\xda\xad\x03\x00\x00\x00\x96\x00\xa7b\xaa\xcc\xa2\xbe\xe0V<'
b'\x0c}\xcc\x9bP\xee\xbf\x9c\x00\xd1\xd8R\xe6V\xc6\xa4\x00\x00\x00dtf#\x1a'
b'P\xdf\xedu\x886w?5\x8b\xa7/~\xd0\xb1\xfe\t\xbf?T!\x8c\xe9\xdcIg\\='
b'2\x07\xf7\x00\xc1\x01\x1bp3?\x0epA\xef\x9a\xb9\xcd \xc7\xbd\xce\xbe\xf0I+P(F'
b'\xdd\xbe\xac\xc5\x8a\xf1\xd2\xdahB\x13\xbf~0\xf5Z\xa6O\xe01\x84\xbc\x92\xff'
b'K\xbc\xe0[\x0f10?\xdc\xe8\xf7\nL\xf3+\xdf\x1f\xe7#.\x13?')
Результат разбора:
'A1': {'B1': 'dtf',
{'B2': 8168849482273921707,
'B3': [{'C1': 6691, 'C2': -8368, 'C3': 30189, 'C4': 0.9656758308410645},
'C1': 35637,
{'C2': 12199,
'C3': -12162,
'C4': -0.5390425324440002},
'C1': 21567,
{'C2': -29663,
'C3': -8983,
'C4': 0.05380943790078163},
'C1': 1842, 'C2': 247, 'C3': 449, 'C4': 0.7009293437004089},
{'C1': 28686,
{'C2': -4287,
'C3': -18022,
'C4': -0.09723053127527237},
'C1': 48846,
{'C2': 18928,
'C3': 20523,
'C4': -0.432175874710083},
'C1': 50604,
{'C2': -3702,
'C3': -9518,
'C4': -0.5752320289611816},
'C1': 12414,
{'C2': 23285,
'C3': 20390,
'C4': -0.01613706350326538}],
'B4': -38,
'B5': 173,
'B6': [65426, 48203, 23520]},
'A2': 6260213088472687271,
'A3': -0.9473399156489744,
'A4': {'D1': 0.6882485747337341, 'D2': -5924, 'D3': 2807},
'A5': -430778159,
'A6': 50774,
'A7': {'E1': [76, -13, 43, -33, 31, -25], 'E2': 0.5749227404594421}}
Пример 2
Двоичные данные:
b'QMP\x04\x00C\x00Ny4p\xd2\x96\x15ZG\x00Q\x00[\x00e\x00o\x00y\x00\x83'
(b'\x00\x8d\x00\x9c\x7f\x02\x00\x00\x00\x97\x00\xf3\x1d\x8f\x95\xe4'
b'\x0f\xa5\xdc\xbc\x00#\xd3\xd2\x10\xd2\xbf\x9b\x00\xa3}d\x8c\xeat\xa3'
b"\x00\x00\x00vdzz'\xe5\xd9\xfeA.A+Y\xbey\xed\xe7\xa1\xe3\x014\x0e<\xbf\xd3"
b'\x1b\x1c16{b\x17\x18?hPs\x12 \xaf\x9c\xfew\xbf\xfe6hk\xfa\xd0\xfb\xe7('
b"?\xb2L\xf1\xdb\xad\x90L0\xf2>\xf8q}\xf6U\x917\xf8\xd3>'+\x96\xcf\xd5h\xee"
b'd\xcf\xbelr\x89\xcb\x96\xa3\xe8>\xdd\xf1B\x9c%\x00\x1dn\xaf/Q\x9b\xcc>')
Результат разбора:
'A1': {'B1': 'vdzz',
{'B2': 6491260268494223694,
'B3': [{'C1': 58663,
'C2': -295,
'C3': 11841,
'C4': -0.21207906305789948},
'C1': 60793,
{'C2': -24089,
'C3': 483,
'C4': -0.7345917224884033},
'C1': 7123, 'C2': 12572, 'C3': 31542, 'C4': 0.5941067934036255},
{'C1': 20584, 'C2': 4723, 'C3': -20704, 'C4': -0.96872878074646},
{'C1': 14078,
{'C2': 27496,
'C3': -12038,
'C4': 0.6597897410392761},
'C1': 19634,
{'C2': -9231,
'C3': -28499,
'C4': 0.47302472591400146},
'C1': 29176,
{'C2': -2435,
'C3': -28331,
'C4': 0.4140031039714813},
'C1': 11047,
{'C2': -12394,
'C3': 26837,
'C4': -0.40506690740585327}],
'B4': -100,
'B5': 127,
'B6': [29292, 52105]},
'A2': -2547612539772002829,
'A3': -0.28227682703801427,
'A4': {'D1': 0.4543730616569519, 'D2': -3619, 'D3': -25534},
'A5': -1939571293,
'A6': 29930,
'A7': {'E1': [37, 0, 29, 110, -81, 47], 'E2': 0.39962247014045715}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc6 0x48 0x41 0x53
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива структур B |
2 | int32 |
3 | Адрес (uint16) структуры C |
4 | uint16 |
5 | float |
6 | uint16 |
7 | double |
8 | Массив адресов (uint32) структур D, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | double |
3 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | Размер (uint16) и адрес (uint32) массива uint8 |
3 | int8 |
4 | Адрес (uint16) структуры E |
5 | Массив int8, размер 3 |
6 | float |
7 | float |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xc6HAS\x00\x02\x00&c:sb\x00J\xfbx\xbfF\x85\xe1E/?\xe1\x05\x15\xfew'
(b'\xf4V\x00\x00\x00c\x00\x00\x00\x85\xc2\xc9\xbf\xc7r\xbb\x87nJ\x18\x0b\xd1Qz'
b'*P\xa6\xd3\x80\xa0\xbf\xe4I\xa7\x0e\xb2\x06\xe0\xab\xe5a\xea\xffs\xb8\xe5>s'
b'V\xbc\xd0\xdc \xa6\xc6\x11\x9f}\x81\xf8\xe8C?\xef\t\x05\x97\xa2G\x06\x8c\x0f'
b"\xda\x00\x04\x00\x00\x00Vl\x00Z%\x0f'\xbe\xf0\x16\xd4\xbf?\xd9nen\xfe"
b'\xbf\xec\x87|\x92\xd2\xfe\xaa\xa7\xa2\xd0\x00\x03\x00\x00\x00yl\x00|RTz>'
b"\x87E\x89?'\x0cj")
Результат разбора:
'A1': [{'B1': -15671, 'B2': -0.18318885910828508, 'B3': 851551389687523027},
{'B1': -32608, 'B2': -0.6339907919902679, 'B3': -6060330061621118747}],
{'A2': 1664775010,
'A3': {'C1': 0.2376355528831482, 'C2': 15049939955425058685},
'A4': 64376,
'A5': -0.775480329990387,
'A6': 17711,
'A7': 0.5318708391274736,
'A8': [{'D1': 4058,
'D2': [129, 248, 232, 67],
'D3': 108,
'D4': {'E1': 0.9698512994384323, 'E2': 140},
'D5': [37, 15, 39],
'D6': -0.4689241647720337,
'D7': -0.7494114637374878},
'D1': -23856,
{'D2': [101, 110, 254],
'D3': 108,
'D4': {'E1': -0.8915388934764981, 'E2': 167},
'D5': [82, 84, 122],
'D6': 0.26420238614082336,
'D7': 0.6525331735610962}]}
Пример 2
Двоичные данные:
b'\xc6HAS\x00\x02\x00&q\xaa\x81\x00\x00J\xa30\xbd\xcd"\x97t\xd7\xbf\xde'
(b'\xe5\xf8\x96`(\xa4\x00\x00\x00d\x00\x00\x00\x86\xba\xd2?\xe0\xaf \xcf@\xb04'
b'\x80\x0c\xbd7W\\~\xa96\x1a?\xdd!\xb4P\xfc\x16\xb012=9)\t^p\xbf\x13'
b'Y\xa3\xc0\\P\x88i4\xfc\x18K}\xc5\xea\xa2?\xeeR2\x8a\x7fU~C\xb5w\x00\x05'
b'\x00\x00\x00V\xf0\x00[h\xbfv\xbf<\x9cb?\x02\xa4G\xba\x15\xf9?\xcf\x1d\xd5*dm'
b'\x18V\x0c\xb7\x00\x03\x00\x00\x00z\x8d\x00}\x12\xb3\xc9\xbf\x0f\x8d/'
b'?m\xdd\x8e')
Результат разбора:
'A1': [{'B1': -17710, 'B2': 0.5213779495147777, 'B3': -9219786291747717463},
{'B1': 13850, 'B2': 0.4551821509233873, 'B3': 3544963172404911728}],
{'A2': 1906999552,
'A3': {'C1': -0.5755864977836609, 'C2': 13861042299950398488},
'A4': 41776,
'A5': -0.10016363114118576,
'A6': 29911,
'A7': -0.4827863186370769,
'A8': [{'D1': -19081,
'D2': [75, 125, 197, 234, 162],
'D3': -16,
'D4': {'E1': 0.9475338654544172, 'E2': 67},
'D5': [104, -65, 118],
'D6': -0.736761212348938,
'D7': 0.510319173336029},
'D1': 3255,
{'D2': [186, 21, 249],
'D3': -115,
'D4': {'E1': 0.24309792108474748, 'E2': 86},
'D5': [18, -77, -55],
'D6': -0.5607480406761169,
'D7': 0.9291619062423706}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x52 0x42 0x49
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | float |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур C |
2 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | float |
3 | Структура D |
4 | uint16 |
5 | float |
6 | float |
7 | Адрес (uint32) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив int16, размер 4 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | Размер (uint32) и адрес (uint16) массива uint8 |
4 | Размер (uint16) и адрес (uint32) массива int8 |
5 | Массив double, размер 3 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"XRBI\x00\x00\x00\x02\x00\xb2NC>\x85'\xabe\x8d\xc64!\xe4\xc1\xcf"
(b'\xd9\x1c\xab\x87E\x00\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00'
b'\x12\xbf\xe5\xfc\n\x82\x98\x87\x80\xbf\xec\x11\xd5\xe1\x04\xbd\xe4?\xeb\xe2'
b'\ti!\'T\xbfN\xff\x82?Aq=>:`\x90n\xb7"\x9c\\-\xdd\xf0\xbe\xfcV\xc3\xbfU\xcf'
b"'\x00\x00\x00\x14\x9d9,\xc3/\xcdUj\xf8\x82\t%\x00\x00\x00\x00\x02\x00a"
b'\x00\x02\x00\x00\x00c\xbf\xbb4\x80\xf3\x11\xea \xbf\xd4\xcc\xe98&. ?\xee'
b'Z\x1a\xa9;\xbc\x8c?O\x1a\xcf\xbe\xcb~\xefB`\x9f\\`\xf5_\xc9R\x17'
b'\xa1\xad\xbf{\xbc\xfd\xbd\xbd\xce\xee\x00\x00\x00e\x00A\x00\x92')
Результат разбора:
'A1': {'B1': [{'C1': -0.8085862398147583,
{'C2': 0.7556341290473938,
'C3': {'D1': 15930, 'D2': [24720, 28343, 8860, 23597]},
'C4': 56816,
'C5': -0.4928494393825531,
'C6': -0.8351921439170837,
'C7': {'E1': 33,
'E2': 16483684642548582213,
'E3': [101, 141],
'E4': [-58, 52],
'E5': [-0.6870167303752481,
-0.8771771807568567,
0.8713423779783889]}},
'C1': 0.8090028166770935,
{'C2': -0.39745280146598816,
'C3': {'D1': 16992, 'D2': [-24740, 24821, 24521, 21015]},
'C4': 41389,
'C5': -0.9833524823188782,
'C6': -0.09267984330654144,
'C7': {'E1': 47,
'E2': 14795849766361703680,
'E3': [157, 57],
'E4': [44, -61],
'E5': [-0.10626989301992085,
-0.3250067756968935,
0.9484990411127838]}}],
'B2': 20035},
'A2': 0.26006826758384705}
Пример 2
Двоичные данные:
b'XRBI\x00\x00\x00\x02\x00\xb2\xccx\xbeF\xea\xc9\x1aV"O\xfd\x0e\x9d4`F,c'
(b'\x02\x00\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x12\xbf\xe0\xb9\x85zod'
b'v\xbf\xc3(\x83\xabiB`?\xc8\x12 \x97\xa9\xed\xb8>~\xb8n>\xc7A\xb4\x81r\x10'
b'\x80\x87\xfe\x87\xbe!s\xd9\xce?tD\xdd>\xe4\x80?\x00\x00\x00\x14\xbc\xe7\x13'
b'\xb5\xe5\xa0\xa6\xad\xb0\x11\xb5\xfa\xe8\x00\x00\x00\x02\x00a'
b'\x00\x02\x00\x00\x00c\xbf\xedG\xaab\xc9\x80\xb4\xbf\xa8\xcf\x8b\xff\xfb'
b'K\x00\xbf\xeb\xde\x7f\tG!\x82\xbf4\xf0\x8f>\xd6t\x11>J\x8cc\xce\xec'
b'\xe9\t[\x84\xac,?X/\x8a\xbfR\xaa\x9a\x00\x00\x00e\x00A\x00\x92')
Результат разбора:
'A1': {'B1': [{'C1': 0.24875041842460632,
{'C2': 0.38917315006256104,
'C3': {'D1': -32398, 'D2': [4224, -30722, -30786, 8563]},
'C4': 55758,
'C5': 0.9541757702827454,
'C6': 0.4462909400463104,
'C7': {'E1': -3,
'E2': 1053055475973382914,
'E3': [26, 86],
'E4': [34, 79],
'E5': [-0.5226466552077358,
-0.1496738993614768,
0.1880532017274683]}},
'C1': -0.7067956328392029,
{'C2': 0.4188542664051056,
'C3': {'D1': 15946, 'D2': [-29597, -12564, -5879, 23428]},
'C4': 44076,
'C5': 0.8444753885269165,
'C6': -0.8229156732559204,
'C7': {'E1': -27,
'E2': 11576130863925426920,
'E3': [188, 231],
'E4': [19, -75],
'E5': [-0.9149982385097446,
-0.04845845699096252,
-0.8709101849754435]}}],
'B2': -13192},
'A2': -0.1942550092935562}