Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x41 0x5a 0x4f
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | Размер (uint16) и адрес (uint32) массива структур B |
4 | Структура C |
5 | uint8 |
6 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 3 |
2 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | Структура D |
2 | uint8 |
3 | uint8 |
4 | int16 |
5 | double |
6 | int8 |
7 | Структура E |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
3 | uint16 |
4 | uint16 |
5 | Массив float, размер 6 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
3 | int64 |
4 | Размер (uint32) и адрес (uint16) массива int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BAZO<\xad\x9b\xd8\xe3}\xe6?\x00\x03\x00\x00\x00\\?\n\xe2\xc3\x1a\x14'
(b'\xf4fI\xc00\xaa\xc3\xb0\x99\xfa>\x17\xde(\xbe\x04\x03Y\xbc\xc1\xd1N\xbd\xef'
b'oR?\x18\xb6<<\x1aZI\x19\xe1c\xf7\xbf\xeae\x9f\xea\x9d\x06p{\xfb\x06:~8'
b'{\x0c\xafi\x96h\xe4:\x00\x00\x00\x06\x00h\xc4{pba\xfawxb\xe2sfm\xcc'
b'\x1e(\x86\xf2?^\xc1\x98j\x84\xa5\xc1')
Результат разбора:
'A1': 0.021192476153373718,
{'A2': -478288321,
'A3': [{'B1': 'pba', 'B2': -6},
'B1': 'wxb', 'B2': -30},
{'B1': 'sfm', 'B2': -52}],
{'A4': {'C1': {'D1': 0.5425226092338562,
'D2': 1879395664681513130,
'D3': 50096,
'D4': 39418,
'D5': [0.1483083963394165,
-0.12891902029514313,
-0.023659374564886093,
-0.11691154539585114,
0.5965306758880615,
0.009420939721167088]},
'C2': 25,
'C3': 225,
'C4': 25591,
'C5': -0.8249053556721275,
'C6': 123,
'C7': {'E1': -5,
'E2': 104496696,
'E3': 8866654634415547450,
'E4': [7720, -30990, 16222, -15976, 27268, -23103]}},
'A5': 196,
'A6': 123}
Пример 2
Двоичные данные:
b'BAZO>\x1b\xd6&==\xc4?\x00\x03\x00\x00\x00\\?w\xd9\xf2|\xc1\xde \xf2\xa2'
(b'\x9b;\x17S\xeee?K\xad\xe7\xbfb>z\xbe&_\xc6\xbfC\x8d\x1e>\x97GS\xbe\xcd'
b'\xc6\xb7a\n\x0cy?\xef\x18\xe4xp\xbf\x16\xbb\x81\xc8\xb6\xd1\xb8\xfd\x9fs\xec'
b"\x1db{'\x00\x00\x00\x05\x00hB\x16hdw\xd0yxt\x9aaul\xa9\x9a\xf6\x0c\xfa"
b'\xe0\x81\x1c|\x85\xee')
Результат разбора:
'A1': 0.15218409895896912,
{'A2': 1027458111,
'A3': [{'B1': 'hdw', 'B2': -48},
'B1': 'yxt', 'B2': -102},
{'B1': 'aul', 'B2': -87}],
{'A4': {'C1': {'D1': 0.9681693315505981,
'D2': 8989710564299283259,
'D3': 5971,
'D4': 61029,
'D5': [0.7956222891807556,
-0.8837658166885376,
-0.16247472167015076,
-0.7638720273971558,
0.29546603560447693,
-0.40190669894218445]},
'C2': 97,
'C3': 10,
'C4': 3193,
'C5': 0.9717886307098265,
'C6': -69,
'C7': {'E1': -127,
'E2': 3367424440,
'E3': -171290802874320089,
'E4': [-25866, 3322, -8063, 7292, -31250]}},
'A5': 66,
'A6': 22}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x4a 0x46 0x6d
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | Структура B |
4 | int8 |
5 | double |
6 | Размер (uint16) и адрес (uint32) массива структур C |
7 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
3 | int16 |
4 | int16 |
5 | float |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива float |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива uint8 |
2 | int8 |
3 | int8 |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'LJFm\x11ycb\x00\x82%~\x00\x00\x00\x02\x00\x00\x0092\xfc\x0f\xf0\xbf\xeeX_'
(b'\xc7\xbd-\xb6\xb5\x15F\x1d?&\x9e?\xeb?\xe1\xfcpfg\x00r\x00\x05\x00'
b'\x00\x00c\x00\x97kg\xbfc!\xbf>\xee\x16!?CY\xda\xbd\xe2S)?P\x10!\xbe'
b' \xca\x80\xbd\xe9\xea\xbe\xbe\xc3\xdf\x04?q\xf9\x94\xbf!\xdb"\x00'
b'\x02\x00\x00\x00;>\x95\xa5\xa2\x00\x02\x00\x00\x00C?U\xf4K\x00'
b'\x02\x00\x00\x00K?|a\x10\x00\x02\x00\x00\x00S?\x11Pm\x00\x02\x00\x00\x00'
b'[?p\xdb\xaa\xd7c\x00\x00\x00\x02\x00\x95\x9d\x92\xee')
Результат разбора:
'A1': 1259146843393238398,
{'A2': 'kg',
'A3': {'B1': 855379952,
'B2': -0.9482878590728692,
'B3': -19179,
'B4': 17949,
'B5': 0.6508521437644958},
'A4': -21,
'A5': 0.5620653152509603,
'A6': [{'C1': [-0.8872336745262146, 0.4650125801563263],
'C2': 0.29227930307388306},
'C1': [0.7630897760391235, -0.11051017791032791],
{'C2': 0.8357588648796082},
'C1': [0.8127461075782776, -0.15702247619628906],
{'C2': 0.9858560562133789},
'C1': [-0.11421726644039154, -0.3825608491897583],
{'C2': 0.5676334500312805},
'C1': [0.9452145099639893, -0.6322499513626099],
{'C2': 0.9408518075942993}],
'A7': {'D1': [215, 99], 'D2': -99, 'D3': -110, 'D4': 238}}
Пример 2
Двоичные данные:
b'LJFm#\x96/R\xb9T6\xc6\x00\x00\x00\x02\x00\x00\x009\xd8|2X?\xe7\xa3F'
(b'\x81|\xb3"\x9dN\xe6q\xbe\x8a+u\xed\xbf\xdfa\x135\x8a\xee\x84\x00\x06\x00'
b'\x00\x00k\x00\xa9zu?\x17\xa4\x94\xbe\xd1L\x8b=>\xe5\xb0\xbd\x99W#\xbf'
b'\x01\xc8\xfd=\xfa!F\xbf4\xab\xb3>\xe5\xea\xa4>\x03F\xea>\xe4\x89\x10>'
b'\x8b\xe9\x0c\xbd\xbf\xcep\x00\x02\x00\x00\x00;\xbfa\xfe\xb4\x00\x02\x00'
b'\x00\x00C\xbef4\xb1\x00\x02\x00\x00\x00K\xbe\x9c\x99\x07\x00\x02\x00'
b'\x00\x00S>\xb6\xe9\x03\x00\x02\x00\x00\x00[\xbe\xc5"\x19\x00\x02\x00'
b'\x00\x00c\xbe\x06\x9a\xb0\x10]\x00\x00\x00\x02\x00\xa72\x98\xc0')
Результат разбора:
'A1': 2564289070177203910,
{'A2': 'zu',
'A3': {'B1': -662949288,
'B2': 0.7386810807271085,
'B3': -25266,
'B4': -6543,
'B5': -0.2698628008365631},
'A4': -19,
'A5': -0.49029998997477997,
'A6': [{'C1': [0.5923550128936768, -0.4087871015071869],
'C2': -0.8827927112579346},
'C1': [0.04660576581954956, -0.07487323135137558],
{'C2': -0.2248103767633438},
'C1': [-0.5069730877876282, 0.1221337765455246],
{'C2': -0.30585500597953796},
'C1': [-0.7057449221611023, 0.4490557909011841],
{'C2': 0.3572464883327484},
'C1': [0.1282002031803131, 0.44635820388793945],
{'C2': -0.3850257694721222},
'C1': [0.2732623815536499, -0.09365546703338623],
{'C2': -0.13144946098327637}],
'A7': {'D1': [16, 93], 'D2': 50, 'D3': -104, 'D4': 192}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc8 0x42 0x55 0x41 0x4a
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | Структура B |
3 | Массив uint8, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | int8 |
2 | int64 |
3 | uint64 |
4 | int32 |
5 | Размер (uint16) и адрес (uint32) массива структур C |
6 | double |
7 | Адрес (uint32) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint16) и адрес (uint16) массива int8 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | int64 |
3 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xc8BUAJfxcyseaa\xcb\xd0H\xfa\xc8C\x1aL\xa3\xd51\xfb\x05er\xddP\xf5\x03'
(b'\xd2N\x00\x04\x00\x00\x00E?\xc2h\x0cv\x0f\xef\xb0\x00\x00\x00u\x9b#\x97\xd0'
b'\xd0V9,b0-\x9b\x0f\x82\x0f4\x8e\n\x7f\xd3\x07\xacl\xa7J\x00\x03\x00'
b"6\xc7\xc0\xe7Ov\xceka\x00\x04\x009E\xf9d\xc5\x07j\xcb\xf4\x00\x04\x00=' \x0f"
b'\xd8~\xdf\x93\xfb\x00\x04\x00A\x8a\x97F\xca\xd6\xd6\xa4\xc7[\x1ci\xccD\xe9P'
b'\xef\xa9\x8fV\x88(\xdf\xcb\xe9')
Результат разбора:
'A1': 'fxcyseaa',
{'A2': {'B1': -53,
'B2': -3438222577471173469,
'B3': 15362335804532907344,
'B4': -184298930,
'B5': [{'C1': 756555292332566346, 'C2': [-105, -48, -48]},
'C1': 14393758737557777249, 'C2': [86, 57, 44, 98]},
{'C1': 5042172055213755380, 'C2': [48, 45, -101, 15]},
{'C1': 2819270789249864699, 'C2': [-126, 15, 52, -114]}],
{'B6': 0.14380031361349443,
'B7': {'D1': -8460215537990458169,
'D2': 6565238682849726703,
'D3': 12218079456880741353}},
'A3': [155, 35]}
Пример 2
Двоичные данные:
b'\xc8BUAJtnuzpasu\xf7\xe2\xc1\x03\xb9\xb7\xc5W\xad\xa8v\xe8\x01D_'
(b'\x90\x9al\x9c\xe3\xa2\x00\x02\x00\x00\x00:\xbf\xc5\x1b\xd1?\x93`\x88'
b'\x00\x00\x00R\x03$\xcd\xc9,(\xa7\x98\x0c[:\xf0\x81\x08\x00\x02\x006sN'
b'\x1f\xdbg\x92V`\x00\x02\x008\x9fBu$\x88\xef\x057\x85\xe8\xaa\xae\x04\xc6'
b"n\xa8\xee\xaf\xe5y%'\xb18")
Результат разбора:
'A1': 'tnuzpasu',
{'A2': {'B1': -9,
'B2': -2107399054445684819,
'B3': 12139144937763475610,
'B4': 1822221218,
'B5': [{'C1': 12076415986764382472, 'C2': [-51, -55]},
'C1': 8308613389741086304, 'C2': [44, 40]}],
{'B6': -0.16491141895562955,
'B7': {'D1': -6970880473439468233,
'D2': -8797594207687119192,
'D3': 17199217810428375352}},
'A3': [3, 36]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x59 0x50 0x58 0x1c
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Адрес (uint16) структуры B |
3 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | int16 |
3 | Размер (uint32) и адрес (uint32) массива char |
4 | Массив структур C, размер 3 |
5 | Массив int8, размер 8 |
6 | int32 |
7 | uint8 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint32 |
3 | Массив int16, размер 5 |
4 | uint64 |
5 | int32 |
6 | int8 |
7 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'VYPX\x1c@\x99u4\x007=.\x98\xfc\xfah\xcc~pQ\xcf\xc0\xfd\xa3\x87\xf7\x13'
(b'\xfc\x91\x13\x95\xb4\x04\x14Vh\x06\x9aUQ\xa4\xfd\xda\xd6\xb3\xa3\x03\xbbXle'
b'smo\xbf\xecJ\xfb0\x03\xb8xSW\x00\x00\x00\x05\x00\x00\x002!#D\xf3\x9e\\\x13'
b'\xdc@"\r]g/\xfb\xd1%\x14\xdb\xb2\xe5v\xc7\xe0\xe6\x1b-]\x05\xd7\xd2'
b'`\xa6\x92\x0b\xcdjC\xa0\xd6\xd5\xbc\x87')
Результат разбора:
'A1': 1083798836,
{'A2': {'B1': -0.8841529786857469,
'B2': 21335,
'B3': 'lesmo',
'B4': [{'C1': 555959539, 'C2': 40540, 'C3': 333201442},
'C1': 224225071, 'C2': 64465, 'C3': 622123954},
{'C1': 3849766880, 'C2': 58907, 'C3': 761071063}],
{'B5': [-46, 96, -90, -110, 11, -51, 106, 67],
'B6': -1596533316,
'B7': 135},
'A3': {'D1': 0.04262636601924896,
'D2': 4201172094,
'D3': [28753, -12352, -605, -30729, 5116],
'D4': 10453863760452146792,
'D5': 110777681,
'D6': -92,
'D7': -154575170168439976}}
Пример 2
Двоичные данные:
b'VYPX\x1c\xd6\x0b\xaf\\\x007?{\xa5\x8e\xec\xe5\x8e*\xd1G\x03\xe6\xc7'
(b'\x17\x08\x85\x1de\x9e\xf4EZ6i\xf9E\x1f\x8eye\x9d\x00\x8d\x88\xec\xfbkT\x03dh'
b'clf\xbf\xdf\xf1\x9f\xa1K\xe8\xbc\x1cB\x00\x00\x00\x05\x00\x00\x002\x1dX\x8f'
b':\x8a\xc6WaA\xbf\xaf\xbf\xa0\xd8\xac\xba\xa7\xbch\x1ez\xe4\xf8'
b'\x81\x8f\xb5\xc7\xbe\xe2\xaf\xa6\xe7\x94\x0cj#q<`\xd7(f\x92')
Результат разбора:
'A1': -703877284,
{'A2': {'B1': -0.4991225314294174,
'B2': 7234,
'B3': 'dhclf',
'B4': [{'C1': 492343098, 'C2': 35526, 'C3': 1465991615},
'C1': 2948571352, 'C2': 44218, 'C3': 2814142494},
{'C1': 2061826177, 'C2': 36789, 'C3': 3351175855}],
{'B5': [-90, -25, -108, 12, 106, 35, 113, 60],
'B6': 1624713318,
'B7': 146},
'A3': {'D1': 0.9829949140548706,
'D2': 3974467114,
'D3': [-11961, 998, -14569, 2181, 7525],
'D4': 11453856006072301893,
'D5': 529430885,
'D6': -99,
'D7': 39838523127976963}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc3 0x50 0x52 0x4c
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | int16 |
3 | Структура B |
4 | int8 |
5 | Массив адресов (uint16) структур C, размер 3 |
6 | Массив char, размер 8 |
7 | Адрес (uint16) структуры E |
8 | float |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | Массив char, размер 4 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | Адрес (uint16) структуры D |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | float |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
3 | uint32 |
4 | int8 |
5 | Размер (uint32) и адрес (uint16) массива double |
6 | uint8 |
7 | int16 |
8 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xc3PRLZ\xfa\xad\xbf\xca\xbbG,\xcd2\x90xpbc\xa3\x000\x00>\x00Lakqitmvl\x00j'
(b"?>\xd6\x97\x98\xcc\xe0\xaf\xbe%\xff\x97\xbf\x0ev'\x00(e\x7f^G\xbf6"
b'\x85\x19\xbf\x17\xc4\xab\x006vF7\xb5?R\x12h\xbf}y\xbd\x00D?\xe01\xef\xa2\xbf'
b"~N\xbf\xd4\xa3:(\x0b6\xd4\xbf\xc4'\x82y\xff>\x08\xe1\xc5\x87\xd0\xf1J/@\xda="
b'\x00U<\xaa\n?1\x00\x00\x00\x03\x00Rhz\xa4\xc6')
Результат разбора:
'A1': 90,
{'A2': -1363,
'A3': {'B1': -0.20884027183128184, 'B2': 'xpbc'},
'A4': -93,
'A5': [{'C1': -0.5564903616905212,
'C2': {'D1': -1731403601, 'D2': -0.16210781037807465}},
'C1': -0.5928446650505066,
{'C2': {'D1': 1702846023, 'D2': -0.7129684090614319}},
'C1': -0.990138828754425,
{'C2': {'D1': 1984313269, 'D2': 0.8205933570861816}}],
'A6': 'akqitmvl',
'A7': {'E1': 3787818960,
'E2': 17386761267003064405,
'E3': 1017776703,
'E4': 49,
'E5': [0.5060957125351224, -0.3224625960400378, -0.15745573956381542],
'E6': 104,
'E7': 31396,
'E8': 198},
'A8': 0.7454618811607361}
Пример 2
Двоичные данные:
b'\xc3PRL\rB\xa1\xbf\xe4i\x0e|\xaa\x93|opsk$\x000\x00>\x00Lkkfxmbkv\x00r'
(b'>\x02\xd1bV\x8bP\t?Y\xc3I?{2\xa8\x00(3\x97\xcfy?b\x12\x9d\xbfP\xea>\x006'
b'\xcd\x8cS=?M(\x05\xbf\x00{\x19\x00D\xbf\xcc\r5&W\n\x00?\xea\x95k\xd1\x80'
b'\x08\x10\xbf\xe0\xeb]\xd7\xf5\xec`\xbf\xb1b\xee\xee\x05x \xb7\xa1'
b'\xe8\x0e\xc0>\x80g\x00\x99\xcd!F\x0c\xcfAY\x00\x00\x00\x04\x00R\x16\xd2~'
b'\xf8')
Результат разбора:
'A1': 13,
{'A2': 17057,
'A3': {'B1': -0.6378242907418179, 'B2': 'opsk'},
'A4': 36,
'A5': [{'C1': 0.9812417030334473,
'C2': {'D1': 1451970569, 'D2': 0.8506360650062561}},
'C1': -0.8160742521286011,
{'C2': {'D1': 865587065, 'D2': 0.8830965161323547}},
'C1': -0.5018783211708069,
{'C2': {'D1': -846441667, 'D2': 0.8013918995857239}}],
'A6': 'kkfxmbkv',
'A7': {'E1': 3080841230,
'E2': 13852650683718290721,
'E3': 1175244609,
'E4': 89,
'E5': [-0.21915306446142324,
0.8307398883628156,
-0.5287312715512478,
-0.06791585265224898],
'E6': 22,
'E7': -11650,
'E8': 248},
'A8': 0.12775185704231262}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x50 0x4d 0xfb
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | uint8 |
3 | uint64 |
4 | Размер (uint16) и адрес (uint16) массива int8 |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 2 |
2 | float |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | float |
3 | Адрес (uint16) структуры D |
4 | Массив int16, размер 6 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Массив float, размер 2 |
3 | Размер (uint32) и адрес (uint32) массива uint32 |
4 | double |
5 | int8 |
6 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NPM\xfb\x00\x00\x00\x8f\x1c\x05\xda@\xed,u]\xb5\x00\x03\x00\x9b\x83\x07\xdc'
(b'I\x9e\x0f\xb6\xad\xce\xbb\xd3\xa4\xee\xce\x04\x98=\x97\x14\xce\xbe\xfb%'
b'\xfe\x00\x00\x00\x02\x00\x00\x00\x15\xbf\xb7g\xc3\xc3D:\x90\x026['
b"\xbfY\xe3\xab\x00\x1dO\x0b,\x88\xcd!=\xa2\x93't7`\xa2\x82\x10\xab^$\x90sm"
b'\x13\xd3\x06\xd8\xe4z\xbe\xc4\xf7\xe0\xbe\xb9\xe4\x7f\x00\x00'
b'\x00\x02\x00\x00\x00R\xbf\xc4\x85\x96\x13\xa1\xeb\x90\x07\x87\xa7\xbe-N'
b'\x93\x00Zc\xac\x1d\xc2\xfdh\x18\x07\xab\x01\x98\xcf\x00\x00\x00?\x00'
b'\x00\x00|\xbf\x13\xf4\x9f\xd6T\x8d')
Результат разбора:
'A1': {'B1': [{'C1': 91,
{'C2': -0.8511301875114441,
'C3': {'D1': 14896732897792623768,
'D2': [0.07377015054225922, -0.4905242323875427],
'D3': [2198330441, 2651829933],
'D4': -0.09142707364319791,
'D5': 2,
'D6': 54},
'C4': [20235, 11400, -13023, 15778, -27865, 29751]},
'C1': -89,
{'C2': -0.16924504935741425,
'C3': {'D1': 8317325883897078906,
'D2': [-0.3847036361694336, -0.36307141184806824],
'D3': [1621262864, 2875073680],
'D4': -0.16032672842615314,
'D5': 7,
'D6': -121},
'C4': [25516, 7618, -664, 6151, -21759, -26417]}],
'B2': -0.5779513716697693},
'A2': 28,
'A3': 421720902509878709,
'A4': [-42, 84, -115]}
Пример 2
Двоичные данные:
b'NPM\xfb\x00\x00\x00\x8f\x95\xa4\xc4P\x9b\x0e\xa4\xban\x00\x04\x00'
(b'\x9b\x01\x19\xbb\xbb\xcf`\xf6\x9al1\xcd\xe1\xd1\xfcZ\xc8\xbfW\x08G\xbee['
b'\xcc\x00\x00\x00\x02\x00\x00\x00\x15\xbf\xd54\xc1f\x1fgH\x05s\xcc\xbd\x02nB'
b'\x00\x1d\xa0\x99~\xef\xc5\x0c%+\xd9\xa5\xdd\xf7n\x84\x11#\x88\r\xf9P_\xdb'
b"\xaa#\x11'\xb4C\xbe\xcd\x82\x85\xbb\xc4\x84\xd9\x00\x00\x00\x02\x00\x00"
b'\x00R\xbf\xe5\xb9%\xa4\x17\x92\xaePW7?4\xe8\xb5\x00Ze\xcc\xfc\x83\xed'
b'wN\x9c\x80)\xa9\x88\x00\x00\x00?\x00\x00\x00|?\t\xa5\xca\xb0\xf3\xbe\x17')
Результат разбора:
'A1': {'B1': [{'C1': -52,
{'C2': -0.031843431293964386,
'C3': {'D1': 7796238799729351368,
'D2': [-0.839970052242279, -0.22398298978805542],
'D3': [18463675, 3479238298],
'D4': -0.33134493801991427,
'D5': 5,
'D6': 115},
'C4': [-24423, 32495, -15092, 9515, -9819, -8713]},
'C1': 55,
{'C2': 0.7066758275032043,
'C3': {'D1': 6907301521091179587,
'D2': [-0.40138640999794006, -0.005997281987220049],
'D3': [1854148899, 2282617168],
'D4': -0.6788509564326739,
'D5': 80,
'D6': 87},
'C4': [26060, -893, -4745, 20124, -32727, -22136]}],
'B2': 0.5376859903335571},
'A2': 149,
'A3': 11872703144551299694,
'A4': [-80, -13, -66, 23]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x87 0x54 0x4f 0x4d
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int8 |
2 | uint16 |
3 | Размер (uint32) и адрес (uint16) массива структур B |
4 | Структура C |
5 | uint64 |
6 | int8 |
7 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | double |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | Размер (uint32) и адрес (uint16) массива uint32 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | Массив uint32, размер 6 |
4 | double |
5 | int64 |
6 | uint64 |
7 | Массив uint16, размер 2 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\x87TOM\xd3\xeb7\x04\x00\x00\x00d\x00\x9d\x18??\x02\x00\x00\x00\x94\x00\x00'
(b'\x00\x03\x00\x00\x00\x96\x00\x1a\xa2\xd5W\xafc\x02TC\xcc\xa7\xe6\xdesF\xd2>'
b'\x13)\x91vV\xff\x18\xca\xd1t\x93K\xe9]\x88\xb6\xacK\xf1\x0f\xb8\xe9\xed\x19'
b'b~lw\xe0s\xee?\xc9F\x1c\xc9\xc3\\\xa3\x166J\x93\xd3\x1a\x1b\x14\x17'
b"\xe7'<\xecXv\x82V\xa2]\x16y\xdfq\xee\xbf\x14\xe4\xb9\xa5\x0e\xd7\x978TJ\xeb?"
b'n\xa9gA\xa8>\xef-\xeb|\xc8?\xe9\xf1\x9c\x8e\xb0\x17\x9c\xf82\xc4\xcf?avZ\x00'
b'a\x8f\xa0\x1b\xa7\xc9\xdf\xcc5\x81')
Результат разбора:
'A1': -45,
{'A2': 14315,
'A3': [{'B1': 1451390552, 'B2': -0.9514005055415746},
'B1': -1514544108, 'B2': 0.8528233628591992},
{'B1': 1097312622, 'B2': 0.19131221526048603},
{'B1': -1902317079, 'B2': 0.24817502154490745}],
{'A4': {'C1': 0.7464693188667297,
'C2': 'av',
'C3': [2405498970, 3383172000, 2167786719]},
'A5': 6053510453883413018,
'A6': 67,
'A7': {'D1': 3739658188,
'D2': 0.4106937348842621,
'D3': [1989224723,
3390635862,
1267954897,
3062390249,
267471788,
435022264],
'D4': 0.9516451199051057,
'D5': 1631249486000703177,
'D6': 1662983964439300662,
'D7': [10215, 60476]}}
Пример 2
Двоичные данные:
b'\x87TOM. _\x04\x00\x00\x00d\x00+\xd5\x05?\x02\x00\x00\x00\x94\x00\x00'
(b'\x00\x06\x00\x00\x00\x96\x00V\xc6"\x90,_;D\xab\x8f\x8c\xa5\xef\xd7\xd7q\xbf'
b'!\x0b:\x95j\xdb\x069r.\x93^\x16 \x04\xaf\x14\xa7x\r)\xd9\x8a\xef,\xac\x8bU'
b'\xb9\xf8\xd0\xbf7\xe0\x94R~h\x8b\xdb\x03Q\xe3\x8dj\xfb\x95\xaf\xb4o8_'
b'\x06\xbf\xe0x\xd4\xba\x0eL\x84\x9a\xd6?\x1e\xa9\\\x9a\xea9;\x97v7\xe7\xbf'
b'\xddlb&\xa0\xaa\xa0\xa3\x866\xe8\xbf]3\x86i\x94C\xdb\xd2\xc4\xf9\xe8?xvU\x13'
b'\xb36U\xfb\xdd\xae\x94\xa1&\xc3>\x0c\x1a@\xe0\xcc^\x97\x11S\xb6\xd9')
Результат разбора:
'A1': 46,
{'A2': 24352,
'A3': [{'B1': 2027994886, 'B2': 0.35318095614904377},
'B1': -1705203426, 'B2': -0.725520415662513},
{'B1': 643984605, 'B2': -0.7566559978343612},
{'B1': 1770402653, 'B2': 0.7804893606463446}],
{'A4': {'C1': 0.5227839350700378,
'C2': 'xv',
'C3': [917705557,
2933783381,
3274088852,
1075448894,
2539572448,
3652604689]},
'A5': 4916628063206426198,
'A6': -85,
'A7': {'D1': 4020604047,
'D2': -0.9446997046470642,
'D3': [2503609121,
956750698,
1586703986,
2936283158,
226010900,
4018854185],
'D4': -0.2651809058576784,
'D5': -2626891065879896009,
'D6': 12652295163232866563,
'D7': [28596, 24376]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x47 0x49 0x4
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | int16 |
3 | Размер (uint16) и адрес (uint16) массива структур B |
4 | float |
5 | int16 |
6 | Структура D |
7 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | Массив char, размер 5 |
3 | uint16 |
4 | uint64 |
5 | Структура C |
6 | double |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint64 |
3 | Массив int16, размер 4 |
Структура D:
Поле | Описание |
---|---|
1 | Массив int16, размер 3 |
2 | float |
3 | int16 |
4 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'RGI\x04\x8bX\x96\x16C\x0c\xd9_O\x9c\x02\x00(\x005\xb7\xfc\xbeHA,\xc7K^'
(b'\xc6/{w\x02\xbfM-{\xc89\xf3\xcea#\xbfiqcsw\xedM\x1b\xf3\xb2M\x8a'
b"\x00\xb9\x8c7\x06\xf0\xe6\x1d\x1c3\xd6\x98c\xcbUVEwJ2\x93\x17V\xf6v\xd26'"
b'\x9f\xe5?Bcn?xpcbdcXs\x17\xdf\xcevY%X\x19\xb3m\xd32\x14\xd9\xf7T\xed'
b'\xdf\xac\x91\x84\xbe\x0c\x1aA~\xcc\x80\x85D_\x8c\x83\x80?')
Результат разбора:
'A1': 6906564985830660235,
{'A2': -25521,
'A3': [{'B1': -0.6382111310958862,
'B2': 'iqcsw',
'B3': 19949,
'B4': 10140136630010442523,
'B5': {'C1': 3874489911,
'C2': 6182144421575990301,
'C3': [17750, 19063, -27854, 22039]},
'B6': 0.6756778784508402},
'B1': 0.9312020540237427,
{'B2': 'xpcbd',
'B3': 22627,
'B4': 6351581216287692659,
'B5': {'C1': 3547181849,
'C2': 12456936043521315890,
'C3': [-31599, 3262, 16666, -13186]},
'B6': 0.008063408524835891}],
'A4': -0.4935852587223053,
'A5': 16712,
'A6': {'D1': [-14548, 24139, 12230],
'D2': -0.5096356272697449,
'D3': 11597,
'D4': 51323},
'A7': -3271}
Пример 2
Двоичные данные:
b'RGI\x04\x1e\xadba0OS\x14\x9c\x06\x02\x00(\x00]\x9d\x07?\xedR#L|\x17'
(b'\x11*\xe7\xc3\x02\xbd\x93\x16\x1f\xed8FQ\x8f\x86>veine\x8b\xf1m\xb2\xf6\xdf]'
b'4av-?\x9d!9b\xe3\x16+\xce\xdc\x9b6\x19!&RZ\r\xe5\xce\x06\x0f\xcb0'
b'\xb7\xe5\xbf\x8a\x1b\x86=hlliq\xab_\x11\xa6\xf0n\xeb\xfa\xc9\xf2\xc0X\xbdy]G'
b'\x04\xd8\x9f\xaf\x1d\xcfw\xb2@i\xc6 9R\xf0\xd4Q]\x9b\x1c\xef?')
Результат разбора:
'A1': 1464601373036424478,
{'A2': 1692,
'A3': [{'B1': 0.26281216740608215,
'B2': 'veine',
'B3': 61835,
'B4': 8530156747010519661,
'B5': {'C1': 563953453,
'C2': 11231078255218090553,
'C3': [6454, 9761, 23122, -6899]},
'B6': -0.6786121335973918},
'B1': 0.06548221409320831,
{'B2': 'hlliq',
'B3': 24491,
'B4': 17494790116582925841,
'B5': {'C1': 2042452160,
'C2': 14924277841234511709,
'C3': [-19849, 26944, 8390, 21049]},
'B6': 0.972242052330925}],
'A4': 0.5297449231147766,
'A5': 21229,
'A6': {'D1': [19491, 6012, 10769],
'D2': -0.03192510828375816,
'D3': 5779,
'D4': 60703},
'A7': 17976}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x5a 0x50 0xcd
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Структура B |
3 | int64 |
4 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | Массив адресов (uint32) структур C, размер 7 |
2 | Массив char, размер 2 |
3 | Адрес (uint16) структуры D |
4 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
3 | double |
4 | int8 |
5 | int64 |
6 | Массив int64, размер 2 |
7 | int32 |
Структура E:
Поле | Описание |
---|---|
1 | uint64 |
2 | float |
3 | Размер (uint16) и адрес (uint16) массива int16 |
4 | uint32 |
5 | uint8 |
6 | Массив int16, размер 7 |
7 | int8 |
8 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZZP\xcd>\x92<\x95\x00\x00\x00`\x00\x00\x00e\x00\x00\x00j\x00\x00\x00o'
(b'\x00\x00\x00t\x00\x00\x00y\x00\x00\x00~ri\x00\x83\xd1S\x16J\xc2p\xb3l'
b'.\xd6P\xbd;\xd7\xf4\xa2c\x1a\t\xdc?\x1b\xdc`\x00\x05\x00\xab\xa4\x81Fd'
b'\x8e\xe8\xf3\x03\x05\xaf\x91:\x15\xcft\xa3\xb02\xcd\xd7$\xc8}\xc08_\x80\x19'
b'\xd3>>\xd1n{\xbe\xcd~\xc3\x93\xbc\xf6Z\x8e\x19?-\x1f\xd8\xed>\xb3\xfb'
b'\x89\xcd\xbfa\x14\x9f\x04?\x18\x08\xfa S\xac\xbf\xccdb\xd6\xd8\xcc bX'
b"\xfd\xba\xcc\xfbR\xe1\x0f\xfe\x077>\xd6'o\x13\xd5\x8a\x98=\x98_\x10z\x8d"
b'X}|\x837\x92>\xd8\xa4\xeb\x95\xc3\x8a')
Результат разбора:
'A1': 0.28561845421791077,
{'A2': {'B1': [{'C1': 211, 'C2': 0.18634578585624695},
'C1': 123, 'C2': -0.4013577401638031},
{'C1': 147, 'C2': -0.030072476714849472},
{'C1': 25, 'C2': 0.676267147064209},
{'C1': 237, 'C2': 0.35152843594551086},
{'C1': 205, 'C2': -0.8792209029197693},
{'C1': 4, 'C2': 0.5938869714736938}],
{'B2': 'ri',
'B3': {'D1': 8275,
'D2': -84,
'D3': -0.22181354036874357,
'D4': 98,
'D5': 6412486833998061839,
'D6': [-142084120218472685, -3059465606528036742],
'D7': -1923580548},
'B4': 3511883338},
'A3': -4435848355736301379,
'A4': {'E1': 4312184146515069404,
'E2': 0.6088314056396484,
'E3': [-31945, -28098, -10076, -5227, -15478],
'E4': 2759935588,
'E5': 142,
'E6': [-5901, 773, -20591, 14869, -12428, -23632, 13005],
'E7': -41,
'E8': 2650506645240512537}}
Пример 2
Двоичные данные:
b'ZZP\xcd\xbf\x04\xc0\x10\x00\x00\x00`\x00\x00\x00e\x00\x00\x00j\x00\x00\x00o'
(b'\x00\x00\x00t\x00\x00\x00y\x00\x00\x00~km\x00\x83\xfe\xe3R$\x8a@\x06\xa5'
b'\xdc^\xf0v\xbfPq\x08\xf1\x9c\xa7\xc4=\x8eo\xfc\x00\x05\x00\xab\n\x07\xadp'
b',\x85\x14\xa1\x9c"p4\x03\x0f6\xa2\x11|:i\xb7+\xb5\xb9#\xbec\xbbw\xbf\x7f\xcb'
b'u)?L\xac\x95k?gu\xa8\xa7\xbfQ\xfe\xe9\xcc\xbf\x14\xfe\x11\x8a>\xc9'
b'\x8a\xeb\xb4\xbe.\xe8\xb7\xa2\x8eY\xbf\xdc\xb5I\xc4\x8b\xb6\xe8k!\xc9:}a'
b'\xa3O\xd6\xf8\xab\x99\xc7B\xfc\xbai<\x8a\x16\xc1I\x12\xc1a\xcc\x9f\xa8Y!'
b'\xc9\x9d\xf6\xdd\x05\xbb\xf9\x1cA')
Результат разбора:
'A1': -0.5185556411743164,
{'A2': {'B1': [{'C1': 119, 'C2': -0.9991982579231262},
'C1': 41, 'C2': 0.7995083928108215},
{'C1': 107, 'C2': 0.9041390419006348},
{'C1': 167, 'C2': -0.8202958703041077},
{'C1': 204, 'C2': -0.5820017457008362},
{'C1': 138, 'C2': 0.3936379849910736},
{'C1': 180, 'C2': -0.17080961167812347}],
{'B2': 'km',
'B3': {'D1': -23922,
'D2': 89,
'D3': -0.44856495088502735,
'D4': 107,
'D5': 2434541383753879510,
'D6': [-528159450184500631, 4362324208472211809],
'D7': -861951911},
'B4': 4276310564},
'A3': -8484774388529434506,
'A4': {'E1': 13785642742608340932,
'E2': 0.06954953074455261,
'E3': [8649, -25098, -8955, -17415, 7233],
'E4': 168275312,
'E5': 44,
'E6': [-31468, -24164, 8816, 13315, 3894, -24047, 31802],
'E7': 105,
'E8': -5247901133996923973}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x56 0x4c 0x48
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | Адрес (uint16) структуры C |
4 | Размер (uint32) и адрес (uint32) массива структур D |
5 | Размер (uint16) и адрес (uint32) массива int8 |
6 | uint32 |
7 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | int32 |
3 | int8 |
4 | Массив char, размер 2 |
5 | int64 |
6 | double |
7 | double |
8 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'TVLH\x00\x00\x00(\x00\x00\x00\x07\x00\x00\x00M\x00T\x00\x00\x00\x03\x00\x00'
(b'\x00Z\x00\x02\x00\x00\x00~\x17\x13?\xbb\xf3\xb1(\xe4\xbf\x00\xfd\xe2'
b'\x84\xc6\xfc\xd2\x1edgE^\x12\xbb\xaak\x99\xcc?\xe5@\\\xfcngF\xbf'
b'\xee\xa7\xff\x9b\xf2\xcef\x02\x9dcjeonjy\xcf\x14\xbf:\xa8\x9f\x18\x1e'
b"\xa7\xa7?\x01\x87\xcb\t\x9be0>\xedx\xa1\xbd\x9a:\xe7n2'\x8a\xaf{\xecS?^"
b'\xc9\x0e\xe4\xbc\x05\x82M\xac')
Результат разбора:
'A1': {'B1': -0.5038739442825317,
{'B2': -2067333934,
'B3': 30,
'B4': 'dg',
'B5': 4998453233655192012,
'B6': 0.6641068392084228,
'B7': -0.9580076261394879,
'B8': 669},
'A2': 'cjeonjy',
'A3': {'C1': 53012, 'C2': -0.7291354537010193},
'A4': [{'D1': 404662183, 'D2': 0.5059782862663269, 'D3': 161178928},
'D1': 1055750305, 'D2': -0.07530765980482101, 'D3': 1848780682},
{'D1': 2944134227, 'D2': 0.8702553510665894, 'D3': -457439870}],
{'A5': [77, -84],
'A6': 387137467,
'A7': 4088473828}
Пример 2
Двоичные данные:
b'TVLH\x00\x00\x00(\x00\x00\x00\x02\x00\x00\x00M\x00O\x00\x00\x00\x03\x00\x00'
(b'\x00U\x00\x02\x00\x00\x00y\n\xec\r\xef\x943B3\xbf\x11\x0c\xb9'
b'\xc4\x91\xc6\xee\xf9vn,\x933{d\x1b\xcf\xa7?\xc1\x82\x90\x9fa}\x10?\xe8^]b'
b'\xc1\x99\xa2\xf1\x8bovD ?D\xa2\x18\xbf\x0f\tB?&s\x86\xc2E(~q.\x9d'
b'\xde?\x00\x99\xb13\xa24:owL\xe1\xbf\\\x10\x93\xe7\xacx\x7f\xbb\x82')
Результат разбора:
'A1': {'B1': -0.5666003823280334,
{'B2': -997079314,
'B3': -7,
'B4': 'vn',
'B5': 3211967564298833831,
'B6': 0.1367970255114206,
'B7': 0.7615191391785638,
'B8': 61835},
'A2': 'ov',
'A3': {'C1': 17440, 'C2': 0.7680983543395996},
'A4': [{'D1': 3205433666, 'D2': 0.6502002477645874, 'D3': -1035655042},
'D1': 1898880478, 'D2': 0.5023451447486877, 'D3': 866268218},
{'D1': 1870089441, 'D2': -0.859627902507782, 'D3': -408127361}],
{'A5': [-69, -126],
'A6': 183242223,
'A7': 2486387251}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x45 0x44
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 5 |
2 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 6 |
2 | Структура D |
3 | Структура E |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | Массив uint16, размер 5 |
3 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | int8 |
2 | int64 |
3 | Размер (uint32) и адрес (uint16) массива uint8 |
4 | Массив int8, размер 3 |
Структура E:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BEDsxacl\xa3T\x0e\xcdh\x8d\xe2QN4\x1c+3a+\x0b\xcf25v\xa34\xf3\x03'
(b'\x8d\xd1:\x9c\xf4\xe6\x90\xb0X\xb9\xadd=B\t\xc6\xf7\xa3\xdaV`\xbc\xd4\x06'
b'>\xc2\xe2\xef\xcaK\x9c<|\x91n\xe3\x8d079 \xc6\xa6\xa8\x92;\xaa\x84q\x89a&'
b'7\xfc?h\x8d\xc0\x1e\x0b\xe0_\xe1\x00\x00\x00\x03\x00k\x8a\xf9\x81z\xd2\x8dA'
b'\xe7;')
Результат разбора:
'A1': 'sxacl',
{'A2': {'B1': [{'C1': -23724,
'C2': [3789, 26765, 57937, 20020, 7211],
'C3': 51},
'C1': 24875, 'C2': [3023, 12853, 30371, 13555, 909], 'C3': 209},
{'C1': 15004,
{'C2': [62694, 37040, 22713, 44388, 15682],
'C3': 9},
'C1': -14601,
{'C2': [41946, 22112, 48340, 1598, 49890],
'C3': 239},
'C1': -13749,
{'C2': [39996, 31889, 28387, 36144, 14137],
'C3': 32},
'C1': -14682,
{'C2': [43154, 15274, 33905, 35169, 9783],
'C3': 252}],
'B2': {'D1': 63,
'D2': 7533888986941513697,
'D3': [65, 231, 59],
'D4': [-118, -7, -127]},
'B3': {'E1': 31442, 'E2': 141}}}
Пример 2
Двоичные данные:
b'BEDmrdpr\xef\xb2\xdfb\xafXe<e\xde\x0f^/\x15r\x81\x82}\xed}\x8bv\xd5\x1d'
(b'=\xbd\xb8zEW\x81t\x83b3\xa7PC-\xaaC\x04D\xa1_[6\xdaF\xf4]1\xeeO;N'
b'\xbb\xcbd\xe6J+c\xbf\x7f\xc9\x97\x1e\xa1\x9e\xe5\x92]\xe6uV\x82\xe7E\xe2'
b'\xfe\x02p(F\x14 \x00\x00\x00\x02\x00k\xb6\xfc\xb6\x9f\x06\x8c\xa5\x0c')
Результат разбора:
'A1': 'mrdpr',
{'A2': {'B1': [{'C1': -4174,
'C2': [57186, 44888, 25916, 26078, 3934],
'C3': 47},
'C1': 5490,
{'C2': [33154, 32237, 32139, 30421, 7485],
'C3': 189},
'C1': -18310,
{'C2': [17751, 33140, 33634, 13223, 20547],
'C3': 45},
'C1': -21949,
{'C2': [1092, 41311, 23350, 55878, 62557],
'C3': 49},
'C1': -4529,
{'C2': [15182, 48075, 25830, 18987, 25535],
'C3': 127},
'C1': -13929,
{'C2': [7841, 40677, 37469, 58997, 22146],
'C3': 231}],
'B2': {'D1': 69,
'D2': -2090230496318057440,
'D3': [165, 12],
'D4': [-74, -4, -74]},
'B3': {'E1': 40710, 'E2': 140}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x57 0x58
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива char |
2 | Структура B |
3 | Адрес (uint16) структуры E |
4 | Массив uint8, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
3 | int8 |
4 | uint16 |
5 | Массив структур C, размер 2 |
6 | Адрес (uint32) структуры D |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | uint8 |
3 | uint16 |
4 | int32 |
5 | uint16 |
6 | Массив double, размер 5 |
7 | int8 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | int16 |
4 | uint16 |
5 | int32 |
6 | int64 |
7 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'TWX\x00\x00\x00\x02\x00*\xbe2\xce{\xe9\xb7@x\x12\x85\x99B\x06\xeeB|\xc8\xb5{'
(b'\x8e\xf3/ \xff^\x00\x00\x00,\x00f\xc8\nsv\xbf\xd0\xaa&\xdc\xc1\xa8d'
b'__\x83\xe7\xc2\xd8\x16_\x12\xbf\xdb\xe2\x1d\x1e\x8b\xfa\x94\xbf\xc0\x96'
b'OR\xff \xb8?\xdc\xde-\xdb,\x81\xac\xbf\xebf\x10[\xbd\xa3*?\xdcagg}4'
b'\xd0\xc2=\xdc\xcdq\xf2\xb23\xb7\x1d\xb6\xad"\x1e\xd0Q\x18\xea\x04g\x82];'
b'\x14\xdfQ\xc9\x8cR?\x11\xf0\x92')
Результат разбора:
'A1': 'sv',
{'A2': {'B1': -0.1746157854795456,
'B2': 16841000216026257730,
'B3': 6,
'B4': 60994,
'B5': [{'C1': 124, 'C2': 3367336846}, {'C1': -13, 'C2': 790691678}],
'B6': {'D1': -0.26038524206399516,
'D2': 95,
'D3': 24451,
'D4': -406661098,
'D5': 24338,
'D6': [-0.43567588790021117,
-0.12958709290092485,
0.4510607376451172,
-0.8562089721500332,
0.4434450636516205],
'D7': -62}},
'A3': {'E1': 4457663620476711863,
'E2': 498511138,
'E3': 7888,
'E4': 20760,
'E5': -368810110,
'E6': 6717986218535652434,
'E7': 0.5700770616531372},
'A4': [200, 10]}
Пример 2
Двоичные данные:
b'TWX\x00\x00\x00\x02\x00*?T\xe60aB\xab\xe9JG#\xc7B\x02RU=\xcf\xa5'
(b'\x95\x12{\xdaJ\xfb\x00\x00\x00,\x00f\xc17zb?\xd5\xd2<\xc9\xec\xb5p\rmMA'
b'\xfbv\xed\xe1b\xbf\xe2\xeb\x03\xb7Y\x8a\xee\xbf\xe5\xe29F\x1b\x8f\x8e?\xdeB'
b'&\xa2\x89\xeb\x90?\xc7Xs\xafX\xa5X?\xd9!G.\x0b\xe6\x08\xa3@\x12.\x01\xabK'
b'p\xcc\x89\xd4\x1a|az\xe5\xbe\xb7\xae\x98\xd5}\xd7O\xd7\x17\xd90\xea\xbf^'
b'+\x05')
Результат разбора:
'A1': 'zb',
{'A2': {'B1': 0.8316373825073242,
'B2': 7008352988603818951,
'B3': 66,
'B4': 594,
'B5': [{'C1': 85, 'C2': 1037018517}, {'C1': 18, 'C2': 2077903611}],
'B6': {'D1': 0.34095687598422497,
'D2': 13,
'D3': 27981,
'D4': 1106999021,
'D5': 57698,
'D6': [-0.5911882954645458,
-0.683865200928709,
0.4727875315945136,
0.18238683759526952,
0.39265613075949135],
'D7': -93}},
'A3': {'E1': 4616803152711872716,
'E2': -1982588292,
'E3': 24954,
'E4': 58814,
'E5': -1213294379,
'E6': 9067804159970455786,
'E7': -0.8678439259529114},
'A4': [193, 55]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x4c 0x58 0xb1
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint32) массива char |
3 | uint16 |
4 | Структура B |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 4 |
2 | uint8 |
3 | Адрес (uint16) структуры D |
4 | double |
5 | int8 |
6 | uint64 |
7 | Размер (uint32) и адрес (uint32) массива int8 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | int16 |
3 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint64, размер 4 |
2 | int32 |
3 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NLX\xb1\xf9o\x1b\x94\x03\x00d\x00\x00\x00\xb6\x91\xa5\x9c\x06?'
(b'\xc2\x97\xad\xde\xa6\r\xb4\x9a\xf6\xdb*-B\xbfjtV\xa0\xeb\x98\xb5\xb7\xe5\xff'
b'\xed\xd5\xcc>p#u\xc8\xdcJt\xfc\xdaT\x1f\x860>\xd1q\xe9\xb8=\x8b<\x9d\x87|'
b'\x1cg\x00X\xe2fs\xf1;\xce\xbf\x10\x1cg\n1\xa0w\x89{\x03\x00\x00\x00'
b'\x8c\x00\x00\x00lve=\xa3\xd2(\x13\x9e\x9da\x8c{{\x9f\x00\x1d\x01+R'
b'\x01\x0b\x1c*\xcazs\xad\xd0\xfbkjE\x861TT\x10~\xcbg\xcaE')
Результат разбора:
'A1': 2484826105,
{'A2': 'lve',
'A3': 37302,
'A4': {'B1': [{'C1': 0.5258277058601379,
'C2': -26686,
'C3': -2596718037018681683},
'C1': -0.7585016489028931,
{'C2': 29802,
'C3': -7397833788645290},
'C1': 0.40006962418556213,
{'C2': 9072,
'C3': 6114477020511258741},
'C1': 0.17238663136959076,
{'C2': 29137,
'C3': 8973313665918679273}],
'B2': 28,
'B3': {'D1': [7033951998149043005,
3098789907120487308,
8321185543728333138,
3568616078118211757],
'D2': 2114999380,
'D3': 203},
'B4': -0.23620432028634997,
'B5': 16,
'B6': 8901777668375734044,
'B7': [103, -54, 69]}}
Пример 2
Двоичные данные:
b'NLX\xb1\xb7\x08\x0bO\x03\x00d\x00\x00\x00\xd4\xed\xecW\xe4\xbe\xafeow'
(b'[=\xad\x9a\x9d\xc3\x06\x1b\x0b?\xee\xde\xc2\xca\xd5b\x0c\xf16\xc8\x1e\xd46?'
b'\x0b3z\x99\xde8\xf8\x88>%\xc9]\xdc>\x9e\x13n\x8d\xe9\x91\xe5\xa5\xb0\xd8'
b'!g\x00\xf0\xb5\xab\xb8D\xa7\xc8?|\xca)q\xb6k>\x06\xc8\x05\x00\x00\x00'
b'\x8c\x00\x00\x00dwy\xc3\x82\xf1x4J\xe3c\x92\xd2j\xfd\xbc7\x9d\xe3h'
b'\x088\x8d\xb9\x898\x85 \xa1\xcf\x8e\xa3_\xbf\xb7\x07\x1b&\x83_\xd8\x7f\x93$'
b'S')
Результат разбора:
'A1': 1326123191,
{'A2': 'dwy',
'A3': 60884,
'A4': {'B1': [{'C1': -0.44598329067230225,
'C2': 26031,
'C3': -4351151596120606865},
'C1': 0.5433810949325562,
{'C2': -8466,
'C3': -4019760581881509182},
'C1': 0.7141741514205933,
{'C2': 13067,
'C3': 2683733027646773626},
'C1': 0.4304030239582062,
{'C2': 5022,
'C3': -2832581760201945746}],
'B2': 33,
'B3': {'D1': [7197678218696032963,
16401326702798230162,
9599574035771426920,
13240406585572827424],
'D2': -2094654713,
'D3': 95},
'B4': 0.19260462777258125,
'B5': 124,
'B6': 14413276289789143498,
'B7': [-40, 127, -109, 36, 83]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x54 0x44
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | int16 |
3 | uint16 |
4 | uint64 |
5 | uint8 |
6 | Адрес (uint32) структуры B |
7 | Массив структур C, размер 3 |
8 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint32) и адрес (uint32) массива char |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int8 |
3 | int8 |
4 | Массив int16, размер 8 |
5 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | float |
4 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'NTD\x00\x03\x00\x00\x00~%\xa8\xeb\xf5C\t\x02\x1b\x02Y\xa7,\xfd\x00\x00'
(b'\x00\x83Z\xf6\xca?{^y\x84\xdf\xff\x81\xa8\x0cx\xf7\x81S\xf6\xab\x94\xf9{'
b'"\x85\x12\xc5\xca\xe4`\x83\x8ez\xb6\xd5:\xa7l\xc1\xdb}\xfe\x92F\xfe\xde\xde'
b'f|\x93\xdfx\xbf\x7fL>\x81\x9d\xe6;S\x00\xb7\x00~k\xd4\xfd\x0b\xec"\xa5!\xddN'
b'\'\x96\xa7\x98\xb8,\xa8\xb2\xab\xbd\xd0\xaf\xe4{y\xb8\xc9=\xf1S"\xbfH\xbb'
b'w?sziss\x0b|\x03\xcbq$\x88U\x00\x00\x00\x02\x00\x00\x00\x81')
Результат разбора:
'A1': 'szi',
{'A2': 9640,
'A3': 60405,
'A4': 4830394390358370092,
'A5': 253,
'A6': {'B1': 827540603840792661, 'B2': 'ss'},
'A7': [{'C1': 1526123071,
'C2': 123,
'C3': 94,
'C4': [31108, -8193, -32344, 3192, -2175, 21494, -21612, -1669],
'C5': 2487415009913888899},
'C1': 2390406869,
{'C2': 58,
'C3': -89,
'C4': [27841, -9347, -366, 18174, -8482, 26236, -27681, 30911],
'C5': 9172775267467672403},
'C1': 11993214,
{'C2': 107,
'C3': -44,
'C4': [-757, -5086, -23263, -8882, 10134, -22632, -18388, -22350],
'C5': -6071467268754409032}],
'A8': {'D1': 201,
'D2': 0.11783434450626373,
'D3': -0.7841104865074158,
'D4': 63}}
Пример 2
Двоичные данные:
b'NTD\x00\x04\x00\x00\x00~\xa7\xda\xf9Wql\x11\x17!\xcb\xa5ZE\x00\x00'
(b'\x00\x84\x03p\x92w\xcf\x88\x93\xda\x0f\x93\xa7\x1b\xc7;[B\xbe\xdb\x0f<\xeag'
b'f\x8e\xcc)\xe9\xa1\xd2\x01\x88\x19\xa8$\xd2`\xdc?\x87FK5j#7\xd8\xa8/\xe6\x8d'
b'\x14\xac\xdd\xa4\xf9\xac\xc1+\xaa8\x8a6EV\xe7Q\x8fS\xa2D\xe5?\xff\x8c-gC\xb8'
b';\xbc\xf9\xf8\x11OVvs.\xd0d\x91\xbfM\x89d\xbe!${kbkjspb\xf6\x9e\xd1\x16'
b'\x11\x85\x0b&\x00\x00\x00\x02\x00\x00\x00\x82')
Результат разбора:
'A1': 'bkjs',
{'A2': -22566,
'A3': 63831,
'A4': 8172926214819521882,
'A5': 69,
'A6': {'B1': 17770871072363973414, 'B2': 'pb'},
'A7': [{'C1': 57709175,
'C2': -49,
'C3': -120,
'C4': [-27686, 3987, -22757, -14533, 23362, -16677, 3900, -5529],
'C5': 7390068518946984449},
'C1': 2283382820,
{'C2': -46,
'C3': 96,
'C4': [-9153, -30906, 19253, 27171, 14296, -22481, -6515, 5292],
'C5': -2475579374776374728},
'C1': 2318812502,
{'C2': -25,
'C3': 81,
'C4': [-28845, -23996, -6849, -116, 11623, 17336, 15292, -1544],
'C5': 1247310688543494244}],
'A8': {'D1': 145,
'D2': -0.80287766456604,
'D3': -0.15736572444438934,
'D4': 107}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x4e 0x4f 0x4e 0x83
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | uint64 |
3 | Адрес (uint32) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint16) и адрес (uint32) массива int32 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint16) и адрес (uint32) массива структур D |
3 | uint8 |
4 | Адрес (uint16) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | int64 |
3 | int8 |
4 | Массив int16, размер 6 |
5 | Массив int16, размер 4 |
6 | Массив uint64, размер 2 |
7 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint16 |
3 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b"SNON\x83\x00'\xcaWkk\x08\x08\x92\xc2\x00\x00\x00\xa0\xb6`*1\xa4"
(b'\xcf\xcd\x8f\xbd\x1e;\xed\xe9\xb7\xc7\t]=\xdfn\xca\xce\xf5R\x00'
b'\x05\x00\x00\x00\x13\xbe\xf1\xf5\xd3\xf9^\x90[\xe9\xdbj\r]mtK\x96Jc1m\xc64'
b'\xf4l\xe4\xda\x9cI\xc6\xdcQ,\x1cST\xcc\x96\x15^\xbfIm\xb1\xd3\xc7\xfe'
b'\xa7\xef\x83\x8e\xdd\xed\xbfB7R\xcfnw\xebs\x0f-G\xf4d\x8e\xfc\x8b\xc2'
b'\xf8\xd1\x17E\x0f\xa9\x1f\x1b0q\x80\xc7\xd0\x0f\x7f\xeeb\xfb\x08\x80'
b'\xcb\xe8<\xe2\x86\xd1\xdb\x970l\x93\xacIm\xaa6[F0\xa1\xbf\xeaH\xc5C\x8b\x9a.'
b'\x00\x02\x00\x00\x001\xa6\x00\x9b')
Результат разбора:
'A1': {'B1': 3402560850,
{'B2': [-1235211727, -1529885297, -1122092051, -373831927, 1564335982]},
'A2': 14580240426075722434,
'A3': {'C1': -0.8213831252331312,
'C2': [{'D1': -0.47257861495018005,
'D2': -477785786014799347,
'D3': 93,
'D4': [28020, 19350, 19043, 12653, -14796, -2964],
'D5': [-6950, -25527, -14628, 20780],
'D6': [2041068293797011135, 5291080660381771759],
'D7': 2207178221},
'D1': -0.7586566209793091,
{'D2': -3499728007288902329,
'D3': -12,
'D4': [25742, -885, -15624, -12009, 17679, -22241],
'D5': [6960, 29056, -14384, 3967],
'D6': [17177567942683650108, 16322964640515517587],
'D7': 2890493354}],
'C3': 166,
'C4': {'E1': 54, 'E2': 23366, 'E3': 12449}}}
Пример 2
Двоичные данные:
b'SNON\x83\x00\x1bm\xb7\xca\xec\xfb5\xe6G\x00\x00\x00\x94}r\xe0e\x96\x81\xea&)'
(b'_\x9c\xa2\x00\x02\x00\x00\x00\x13\xbfvL\x85\xe7gp!\xb1\xd3\xa0'
b'\x8b\x94\xf9\xe9&\x12\xd8\x88\xc5w\xf9\xca\xcf\xba\n\xe2\tdE;ro\xcc='
b'\x8f\xd0f\x10~\x02}Mq\x0c\x95jG\xcd\xd3DD\xcb?\x11SN1\x9a\x9b\x18&t'
b'\x8a\x92\xa4"\x99X\xe5\x89\xa1NH\x92q\xf8I\xa9]\x9c\x87\xc5\xd3\x99\x15['
b'\xbc\x1f\xec\x95\xed_Z"\xdc\xe9\xf4q\xba\xfd;\xe5\x99\x9eCI*\x80\'\xf9'
b'\xbf\xe0e\xb6\x15\xe5R\x1c\x00\x02\x00\x00\x00%\x99\x00\x8f')
Результат разбора:
'A1': {'B1': 694131874, 'B2': [2104680549, -1769870810]},
{'A2': 7906010790047901255,
'A3': {'C1': -0.5124159267093691,
'C2': [{'D1': -0.9621050953865051,
'D2': -1772324638327332725,
'D3': -108,
'D4': [-1559, 9746, -10104, -14985, -1590, -12358],
'D5': [2786, 2404, 17723, 29295],
'D6': [14717077282544975362, 9028997126808029133],
'D7': 3544466635},
'D1': 0.56767737865448,
{'D2': 3574339782298602130,
'D3': -92,
'D4': [8857, 22757, -30303, 20040, -28047, -1975],
'D5': [-22179, -25465, -14893, -26347],
'D6': [6610193454061150042, 2512139928255266107],
'D7': 3852049987}],
'C3': 153,
'C4': {'E1': 73, 'E2': 10880, 'E3': 10233}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x46 0x59 0xb2
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint8 |
3 | int16 |
4 | Адрес (uint32) структуры B |
5 | int32 |
6 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | Массив структур D, размер 2 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | float |
3 | double |
4 | int8 |
5 | uint8 |
6 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | Массив char, размер 2 |
4 | uint8 |
5 | Массив uint64, размер 5 |
6 | Размер (uint16) и адрес (uint32) массива uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PFY\xb2\xc6\xd3\x16\xbd\r\xec(M\x00\x00\x00T$\xc3YSh^\xa2<\xd5\xa6\xe5\xbf'
(b'oq\xefv\xb0~Nh[!m\x01\xc7kZ\x18\xdf\x1bV\xc5\xa9\xd5\xaa;I\xc4\xa6\x81'
b'\xd5!\x9b|\xb6\nB\xf5\xc9\xd16\xea(\x9e#\x06\x00\x81\x00\x00\x00W%*?l2\xf2'
b'>\xecW\x93\xbeXy\xb1\x0f\x01\x88\xc8?\xe4t&}\x89_4\xc1\x87\xbd\x97'
b'\xcc\xf7\xbe\xe0\x90\xda1_\xa5\xaf\xbf\x1f\xa62\x06N\xb8QU_\xf7\x90\xa7\xa7'
b'T\xf5l')
Результат разбора:
'A1': 3172389830,
{'A2': 13,
'A3': 10476,
'A4': {'B1': {'C1': 0.664632260799408,
'C2': [{'D1': 0.47304093837738037,
'D2': -0.28778016567230225,
'D3': 0.19165051714203218,
'D4': -28,
'D5': 116,
'D6': 1602845990},
'D1': -0.06628647446632385,
{'D2': -0.48398277163505554,
'D3': -0.06180856212202612,
'D4': 31,
'D5': 166,
'D6': 3092121138}]},
'B2': -144747183},
'A5': 1505961044,
'A6': {'E1': 83,
'E2': -0.6766153511297945,
'E3': 'oq',
'E4': 239,
'E5': [7863666927917248630,
6204798207322212097,
12016810226349353413,
4758816602565236097,
2566533824054938101],
'E6': [144, 167, 167, 84, 245, 108]}}
Пример 2
Двоичные данные:
b'PFY\xb2\xa9\xdfr\xa3h\xd5\x10M\x00\x00\x00=\xf7Q\xe9\x03\x90\x0cV\xff'
(b'[\xa8\xce\xbfeo\xb9w\x02\xe7j.\xc5Yb\xcfv\xd4\x8a>(\x10<\x81\xcb\xf7\xee\x16'
b'd\x82\x0fL{%*\x11\xba\xac\xe7\x9a)\x1a\x85P\x18\xc0I\x05\x00\x81\x00\x00'
b'\x00\xf1W\xb5>\x84\x07\x00?\nX\xe3\xbe\xd6\xbe\xbf\x1e\xd7\xab\xe5'
b'\xbf\xd1*\x0b\x1c\x1c$V|}>7<g\xbf\xe4\x01#8\xc7\x9a\xd8?\x96]\x11vv'
b'T\x9d\xdb6\x912X6|\x11')
Результат разбора:
'A1': 2742214569,
{'A2': 104,
'A3': 4309,
'A4': {'B1': {'C1': 0.3541865646839142,
'C2': [{'D1': 0.5001146793365479,
'D2': -0.4440310597419739,
'D3': -0.6772266007009999,
'D4': -47,
'D5': 42,
'D6': 605821963},
'D1': 0.24754461646080017,
{'D2': -0.9032625555992126,
'D3': 0.3844469116411615,
'D4': -106,
'D5': 93,
'D6': 1417049617}]},
'B2': -1858675811},
'A5': -380504259,
'A6': {'E1': 3,
'E2': -0.23951292007049974,
'E3': 'eo',
'E4': 185,
'E5': [7086912291796877943,
4328003490985309903,
1117565707202579329,
16693922501639895884,
5314274294406719898],
'E6': [50, 88, 54, 124, 17]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x4d 0x4d
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | uint16 |
3 | Массив адресов (uint16) структур C, размер 3 |
4 | Адрес (uint32) структуры D |
5 | Массив char, размер 2 |
6 | float |
7 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint8 |
3 | double |
4 | int16 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | Размер (uint16) и адрес (uint32) массива int16 |
4 | uint64 |
5 | Массив int32, размер 8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'FMM\x10\xda?\x07\x8f\x8d\xd7O\x00Q\x00V\x00[\x00\x00\x00`yx?w\x83\xca\xb1'
(b'#JJ>\xfai2\x00\x03\x00\x00\x00la\xfa\xba\xf1;\x96\xc5\xaa"\x1f\x84'
b'\xdab\xdc\xf5\x9a\xd9\xf8U\x9bq\xb5\xbf\xaal8\xdd\xfdM\x18\xc3\x19}YJ'
b'\x08s\n\xd212\x08*\xaf\nO\xa5g\xa2{\x08\xdaP\xf4\x87\xd9\xfe\xbf\xe2'
b'\x10\x1e\xa1\xe0n\xaa\x96\xe6\xb5F`D[G')
Результат разбора:
'A1': {'B1': 4314, 'B2': 0.5295341610908508},
{'A2': 55119,
'A3': [{'C1': 50, 'C2': 137015050},
'C1': 79, 'C2': -1519934853},
{'C1': 8, 'C2': -632228729}],
{'A4': {'D1': 217, 'D2': 254, 'D3': -0.5644677316335749, 'D4': -26906},
'A5': 'yx',
'A6': 0.9668546915054321,
'A7': {'E1': 2971880010,
'E2': 0.48908382654190063,
'E3': [-19130, 24644, 23367],
'E4': 7060160911106295210,
'E5': [572490970,
1658647962,
-638036581,
1907736490,
1815666173,
1293468441,
2103003656,
1930089009]}}
Пример 2
Двоичные данные:
b'FMMM\t\xbd\xd8>\xcc,\xce\x00Q\x00V\x00[\x00\x00\x00`zy\xbf2\xd7C\xc7'
(b'\xc1\x1c\xc9\xbf\t\xb1V\x00\x02\x00\x00\x00l\x0f\x8a\xa1\xcc\xc8\xc1['
b'\xd1a\xbb\xd3\xc4f@\xc8P|Ba\xbf>\xe2\x9d\x18\xfe\x8e\x1d\x9b4\x82\x7f'
b'\xff\xedur\xdf\xcc\x0b|o\xe3\xc6A\xe5\x06\xe5\xb2(\x8d\xd5\xdb\xf2*K\x92'
b'l\x00?\xe7\xd3.\xbe\xa2\xc7.$R\xcb\x9e$\xd2')
Результат разбора:
'A1': {'B1': 19721, 'B2': -0.10558852553367615},
{'A2': 11470,
'A3': [{'C1': -29, 'C2': -968760058},
'C1': -27, 'C2': -1305965099},
{'C1': -37, 'C2': -232109166}],
{'A4': {'D1': 108, 'D2': 0, 'D3': 0.7445291255337219, 'D4': 9298},
'A5': 'zy',
'A6': -0.6985971331596375,
'A7': {'E1': 3351321801,
'E2': -0.5378621816635132,
'E3': [-13410, 9426],
'E4': 1119885358268505041,
'E5': [1639699396,
1715521616,
2084725183,
1055038744,
-24240741,
880967679,
-311069985,
-871662481]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x50 0x47 0x57 0x54 0x37
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Массив char, размер 3 |
2 | Структура B |
3 | Адрес (uint32) структуры F |
4 | int16 |
5 | uint16 |
6 | Размер (uint16) и адрес (uint32) массива uint8 |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | uint64 |
4 | Адрес (uint16) структуры C |
5 | Массив структур D, размер 2 |
6 | Массив int64, размер 4 |
7 | Адрес (uint16) структуры E |
8 | int64 |
Структура C:
Поле | Описание |
---|---|
1 | int8 |
2 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | uint8 |
3 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | uint16 |
4 | Размер (uint16) и адрес (uint32) массива int16 |
Структура F:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | int32 |
4 | int16 |
5 | int32 |
6 | float |
7 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'PGWT7sqp\xbf\xea=W\xbclCr\x1c8#8\x13\x81\xf3\xddS\x00aE3\x87@\x8d'
(b'\xc5\xfcM\x07\x938\xf9\x1a\xaaz\xff\xde\xf6jH\xe4\xbdXP\x87\x8f\x9b4\xb5'
b'\x18\xac\xd9\xcd44\x82\xa5\xe9\xb6\x0f&\xa1\xd7\xc4\x1c\xa1\x00t\xef'
b'v\xd5#\x7fG\x95\xb5\x00\x00\x00\x88\xe4\xe9\x84q\x00\x06\x00\x00\x00'
b'\xa7,Y\xcd\x96\xc1\xdd\x1b\xca\x7f[X\xf1\xa0\x8an\x85\t\xb1\x07\xae\x99\x08k'
b'\xca%#\x027\x9c\n\xda\x8e#\x00\x05\x00\x00\x00jB\xbf\xa3\xae\xf7d\x13A'
b'@"\xe1j\x07\xd1Y\xb3\xdb3\x85\xbfHt8\xa2\x8a\xd0:c\x11\xa5\xc8\x86'
b'\xaai\x00\x87i')
Результат разбора:
'A1': 'sqp',
{'A2': {'B1': -0.8199881248602721,
'B2': 28,
'B3': 4045138546744614227,
'B4': {'C1': 44, 'C2': 6470993998983711359},
'B5': [{'D1': 1161004864, 'D2': 141, 'D3': 50684},
'D1': 1292342072, 'D2': 249, 'D3': 6826}],
{'B6': [8863047741614908605,
6363735324328506648,
-5991532205136763415,
-5327997357604463455],
'B7': {'E1': -5865647780627406078,
'E2': 932973274,
'E3': 36387,
'E4': [23384, -3680, -30098, -31479, -20217]},
'B8': -1191530702956948043},
'A3': {'F1': 66,
'F2': -0.03844426247235555,
'F3': 585198087,
'F4': -11943,
'F5': -1277480059,
'F6': -0.7830233573913574,
'F7': -6734341343590373944},
'A4': -6935,
'A5': 33905,
'A6': [134, 170, 105, 0, 135, 105]}
Пример 2
Двоичные данные:
b"PGWT7bdg?\xee\xaf\xc5vf\n\xb2NzD\x85\xbeL'\xd7\xff\x00aa\x83o\xe4y"
(b'\xf2\x8a\xee\x04\x8c\xbd\x11\xde\xa9\xd6K\x93\x1e\xdaO\xc3\xc1\x03\xfd\x8a'
b'\x8c\xc3i\xc6\xd7\x83\xe5\x00^^\x93\x83\x16\x0b\x89N\x08&c\x03P\x00t\xd3'
b'[7\xac\x0eL\xe3\xc4\x00\x00\x00\x88\x96\xdd\x98\x9a\x00\x03\x00\x00\x00'
b'\xa7\x10d\xd8\x0e\x15\xe6Y\\\xde\x03\xd4\x90\x8f\x14\x0fqX\xae\xfc'
b'\r\x86&\xb2B3%\xaf\xd7\xeaI$J\x08\x00\x05\x00\x00\x00j\xa8?\xe4v'
b'\xdd\xf4\x9b\xd7\x98\x02\xb8\x1e\x1ee\xec\x03\x97#\xa6>&\xccz\x92'
b'\x88\xda\xc1\x936\xffuk\x0bd')
Результат разбора:
'A1': 'bdg',
{'A2': {'B1': 0.9589564621422453,
'B2': 78,
'B3': 8810313823411492863,
'B4': {'C1': 16, 'C2': 7266573485984013534},
'B5': [{'D1': 1636003812, 'D2': 121, 'D3': 62090},
'D1': -301691715, 'D2': 17, 'D3': 57001}],
{'B6': [-3005146565618711615,
287538288400123607,
-8942741079760600298,
831281403137295184],
'B7': {'E1': 974508916428973487,
'E2': -672511708,
'E3': 18952,
'E4': [980, -28529, 5135, 29016, -20740]},
'B8': -3216916296712264764},
'A3': {'F1': 168,
'F2': 0.6395101335062803,
'F3': 45620766,
'F4': 26092,
'F5': 60236710,
'F6': 0.16288939118385315,
'F7': -7887814222406025355},
'A4': -26915,
'A5': 39066,
'A6': [107, 11, 100]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x52 0x4a 0x47 0x48
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | double |
4 | Адрес (uint16) структуры B |
5 | double |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | double |
3 | Размер (uint16) и адрес (uint32) массива структур C |
4 | int16 |
5 | Адрес (uint32) структуры D |
6 | double |
7 | Массив float, размер 5 |
8 | uint64 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива double |
2 | Размер (uint16) и адрес (uint16) массива int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'BRJGH\xb2:\xd6~\xe6?\xd1w0\xdbv\xe1,\x00<\xbf\xef\x1c\xdf\xb5N\x15p'
(b'\x7f\x85:\x01\x16\x92?\xdaSk\x1c\x7fZ\x98\xbf\xe0\xbe\xafw\xbe'
b'\x90\x82\xdc\xc7\x00\x02\x00"\x00\x02\x002btospilj?\xe5G\x9bG\xa0\x19@'
b'\x00\x02\x00\x00\x00\x1c\xf1\xc1\x00\x00\x004\xbf\xbeP\xde\x82\xad\xaf\x80'
b'\xbe\xaa\x86\x07?.\xe0\r?K\xc2\n?+\x14\xd8>\xa9\xe1\xafO\xab,`\\x\xe8\x86')
Результат разбора:
'A1': 178,
{'A2': 0.0016364722978323698,
'A3': 0.2728998320776721,
'A4': {'B1': 'btospilj',
'B2': 0.664991035359698,
'B3': [{'C1': 32645, 'C2': 58}, {'C1': 278, 'C2': 146}],
'B4': -3647,
'B5': {'D1': [0.4113414552970567, -0.5232770289189974],
'D2': [-36, -57]},
'B6': -0.1184214657820899,
'B7': [-0.3330537974834442,
0.6831062436103821,
0.7959295511245728,
0.6682868003845215,
0.3317999541759491],
'B8': 5740730942393739398},
'A5': -0.9722746411431853}
Пример 2
Двоичные данные:
b'BRJGHa?\x141\xdd?\xe8<\xa5B\x7f\x91\xf4\x00=?\xe5\xebJ\x1a\x83B&\xcf\xfcXS'
(b'#\xdf\xbf\xc3\xfdb\xd0@\x9f\xa8\xbf\xe0\x98D\x1a\xad,08m6\x00\x02\x00'
b'"\x00\x03\x002yluchkvw\xbf\xe4\x90#\xa68y\x86\x00\x02\x00\x00\x00\x1c/'
b's\x00\x00\x005\xbf\xc4\xba!es\x930\xbe\xaf\xe1\x02>\xdc9\xc1?x\xb1'
b'\x8e>\x9c\n\xf3=d\x1b@\xe8\x02\xfe\xcb\x95\xe2EX')
Результат разбора:
'A1': 97,
{'A2': 0.5788858532905579,
'A3': 0.7574030207438782,
'A4': {'B1': 'yluchkvw',
'B2': -0.6425951239105394,
'B3': [{'C1': -12292, 'C2': 88}, {'C1': 21283, 'C2': 223}],
'B4': 12147,
'B5': {'D1': [-0.15617022675109848, -0.5185871621155282],
'D2': [56, 109, 54]},
'B6': -0.1619302506798248,
'B7': [-0.343513548374176,
0.4301281273365021,
0.9714592695236206,
0.3047710359096527,
0.05569005012512207],
'B8': 16718204917099152728},
'A5': 0.6849718587710114}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x47 0x51 0x48 0x50 0x17
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | int32 |
3 | Адрес (uint16) структуры B |
4 | uint32 |
5 | int16 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 5 |
2 | float |
3 | int8 |
4 | int32 |
5 | Массив адресов (uint16) структур C, размер 6 |
6 | int16 |
7 | Структура D |
8 | float |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint16, размер 3 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | int16 |
2 | int64 |
3 | Размер (uint16) и адрес (uint32) массива uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'GQHP\x17\r$\\\xae\xc4dW\x00\xd8\xb7\xc8\x8a?\x03\xd7\xdc5R\xf6\xfc\x8d\x0f+'
(b'\xbf5\xf7\xfb\x93\x85\\\xd4\x936\xbf\x1f!Z\xd3Z\xad{\x17>?2\xdf\xcf'
b'\x9f\x9f\x84\x87\xdf\x9b=\xfd\x1a\xddb\xddsO\xd3G?\xf8\x16\x93\x13Q\xcb\r'
b'\x87\x92\xbdu^\x02\xc7\xe6e\xc4vnrywt\xc7z9?\x85\x9cP\xbc\xdf\x13\x00\x1d'
b"\x00'\x001\x00;\x00E\x00\x8aW\xdf\xcd\xbb\xab\xd0\x06\xe5%\xfe\x87\x04\x00O"
b'\x00\x00\x00\xac\xb9\xfd>')
Результат разбора:
'A1': 9229,
{'A2': 1690611292,
'A3': {'B1': 'nrywt',
'B2': 0.7245296835899353,
'B3': -123,
'B4': -541306724,
'B5': [{'C1': [56535, 21045, 64758], 'C2': -0.6682060360908508},
'C1': [63285, 37883, 23685], 'C2': -0.7131931781768799},
{'C1': [8479, 54106, 44378], 'C2': 0.7425457835197449},
{'C1': [57138, 40911, 33951], 'C2': 0.07610993832349777},
{'C1': [6909, 25309, 29661], 'C2': 0.7805680632591248},
{'C1': [5880, 5011, 52049], 'C2': -0.07154665142297745}],
{'B6': 22410,
'B7': {'D1': -12833,
'D2': -8647432568912696389,
'D3': [24181, 50946, 26086, 30404]},
'B8': 0.49555718898773193},
'A4': 2328410072,
'A5': 831}
Пример 2
Двоичные данные:
b'GQHP\x1793\x9c]\xc2RS\x00\x07\x93d\x8d\xa3Q\x995\xdf[\x7f\xe0\x1ffP'
(b'?q\xae\x98\xc9\xfc\xe4\x90\xd2t\xbf\xe2c+\xa8\xaf\xef\x17a\xba\xbe+/\xa6'
b'\x19\xad\x9e\xdb80\xbf\xa8:\xdaB@\t)pH?\x9b\xf8\x92\xe3%4k\xdbq?\xd3'
b'\xf4R\xfezhibv\xeb\xd0\xf5\xbeK/\xdb\xc8"\x13\x00\x1d\x00\'\x001\x00;\x00E'
b'\x00\xc32##\x9e\xfd\x9d-]\xbc\xd1\xdf\x02\x00O\x00\x00\x00\x99\x9a\x82=')
Результат разбора:
'A1': 13113,
{'A2': 1388469660,
'A3': {'B1': 'zhibv',
'B2': -0.4801095426082611,
'B3': 75,
'B4': 583588655,
'B5': [{'C1': [13721, 23519, 57471], 'C2': 0.814058244228363},
'C1': [44657, 51608, 58620], 'C2': -0.9563379287719727},
{'C1': [25570, 43051, 61359], 'C2': -0.36402198672294617},
{'C1': [12075, 6566, 40621], 'C2': -0.6883675456047058},
{'C1': [15016, 17114, 2368], 'C2': 0.7829614281654358},
{'C1': [63643, 58258, 13349], 'C2': 0.9447543025016785}],
{'B6': 12995,
'B7': {'D1': 8995, 'D2': -2318865224735785570, 'D3': [62675, 65106]},
'B8': 0.06377143412828445},
'A4': 2372178695,
'A5': 20899}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x55 0x59 0x4e 0x1e
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур B |
2 | uint8 |
3 | uint16 |
4 | int32 |
5 | Адрес (uint16) структуры C |
6 | double |
7 | Массив uint64, размер 8 |
8 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 5 |
2 | int32 |
3 | Размер (uint16) и адрес (uint32) массива int8 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | float |
3 | Размер (uint16) и адрес (uint32) массива float |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
3 | double |
4 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HUYN\x1e\x00\x00\x00\x02\x00\x00\x00i\xa6\x83-\x02\xa1\xc6Q\x00\x8f?\xec'
(b'\xf1lb*6\xf8I\x9aZk\xd1\x10|MR\n\xa1%\xed7\xbfV\x12\xb9\xac\x04\x16\xd8'
b'S\x14\xa3;\xd5\xe6\xa1\x9a\xae\xe9\x9apb\xedR\x9e\xc9\xfe\x0f\x80'
b'\xd1\x87\xc87\xf7\x0e\xea\xac\xdfu/\xd2}\x1d\x05\xe1\x0b\x07&\x9d'
b'\xc2+\x00\xa1\x00\x7f\xbb\xd9\xf4\xff\xb4|zlbubb\xad\xf4\xc8\x1b\x00\x03'
b'\x00\x00\x00`gtati\x8bZ:E\x00\x06\x00\x00\x00c\xbf~aJ\xbfvG\xec?'
b'\xe4\x94\x14;F\xe6\xe2=\x89\x8c\x03\x00\x02\x00\x00\x00\x871w<\xec9\xd3?'
b'\xd2\x11\x86\xc9\x1f\x98p\xbe\xb8\xed\xfc')
Результат разбора:
'A1': [{'B1': 'lbubb', 'B2': -1376466917, 'B3': [0, 127, -69]},
{'B1': 'gtati',
{'B2': -1957021115,
'B3': [-39, -12, -1, -76, 124, 122]}],
'A2': 166,
'A3': 33581,
'A4': 44156497,
'A5': {'C1': 0.643076053405107,
'C2': 0.06716158241033554,
'C3': [-0.9936720132827759, -0.9620349407196045]},
'A6': 0.9044706265719631,
'A7': [5303650930297699405,
5911714645142912854,
1349298696937296660,
11762230038338645737,
11128503450665404926,
1117123088697784078,
16910136395275861277,
423631965290086955],
'A8': {'D1': 12663,
'D2': 0.028836166486144066,
'D3': 0.2823197330566307,
'D4': -1095176708}}
Пример 2
Двоичные данные:
b'HUYN\x1e\x00\x00\x00\x02\x00\x00\x00fw-\x10\x18\x14}c\x00\x8c?\xe9\xcfu!\xa4'
(b')pvc\xce\xbf\xd5\xa4z\x16D\xb3H\xe1\xd1P\xa6\xed\x10\x04C,F~\xa7q\xe5"'
b"\xc1E\xf6\\\xa5\xdbG\x8f\xe3C\x08\xb0\xef\xef*'\x15{\xc4\xe1 \x87\xe2%"
b'\xfa?3\x81B%U\x0b\xa2G\x13\xb2!\xb6\x00\x9eR\xa2\xf2%\xef\xadsesvq4'
b'W\xae\xce\x00\x03\x00\x00\x00`fqedc\xee\xa8%\xfb\x00\x03\x00\x00\x00c'
b'\xbc\x14\xbd\x9c<\r@\x13\xbf\xe5\xfe+q\x18o\xa6=\x8f\xdcn\x00\x02\x00\x00'
b'\x00\x84\xfd\x1b\xbe\x87\xe1 ?\xeb.P\xc5\xbc\xd0\x067\x95l\xf5')
Результат разбора:
'A1': [{'B1': 'sesvq', 'B2': 878161614, 'B3': [82, -94, -14]},
{'B1': 'fqedc', 'B2': -290970117, 'B3': [37, -17, -83]}],
{'A2': 119,
'A3': 11536,
'A4': 403996003,
'A5': {'C1': -0.6872765740295008,
'C2': 0.07024465501308441,
'C3': [-0.009078409522771835, 0.008621233515441418]},
'A6': 0.8065744072967345,
'A7': [8530889442488252950,
4950380550126872301,
1154121261954017137,
16510971690123830747,
5156589975410634735,
3037420095012937863,
16295705976064000549,
6128170144124510646],
'A8': {'D1': 64795,
'D2': -0.26538944244384766,
'D3': 0.8494037496625431,
'D4': 932539637}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x4b 0x45 0x59
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива адресов (uint16) структур B |
2 | Размер (uint32) и адрес (uint32) массива char |
3 | Структура C |
4 | uint16 |
5 | uint16 |
6 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | float |
3 | double |
4 | Размер (uint32) и адрес (uint32) массива float |
5 | int8 |
6 | int64 |
7 | Массив int64, размер 6 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'UKEY\x00\x02\x00%\x00\x00\x00\x04\x00\x00\x00)\xd5rs\x15erj,\x1f\x00\x00\x00'
(b'9\xfbX\xf6b\xc9\x96<\x93\x00\x1d\x00!ztie\xbe\xf4\xbb\x8d>\xa1\x89'
b'\x10\xbe\xfc\xd7\xc3\xe1>\xf1Yn\xbf\xb9\x9f]\x0f\t\xd4`\x00\x00'
b'\x00\x03\x00\x00\x00-R\xc6\x83G\xfdL\xba\x86W\xfe6\xfc\xe5Q.nn&\x8f@t\xd4'
b'\x1fZb\xfbD\xf2\xd8NLe\x9ci\x14\xf4\xa6\x1f\xbe#_-\xad\xd6\x9c\x85\xa6U\x1fV'
b'[9\xa7\xaa\x85\xb3\x9c')
Результат разбора:
'A1': [{'B1': -1192, 'B2': -2462}, {'B1': -13930, 'B2': 15507}],
{'A2': 'ztie',
'A3': {'C1': 213, 'C2': 1920144741},
'A4': 29290,
'A5': 11295,
'A6': {'D1': 225,
'D2': 0.4713854193687439,
'D3': -0.10008794419430123,
'D4': [-0.4779933989048004, 0.31549882888793945, -0.49383363127708435],
'D5': 82,
'D6': -4142388079011133865,
'D7': [-128637477493772690,
2778510365630093922,
-340880660932827748,
7571945867850949471,
3291522870423213343,
6222630702425682844]}}
Пример 2
Двоичные данные:
b'UKEY\x00\x04\x00-\x00\x00\x00\x06\x00\x00\x005M\x19N\x8c\xedw\x97\x8a'
(b'\x0f\x00\x00\x00G\xe5\xb8\xcaM\x8c\xab\x10\xcdI\x1ap\xf6\nA\xe3'
b'\xbf\x00\x1d\x00!\x00%\x00)klvswl??ox\xbf\x10\xa2\xac\xbf%\xd2\x83\xfa'
b'?\x03\xbaU?\xe65\x92=+\x9e\xac\x00\x00\x00\x03\x00\x00\x00;\xc2\nC\xff'
b'\xe2\xa3\xe0\xb7\xf6\xb5E\x86e\xe44\x1b\x98\x97;sD\xed\x07\xc8G\x9c\x12\x10'
b'\xeb[\x02S\xf4\xa1\xd2\x99\xf9\x94\x93\xc2)L\xd9\x96[u\xd1\xa8k\xda\x943'
b'p:\x8b-\xf9')
Результат разбора:
'A1': [{'B1': -6728, 'B2': -13747},
{'B1': -29525, 'B2': 4301},
{'B1': 18714, 'B2': 28918},
{'B1': 2625, 'B2': -7233}],
{'A2': 'klvswl',
'A3': {'C1': 77, 'C2': 424578285},
'A4': 30615,
'A5': 35343,
'A6': {'D1': 250,
'D2': 0.5145619511604309,
'D3': 0.6940394587263277,
'D4': [0.7477946281433105, -0.5649821758270264, -0.6477434039115906],
'D5': -62,
'D6': 739716112695998454,
'D7': [-5384750007273120872,
-7549313610484823993,
-7200674251181763596,
-6786192391275298263,
5537622536391600235,
-2696473719776530951]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xb5 0x48 0x44 0x56
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | double |
3 | double |
4 | int16 |
5 | float |
6 | Массив структур B, размер 5 |
7 | double |
8 | Структура D |
Структура B:
Поле | Описание |
---|---|
1 | int16 |
2 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | Размер (uint16) и адрес (uint16) массива uint32 |
3 | int16 |
4 | int8 |
5 | uint32 |
6 | Размер (uint32) и адрес (uint32) массива uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xb5HDV\x00\x03\x00\x00\x00a\xbf\xb3Q.\x99\xf1~\xf0?\xd9L\xd1@n@\xd4 r'
(b'\xbf\x7f\xc9\xb7\x17E\xfa!\xd5SwM5\\\x889\x85\xc7\x18t\xd6\xf5\x0cq'
b'Ul\x1a\x11\xf5\xae\xeb\xdd=\x07?\xe95\xe7C\x07\x86\xe4}\xe9\x81\xbdK\x82'
b'\xaa\x1f\x00\x02\x00d\xde\xb8\xe9\xaa\x9bn\xd0\x00\x00\x00\x03\x00\x00\x00'
b'lfke\xa2\xd7\x0c"\xe5\xb9\xb0\xbb~\xe5\xc5/#A\xc9\xdd\x08\xa2[A(1\x01\x12'
b'\xe2}\x0e\x1f\x82\xbd\xed5')
Результат разбора:
'A1': 'fke',
{'A2': -0.07545748957044984,
'A3': 0.39531356136377593,
'A4': 8306,
'A5': -0.9991716742515564,
'A6': [{'B1': 5957, 'B2': {'C1': -1503, 'C2': -10925}},
'B1': 30541, 'B2': {'C1': 13660, 'C2': -30663}},
{'B1': -31289, 'B2': {'C1': 6260, 'C2': -10507}},
{'B1': 3185, 'B2': {'C1': 21868, 'C2': 6673}},
{'B1': -2642, 'B2': {'C1': -5155, 'C2': 15623}}],
{'A7': 0.7878300007980354,
'A8': {'D1': 9072925574330231327,
'D2': [2732002338, 3854151867],
'D3': -8520,
'D4': -23,
'D5': 2862313168,
'D6': [9143931424691309021, 622160033935851794, 16320216153160805685]}}
Пример 2
Двоичные данные:
b'\xb5HDV\x00\x02\x00\x00\x00a\xbf\xbe\xd3\xdb\x1a\xa2\xf1\xf0?\xe4\n\xe4t\xed'
(b'\xd2\xd0\xc2\xf9\xbdq9+\xa7vS\xdf\xed!\xb1{\xa3\x8a|3\xfc@G\x13^\x1c\x99\xf5'
b'\xb6\xee\xd6\xc4G\xed\x06\xb6\x9f\x8a?\x80\xb3(\r\xb2m\x00R\x98\xa2\\7\xe3'
b'h\xf1\x00\x02\x00cPrs\x9c\xc6\x1f\xdf\x00\x00\x00\x05\x00\x00\x00keh\x8c'
b"\x9e#u\xdc\x92\xa7\x06\xe7S\x94\xa0\x89\xee\xd6\xe4\x8f*'\x99\x02\xc2G}\xde"
b'\xf0_\\C\x98\x9a\xea\xe1\x1c\xa6\x8a\xe2\x85\xf9\t^\xa8\x86\xcd\xb5'
b'\x8c\\\xad')
Результат разбора:
'A1': 'eh',
{'A2': -0.12042016411118772,
'A3': 0.6263296397943012,
'A4': -15623,
'A5': -0.05889241024851799,
'A6': [{'B1': -22666, 'B2': {'C1': 21471, 'C2': -4831}},
'B1': -20101, 'B2': {'C1': -23670, 'C2': 31795}},
{'B1': -960, 'B2': {'C1': 18195, 'C2': 24092}},
{'B1': -26123, 'B2': {'C1': -18706, 'C2': -10556}},
{'B1': 18413, 'B2': {'C1': 1718, 'C2': -24694}}],
{'A7': 0.008154213827131773,
'A8': {'D1': 5951685424528451825,
'D2': [2359174005, 3700598534],
'D3': 20594,
'D4': 115,
'D5': 2630229983,
'D6': [16668830063058147044,
10316101434575308669,
16064444720706263786,
16221023073317812489,
6820849853724908717]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xaf 0x53 0x4d 0x58 0x47
, за которой следует
структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | int64 |
3 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива структур C |
2 | int64 |
3 | Структура D |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Размер (uint32) и адрес (uint32) массива double |
Структура D:
Поле | Описание |
---|---|
1 | Массив float, размер 3 |
2 | uint8 |
3 | int32 |
4 | int16 |
5 | Массив uint16, размер 6 |
6 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xafSMXGM\x00\x00\x00J\xd6(\x14@f\x1dI-.\xda2\xe4\xdcW\xbf\x865\xd0'
(b'\xbfp\xf0]\x0e\x99\x9d\xbd\xbf\\\x0c*S9+\xd8\xbf\x00\xf0v\xfe\x1d1\xca'
b'\xbf\xce\x01f\x93\x02\x00\x00\x00\x15\x00\x00\x00d\xbf\xf1H\x02\x00\x00'
b'\x00%\x00\x00\x00\x02\x00\x00\x005\x00=\xed\xaf|\xae\x1f&\xa1\xd6\xe4\xaf>d'
b'Wh?\x9d\x8aj?\xa6%\xe2S%\x89%0s?\xa2\xaf\x15}h\xfc^\xc51V\xbe\r\xe7\xe9\xf8'
b'\xc5\xfd')
Результат разбора:
'A1': {'B1': [{'C1': 2472935886,
{'C2': [-0.25326698957310456, -0.11568600273852936]},
'C1': 1223802724,
{'C2': [-0.37763817903050323, -0.204623936891835]}],
'B2': -6834740550211474115,
'B3': {'D1': [0.34354275465011597,
0.907583475112915,
0.9161775708198547],
'D2': 166,
'D3': 626254373,
'D4': 9609,
'D5': [29488, 41535, 5551, 26749, 24316, 12741],
'D6': 18286295545495273046}},
'A2': 5268479564495509066,
'A3': 853159469}
Пример 2
Двоичные данные:
b'\xafSMXGM\x00\x00\x00\xfc\x17\xb0V0\x1f\x1b\x19\xb0"\xcb\x18\xca\r\xfd'
(b'\xe5,]\xe3\xbf@\x06\x8b%\xc2\x84\xe5\xbf\x18/\xc0\x95i}\xda?\xa0hG'
b'+\x9d\x9a\xbc?s\x1b;A\x02\x00\x00\x00\x15\x00\x00\x00\xf2\x9f\x85'
b'\xfe\x02\x00\x00\x00%\x00\x00\x00\x02\x00\x00\x005\x00\x7f\xbd\x11\xb7%'
b'\xc3\xebc*\xb6\x00?\xdd\x85\xac>;)\x0c\xbf|\xdbbH\x1b\x8b3\x1c\xc4'
b'\xb9O\xf7\xfdA\x0e\xaf1A\x9f\x94T@\xf3\x10\xafr\x0f')
Результат разбора:
'A1': {'B1': [{'C1': 1094392691,
{'C2': [-0.6051239482844093, -0.6724558575880977]},
'C1': 4270170098,
{'C2': [0.41390456794828046, 0.11173422152151824]}],
'B2': 7200062996034469247,
'B3': {'D1': [0.5027796030044556,
0.33695879578590393,
-0.5475041270256042],
'D2': 124,
'D3': 457728731,
'D4': 13195,
'D5': [50204, 20409, 65015, 3649, 12719, 40769],
'D6': 1113144545249350804}},
'A2': 1809073967792658428,
'A3': 415965872}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x4e 0x56 0xde
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | float |
4 | Массив char, размер 8 |
5 | int8 |
6 | Структура B |
7 | Массив int16, размер 3 |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | double |
3 | double |
4 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур D |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | float |
Структура D:
Поле | Описание |
---|---|
1 | double |
2 | int32 |
3 | int64 |
4 | Размер (uint32) и адрес (uint32) массива int8 |
5 | uint32 |
6 | int64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'SNV\xdeB\xeb\x87Xc\xbeN\xf9\x83apwubqdrs\xe9\x8d\xbfd\x8a-?\xe6#\xd0'
(b'\t`\xcf\xba\xbf\xecGh\xe5w\x9f\xaa\x00\x00\x00\x03\x00\xbc\x0c\x0e'
b'\x8f\x98\x07\xa39\x81\xb6\x19\xe8\xbf\xe2`{\x05\xf5v\x18l`\xe1\xa8\x8aj\xdc'
b'>.\x910d\x00\x00\x00\x05\x00\x00\x008!\xd0\xf7E\xa0}!\xeb\xa4l\x8e@e\xa1\xf3'
b'?\xde\xfc\xfd\xe6\xb9~\x88\xb7\xf3\xc1\xfd%=3\xe4\x95+\xa8\x10'
b'\x00\x00\x00\x03\x00\x00\x00e\xb7\xf3<\xb5\xbc\xb8\xe2\xb9w\x16\xa1\xbc'
b'\xfdO!\xeb?\xed\x18\xa3\xd8\x8e\x1a|Uc\xc1tc\xd5\xf8\\\xbdg\x83W'
b'\x00\x00\x00\x04\x00\x00\x00\x90\xc3RpH}\x9d\x1f\xdf\xdb)\xa4\xa6\x00=\x00h'
b'\x00\x94')
Результат разбора:
'A1': 1122731864,
{'A2': 99,
'A3': -0.20212368667125702,
'A4': 'apwubqdr',
'A5': 115,
'A6': {'B1': {'C1': 59789, 'C2': -0.8927333950996399},
'B2': 0.6918716605346085,
'B3': -0.8837170106680692,
'B4': [{'D1': -0.5742774120696508,
'D2': 1818288552,
'D3': -8472717589316816796,
'D4': [57, -127, -74, 25, -24],
'D5': 567342917,
'D6': -6882307359592640960},
'D1': 0.48419139415452905,
{'D2': -1208761859,
'D3': 2683358009830909968,
'D4': [101, -95, -13],
'D5': 3086171317,
'D6': -4847875712669539908},
'D1': 0.9092578153220781,
{'D2': 1432600948,
'D3': 7193929056992592727,
'D4': [-3, 79, 33, -21],
'D5': 3276959816,
'D6': 9051425872399672486}]},
'A7': [3086, -28776, 1955]}
Пример 2
Двоичные данные:
b'SNV\xde\xf1\x1eXG^\xbfgSZqurhplryr\xda\x18\xbb\xc4R\xfe?\xe3\xba\xd6\xa07\n^'
(b'\xbf\xe8\xad\xeb4"\x18\xfc\x00\x00\x00\x02\x00\x91\xaf\x0c\xd8\xa1\xf6\xc9'
b'\xc1\xe2b\x9a\xbf\xe6T\x12\x01*\x91\x84$o\x08\x9f,\x15/hzZ\x94X'
b'\x00\x00\x00\x04\x00\x00\x008x\x98\xaf\xf7\x0fQ:\xddY2\x0f0o2\r\xd9'
b"\x04?\xc6O\x98\r~\xd2\xb8\tmt\xae\xb511\x8f\xef\x8a\x0e'\x00\x00\x00"
b'\x05\x00\x00\x00d\x94\x0esE\xe8n\xde{)3\xce\xd7\x00<\x00i')
Результат разбора:
'A1': -249669561,
{'A2': 94,
'A3': -0.9036155939102173,
'A4': 'qurhplry',
'A5': 114,
'A6': {'B1': {'C1': 55832, 'C2': -0.00599133875221014},
'B2': 0.6165574197005517,
'B3': -0.7712303179003182,
'B4': [{'D1': -0.6977624914912188,
'D2': 611256479,
'D3': 3176497237955613784,
'D4': [-63, -30, 98, -102],
'D5': 2023272439,
'D6': 1103728106041118512},
'D1': 0.17430401476817337,
{'D2': 158168238,
'D3': -5390472784716886489,
'D4': [111, 50, 13, -39, 4],
'D5': 2483974981,
'D6': -1698175388918493481}]},
'A7': [-20724, -10079, -2359]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4f 0x52 0x45
, за которой следует структура A.
Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | int16 |
3 | int16 |
4 | uint64 |
5 | Массив структур D, размер 3 |
6 | Массив uint16, размер 4 |
7 | Массив int8, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | Массив структур C, размер 5 |
2 | uint8 |
3 | Массив char, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | uint32 |
3 | uint8 |
4 | float |
5 | uint16 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | int64 |
4 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ORE\xcc\x88\xe4P\x82Q\xbf;\x83\x9e\x1f,.n\xb15\x89\x01\xbc\xbe\xfb'
(b'\xb2\xd7P\x06\xba1\xc0\x03\xaf\xbe\x8eX\xfb-\x94\xb8\xb6\xf0\xfbk'
b'\x88\xbf{\xde/\r\xbc\x07a\xfa;\x9c\x0e\xbe\x8a}0\x8f\x83~yzy\xa5'
b'\xbdY\xb8\x97\x8c\xb0\xbbSH\x88\x87\xa8\xc6k\xbf\xbfT6QY\x1e<4\xcd'
b'\xee\xfa&\xf6\xa4\xc0!/:>\xc3\xf5\xfb\xacx\xd8\xe5<\xaa\x0f\x1b\xa6\x97\xd5'
b'\x07T\x86\xbe\xd0;\xe8\xbd9@\x9bZC\x85>H\x1d\xa2\xe14\x1e\x9en\xc8^\x00\x94')
Результат разбора:
'A1': {'B1': [{'C1': 204,
{'C2': 2296664194,
'C3': 81,
'C4': -0.732477068901062,
'C5': 7980},
'C1': 46,
{'C2': 1857107337,
'C3': 1,
'C4': -0.023313377052545547,
'C5': 55120},
'C1': 6,
{'C2': 3123822595,
'C3': 175,
'C4': -0.2780226171016693,
'C5': 11668},
'C1': 184,
{'C2': 3069246315,
'C3': 136,
'C4': -0.9838590025901794,
'C5': 3516},
'C1': 7,
{'C2': 1643789212,
'C3': 14,
'C4': -0.27048635482788086,
'C5': 36739}],
'B2': 126,
'B3': 'yzy'},
'A2': -23107,
'A3': 22968,
'A4': 10920297515069245575,
'A5': [{'D1': 2831575999,
'D2': -0.8289538025856018,
'D3': 6421636316167862822,
'D4': -2396},
'D1': 3223400250,
{'D2': 0.38273605704307556,
'D3': -6018822422903779557,
'D4': -22889},
'D1': 3574027398,
{'D2': -0.4067070484161377,
'D3': -4811743690890181314,
'D4': 18461}],
'A6': [41697, 13342, 40558, 51294],
'A7': [0, -108]}
Пример 2
Двоичные данные:
b'OREo\x10=\xad\xda\xd0>V\xc8L\x8b\xe6\xa0#\xd4%f6\xbe\x88\xba\xe6n\xbf\t'
(b'z\xf8\xbe\xc2\x1e>\x9aL\x17[\xf3\xbc\xeeE\xae\x8a\xf3\xbf4\xe0a\xb0\x15\xa5'
b'\xa8\xe6\x99M\x0e\xbe$\xbc\x8f\xfe\x80\x01avb\x15\xf9/\xf9\xb6u\x08\xf1Q'
b'F\x9e;\x19U}d=!\xb3\xa2\xe9\x1dI\xc4k@d\xc5\r\xb5\xd9\xc9\x83'
b"\x96\xbf\x1d\xf5\xbc;\xdc&J\x10F\xf6b\xd2;\x9aq\x0eR?2\xa4{''\xb2|\xbf"
b'\x9c\xa3\xfd\xb3\x96\xbd\xd8\xdfp8\xc0\xb4\x076O')
Результат разбора:
'A1': {'B1': [{'C1': 111,
{'C2': 272477658,
'C3': 208,
'C4': 0.20974844694137573,
'C5': 35814},
'C1': 160,
{'C2': 601105766,
'C3': 54,
'C4': -0.26705092191696167,
'C5': 28351},
'C1': 9,
{'C2': 2063122114,
'C3': 30,
'C4': 0.3013617694377899,
'C5': 23539},
'C1': 188,
{'C2': 3997544074,
'C3': 243,
'C4': -0.7065487504005432,
'C5': 45077},
'C1': 165,
{'C2': 2833684813,
'C3': 14,
'C4': -0.16087554395198822,
'C5': 65152}],
'B2': 1,
'B3': 'avb'},
'A2': 5625,
'A3': 12281,
'A4': 13147424519721754171,
'A5': [{'D1': 425033060,
'D2': 0.03947795182466507,
'D3': -1649080780585933627,
'D4': 3509},
'D1': 3653862294,
{'D2': -0.6170308589935303,
'D3': 4313364642656613986,
'D4': -11717},
'D1': 2591100498,
{'D2': 0.6978222727775574,
'D3': 2821419940431307773,
'D4': -19562}],
'A6': [48600, 57200, 14528, 46087],
'A7': [54, 79]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x44 0x4f
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры B |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | uint64 |
4 | Структура D |
5 | float |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | int32 |
3 | Массив адресов (uint32) структур C, размер 3 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | int64 |
2 | Адрес (uint32) структуры E |
3 | Адрес (uint32) структуры F |
4 | int8 |
5 | uint32 |
Структура E:
Поле | Описание |
---|---|
1 | uint32 |
2 | float |
3 | Размер (uint16) и адрес (uint16) массива int32 |
Структура F:
Поле | Описание |
---|---|
1 | Массив uint8, размер 6 |
2 | int32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'CDO^\x00\x00\x00\x02\x00\x00\x00v\x00\n\x01a\xb5\xee,\xcd.\x0c\xc4\xca'
(b'!\x08\xbd\x87\xc5\x88\x00\x00\x00\x94\x00\x00\x00iJ\xe2\xefc\xf6\x88'
b'X?\x17\x1aY\x97\xe7\xbe@\xf3\xe5;Q\x9b\xf9\xd6)5\xf7\xda\ri\x15\xe2'
b'\x04\x9d#\xbfj\x9a;\x87)\x83\xfa\xd5x\x1a\xc4\\\x0c>\x1d\x06m\x10\xcd\xfa'
b':1\x80\n\xab\xfa\x98\x98:H\xbf\x05\xbe\xa6.\x00\x00\x00>\x00\x00\x00N\x00'
b'\x00\x00mgU\xf8s\xe3\xac{\x97\xa2J\xaf\x0e\xc6=\x1d\xc9[-V\x89\xe0'
b'e\x94\xd0\xbe\x04\x00x\x00\xb8$\x8d\xa2\xa6\xb9\xf5\xb4zN')
Результат разбора:
'A1': {'B1': 5204640102187993728,
{'B2': -1497496129,
'B3': [{'C1': 2539198999, 'C2': -7254951665902502169, 'C3': 891934457},
'C1': 1762515703, 'C2': -7319828084658216427, 'C3': 2200536891},
{'C1': 444126714, 'C2': 1183608999733124292, 'C3': 825948877}]},
{'A2': 'mg',
'A3': 3372401099727241482,
'A4': {'D1': -4213191083757485044,
'D2': {'E1': 3767096877,
'E2': -0.40738216042518616,
'E3': [-478939051, -1567130708, -972116150, 1539906877]},
'D3': {'F1': [184, 36, 141, 162, 166, 185], 'F2': 1316664565},
'D4': 105,
'D5': 1676665418},
'A5': 0.8458398580551147}
Пример 2
Двоичные данные:
b'CDO^\x00\x00\x00\x02\x00\x00\x00v\x00O\xfeEU1j\x00\xcf"<\x98\xd7\xce-\xa2'
(b'\xc3\x88\x00\x00\x00\x94\x00\x00\x00\x16\x16\x83\nj3\x0c\xa7\xbe\x9d2sw\xf7]'
b'\x0c\xcc"a\x96R\rX\xee#\x18\x89\xb8G\xe5<G\xdc[P*\x8al\xb8dv\xc5\xfd9\x04ov'
b'\xd1\x0b\x8b\xba\xa8\x00\x1d\xd4\xf10\x95l\x88\x8c3\xdc\x85!*`\x10\xfd.\x00'
b'\x00\x00>\x00\x00\x00N\x00\x00\x00qp\xfa\x17\xc8 &h\x14\x0e\x047\x07\x184{6I'
b"\xa8'\to\x8dMc\xbf\x04\x00x\x00\x02c\xce\xac\xb6\xfd\xa4f\xc8h")
Результат разбора:
'A1': {'B1': 2415578889113332885,
{'B2': -49258454,
'B3': [{'C1': 2004038301, 'C2': 5951050759696834039, 'C3': 602822669},
'C1': 1203276056, 'C2': -8490885791985746715, 'C3': 1986312300},
{'C1': 70909381, 'C2': 47492902448887407, 'C3': 821154845}]},
{'A2': 'qp',
'A3': 14916038725967674959,
'A4': {'D1': -4349863923682886622,
'D2': {'E1': 1862870952,
'E2': -0.8879020810127258,
'E3': [549984250, 236218406, 403126020, 1228307252]},
'D3': {'F1': [2, 99, 206, 172, 182, 253], 'F2': 1757963940},
'D4': 22,
'D5': 1779073814},
'A5': -0.3262649476528168}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4f 0x4e 0x44 0x4d
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | int32 |
3 | Размер (uint16) и адрес (uint32) массива структур B |
4 | Массив char, размер 4 |
5 | Размер (uint16) и адрес (uint16) массива char |
6 | uint32 |
7 | Адрес (uint32) структуры D |
8 | float |
Структура B:
Поле | Описание |
---|---|
1 | int32 |
2 | Структура C |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | uint32 |
Структура D:
Поле | Описание |
---|---|
1 | Массив uint32, размер 6 |
2 | double |
3 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ONDM=\x15@,m\x8e?|\xc9*\x88\x9d\x05\x00*\x00\x00\x00vvda\x06\x00'
(b'\\\x00\x99\x0f\xf2@b\x00\x00\x00\x0f\x00:\xbe\xa8\xc4L,\xc5\xf8\xdd\x91\xd2 '
b'k\x8c2(\xdaBe\xab\x83\xba\x9b\x16\xbbQ\xcd\xca\xf4\xf7\x0bi2\x9d\xaf&!!E\xe5'
b'\xf6a\xcd\xf0\x9f\xcfg\xe5\x81\x8d\x98\xb9trzptm\xf3\x0c^\x01\xd4\x9b'
b'\x04b\xed\xcaW\x18(\xa4\xd54\xd36\xca\x8bR\x94C\x87^su"\x13\xb2\xea\xbft\x8a'
b'\xb4Y_\x05\xd2?')
Результат разбора:
'A1': 8953031183780812093,
{'A2': -1652020535,
'A3': [{'B1': 743228584, 'B2': {'C1': -1851, 'C2': 550670813}},
'B1': 674401387, 'B2': {'C1': 17114, 'C2': 3129191269}},
{'B1': 1371215515, 'B2': {'C1': -13619, 'C2': 1762392052}},
{'B1': 649043250, 'B2': {'C1': 8481, 'C2': 1643570501}},
{'B1': -811601715, 'B2': {'C1': -6809, 'C2': 3113782657}}],
{'A4': 'vvda',
'A5': 'trzptm',
'A6': 1089605529,
'A7': {'D1': [22940915,
1644469204,
408406765,
886416424,
2345285331,
2269353042],
'D2': -0.8342376397155069,
'D3': 0.2815779090907775},
'A8': -0.1816408485174179}
Пример 2
Двоичные данные:
b'ONDM]hD\x017:\xc4Y\xba|\xfe\xcf\x02\x00*\x00\x00\x00odbw\x05\x00>\x00A\xf2'
(b'"XC\x00\x00\x00fc\x89\xbe\xd9\xae\xec%\xa5\xf1\x00\x96\xaaQh\xe6\xe9\xca'
b'\xa6\xc6\xc1e\xb8\xcezgson\x02DRy\xa9\x94-\xa6a\x8a\xf5\xd8{+\xdb\xbd\r'
b' i\x9a\x92\x9c\xa8c\x10\x8a\xbe\x15\\\x9c\xdd?\x90S\xe2fj\x95\xb1\xbf')
Результат разбора:
'A1': 6468358972729747549,
{'A2': -805405510,
'A3': [{'B1': 636268249, 'B2': {'C1': -3675, 'C2': 1370134016}},
'B1': -890640792, 'B2': {'C1': -14682, 'C2': 3468191169}}],
{'A4': 'odbw',
'A5': 'zgson',
'A6': 1478685249,
'A7': {'D1': [2035434498,
2788005033,
3639970401,
3185257339,
2590580749,
1671994514],
'D2': 0.46266843913522937,
'D3': -0.06868615161722702},
'A8': -0.2683364748954773}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x58 0x46 0x46 0x59
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | int16 |
3 | Адрес (uint32) структуры B |
4 | uint16 |
5 | int32 |
6 | Структура D |
7 | double |
8 | int8 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива char |
2 | uint8 |
3 | int8 |
4 | int32 |
5 | int8 |
6 | Массив адресов (uint16) структур C, размер 2 |
Структура C:
Поле | Описание |
---|---|
1 | uint8 |
2 | double |
3 | float |
4 | int16 |
5 | Размер (uint16) и адрес (uint16) массива int32 |
6 | int8 |
7 | int32 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива int16 |
2 | double |
3 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'AXFFYz\xa7\x80\xfeL\xdb\x00\x00\x00\x84+Ywk@"\x00\x02\x00\x95?\xe8n'
(b'\xbc}\xcfoLE\xeb!\xff?\xe5hs\xec(\x06\xf0\xafta\xd7<Oa\xed\xd8}\xc5'
b'\x9a\xad\xe9\xafX\xa5H\x1d\xdav\x9cWs\xbf\xec\x895.\xd09\xb8\xbfs\xd1'
b'R\x15\x0c\x00\x05\x000\xa7gW\xdbV\xd3X[\xf1\x03\x12\n\xdd\x8b\x8d\x88R'
b'\xec\xb9\xed\xcb\xb6?\xc98/\n\x87\xce\xd0=ND\xceM\xaf\x00\x04\x00\\\x17'
b'v%\x04\xf2\x00\x02\x00\x00\x00.\x17\xd3uZ\x8d\xc5I\x00D\x00l\xbe\xb8\xf2'
b'\xa9')
Результат разбора:
'A1': 2057797886,
{'A2': 19675,
'A3': {'B1': 'ta',
'B2': 23,
'B3': -45,
'B4': 1968868805,
'B5': 73,
'B6': [{'C1': 115,
'C2': -0.8917489923786013,
'C3': -0.9524127244949341,
'C4': 5388,
'C5': [-683913375,
-304579131,
-1699878481,
1487226909,
-629760937],
'C6': -89,
'C7': 1733811030},
'C1': 182,
{'C2': 0.19702709211525482,
'C3': 0.05035858601331711,
'C4': 19887,
'C5': [-749184015, 51514077, -1953658798, -323359285],
'C6': 23,
'C7': 1982137586}]},
'A4': 11097,
'A5': 2003517474,
'A6': {'D1': [-16712, -3415], 'D2': 0.7635176141006723, 'D3': 1173037567},
'A7': 0.6690005886486841,
'A8': -81}
Пример 2
Двоичные данные:
b'AXFFYs\x91K\xeeXK\x00\x00\x00\x80\x8b\x8a?\xf8r7\x00\x02\x00\x91\xbf\xdf\xbb'
(b'\x9b[\x12\xc0L\xd1\x82\xb1>?\xd1\xa8~\x95L?\xd8\x99gi\x12v?\xb1kZ\xebb'
b'\xde\xbf\xea\xb8\xb9\xf2\xff1J\xbf+x\x87v\xda\x00\x02\x000)\r\x08\xbe\xb7'
b'\x19\x9ak\x86\xfc\xcc\x11\xbf\x18\xb7\xed\xc7\xf4e\x11k\xac\x18\x99\xf9'
b'\xbc~\x1a\x17z?\x99\xa8c\x94y\x10\x80?LXe\x85/\x00\x06\x00POl\x18\x80\x10'
b'\x00\x02\x00\x00\x00.s\xea+\x05\xe4\x02W\x008\x00hs\x00\xba\xc6')
Результат разбора:
'A1': 1938901998,
{'A2': 22603,
'A3': {'B1': 'gi',
'B2': 115,
'B3': -22,
'B4': 721806338,
'B5': 87,
'B6': [{'C1': 222,
'C2': -0.8350496049911638,
'C3': -0.6698078513145447,
'C4': 30426,
'C5': [309739441, 1801120610],
'C6': 41,
'C7': 218676919},
'C1': 122,
{'C2': 0.025056415497843876,
'C3': 0.7982237935066223,
'C4': -31441,
'C5': [429550470,
-53734977,
414707143,
-194702997,
-1407673863,
-1132586473],
'C6': 79,
'C7': 1813544976}]},
'A4': 35722,
'A5': 1073246775,
'A6': {'D1': [29440, -17722], 'D2': -0.49582561391708135, 'D3': 3515003198},
'A7': 0.2759090860354241,
'A8': -103}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xf5 0x4c 0x4d 0x48 0x54
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint16) массива структур B |
2 | uint16 |
3 | Адрес (uint16) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | uint64 |
2 | double |
3 | int8 |
4 | int32 |
5 | int16 |
6 | uint16 |
7 | Размер (uint32) и адрес (uint32) массива char |
8 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | Адрес (uint32) структуры D |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int64 |
3 | Массив uint32, размер 3 |
4 | Размер (uint16) и адрес (uint16) массива uint32 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xf5LMHT\x00\x00\x00\x02\x00\x13\x97J\x00\x86phvn1\xd6\x94l\xd1\x9dR(?'
(b'\xb8\xff\x06\x0bM\x80\xf0gMh1X\x03\xe7\x0fc\x00\x00\x00\x02\x00\x00\x00\x0f'
b'\xd5.D\xa13\x97\x1d/\xac\xe4bV\xbf\xad\x97\x97y~h`\xe2B\xca\x00'
b'\xb3\x1f\xe8\x07O\x00\x00\x00\x02\x00\x00\x00\x11\xef\x85\xa9\x9d3\xb9\xc0'
b'\xd9\x85\x16K\xc9f\x99\xf2\xc12\x189\t\xed\x0ex\xa2\xe0w\xf1\xc6\x92\xc3\xca'
b'\xc9\xd5\x0f\xa8\xcftn\xed\xbd\x00\x03\x00]!\x00\x00\x00i\x8a')
Результат разбора:
'A1': [{'B1': 3591220947968676392,
{'B2': 0.0976413514704324,
'B3': 103,
'B4': 1298674008,
'B5': 999,
'B6': 3939,
'B7': 'ph',
'B8': 3576579233},
'B1': 3717472108018950742,
{'B2': -0.057797177868636807,
'B3': -30,
'B4': 1120534707,
'B5': 8168,
'B6': 1871,
'B7': 'vn',
'B8': 4018514333}],
'A2': 38730,
'A3': {'C1': {'D1': 840448265,
'D2': -1365020996100689466,
'D3': [2462304969, 3574573263, 1953426877],
'D4': [867811545, 2232830921, 1721365185],
'D5': 33},
'C2': -118}}
Пример 2
Двоичные данные:
b'\xf5LMHT\x00\x00\x00\x03\x00\x15-\xe6\x00\xa9huxnvy\xc6a\xb4&\xa9\x99\xc0'
(b'\x7f?\xe7\xf6o\xd1A\xb4\x06\xf9\x14\x96\xb0"\x99u\\\xf2\x00\x00'
b'\x00\x02\x00\x00\x00\x0f\xbdL@+8c \xe7\xfc\xd7\x92\xed?\xe5\x1c\xda\x9e\x1f'
b'<\xac\xea\xe4\xb7\xb5R\xc3\xa9F$\x00\x00\x00\x02\x00\x00\x00\x11\r\xd2aG\x8e'
b'0\xe7f\xbc\xbe\xca\xfb\xbf\xc8\xcf|v6\xae\x08{\xa6|\x7f\xa4|\xf1\x8c\x9f'
b'\x00\x00\x00\x02\x00\x00\x00\x13\xd2\x84\x05\x18W\xea\xfb\x9e\xe5\x85q5'
b'\xda\x1eoI4\xb0Z\xb3B\xcaY1)Kd$\x07c\x86\x95l9\x1a\x87\x00\x02\x00\x84'
b'\x8c\x00\x00\x00\x8c\x00')
Результат разбора:
'A1': [{'B1': 14294904770397847679,
{'B2': 0.7488326155704506,
'B3': -7,
'B4': 345419810,
'B5': -26251,
'B6': 23794,
'B7': 'hu',
'B8': 3175890987},
'B1': 4063127469569839853,
{'B2': 0.6597722137757009,
'B3': -22,
'B4': -457722542,
'B5': -15447,
'B6': 17956,
'B7': 'xn',
'B8': 231891271},
'B1': 10245943580707179259,
{'B2': -0.1938319756712732,
'B3': 123,
'B4': -1501790300,
'B5': 31985,
'B6': 35999,
'B7': 'vy',
'B8': 3531867416}],
'A2': 11750,
'A3': {'C1': {'D1': -635539639,
'D2': 3796634211839531313,
'D3': [692806692, 123963029, 1815681671],
'D4': [1475017630, 3850727733],
'D5': -116},
'C2': 0}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x49 0x59 0x53
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Структура B |
3 | uint64 |
4 | Адрес (uint32) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | Массив uint16, размер 4 |
2 | Массив структур C, размер 4 |
Структура C:
Поле | Описание |
---|---|
1 | Массив uint64, размер 2 |
2 | int8 |
3 | int8 |
4 | uint32 |
5 | int64 |
Структура D:
Поле | Описание |
---|---|
1 | int32 |
2 | int8 |
3 | Размер (uint16) и адрес (uint16) массива uint8 |
4 | uint64 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'TIYS\xd4\x0c\xf6J\xba\x19\xae\xc8l\xb7b\xc1\x01\x9b\x9e\xd2\xa6\x9b\xde\xb8'
(b'2\x02C}Co\xf8]}\x11h(\x93\xdd\x9cq\x804\xa1\xad\xfc\x93I\xf1 \xbdR\x82'
b'\x99\x9a~\x8eK\x0fx\x97\xbb\xce\xfc\xd7\x17T\xe0F\x0e\xebh\xd9\x9a|\xe7\xad'
b'n\xec\xcd{\x01^p\x7f\xbe\x92\x1e\xcb\xc6"\xf3$ F\x9f\xfa\x86.\x94\xea'
b'S\xa5F\x86\xf2\xd8\xe8LA\x82D\xfb\xc8\xbb\xb3=vEg\x15\xf1W\xa6\xcc'
b'\xea\xfba\x13k\xaa\x97\xcdY\xc5\x9eAV\xe8G}!q\x00\x00\x00\x98\x18\x81'
b'\xc1\x9cu\x11\xb4_\xa1\xdcQ\x00\x06\x00\x92V\x86\x003\xb8\x96K0')
Результат разбора:
'A1': 54284,
{'A2': {'B1': [63050, 47641, 44744, 27831],
'B2': [{'C1': [7115970654118258331, 16048632257438368623],
'C2': -8,
'C3': 93,
'C4': 2098292776,
'C5': -7791899768984919635},
'C1': [18199971819119530626, 11068298183826176151],
{'C2': -69,
'C3': -50,
'C4': 4241954644,
'C5': -2286123356604753284},
'C1': [16694121357071024478, 8106407389081355810],
{'C2': -13,
'C3': 36,
'C4': 541499386,
'C5': -8777914889551919482},
'C1': [17498991766362277115, 14464351704789116693],
{'C2': -15,
'C3': 87,
'C4': 2798447355,
'C5': 6995053026671942085}]},
'A3': 11403491287110590833,
'A4': {'D1': -1268801060,
'D2': 81,
'D3': [24, 129, 193, 156, 117, 17],
'D4': 6234670956281219888}}
Пример 2
Двоичные данные:
b'TIYSJ\x87\x8e\xa5\n\xc9\xc2u8A\xcb\xe1"\x9c\x12`W\x7f8_\xe57\xa3\xa7'
(b'\xd5T\xb4\xc3\xee\x0f4\x88$\xdbo9E\xca/\xd9\xd2O\x15XY\xc6\x87\x91\xe8k\xf0d'
b'\xab\xbe\x82\x12&\xd2\xaf\x0c\xf1_\\\xd5\x7f\xdb\xbb\xc6P\xd5\x85\xf4L":\x9a'
b',\x0fn\xb4\xba\xf6\t\xf7\xa26\x17\x81+5j{\xce`\x9f\xbd\\\x83\x80t\x19\x7fzi'
b'\xcb\\\x1a\xdcmw\x8b0\xca\xf7\x1d\xdf\xebr\xd9Z\xa8*\x17\xe0`\xf4=\xa6'
b'\xb0\x82\x96p\x19\xb9P\xff\xa5\xab\x00\x00\x00\x97\xba\x0c\xb4\x89\x1b#'
b',$\x1b\xdf\x00\x05\x00\x92"\xb5k\xe9\x1c\xe1=o')
Результат разбора:
'A1': 19079,
{'A2': {'B1': [36517, 2761, 49781, 14401],
'B2': [{'C1': [14691061513177814911, 4062217416043124052],
'C2': -76,
'C3': -61,
'C4': 3993973896,
'C5': 2655838697039736793},
'C1': [15154354740332496785, 16747743954476106258],
{'C2': 38,
'C3': -46,
'C4': 2936861023,
'C5': 6689393403253641429},
'C1': [9652423611257596943, 7977206405871936054],
{'C2': 23,
'C3': -127,
'C4': 724920955,
'C5': -3575682468482416524},
'C1': [1837321767792417500, 7887926314042596831],
{'C2': -21,
'C3': 114,
'C4': 3646597162,
'C5': 1720481659778150530}]},
'A3': 10840192586799359403,
'A4': {'D1': 590095387,
'D2': -33,
'D3': [186, 12, 180, 137, 27],
'D4': 2501023817030253935}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x2a 0x56 0x4a 0x59 0x4b
, за которой следует
структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать
модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | uint64 |
2 | float |
3 | Адрес (uint16) структуры B |
4 | Адрес (uint32) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | int8 |
3 | int16 |
4 | Размер (uint16) и адрес (uint32) массива char |
5 | int32 |
6 | int32 |
Структура C:
Поле | Описание |
---|---|
1 | uint32 |
2 | Массив структур D, размер 3 |
3 | uint8 |
4 | int64 |
5 | Адрес (uint32) структуры E |
Структура D:
Поле | Описание |
---|---|
1 | Массив int16, размер 3 |
2 | Массив uint16, размер 4 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | uint64 |
3 | int16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'*VJYK\xb2\xbd%\xd0\\<\xcb\\\xbfys\x03\x00\x1a\x00\x00\x008bbj\x9d\xf5'
(b'\xa9\xd5h\x00\x03\x00\x00\x00\x17\xde\xac\x80N0\xd8\xf7\xcbRk\n\x0f<\xa5A'
b'H\xce\x89\xf7\xa1\x7f\xd4\x19\xb5|\n\xaa\xbc\xbf\xb6\xb2\x89\x92r\xb7'
b"\xff\x82O\xe2A\x9b\xfd\xd7\x88<\x99\xdf\x13\tw+?\xa1<\xfb'^\xa6\x81"
b'\xd7\xf3\x92Qm\xaa:\x17\x9dY\xd6\xedq\xf7F\x00\x00\x00-')
Результат разбора:
'A1': 12879492086180399964,
{'A2': -0.9744111895561218,
'A3': {'B1': 40437,
'B2': -87,
'B3': -10904,
'B4': 'bbj',
'B5': -559120306,
'B6': 819525579},
'A4': {'C1': 2709509145,
'C2': [{'D1': [-19076, 2730, -17217],
'D2': [46770, 35218, 29367, 65410]},
'D1': [20450, 16795, -553], 'D2': [34876, 39391, 4873, 30507]},
{'D1': [16289, 15611, 10078],
{'D2': [42625, 55283, 37457, 28074]}],
'C3': 58,
'C4': 1701615013857457990,
'C5': {'E1': 82, 'E2': 7712994064970369230, 'E3': -30217}}}
Пример 2
Двоичные данные:
b'*VJYK;\x01\x83bC\xf2\xd5T\xbe\xf8\xd0M\x00\x1b\x00\x00\x009pohu\xc7'
(b'5\xd7\x9a\x17\x00\x04\x00\x00\x00\x17\xbc\xac\xban\x05\x99\xe3g\xf8\xb8'
b'W\xbe\xac\xda\x81\xa0\xd4\x0eV\x19\xa5\xba\xbf\x9a\x8b\x8fJ\xcf<\xfd'
b'\xf2\xe8Z\x83v\x07\xd0m\xd0\x19R\xf3\x1a\x17\xc4S\x85\xaa\xaa\xee'
b'\n\x0b\xa0\xc8m@\xea\x11\x99l\xfd\xadxK+\x18\xc8n\xfa\xcf\x1e\x1a\xaa\xea'
b'\x00\x00\x00.')
Результат разбора:
'A1': 4251823981284480340,
{'A2': -0.48596420884132385,
'A3': {'B1': 50997,
'B2': -41,
'B3': -26089,
'B4': 'pohu',
'B5': -1129530770,
'B6': 93971303},
'A4': {'C1': 430291647,
'C2': [{'D1': [-25973, -28854, -12484],
'D2': [65010, 59482, 33654, 2000]},
'D1': [28112, 6482, -3302], 'D2': [6084, 21381, 43690, 60938]},
{'D1': [2976, -14227, 16618],
{'D2': [4505, 27901, 44408, 19243]}],
'C3': 24,
'C4': -4003987251215553814,
'C5': {'E1': -8, 'E2': 13283295275562148052, 'E3': 3670}}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x48 0x4d
, за которой следует структура A.
Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | double |
2 | Структура B |
3 | Размер (uint16) и адрес (uint16) массива адресов (uint32) структур D |
4 | Массив float, размер 2 |
Структура B:
Поле | Описание |
---|---|
1 | Массив char, размер 8 |
2 | int8 |
3 | Адрес (uint16) структуры C |
Структура C:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | Размер (uint16) и адрес (uint32) массива uint16 |
3 | float |
4 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'DHML%)k\x90\xe1\xdd?rdjnxwueC"\x00\x04\x00u\x00\x83m\xaf\xbe\xe9\xe8'
(b'\xb6=&\xfd1\x94<\xea\xccU V\x94A\x11J\xc5\xec\n\x06\x00%\x00\x00'
b'\x00\xa2\x89;\xbf\x83\x13.|UEJ\x02\x00>\x00\x00\x00"\xafN\xbd\xd1\xe6'
b'S\xe1\xaa\xf7\xb2\xe6\xea\x87\xcd\x04\x00O\x00\x00\x00\x14\xa8x?\x08'
b'\x96\xcf\xd6\xcaz\xdb\x02\x00d\x00\x00\x00k\x0c ?\xc41\x00\x00\x00B\x00\x00'
b'\x00W\x00\x00\x00h\x00\x00\x00')
Результат разбора:
'A1': 0.46689234223284326,
{'A2': {'B1': 'rdjnxwue', 'B2': 67, 'B3': {'C1': 64806, 'C2': 49}},
'A3': [{'D1': 2796,
'D2': [15508, 52458, 8277, 37974, 4417, 50506],
'D3': -0.7325688600540161,
'D4': 131},
'D1': 19013,
{'D2': [11795, 21884],
'D3': -0.05045998841524124,
'D4': 209},
'D1': 52615,
{'D2': [21478, 43745, 45815, 60134],
'D3': 0.9713146686553955,
'D4': 8},
'D1': 56186,
{'D2': [53142, 51926],
'D3': 0.625189483165741,
'D4': 196}],
'A4': [-0.34263238310813904, 0.08931142836809158]}
Пример 2
Двоичные данные:
b'DHM\xdcBoXE\xc0\xe3\xbfbqdifoptu"\x00\x04\x00y\x00\x04=\x15?\xe8\xcb'
(b'~>\x10\xdd\xc3]\xfcD\x85\xb3\xdd\xc1c\x03\x00%\x00\x00\x00C[\x0c?\xa7'
b'#\x9d\x1a6\x98{\x02\x008\x00\x00\x00\xc2x3\xbe\x07N\xf9)o\xe4\x83\xc0'
b'f\xd1\xa3\x04\x00I\x00\x00\x00\xa0\x06\xbf=\xbf\xd5\xa8\x9e\xe9\x02\xd5'
b'\xffe\xc7:\xaa\xceK\xe4W\xaf\x07\x00^\x00\x00\x00\x84\xf9"?j+\x00\x00'
b'\x00<\x00\x00\x00Q\x00\x00\x00l\x00\x00\x00')
Результат разбора:
'A1': -0.6172205664862207,
{'A2': {'B1': 'bqdifopt', 'B2': 117, 'B3': {'C1': 56592, 'C2': 195}},
'A3': [{'D1': 25537,
'D2': [64605, 34116, 56755],
'D3': 0.5482675433158875,
'D4': 167},
'D1': 31640, 'D2': [40227, 13850], 'D3': -0.1752653419971466, 'D4': 7},
{'D1': 41937,
{'D2': [63822, 28457, 33764, 26304],
'D3': 0.09327435493469238,
'D4': 191},
'D1': 44887,
{'D2': [43221, 59806, 54530, 26111, 15047, 52906, 58443],
'D3': 0.6366198062896729,
'D4': 106}],
'A4': [0.5829622745513916, 0.24882471561431885]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x51 0x41 0x2a
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Структура B |
2 | Структура D |
3 | uint32 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива char |
2 | double |
3 | Массив структур C, размер 7 |
Структура C:
Поле | Описание |
---|---|
1 | float |
2 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | float |
2 | uint64 |
3 | int64 |
4 | Структура E |
5 | int64 |
6 | Размер (uint32) и адрес (uint32) массива double |
Структура E:
Поле | Описание |
---|---|
1 | double |
2 | int8 |
3 | uint32 |
4 | float |
5 | Массив uint16, размер 2 |
6 | Размер (uint32) и адрес (uint32) массива int8 |
7 | int64 |
8 | float |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WQA*\x02\x00\x00\x00\x88\x00\x00\x00\xb0MgJ\xe3&\xdc??\xa8T?\x08\xb3\x9cU'
(b'?\xb2\xe7R\x9f\xbe\xc5\xb7/>>e\x87X\r?S!\xe2;\xbfbZpj?\xde.\xaa\x9d\xbd\xf9'
b'l\x16\x9bS.D\x9d\xearJ\x93\xd1\xab\xc2T\x00L\x84\xca\x1bQU?fbUY\xe4'
b'\xb3\r\xc0\xbe\xf2\xd8\xae\xe0\x03\x00\x00\x00\x8a\x00\x00\x00k\x11\xb3;'
b'\xb4\xa9mj2\xcb\xda\xbe\xe3\xd6\xa7\xca/\xb3\xf3\x8f\x02\x00\x00\x00'
b'\x8d\x00\x00\x00k\x96\xaf+tv\xcc3\xe1`V\xccTtp\xdc\xbf\xb8\x93\x82dU\xb2\xc5'
b'\xbf')
Результат разбора:
'A1': {'B1': 'tv',
{'B2': 0.4398735262486424,
'B3': [{'C1': 0.8306922316551208, 'C2': 8},
'C1': 0.8344222903251648, 'C2': 178},
{'C1': -0.31117936968803406, 'C2': 197},
{'C1': 0.18572889268398285, 'C2': 101},
{'C1': 0.5521320700645447, 'C2': 83},
{'C1': -0.7339192032814026, 'C2': 98},
{'C1': 0.9157768487930298, 'C2': 222}]},
{'A2': {'D1': -0.07698474824428558,
'D2': 11332233498990111993,
'D3': 6107632961275458282,
'D4': {'E1': 0.0013010760686185119,
'E2': 102,
'E3': 3831059810,
'E4': -0.37510451674461365,
'E5': [55538, 57518],
'E6': [-52, 51, -31],
'E7': 7668972332042621291,
'E8': -0.42733150720596313},
'D5': -8073912689100335389,
'D6': [-0.4443636730296472, -0.16950480849950877]},
'A3': 732927595}
Пример 2
Двоичные данные:
b'WQA*\x04\x00\x00\x00\x88\x00\x00\x00\x00fU\x84\x0f\xdd\x87\xbf\xd9\x9fd\xbf'
(b'\xb8\xc1\x92N\xbfU\xd85;\xbf\xf0\xeb)\xe8\xbe7?*\x14?\x97\xc6\xe6\x99'
b'\xbe\x1a1\x00h?N\xea&\x08?&\xdf:\n\xb6\x9f\x1e\xaa,\xc7\xc6\x18Y'
b'\x15\x00\x9d\xbcd\xf3\x84M\xf6\xd5\xbf\x1c\xa0\x89yB\xf6\x94\xf2\xbe'
b'\x16\x02\xa0\x84\x06\x00\x00\x00\x8c\x00\x00\x00K%&\x8aP\xc5\x06h$F[>'
b'\x8f\xe9\xfc\x18>Z\xe8F\x03\x00\x00\x00\x92\x00\x00\x00c\x87\xd8\xefitzf'
b'\xb9\xafr\xeb\xfaH8\x80p\x97{\x83\xe5\xbf\xa2A*\xd8\x98\xeb\xe2?\xe8\x86'
b')1\xfd8\xd6\xbf')
Результат разбора:
'A1': {'B1': 'itzf',
{'B2': -0.011652108407974815,
'B3': [{'C1': -0.8930640816688538, 'C2': 184},
'C1': -0.8069267868995667, 'C2': 85},
{'C1': -0.731290340423584, 'C2': 240},
{'C1': -0.45344480872154236, 'C2': 55},
{'C1': 0.5787696242332458, 'C2': 151},
{'C1': -0.30058878660202026, 'C2': 26},
{'C1': 0.906252920627594, 'C2': 78}]},
{'A2': {'D1': 0.5318437814712524,
'D2': 12258410839953563430,
'D3': -7133678337342912724,
'D4': {'E1': -0.34315813048813104,
'E2': 28,
'E3': 1115261344,
'E4': -0.4737927317619324,
'E5': [534, 33952],
'E6': [-71, -81, 114, -21, -6, 72],
'E7': 7495895579510580555,
'E8': 0.21413475275039673},
'D5': 5109433000005527951,
'D6': [-0.672300143985928, 0.5912594053243547, -0.3472283344363931]},
'A3': 4023945059}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xff 0x45 0x55 0x47
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | Структура B |
4 | Размер (uint16) и адрес (uint16) массива char |
5 | Массив int32, размер 7 |
6 | Массив uint32, размер 5 |
7 | Структура D |
8 | int32 |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива структур C |
2 | int8 |
3 | double |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int8 |
Структура D:
Поле | Описание |
---|---|
1 | uint32 |
2 | int64 |
3 | uint32 |
4 | int16 |
5 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'\xffEUG:r\x10>\x03\x00\x00\x00j\x00\x03\x00\x00\x00m\x00\x00\x00\xe90zx8\x01'
(b'\xcd\xd5\xbf\x07\x00v\x00\xaf\x1d4,\xa4\xc4$0\x1bC\xd6"\xa6\xf4Y\xca\x12'
b'\x8aj\xed\xf6"&\xe7\xfa\xf7\x8e\x89\xd9E\xc6\x8d\xcc>\xb6a\xb3q\x14\xd2\x0c'
b'+\xd5\x9cS\x10\xa7\x94%hH\xff\xca\xbb\x0eO\xfa\xbb\xf1i\x02\x06\xde\x88k'
b'\xbe^\xbb\x99\xe0\xffpocK\xa0\x88\x19g\x14\xca\x10\xb4vnxmrdi')
Результат разбора:
'A1': 0.1410607397556305,
{'A2': 'poc',
'A3': {'B1': [{'C1': -24501, 'C2': -120},
'C1': 26393, 'C2': 20},
{'C1': 4298, 'C2': -76}],
{'B2': -23,
'B3': -0.3406374980421871},
'A4': 'vnxmrdi',
'A5': [741612975,
807716004,
584467227,
-900074330,
-311784942,
-416931082,
-1987119110],
'A6': [2378581465, 1639333580, 3524555187, 2631215884, 2493976659],
'A7': {'D1': 4282935333,
'D2': 7634089527112285130,
'D3': 2296251906,
'D4': -16789,
'D5': 94},
'A8': -2057797}
Пример 2
Двоичные данные:
b'\xffEUG\xc3}e\xbf\x03\x00\x00\x00j\x00\x03\x00\x00\x00m\x00\x00\x00\xb6\x88'
(b'\x88\x85\x06\x06\x98\xe1?\x07\x00v\x00M\xc1d\xd8^\xf1s\x14\x81\x84\x08N\x18'
b'V\xb5\xc4\xf1\x9a\xa5\xfcZ\x89\xa9\xf1\xfc\t/\x17\xb5?\xd2HA\xba\xab\xbe-'
b'D\xfbzH;\x85\xdd&\xce\xb5\xd2\xa2>U\xd2W\xd3O\xed\xb5@\xdb\x1d\xcc\x84u@%'
b'\x9d\r\xc9\xd4j\x06gdq\xecC\xeeuYa0\xeb\xd9czkxmdi')
Результат разбора:
'A1': -0.8964502215385437,
{'A2': 'gdq',
'A3': {'B1': [{'C1': 17388, 'C2': -18},
'C1': 22901, 'C2': 97},
{'C1': -5328, 'C2': -39}],
{'B2': -74,
'B3': 0.5498075606704029},
'A4': 'czkxmdi',
'A5': [-664485555,
343142750,
1309181057,
-994748904,
-56255759,
-240547494,
388958716],
'A6': [1221738421, 3198925377, 2063287341, 3716496200, 3535130150],
'A7': {'D1': 3528801954,
'D2': 2151384397114233687,
'D3': 1081443532,
'D4': -25307,
'D5': 13},
'A8': 107664585}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x36 0x45 0x5a 0x55
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int32 |
2 | Массив char, размер 3 |
3 | Адрес (uint16) структуры B |
4 | Адрес (uint16) структуры D |
Структура B:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив адресов (uint32) структур C, размер 4 |
3 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int64 |
2 | int32 |
3 | Массив uint16, размер 4 |
4 | uint16 |
5 | uint8 |
Структура D:
Поле | Описание |
---|---|
1 | uint8 |
2 | int32 |
3 | Размер (uint16) и адрес (uint16) массива uint32 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'6EZU^\xb1\xe3\x0fahjk\x00\x8d\x00\xaeV\x99\xc2\xe6]\x07\xcb\x19\x91\x1d\x92F'
(b'G\xc61N\xc9\x10\xdd}\xf82bbr\xf3\x9b\x7f\xfb\xb7\xdf\xa3e~\xcb\xbdg\x15\xf2G'
b'$\x8a`C\x10\x84\r%\xbc\xf3\x0e\x0f\xa4X\xb3\xce\x9e\xfd\xda\xa6F\xfe\xe4\xc8'
b'p.\xafp=L\xa60\xfd\xd8|\xc3\x179\x84\x16!\xae\x0f\xaf\x94w\xe0\xf6'
b'\xaf%\xbc\xde\xa0\x0f\x00\x00\x00&\x00\x00\x00=\x00\x00\x00T\x00\x00'
b'\x00\xdb\xffV*p(,\x00b\x99\xa8\x13\xa2c\xd9\xdc\x85\xa4\x98\x1f\xae\x03\x00'
b'\x81\x00')
Результат разбора:
'A1': 266580318,
{'A2': 'ahj',
'A3': {'B1': 41182,
'B2': [{'C1': -3816978913484515666,
'C2': -1843556071,
'C3': [18246, 12742, 51534, 56592],
'C4': 63613,
'C5': 50},
'C1': -5189413837833346462,
{'C2': 2120590303,
'C3': [48587, 5479, 18418, 35364],
'C4': 17248,
'C5': 16},
'C1': -6625060086842323580,
{'C2': -1630620840,
'C3': [56061, 18086, 58622, 28872],
'C4': 44846,
'C5': 112},
'C1': -4360371757246952387,
{'C2': 377764119,
'C3': [44577, 44815, 30612, 63200],
'C4': 9647,
'C5': 188}],
'B3': 710344667},
'A4': {'D1': 133, 'D2': -1373661020, 'D3': [2893936, 329816418, 3705234338]}}
Пример 2
Двоичные данные:
b'6EZU(\x18:,bjfk\x00\x8d\x00@\xb7\xbb\xd0\xc1\xdf\xde\xa9=\x8a\xd5\xc8B'
(b'`\\\xfa\xc7\xfb\xe8\xe5\x05X\xbe\xdb\x88\xcf\xecP\\\xacw`\xab9\x0e\xa1\xf1'
b'\xfb\xaf\r7w\x1b\xb3\xa2\xbaWI}\x8a\xeb\x0fwV\x05\x89J\x8b\x9c\xc5f'
b'\xa4.=\xc4\x1d\xef\x8d`\x92vU\x0fJ6\xc9\xff(\x96\x17V\xbb\xb7\x81\x80'
b'A\xb9\xfb\x99\xac\x8f\xde\x1f\xe8\x0f\x00\x00\x00&\x00\x00\x00=\x00\x00'
b'\x00T\x00\x00\x00\x00<\xb0\xa5f8\xdb\xb1q\xd4\xe9\xfb\x0b+5r\x7f\xfd\x99'
b'\x8c\x1e\x03\x00\x81\x00')
Результат разбора:
'A1': 742004776,
{'A2': 'bjf',
'A3': {'B1': 59423,
'B2': [{'C1': -6206277212946319552,
'C2': -925529539,
'C3': [24642, 64092, 64455, 58856],
'C4': 22533,
'C5': 190},
'C1': 8623368889147820251,
{'C2': 238660448,
'C3': [61857, 45051, 14093, 7031],
'C4': 41651,
'C5': 186},
'C1': 6230466113805568343,
{'C2': -1958049531,
'C3': [50588, 42086, 15662, 7620],
'C4': 36335,
'C5': 96},
'C1': -15421432006347118,
{'C2': 1444386344,
'C3': [47035, 32897, 47425, 39419],
'C4': 36780,
'C5': 222}],
'B3': 2779790336},
'A4': {'D1': 127, 'D2': 512530941, 'D3': [2983934054, 4226405489, 1916087051]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x4b 0x51 0xd5
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | Адрес (uint16) структуры B |
2 | Адрес (uint16) структуры C |
Структура B:
Поле | Описание |
---|---|
1 | float |
2 | int64 |
3 | int32 |
4 | int8 |
5 | Размер (uint16) и адрес (uint16) массива char |
6 | uint32 |
Структура C:
Поле | Описание |
---|---|
1 | int32 |
2 | Размер (uint32) и адрес (uint16) массива адресов (uint16) структур D |
3 | int16 |
4 | Массив uint32, размер 8 |
5 | uint64 |
6 | uint8 |
7 | uint32 |
8 | Массив uint8, размер 8 |
Структура D:
Поле | Описание |
---|---|
1 | uint64 |
2 | uint8 |
3 | uint16 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZKQ\xd5\x00\x0e\x00Nvvehly>\xb3q%\xe3\xa9E\xc3\xd9\x92\xea\xf0j8'
(b'\x04\xc4\xc1\x00\x06\x00\x08\x81\r\x03u\xd4\xf9@\xd2\xe3\xeatE\xf5'
b'\xbf\xac\x0fS\x08\xd4R\xe0\x1eR\xd5\x07m\xd3I\x08_\n\xa1\xc1\x1b\x7f\x00\xcf'
b"\x00'\x002\x00=AN\x01E\x00\x00\x00\x03\x00H\x84Y\x0c$\xba\x8an\x15GN\x0e\xeb"
b'`\xfcy6\xa2u6\xcd\xb0\xec\x10[o\x1e\xbe&\xb4\x1e\x1e\xf5\xddH\xc5\x86'
b'\x1a\xfaQQs\xd0]+\xb9\xf9%\xc7\x0f\x9c^\xeb\xaa~\xa5')
Результат разбора:
'A1': {'B1': 0.3504725992679596,
{'B2': -2042024248564585744,
'B3': 1782056132,
'B4': -63,
'B5': 'vvehly',
'B6': 2165113717},
'A2': {'C1': 1095631173,
'C2': [{'D1': 15346368479752778821, 'D2': 245, 'D3': 49068},
'D1': 1104236041652411986, 'D2': 213, 'D3': 1901},
{'D1': 15224709219595960603, 'D2': 127, 'D3': 207}],
{'C3': -31655,
'C4': [203733642,
1846888270,
250306812,
2033623669,
919449836,
274427678,
3190207518,
519429448],
'C5': 14233093334759470032,
'C6': 93,
'C7': 733608229,
'C8': [199, 15, 156, 94, 235, 170, 126, 165]}}
Пример 2
Двоичные данные:
b'ZKQ\xd5\x00\x0b\x00rnxn?9\x0e\xd8\xafo\x9aK\x192\x80gn\xb2\xd8Kx'
(b'\x00\x03\x00\x08\x12q\xb4\x94g\xbe\x11\x89\xd8\xf2p\x9fb\xac\xf5\xd2</\tz'
b'%\xf4\x14d7<\xd0)\xb1\xaa\x97\x97\x8c[\xdc\x14\xd3z\xe6\xcf\xb9\x7f,\x86'
b'\xbd\x01\xac\x9bl\xdd\xa5Z\x02d\x866\xf5\x89\x81?\x0c\x87\xee^g)p\xae'
b'\xf6\xa9\x00$\x00/\x00:\x00E\x00P\x00[3Q\xc5-\x00\x00\x00\x06\x00f'
b'\xaa\x17\xf8\xcb\xb5\xef\x91\xf2R\x18>\xaf\xef2\xe3\x98\x81\xac:\xec'
b"\x82\x00\x1f$b;;M\x10NWqYx\xbb9m\xf8\xeb\xc0\x93'Y^\xe9\x7fgi%\xffR_"
b'\xe4\x0fa')
Результат разбора:
'A1': {'B1': 0.7228827476501465,
{'B2': -5805251747321315225,
'B3': 1857214539,
'B4': 120,
'B5': 'nxn',
'B6': 309441684},
'A2': {'C1': 860996909,
'C2': [{'D1': 7475431715229560991, 'D2': 98, 'D3': 44277},
'D1': 15149034964318024724, 'D2': 100, 'D3': 14140},
{'D1': 14999715380179995739, 'D2': 220, 'D3': 5331},
{'D1': 8855994112880182973, 'D2': 1, 'D3': 44187},
{'D1': 7844607931955054134, 'D2': 245, 'D3': 35201},
{'D1': 4543155581965773168, 'D2': 174, 'D3': 63145}],
{'C3': -21993,
'C4': [4174099951,
2448577048,
1051717426,
3818422700,
988578304,
522478139,
994906190,
1467046264],
'C5': 13490935074639614759,
'C6': 89,
'C7': 1592360807,
'C8': [105, 37, 255, 82, 95, 228, 15, 97]}}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x53 0x42 0x58
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив int32, размер 4 |
3 | Структура B |
4 | uint64 |
5 | Массив структур D, размер 2 |
6 | int16 |
7 | double |
Структура B:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива char |
2 | uint8 |
3 | int8 |
4 | Адрес (uint32) структуры C |
5 | int8 |
Структура C:
Поле | Описание |
---|---|
1 | int16 |
2 | int16 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint32) и адрес (uint32) массива int8 |
2 | uint32 |
3 | uint32 |
4 | Массив int8, размер 7 |
5 | int16 |
6 | int32 |
7 | double |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'WSBX\x97"\x9d\xbc\x06]\x1e3\x98\x916\xf8\x94:\xd2\x1dD\x92\x02\x00'
(b'}\x00\xed\xfd\x7f\x00\x00\x00\xe3\x07[\x87f\xf2\x01a\xd9\x03\x00\x00'
b'\x00\x83\x00\x00\x00\x1bR*/\x93\x81\xd2\x0b\xb3\xd9^\xcaM\x91\xdb'
b'\x16\xca\xab\xd6\x18\xf3\xd0^)m\x8b\xe1\xd1?\x03\x00\x00\x00\x86\x00'
b'\x00\x00,o\x81`\x83\x193\x0cM\xf2*\xe9\xe6\xd3=\xb1/v\xbd\xf1S\x92'
b'\xed\x16\xab\xc1\xa6\xe5?:\r\x08T\xa6\x89!\xaa\xe1?ve\xe2L\xf9[z'
b'\x1d\xad\xdb\xc9e')
Результат разбора:
'A1': 8855,
{'A2': [1560722589, -1852296418, 982841398, -1841029678],
'A3': {'B1': 've',
'B2': 237,
'B3': -3,
'B4': {'C1': 19682, 'C2': 23545},
'B5': -29},
'A4': 15663803119585155847,
'A5': [{'D1': [122, 29, -83],
'D2': 791302683,
'D3': 198345107,
'D4': [-77, -39, 94, -54, 77, -111, -37],
'D5': -13802,
'D6': -216475989,
'D7': 0.27939115200341025},
'D1': [-37, -55, 101],
{'D2': 1619095340,
'D3': 204675459,
'D4': [77, -14, 42, -23, -26, -45, 61],
'D5': 12209,
'D6': 1408351606,
'D7': 0.6766060201256769}],
'A6': 3386,
'A7': 0.5520179451438034}
Пример 2
Двоичные данные:
b'WSBX;e\xb7Yc\x9a\xe7\x15n8\n\x92^fv\xe7\x92\x97\x02\x00}\x00K)'
(b'\x7f\x00\x00\x00\xf6\xcd\x90\x16\x04\xb9\xd8\xff\xfe\x03\x00\x00'
b'\x00\x83\x00\x00\x00\n\xdc[\xe9\xd2\xdc%\xb9\xe4\xaeB~\xa6\x14~)j\xfei'
b'mX\xd4\xde\xc83f\x9d\xe4?\x06\x00\x00\x00\x86\x00\x00\x00\x16\x1e\xc4\xe9xP'
b'^\xeeJP\x9a\xbd\x84\x8e;\x06\xe5\xd8\xd7#\x06(\x08\x92\xb7V<\xce\xbfv'
b'q,\xf6\xf1\xc0V\xf4\xdd\xbftk\xdd\xd5+\xeeLW0e\xccet\t\xea')
Результат разбора:
'A1': 25915,
{'A2': [-1704765001, 946738663, 1717473802, -1751980170],
'A3': {'B1': 'tk',
'B2': 75,
'B3': 41,
'B4': {'C1': -10787, 'C2': -4565},
'B5': -10},
'A4': 18374643293844050125,
'A5': [{'D1': [76, 87, 48],
'D2': 3915111434,
'D3': 3106266322,
'D4': [-28, -82, 66, 126, -90, 20, 126],
'D5': 27177,
'D6': 1483565566,
'D7': 0.644213772909064},
'D1': [101, -52, 101, 116, 9, -22],
{'D2': 3921944086,
'D3': 3999158392,
'D4': [74, 80, -102, -67, -124, -114, 59],
'D5': -6906,
'D6': 103012312,
'D7': -0.23621639216804735}],
'A6': 29046,
'A7': -0.46803826181698827}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x48 0x59 0x41 0x41
, за которой следует структура
A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | float |
2 | Размер (uint16) и адрес (uint32) массива адресов (uint16) структур B |
Структура B:
Поле | Описание |
---|---|
1 | Структура C |
2 | uint32 |
3 | uint32 |
4 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива uint32 |
2 | float |
3 | uint32 |
4 | Адрес (uint32) структуры D |
5 | int32 |
6 | uint8 |
7 | Размер (uint32) и адрес (uint16) массива int16 |
Структура D:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива uint32 |
2 | uint16 |
3 | float |
4 | int16 |
5 | int8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'HYAA\x00\x8aV?\x02\x00\xb8\x00\x00\x00L6\x12\xed\xd2cA)\x9f\xe4'
(b'\x7f\x10\xa2\x18\xa0\xea\x02\x00\x16\x00\x00\x00\xb1\xe3\xf3k\xd7=+\xc2'
b'\xa6&\xf3Xh\xbd4\x95\xfa7x\x02\x00\x0e\x00\x00\x00\x11lF\xbf}\x13p'
b'\xa4\x1e\x00\x00\x00)^:\xaf\xec\x05\x00\x00\x00-\x00\xb7\x82v\xc3'
b'y\x99\xc9\x1e\xea\x8f\x96\x03\x84\x0c\x8e\x88L\xd4G~{\x92\xdb\xd0(52X'
b'W\xb2<\xae0\x17v\x0bMm\x03\x00n\x00\x00\x00\xd3u5\xdb~?R\x0f\x1b}\r\xbb'
b'\x05\xe2#\x1dy\x04\x00^\x00\x00\x00\xb1#\x11\xbf\x0c\x8a\x176z\x00\x00\x001'
b'@\xe6L6\x04\x00\x00\x00\x89\x00R\r\x1dM\xe5\r\xf1\x94\xc1^7\x00\x91\x00')
Результат разбора:
'A1': 0.838043212890625,
{'A2': [{'B1': {'C1': [3977393740, 692151250],
'C2': -0.7750864624977112,
'C3': 2758808445,
'C4': {'D1': [276817055, 3936360610],
'D2': 58289,
'D3': 0.10518636554479599,
'D4': -15829,
'D5': -90},
'C5': -1355129303,
'C6': 236,
'C7': [-3290, 26712, 13501, -1387, 30775]},
'B2': 3279323831,
'B3': 516528505,
'B4': 36842},
'B1': {'C1': [209978262, 3561785486, 2457566791, 891867355],
{'C2': -0.5669508576393127,
'C3': 907512332,
'C4': {'D1': [2992068658, 389066300, 1833765750],
'D2': 30163,
'D3': 0.9955323338508606,
'D4': 3922,
'D5': 27},
'C5': 1290158129,
'C6': 54,
'C7': [3453, 1467, 9186, 31005]},
'B2': 1293749586,
'B3': 2498825701,
'B4': 24257}]}
Пример 2
Двоичные данные:
b"HYAA\xeaCT\xbe\x02\x00\xb4\x00\x00\x00~'x\xe4\xfb\xa1\x95\xbfeN%m<d"
(b'\x03\x1c} \x83`\x02\x00\x1a\x00\x00\x00\xfb\r\xeb\x17\\\xbf\xfb\x99'
b'\xdf\x0e\x1c_-\x03\x00\x0e\x00\x00\x00\xef\xe3w?\x1ep\x95\xb6"\x00\x00\x00y'
b'y+\xb4\xcf\x02\x00\x00\x001\x00\xe8\x9f\x92y|\x85\xf1\xffrm\x8d\xad\xcfi'
b'\x1a\x1d\xfa(\xb2|\x0f*\x9c$\x05\xc6\xc1\xd2\x1d\xe3\xd9_,\x8d\x02\x00l\x00'
b'\x00\x00IV\x95\x16\x90>\x0b\xcc&\xd1\x8d\xf8\xd5\x9b\xc1j\xb7\xa1,\x04\x00\\'
b'\x00\x00\x00\x0e\x8d\t?\xdf89\xbbt\x00\x00\x00VH\x1dr\xa0\x05\x00\x00\x00'
b'\x83\x00\x8c\xf2O"\xe09F\x05q\x8f5\x00\x8d\x00')
Результат разбора:
'A1': -0.20729032158851624,
{'A2': [{'B1': {'C1': [3833079678, 3214254587, 1831161445],
'C2': 0.9683217406272888,
'C3': 3063246878,
'C4': {'D1': [469984316, 1619206269],
'D2': 3579,
'D3': -0.8597399592399597,
'D4': -26117,
'D5': -33},
'C5': -1272219271,
'C6': 207,
'C7': [7182, 11615]},
'B2': 2039652328,
'B3': 4294018428,
'B4': 28018},
'B1': {'C1': [1775218061, 687480090, 705658034, 3322225820],
{'C2': 0.5373085737228394,
'C3': 3141089503,
'C4': {'D1': [3810382529, 2368495577],
'D2': 22089,
'D3': 0.28142228722572327,
'D4': -13301,
'D5': 38},
'C5': 1914521686,
'C6': 160,
'C7': [-29231, -10760, -15973, -18582, 11425]},
'B2': 575664780,
'B3': 88488416,
'B4': 36721}]}
Задача №12
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x5a 0x4d 0x58 0x48
, за которой следует структура
A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль
struct.
Структура A:
Поле | Описание |
---|---|
1 | int16 |
2 | Адрес (uint32) структуры B |
3 | uint64 |
4 | Адрес (uint32) структуры C |
5 | Структура E |
Структура B:
Поле | Описание |
---|---|
1 | double |
2 | Размер (uint32) и адрес (uint16) массива char |
3 | int16 |
Структура C:
Поле | Описание |
---|---|
1 | double |
2 | uint32 |
3 | Массив структур D, размер 7 |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | Массив uint16, размер 3 |
3 | uint16 |
Структура E:
Поле | Описание |
---|---|
1 | int8 |
2 | int8 |
3 | Размер (uint32) и адрес (uint32) массива uint8 |
4 | Массив uint16, размер 5 |
5 | uint8 |
Ниже показаны примеры разбора двоичного формата.
Пример 1
Двоичные данные:
b'ZMXHh\x93\x00\x00\x00/:w0.\x9f\xd0U\x8e\x00\x00\x00?M-\x00\x00\x00\x06'
(b'\x00\x00\x00\x91\x08\xa8\xd9\x00\xb7q\x13\xd4\xe7\x15\xfbihqq\xbf'
b'\xed\xda\xaa\x98s\xe8\xb6\x00\x00\x00\x04\x00+\t\xb4\xbf\xd6\xae\xbe\xe8'
b'\x96n\x1c\x87\x90\xa6\x16\x93\xfc>%\xe4<k\xee|\xc2\xdd\xfc\xc7\x8a\x9a8\xf7'
b'\xae\xba\xc4\xfe\xea\x16pod\x96\xfd~dTVd\xeb\x9b>\xd7\xf9C\x88\x12J\xed\x13K'
b'\x02O\xdb\x15;\x93\xa6\x9d#NBr\x02W\xcfc\x06\x9b\xd1f\x19\t\x8d\xe3'
b'oh\x1e\xa6^\x00\xd6')
Результат разбора:
'A1': 26771,
{'A2': {'B1': -0.9329426744073064, 'B2': 'ihqq', 'B3': 2484},
'A3': 4212888953236247950,
'A4': {'C1': -0.3544156333316282,
'C2': 2274403862,
'C3': [{'D1': 37884, 'D2': [15909, 58428, 27630], 'D3': 31938},
'D1': 56828, 'D2': [51082, 39480, 63406], 'D3': 47812},
{'D1': 65258, 'D2': [5744, 28516, 38653], 'D3': 32356},
{'D1': 21590, 'D2': [25835, 39742, 55289], 'D3': 17288},
{'D1': 4682, 'D2': [60691, 19202, 20443], 'D3': 5435},
{'D1': 37798, 'D2': [40227, 20034, 29186], 'D3': 22479},
{'D1': 25350, 'D2': [39889, 26137, 2445], 'D3': 58223}]},
{'A5': {'E1': 77,
'E2': 45,
'E3': [104, 30, 166, 94, 0, 214],
'E4': [2216, 55552, 46961, 5076, 59157],
'E5': 251}}
Пример 2
Двоичные данные:
b'ZMXH\xc6\x88\x00\x00\x00.4\xab\xf8\xf3}\xaa\x9bU\x00\x00\x00>&\xb9'
(b'\x00\x00\x00\x05\x00\x00\x00\x90)O\x98\xa2Sa\x14\x9f\xa9\xb5\xadwgv\xbf\xd3'
b'\x0c\xff,\x00x\xf4\x00\x00\x00\x03\x00+S\xc1\xbf\xe2\x0e<\x949'
b'\xb8\x8c\x9c\xf7\x1brq\x9bOHc-\x82=3\xa0\xf8\xa6m\x1f\x94\xe0|\xb7\x92>\xdbx'
b'\xc6\x0f\t\xe5qn\x80\x95\x03U\x17]W\x8b\x0e\xf2[\xday\xfd\xae\x1f|b'
b'\x99.\x1c\xec\xe1I]\x0c\xbb\x1d\xe4/\x83\x83L"%\xf2?\xfe\x029\x88u'
b'\xfa\x9d\x851\x81')
Результат разбора:
'A1': -14712,
{'A2': {'B1': -0.29766825959258303, 'B2': 'wgv', 'B3': 21441},
'A3': 3795400835658849109,
'A4': {'C1': -0.564237870695949,
'C2': 2633440114,
'C3': [{'D1': 29083, 'D2': [20296, 25389, 33341], 'D3': 13216},
'D1': 63654, 'D2': [27935, 38112, 31927], 'D3': 37438},
{'D1': 56184, 'D2': [50703, 2533, 29038], 'D3': 32917},
{'D1': 853, 'D2': [5981, 22411, 3826], 'D3': 23514},
{'D1': 31229, 'D2': [44575, 31842, 39214], 'D3': 7404},
{'D1': 57673, 'D2': [23820, 47901, 58415], 'D3': 33667},
{'D1': 19490, 'D2': [9714, 16382, 569], 'D3': 34933}]},
{'A5': {'E1': 38,
'E2': -71,
'E3': [250, 157, 133, 49, 129],
'E4': [10575, 39074, 21345, 5279, 43445],
'E5': 173}}