ИВБО-03-22

Вариант №1

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xfc 0x48 0x57 0x47, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint32) структуры B
2 float
3 Адрес (uint16) структуры C
4 Адрес (uint16) структуры F
5 int8
6 uint16

Структура B:

Поле Описание
1 uint16
2 Размер (uint32) и адрес (uint32) массива char
3 uint32

Структура C:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива адресов (uint16) структур D
2 float
3 Массив uint64, размер 2
4 uint64
5 Адрес (uint16) структуры E

Структура D:

Поле Описание
1 uint8
2 Размер (uint32) и адрес (uint16) массива int32

Структура E:

Поле Описание
1 int8
2 uint16
3 uint16
4 float

Структура F:

Поле Описание
1 double
2 Размер (uint32) и адрес (uint32) массива int16
3 uint32
4 uint8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xfcHWG\x16\x00\x00\x00\x9b\x1b\xb1>O\x00{\x00J\x80\xabmyz\xc3\xe2'
 b'\x03\x00\x00\x00\x13\x00\x00\x00\xf9<\xeb\x0f\x1f\x9a\xe5\t(OB\x17'
 b'}\x02\x00\x00\x00$\x00\xf4\x1e\xc2\x1d\x01gF\x8dH\x02\x00\x00\x003\x00,\x00'
 b';\x00\x0b]n\xff\x97;4(\xbe\x02\x00\x00\x00B\x00\xb5\xcd4?a\x0bk\xef\xdb-\xfc'
 b'\xd5\xabv\xda\xe0K\x83"\xeb\x84\xe4H\xc9U\xc6e\xccF\x00O\xec\xfad-'
 b'\xdd\xb4\x0c\x88\xf2\x02\xe0\x82\xff\xe9\xbf\x04\x00\x00\x00s\x00\x00\x00Y'
 b'gP\x11\x8c')

Результат разбора:

{'A1': {'B1': 58051, 'B2': 'myz', 'B3': 267074809},
 'A2': 0.34591373801231384,
 'A3': {'C1': [{'D1': 125, 'D2': [166042143, 390221608]},
               {'D1': 72, 'D2': [499261172, -1924765951]}],
        'C2': 0.7062638401985168,
        'C3': [15419249646847593313, 16943249110039426731],
        'C4': 14728396228136592516,
        'C5': {'E1': 11, 'E2': 28253, 'E3': 38911, 'E4': -0.16426174342632294}},
 'A4': {'F1': -0.8124403357720249,
        'F2': [-5041, 25850, -8915, 3252],
        'F3': 290482009,
        'F4': 140},
 'A5': 74,
 'A6': 43904}

Пример 2

Двоичные данные:

(b'\xfcHWG\x17\x00\x00\x00@B\x06>T\x00~\x00\xe5_\xddesybm\xa9\x04\x00\x00'
 b'\x00\x13\x00\x00\x00B\xef6\x04\x91\xdf7wi\xc0\xc0\xc6\x01\xc2\n\x9cK\x03\x00'
 b'\x00\x00%\x00Ol;\xa7\x9dT\xac\xb1\xc0\x02\x00\x00\x008\x001\x00@\x00\xa4'
 b'\x8f\xcbo\xf8\x94\xff\xea>\x02\x00\x00\x00G\x00\xc9\xb6k\xbf\xba\xd9'
 b'\xe1\xf1h+\xddf{\xdd\x9dm{\xf9\xd9O,\xa2\xbe`|\x05\\\xd2K\x00ud\xed\xf7'
 b'\x9f\x9dp\x8cJ\xb7\xb5\x1c\xd7\xbf\x03\x00\x00\x00x\x00\x00\x00\xebC'
 b'\xbdp\xc4')

Результат разбора:

{'A1': {'B1': 43373, 'B2': 'esyb', 'B3': 70709058},
 'A2': 0.13111209869384766,
 'A3': {'C1': [{'D1': 75, 'D2': [2000150417, -960446359, -1677016575]},
               {'D1': 192, 'D2': [-1489277873, -1314106211]}],
        'C2': -0.9207578301429749,
        'C3': [7412128291456407994, 5753904307457875323],
        'C4': 15157996477579436588,
        'C5': {'E1': -92, 'E2': 52111, 'E3': 63599, 'E4': 0.45898115634918213}},
 'A4': {'F1': -0.3611273088410547,
        'F2': [25717, -2067, -25185],
        'F3': 1891451883,
        'F4': 196},
 'A5': -27,
 'A6': 56671}

Вариант №2

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x57 0x4b 0x41 0x89, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint8
2 Массив char, размер 6
3 uint16
4 Адрес (uint16) структуры B
5 float
6 Структура D
7 int32
8 Массив int64, размер 8

Структура B:

Поле Описание
1 uint64
2 Массив адресов (uint32) структур C, размер 6
3 int64

Структура C:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива int8
2 int16
3 int16

Структура D:

Поле Описание
1 uint8
2 int16
3 int16
4 int32
5 float
6 Размер (uint16) и адрес (uint16) массива int16
7 int16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'AWKA\x89\xc7kllkvj\xcf\xa3\x00\xb3=\x89\xb4\xf4\xfc\xf4\xcd\xa0\x18Q\xd4\x07'
 b'\xa0\xbf2P\xf8\x00\x04\x00\xdbr\x92\xad\xdb\xe2E\x92\x1b\x92(>\xe2rg\x8c'
 b'\x8f1PG\xab\xcd5\x83\x94\xfa\x147.\x94\xd9\xa6[\xab\xa8M\xfb\x19\xbdRv\xf55]'
 b'\x13Q\xa7n\xbeK5h\xcf+\x1dr\xc7\xc2\xe8\x92W\xad!\xaf\x96\xb2\xf1\x10'
 b'\x00\x1c\xfb\xf9\xcb\x00\x00\x00\x02\x00k\xcf\xd2\xfaE\x9d\xd7\x00\x00\x00'
 b'\x02\x00w\xeb\x1d>e12\x00\x00\x00\x02\x00\x83q\xdf&W\x1d\xad\x00\x00\x00'
 b'\x02\x00\x8fS\x94\x0e\x0bb\x92\x00\x00\x00\x02\x00\x9bZ[\xbf\xc6\x86'
 b'\xbf\x00\x00\x00\x02\x00\xa7\xe5\xa9$\xaa\x10\xd4\xc9sMZ\xa7D\x00'
 b'\x00\x00m\x00\x00\x00y\x00\x00\x00\x85\x00\x00\x00\x91\x00\x00\x00\x9d\x00'
 b'\x00\x00\xa9I\x882\xe5\xa4\xed\xdf[\xe0CN\xa9\x19\xde\xe2(')

Результат разбора:

{'A1': 199,
 'A2': 'kllkvj',
 'A3': 53155,
 'A4': {'B1': 1212815696725714756,
        'B2': [{'C1': [-7, -53], 'C2': -12334, 'C3': -1467},
               {'C1': [-99, -41], 'C2': -5347, 'C3': 15973},
               {'C1': [49, 50], 'C2': 29151, 'C3': 9815},
               {'C1': [29, -83], 'C2': 21396, 'C3': 3595},
               {'C1': [98, -110], 'C2': 23131, 'C3': -16442},
               {'C1': [-122, -65], 'C2': -6743, 'C3': 9386}],
        'B3': 5298540923497340763},
 'A5': 0.0672396719455719,
 'A6': {'D1': 252,
        'D2': -2867,
        'D3': -24552,
        'D4': 1372850080,
        'D5': -0.6965479850769043,
        'D6': [-8125, 20137, 6622, -7640],
        'D7': 29330},
 'A7': -1378098619,
 'A8': [-7918574818249510297,
        -8318375765860430539,
        -8965265993455725351,
        -6459380501181687363,
        5942206367905567143,
        7979898282510854941,
        8270793544832625953,
        -5794247122140259077]}

Пример 2

Двоичные данные:

(b'AWKA\x89$xawbzj\xa2\xa9\x00\xb3>rb\t\x14\xbf\x89Cj+\xe8LZ>\x1d\r'
 b'\x9d\x00\x03\x00\xdb\x92)\nd\x1dN\xfd\xa85v\x00\xd29\xa7v\x02W\x9d}A/T;'
 b'\xe1A\x7f\x0f\xb3\x7fU\t\x1dH\x18\xae\xe1\xa1\x04\xc8\x80qj\x1b\xd1\x14&\x01'
 b'Q;\xb7\xd8@\xb2k\xb6\xb3y\x06\x9fG#\xc8\xaf\x9c\x82\xe2Q*\xc9\x8d\x02'
 b'\xb9\x00\x00\x00\x02\x00k\t|"d\x08\xea\x00\x00\x00\x02\x00w^\x0b\x7fM\x97'
 b'\x0b\x00\x00\x00\x02\x00\x83\x8f\x1a\x97\xd4"\x13\x00\x00\x00'
 b'\x02\x00\x8f\xda\x1d%.\x19\xff\x00\x00\x00\x02\x00\x9b\x1b\x99j\x1fT'
 b'\xbe\x00\x00\x00\x02\x00\xa7a\x14\x83e\x91U\x9a\x9a)\x96\xa3T\x00'
 b'\x00\x00m\x00\x00\x00y\x00\x00\x00\x85\x00\x00\x00\x91\x00\x00\x00\x9d\x00'
 b'\x00\x00\xa9\x96y3\x1d`\xb5\x81\x01\xa4\n\x95\xe2\xe0\xef')

Результат разбора:

{'A1': 36,
 'A2': 'xawbzj',
 'A3': 41641,
 'A4': {'B1': 10472446495433335636,
        'B2': [{'C1': [2, -71], 'C2': 2428, 'C3': 8804},
               {'C1': [8, -22], 'C2': 24075, 'C3': 32589},
               {'C1': [-105, 11], 'C2': -28902, 'C3': -26668},
               {'C1': [34, 19], 'C2': -9699, 'C3': 9518},
               {'C1': [25, -1], 'C2': 7065, 'C3': 27167},
               {'C1': [84, -66], 'C2': 24852, 'C3': -31899}],
        'B3': -7603990294568795903},
 'A5': 0.236702099442482,
 'A6': {'D1': 20,
        'D2': -16503,
        'D3': 17258,
        'D4': 736644186,
        'D5': 0.15337224304676056,
        'D6': [-23542, -27166, -7953],
        'D7': -28119},
 'A7': 174333262,
 'A8': [-168826205090203225,
        8503455380351823700,
        4314801931977719637,
        656760391516397828,
        -3999071768557841370,
        94922727944663659,
        -5281744868626455608,
        -5792611112169322099]}

Вариант №3

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x41 0x4d 0x4b 0x54, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива char
2 Адрес (uint32) структуры B
3 int32
4 uint32
5 uint8

Структура B:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива адресов (uint32) структур C
2 Адрес (uint32) структуры D
3 uint64
4 uint32
5 Адрес (uint32) структуры E
6 Массив uint16, размер 2

Структура C:

Поле Описание
1 uint16
2 uint64
3 Размер (uint32) и адрес (uint16) массива float
4 int64

Структура D:

Поле Описание
1 int16
2 uint8
3 int16
4 int16

Структура E:

Поле Описание
1 int32
2 uint64
3 double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'AMKT\x00\x00\x00\x03\x00\x00\x00\x19\x00\x00\x00\x8f\x9aO\x10L\x12\xe95\x86'
 b'\xa3ngo>\xb5\xd2v?pX\xce>\x04b\xaf?\x1e\x05F\xaa\xda\xf0?\xae\x03\xedG'
 b'\xee\x18\x00\x00\x00\x04\x00\x1c7\xaf\xfa\x892\xf9 />\x18\xedh\xbf\x02,@'
 b'?\x14\xa6\x9f\xbf0j\x18\x8bWK\xc7\x91d#\x81\\\xc7\x00\x00\x00\x04\x00D'
 b'w\xf3\x00\xff\xf2)\xc0|\x00\x00\x00,\x00\x00\x00T\xbdZp\xe2H\x87J\xfc'
 b'\x8a\x85\x7f\xd56\x0eD\xc4Y\xf1\xaf\xbf\xe1w\xa0\x16E\xe9\n\x00\x02\x00l\x00'
 b'\x00\x00t\xce\x17T\xc4LX\xe0\xb3YT\xa2a\x00\x00\x00{N\xe3\xda#')

Результат разбора:

{'A1': 'ngo',
 'A2': {'B1': [{'C1': 43738,
                'C2': 17311746824524525080,
                'C3': [0.35512131452560425,
                       0.9388550519943237,
                       0.12928269803524017,
                       0.6172679662704468],
                'C4': 4012701260183052335},
               {'C1': 35671,
                'C2': 5460492932488453319,
                'C3': [0.14934313297271729,
                       -0.5084877014160156,
                       0.5806674361228943,
                       -0.6891188621520996],
                'C4': 8643253209133596796}],
        'B2': {'D1': -17062, 'D2': 112, 'D3': -7608, 'D4': -30902},
        'B3': 14850431498348716211,
        'B4': 1498718817,
        'B5': {'E1': -58030721,
               'E2': 15363482867335819695,
               'E3': -0.5458527026196702},
        'B6': [20195, 55843]},
 'A3': -1706094516,
 'A4': 317273478,
 'A5': 163}

Пример 2

Двоичные данные:

(b'AMKT\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x82\x89@u|\xe2\xb1\xf5C'
 b'\x06zs>&\x017\xbf9\xddYh*\xd7\x81Xy\x8c\xdf\xd8\xf8\x00\x00\x00'
 b'\x02\x00\x1b\xf7\x07?\xb0\x9b/\x8b\xd4>{b?>P\x91|>\xd8\x10M\xc0\x91\xceAi'
 b' \r5\xe7\xef\x00\x00\x00\x03\x00;:V\xe0\x89\xa1/\x81\x0c\x00\x00\x00#\x00'
 b'\x00\x00G`\xc9\x97\xf6\x02l\xfa\x91\xb4_s\xbf\n\x00\xdbS?\x06\xfb\xbf\xbb'
 b'\x1ci;\xc9G\x00\x00\x02\x00_\x00\x00\x00g\x12\xb5U\x1e\xed\n\x06\x93\xc86'
 b'\x03\xae\x00\x00\x00n\xc6\xaa\xd7B')

Результат разбора:

{'A1': 'zs',
 'A2': {'B1': [{'C1': 26666,
                'C2': 15528790269227948280,
                'C3': [0.1621140092611313, -0.7260337471961975],
                'C4': -646477993753998380},
               {'C1': 49297,
                'C2': 14862275831680853999,
                'C3': [0.24549196660518646,
                       0.20367997884750366,
                       0.42199936509132385],
                'C4': 4203794183916323084}],
        'B2': {'D1': 24777, 'D2': 151, 'D3': -2558, 'D4': 27898},
        'B3': 1348077254781568659,
        'B4': 3358983086,
        'B5': {'E1': -1850450061,
               'E2': 13765816153005819643,
               'E3': -0.10590226850152007},
        'B6': [50858, 55106]},
 'A3': -1992264324,
 'A4': 3803313475,
 'A5': 6}

Вариант №4

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x43 0x50 0x59 0xa2, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 Массив float, размер 8

Структура B:

Поле Описание
1 Структура C
2 uint16
3 Массив int32, размер 8
4 int32

Структура C:

Поле Описание
1 int16
2 int16
3 Размер (uint16) и адрес (uint16) массива структур D
4 uint16
5 Массив double, размер 8
6 double

Структура D:

Поле Описание
1 uint16
2 float

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'KCPY\xa29\x10ho\x02\x00\x9d\x00"\xbbp9\x06>\x1e\x1d\xe5\xbf\xb4\xbe*o\xc6'
 b'\x9e\xdd?\x0e\xc8\xf7MF\xd1\xed?\xd08\xaf\xd9l\x9d\xea?\xf06y\x83$'
 b'\xc5\xcd\xbf\x86E\xfb\x85\x94S\xe6\xbf\xd0\xcf\xc9<\x11\x17\xe9?\x8e._iy'
 b'2\xe6?Z\xc7\xc0+\xe0\x07\xe5\xbf\xcdv\xd0en\xe1\xf9\xfe\x85\xcc\xa0KA'
 b'\x17\x13s\x07\xabC2\xc73\xe5\x0bK[\xffof\xfdI\xf7\x9b\xfaj\xc4o\xb6\x02\xcb!'
 b'?\xb1\xe6q?\x84\x9b\x1e\xbf\xe9\xb2\x07\xbf\x03k^\xbf\x1e\xc04?B\xf5\xce'
 b'\xbex\xe3\x9f>\xc4\xc6\xd3\xc6e\xbf\x01`n\xcb~?')

Результат разбора:

{'A1': {'B1': {'C1': 4153,
               'C2': 28520,
               'C3': [{'D1': 50884, 'D2': -0.8975650668144226},
                      {'D1': 24577, 'D2': 0.9952915906906128}],
               'C4': 47906,
               'C5': [-0.6598044597065336,
                      0.46281586509847306,
                      0.9317962191400981,
                      0.8317169429444906,
                      -0.23257881564716554,
                      -0.6977026573969602,
                      0.7840658366462723,
                      0.6936614091914224],
               'C6': -0.6572113852073287},
        'B2': 30413,
        'B3': [-512858672,
               -863633671,
               390155168,
               -1425575149,
               868692547,
               1531644901,
               -43618305,
               -90441911],
        'B4': -1234189206},
 'A2': [0.632003903388977,
        0.9449263215065002,
        -0.6195604801177979,
        -0.5300737023353577,
        -0.8688203692436218,
        0.7060564756393433,
        -0.40421491861343384,
        0.3122823238372803]}

Пример 2

Двоичные данные:

(b'KCPY\xa2Y\x1a\xcc\xaf\x02\x00\x9d\x00\xcc\x1d\xec\x0e,\xf0\x7f'
 b'\x01\xd4\xbf\xb01\xf3\xf5?1\xe7?\x86\xf7\xf4\x9d\x8f\x02\xeb?p\x8bF\x95\xf4'
 b'\x0c\xc8?\xa4FN\xc1\xfd\xf4\xd3?\x82\xcb\xa7\x1a\xb1~\xe9\xbf(\x8e76\x93'
 b'0\xea?\xe8v4\xb0i\x1c\xda\xbf\xb0\xe9\xf9\xf6\xb4\x1b\xc1\xbf4~\x9bu\xf8'
 b'\x1f\xd3O\xe8\xe2\xd33\xbeG^\xeb\x9f\xa8\xfe\xe8\x9e\x1b\x99\xf4r\xcdHEL'
 b'\x84\x89\xfb\x8e\xce\xd0\xe6\xde^~\xba\xe1\xbe\x98\x07\xad\xbd!\xd5%'
 b'\xbf\x11\xbc\x16\xbf\x01>[\xbez`\x07?M\xe1;?J*\x03\xbf\xf0\xb8\xd8\xd5J>\x10'
 b'\xc1\xb0\x82\x07\xbe')

Результат разбора:

{'A1': {'B1': {'C1': 6745,
               'C2': -20532,
               'C3': [{'D1': 47344, 'D2': 0.198081374168396},
                      {'D1': 49424, 'D2': -0.13233447074890137}],
               'C4': 7628,
               'C5': [-0.3125915379934969,
                      0.7247619441709983,
                      0.8440626225562802,
                      0.18789536751600222,
                      0.3118280780555358,
                      -0.7967153092016448,
                      0.8184295710493119,
                      -0.40798418242944345],
               'C6': -0.13365804728875963},
        'B2': 32308,
        'B3': [536376731,
               -488091693,
               1203647443,
               -1465914530,
               463399166,
               -848104295,
               -2075376312,
               -829490295],
        'B4': 1591666384},
 'A2': [-0.44087594747543335,
        -0.08448714017868042,
        -0.6477833390235901,
        -0.5888071656227112,
        -0.21410371363162994,
        0.5288158655166626,
        0.7339065670967102,
        -0.5123640298843384]}

Вариант №5

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x45 0x46 0x4d 0x53, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint16
2 Структура B
3 int64
4 uint8
5 int8

Структура B:

Поле Описание
1 double
2 int16
3 Структура C
4 Размер (uint16) и адрес (uint16) массива int64

Структура C:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива адресов (uint32) структур D
2 Размер (uint16) и адрес (uint16) массива int64

Структура D:

Поле Описание
1 int8
2 Размер (uint16) и адрес (uint32) массива int32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'EFMS\xdf\xed\xbf\xe3al\xcaL\x85B\xdc\x88\x00\x03\x00\x00\x00U\x00\x02'
 b'\x00a\x00\x05\x00q\xc5\xd6\x16\xac\x06\xad\x97\xc5X\xe1\x0b\xc1\xba{'
 b'\xecg\xcb\xddS\x00\x02\x00\x00\x00(v\xc8\xa79\xae<\x0b\xaaE\x00\x02\x00\x00'
 b'\x007\x1e0\x17\x193<\x89Tq\x00\x02\x00\x00\x00F\x00\x00\x000\x00\x00\x00'
 b'?\x00\x00\x00N\xb6\x88\x1d\xde\xe6\xee?\xea>I\xd9"\x93S\x80\x04\xcb\xaa\x7f'
 b',"\xf6\x13\\\x84T\xaeP\x87\x1b\x80\x02\x819\xa4B\xc4\xc6~\xe9\xb3\xca~'
 b'@T(\xdb\xa0\xc0\x810\xe6\xed\x15\x04y')

Результат разбора:

{'A1': 57325,
 'A2': {'B1': -0.6056426955366663,
        'B2': -9080,
        'B3': {'C1': [{'D1': 83, 'D2': [197245563, -328741923]},
                      {'D1': 69, 'D2': [1992861497, -1371796566]},
                      {'D1': 113, 'D2': [506468121, 859605332]}],
               'C2': [-5293948518779699222, 4488357246175248388]},
        'B4': [-3771061910427528356,
               -8911306101772025854,
               -9135089762468200727,
               -5491437980869928032,
               -4575321978053524359]},
 'A3': -4191137475119441979,
 'A4': 88,
 'A5': -31}

Пример 2

Двоичные данные:

(b'EFMS\xfd\x96\xbf\xd3%.Lt\xb9l\xd0\xe5\x00\x02\x00\x00\x00F\x00\x02'
 b'\x00N\x00\x03\x00^\x94|rJ\xc1:\xff\xe6&\x16\x19\xf2\xf0\xd1\xf4j\x97\x06'
 b'b\x00\x02\x00\x00\x00(%\xf7\x18?\xa6\x93\xba\x97:\x00\x02\x00\x00'
 b'\x007\x00\x00\x000\x00\x00\x00?9\xd2Y%|\x8fqQv\xda9\x84v\xc2/:~\x9e2\xe7f.'
 b'b\xa3\xedw\xffd\xc5\xe6\xc0\xe6\x0e\xdc\xbbU\x1a\xce\xf4\x8f')

Результат разбора:

{'A1': 64918,
 'A2': {'B1': -0.2991443392410449,
        'B2': -12059,
        'B3': {'C1': [{'D1': 98, 'D2': [435351761, -194341114]},
                      {'D1': 58, 'D2': [636950591, -1500267881]}],
               'C2': [4166490622809567569, 8564220882489323322]},
        'B4': [9123785864532353699, -1335317956210016026, 1070936785603720335]},
 'A3': -7747191593589080090,
 'A4': 38,
 'A5': 22}

Вариант №6

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x42 0x49 0x59 0x24, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int8
2 uint32
3 Адрес (uint16) структуры B
4 Размер (uint32) и адрес (uint32) массива структур C
5 Адрес (uint16) структуры D
6 int16
7 Структура F
8 int32

Структура B:

Поле Описание
1 int8
2 uint64

Структура C:

Поле Описание
1 int16
2 int64

Структура D:

Поле Описание
1 uint8
2 Размер (uint16) и адрес (uint16) массива структур E
3 double
4 Массив float, размер 4

Структура E:

Поле Описание
1 uint64
2 Массив float, размер 3
3 uint32

Структура F:

Поле Описание
1 int16
2 int8
3 int8
4 int64
5 uint16
6 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'FBIY$\x13.\xed\xde\x03\x00+\x00\x00\x00\x03\x00\x00\x004\x00\x82f\xde'
 b'\x10\x14\x89\xef\x10\xc0x\x91\x0ex}\xa4\x19nOPsa\xee2<}\xa0/\x01\x8alp'
 b'Bs\xc8<QK\x92\x1eJ{\xbc\xa7\xe7\xf4\xd4\xa4X\xb6\x8d`\xcd\xa6g\x02'
 b'\xec\xd4\xf6?|\x04\x88\xbdx7\n\xaep_?a\xf8\xe4\xbd\xe0)G\xbf\t8\xf6\xe9\x0c'
 b'A8\xa0k}i\x91l\xefA\xbf\x15\xef\xda>q\x9f\x1e\xbf\x7f\xe3\x07*\x02'
 b']\x9b\xbb\x00\x02\x00R?\xef\x97\x97\x9e\x18z\xe0?\x05\x9c\xa4\xbf'
 b'b\x0e\x0f\xbe\xc2\x16X?4\xbb^')

Результат разбора:

{'A1': 19,
 'A2': 787340803,
 'A3': {'B1': 50, 'B2': 4358816138114264176},
 'A4': [{'C1': 17011, 'C2': -4018247382505469317},
        {'C1': -17241, 'C2': -1732526154302714528},
        {'C1': -12890, 'C2': 7422755535268576260}],
 'A5': {'D1': 187,
        'D2': [{'E1': 9853163737554251871,
                'E2': [0.8827040195465088,
                       -0.1094537302851677,
                       -0.5360254049301147],
                'E3': 3909894456},
               {'E1': 11559470760941383489,
                'E2': [-0.5856910943984985,
                       0.2359585464000702,
                       -0.9995579123497009],
                'E3': 704798107}],
        'D3': 0.9872549140744376,
        'D4': [0.5219213962554932,
               -0.8830270171165466,
               -0.3790767192840576,
               0.7059839963912964]},
 'A6': 26334,
 'A7': {'F1': 4116,
        'F2': -119,
        'F3': -17,
        'F4': 1207097264543661476,
        'F5': 6510,
        'F6': 79},
 'A8': 1349738990}

Пример 2

Двоичные данные:

(b'FBIY$\x9cta\xc0\x98\x00+\x00\x00\x00\x04\x00\x00\x004\x00\x8c\x98\xaa'
 b',\xe8\xaa\xb1\xc2dP\x9fM\x94\xf6!\xd0\x90u*\x98\xc9\x8d\xcd\xc2\xd4\x1e\xa9'
 b'{\xed3+\xe4S\x0c\xa2(\x9b\xe6g\xf6\xf4\xceL\xa4=[cm=L\xd2\xc6\xa6\xf5B'
 b'\xeb\xc6\xad$+\xd2\xc6\x9a\x0c\xffe\xcc&\xc5\ttu\x9d\xc2D\xed\xf1\xea\xbf'
 b"\xbfx'm>\xf5<W>\x07\xf5\x04\xa1]\xc7\x16\xb1\x17\xca4\xd1\x95\xf4\x1a"
 b'=\x85\xa8\x0f\xbfi\xd7I>\xb2\x0f\x94\xac\x7f\x96\xb9*\x00\x02\x00'
 b'\\\xbf\xe0\xa8\xe8\x04\xff \xc4>c\xdaF\xbd:\xd75?d\x1b\xa5?\x0fQ\xea')

Результат разбора:

{'A1': -100,
 'A2': 1952563352,
 'A3': {'B1': -51, 'B2': 14038879651698127659},
 'A4': [{'C1': -7085, 'C2': 910334724732876532},
        {'C1': -12724, 'C2': -6612028195317396270},
        {'C1': -14682, 'C2': -773796947413423150},
        {'C1': -14694, 'C2': 936579175014533492}],
 'A5': {'D1': 42,
        'D2': [{'E1': 8475143675086760639,
                'E2': [-0.969351589679718,
                       0.47897598147392273,
                       0.1327705979347229],
                'E3': 2707277590},
               {'E1': 12760890397380965402,
                'E2': [0.06526195257902145,
                       -0.9134412407875061,
                       0.34777510166168213],
                'E3': 2894042809}],
        'D3': -0.5206184480275842,
        'D4': [0.22251233458518982,
               -0.04561539366841316,
               0.8910468220710754,
               0.5598436594009399]},
 'A6': -26454,
 'A7': {'F1': 11496,
        'F2': -86,
        'F3': -79,
        'F4': -4439334687548836319,
        'F5': 53392,
        'F6': 117},
 'A8': 714656141}

Вариант №7

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x52 0x53 0x56 0x4f, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint32
2 float
3 Структура B
4 int16
5 Размер (uint16) и адрес (uint32) массива int32
6 uint32
7 uint16

Структура B:

Поле Описание
1 uint8
2 int8
3 Структура C
4 int64
5 Адрес (uint16) структуры E

Структура C:

Поле Описание
1 int8
2 float
3 Размер (uint32) и адрес (uint32) массива адресов (uint32) структур D

Структура D:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива int8
2 uint16
3 int8
4 uint32
5 uint32

Структура E:

Поле Описание
1 uint16
2 Массив uint8, размер 4
3 int8
4 Размер (uint32) и адрес (uint32) массива uint8
5 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'RSVOB\x8a\x99\xb0I\x03\x9a\xbdq\x81\xe7\x19\xe9\xd0>\x03\x00\x00\x00x'
 b'\x00\x00\x00\x8e\xdb\xedPB\xa3}T\x88\x00\x0c\x9e\x03\x00\x98\x00\x00'
 b'\x00\xe4\x98z$\x04}F\xcd\xf3\x92\x01\xfc\x06\x00\x00\x003\x00\x00'
 b'\x00`\x18\xfc\xcf\x8eO\xa1\x1c@\xdf\xb63\x05\x0c\x03\x00\x00\x00L'
 b'\x00\x00\x00\\h\xb1\x15l\xc5\xec\x1a\xd6Nt\xa0\xdd\x91\x03\x00\x00'
 b'\x00b\x00\x00\x00\xfb\xe6\x14\xce \x9aG\x91$\xa9\xe09\x00\x00\x00'
 b'O\x00\x00\x00e\x00\x00\x00.\x1b\x1d\x13\x11\xf8KNf\x9d\x1e\x04'
 b'\x00\x00\x00\x84\x00\x00\x00\x06)\xf7(9\xd6w@\x10\x92\xfa\xf8\xc2')

Результат разбора:

{'A1': 2962852418,
 'A2': -0.07520157843828201,
 'A3': {'B1': 113,
        'B2': -127,
        'B3': {'C1': -25,
               'C2': 0.40802839398384094,
               'C3': [{'D1': [70, -51, -13, -110, 1, -4],
                       'D2': 6240,
                       'D3': -4,
                       'D4': 2706345679,
                       'D5': 3068084252},
                      {'D1': [51, 5, 12],
                       'D2': 26716,
                       'D3': -79,
                       'D4': 3972361237,
                       'D5': 1951323674},
                      {'D1': [-96, -35, -111],
                       'D2': 59131,
                       'D3': 20,
                       'D4': 1201283278,
                       'D5': 3769181329}]},
        'B4': 6088201776495713166,
        'B5': {'E1': 63505,
               'E2': [75, 78, 102, 157],
               'E3': 30,
               'E4': [46, 27, 29, 19],
               'E5': 6}},
 'A4': -25076,
 'A5': [958986025, 272660438, -1023870318],
 'A6': 612014308,
 'A7': 32004}

Пример 2

Двоичные данные:

(b'RSVO\xa5W\x0c\xad\xf5\x7f\x19\xbf\xc3\xb6\x87\xb7o\xae\xbe\x03\x00\x00\x00w'
 b'\x00\x00\x00g\x81\xfe\xed\xc3<\x88\x1b\x87\x00c\xae\x02\x00\x97\x00\x00'
 b'\x00\xb3\xf9\xe4\xce\xb8#\x13D\x02\x00\x00\x003\x00\x00\x00*G\xe7zB\xa7\x05'
 b"Z\x1a\xf7\x03_4\xae\x03\x00\x00\x00H\x00\x00\x00\xd7\x06=a\xbe\xf5*\x88'"
 b'\xc8\x9f\xbf(\xbf\xcb\xbdn\x06\x00\x00\x00^\x00\x00\x00nmj=51\x02\x18\xba;u5'
 b'\x00\x00\x00K\x00\x00\x00d\x00\x00\x00\xb4p\xce\xe2g\\/\xdb\xbb\xe3f\x04\x00'
 b'\x00\x00\x83\x00\x00\x00Mx\xb7s\xc0\x03*3A')

Результат разбора:

{'A1': 2903267237,
 'A2': -0.5996087193489075,
 'A3': {'B1': 195,
        'B2': -74,
        'B3': {'C1': -121,
               'C2': -0.3406960666179657,
               'C3': [{'D1': [19, 68],
                       'D2': 18218,
                       'D3': -25,
                       'D4': 94847610,
                       'D5': 66525786},
                      {'D1': [95, 52, -82],
                       'D2': 1751,
                       'D3': 61,
                       'D4': 720748129,
                       'D5': 2680694664},
                      {'D1': [-65, 40, -65, -53, -67, 110],
                       'D2': 28014,
                       'D3': 106,
                       'D4': 36779325,
                       'D5': 1966848536}]},
        'B4': 1983902448065872231,
        'B5': {'E1': 23655,
               'E2': [47, 219, 187, 227],
               'E3': 102,
               'E4': [180, 112, 206, 226],
               'E5': 77}},
 'A4': -20893,
 'A5': [-1066158216, 1093872131],
 'A6': 3471112627,
 'A7': 9144}

Вариант №8

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x3d 0x42 0x49 0x4f 0x42, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint16) структуры B
2 float
3 Размер (uint16) и адрес (uint16) массива uint32
4 uint8
5 uint32
6 int16
7 uint32

Структура B:

Поле Описание
1 int64
2 Массив структур C, размер 2
3 int16
4 uint32

Структура C:

Поле Описание
1 uint8
2 Размер (uint16) и адрес (uint32) массива uint32
3 Массив uint16, размер 2
4 Структура D

Структура D:

Поле Описание
1 float
2 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b"=BIOB\x002\xbf'j0\x00\x02\x00`*(\xd2\x10\x1d1Z[%\x9d\x84\xce' \xca5\x81"
 b'\xe5\xb2k[\xd8:\xfea\x9b\x90\xdc\rGIE\x00\x87\xac\xe2\xdf\x93KJ\xb3'
 b'\\\xee\xbd\x00\x03\x00\x00\x00\x1a\x86\x1e\xbd\x89? \xa2!\x84\xd3\x00'
 b'\x03\x00\x00\x00&\xa6\xda\xb8a\xbd \xbdYC)\xd9i?\x14\x88\xaa\xee\xb2\x93'
 b'*\\,\xc6')

Результат разбора:

{'A1': {'B1': -2098796949746262802,
        'B2': [{'C1': 189,
                'C2': [3458670794, 897705394, 1801181242],
                'C3': [34334, 48521],
                'C4': {'D1': 0.6274738907814026, 'D2': -124}},
               {'C1': 211,
                'C2': [4267809680, 3691857737, 1157662636],
                'C3': [42714, 47201],
                'C4': {'D1': -0.039243075996637344, 'D2': 67}}],
        'B3': 10713,
        'B4': 1765741704},
 'A2': -0.6539640426635742,
 'A3': [2867770003, 710683846],
 'A4': 42,
 'A5': 684855325,
 'A6': 12634,
 'A7': 1529191812}

Пример 2

Двоичные данные:

(b'=BIOB\x00:\xbf]\xb0\x8b\x00\x02\x00h\x95\x0fu\xce\xb9\xf3K\x01\xb1'
 b'\x04\xa9\x94t\xde\xc7]\x96G\xa5\xd0\xbcL_\x1d#\xc1\xc7\xfd\xee6\xb4\x11\xcd'
 b"\x91,\x16\xb85'\x84\\\x06z'\xcca\x0e\xa6\xe7\xa9\x1e3\x00\x04\x00\x00\x00"
 b'\x1a\xb3\x9f:\xe5\xbf\x16\xd3l\xcfb\x00\x04\x00\x00\x00*q\xec\xdb'
 b'\xf2?\x00\xbd\x03td\x8c\x0f\x874\x14\x88g\xed_b\xf9\xa9\xad')

Результат разбора:

{'A1': {'B1': 2867773778285799710,
        'B2': [{'C1': 51,
                'C2': [2490687175, 1570129829, 3502001247, 488882631],
                'C3': [45983, 15077],
                'C4': {'D1': -0.5891635417938232, 'D2': -49}},
               {'C1': 98,
                'C2': [4260247220, 298684716, 381170983, 2220623482],
                'C3': [29164, 56306],
                'C4': {'D1': 0.5028840899467468, 'D2': 116}}],
        'B3': 25740,
        'B4': 260518932},
 'A2': -0.8659750819206238,
 'A3': [2288512351, 1660529069],
 'A4': 149,
 'A5': 259378873,
 'A6': -3253,
 'A7': 28378281}

Вариант №9

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x43 0x4d 0x43 0x4e, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива структур B
2 double
3 int16
4 int16
5 Адрес (uint32) структуры C
6 Массив int16, размер 8
7 int8
8 Массив uint8, размер 3

Структура B:

Поле Описание
1 int32
2 float
3 int16
4 uint32
5 int64
6 Размер (uint32) и адрес (uint16) массива char

Структура C:

Поле Описание
1 double
2 Структура D
3 int16
4 uint8
5 int32

Структура D:

Поле Описание
1 uint32
2 Размер (uint16) и адрес (uint16) массива uint32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'CMCN\x02\x00\x00\x00:\x00\x00\x00\x0c\xac\x96\x8d~`\xeb\xbf\xd2\x16\x14\xfc'
 b'~\x00\x00\x00\xfc\xe8\x85\xda*\x1aV\xdf\xfe$\xefW\xb3\xfc\x0b\x8f'
 b'\xf9\xff\x06;msivejfkzv\xc8_\xdem\xa1\xd8+\xbf\xc7}\xe9_4\x17i\n\x0f\xd8'
 b'\x8a,I\xfb\x06\x00\x00\x000\x00\xbf\n\xfe\xf8yaN=\xf8iqt\x02\x18YQ\r['
 b'\x93\xf7\x1c#\x04\x00\x00\x006\x00Yx\xda0\x8apv\x03i\xe3_H$d\xcc\xf4\xf4\xc6'
 b'\xd2?\xcf\x1f\xc6\xd4\x03\x00r\x00\x06`\x98F\x06\x0ek')

Результат разбора:

{'A1': [{'B1': 1843290056,
         'B2': -0.6712742447853088,
         'B3': 32199,
         'B4': 389308393,
         'B5': -339691322047788439,
         'B6': 'msivej'},
        {'B1': -117568833,
         'B2': 0.05038592591881752,
         'B3': 27128,
         'B4': 402814065,
         'B5': 2530169302935228761,
         'B6': 'fkzv'}],
 'A2': -0.8555290952111831,
 'A3': 5842,
 'A4': -1004,
 'A5': {'C1': 0.29339336305707975,
        'C2': {'D1': 3569754063, 'D2': [819624025, 58093706, 1214243689]},
        'C3': 24582,
        'C4': 152,
        'C5': 1796081222},
 'A6': [-5892, -9595, 6698, -8362, 9470, 22511, -845, -28917],
 'A7': -7,
 'A8': [255, 6, 59]}

Пример 2

Двоичные данные:

(b'CMCN\x03\x00\x00\x00=\x00\x00\x00\x02}A\xe27^\xe0?\xe3\x84\x9f\xe2'
 b'\x99\x00\x00\x00\x82\xf2T\xc6\xc8 \xcf\xdbH\xb6\x89\xdf\xa6\xdct\xc4'
 b'\xe8\xa141luxnehrhzmmjh\xd1\x93\xc0\xfd\xdbA\xfc\xbdCyJ\xfe\xc564\xc6Xk\xf2'
 b'F\xa3\xcb\x03\x00\x00\x000\x00gt\xabs\x7f\xb2D?\x0f}u\x10X\xaa\x89'
 b'\xce\xfa\xb8y}o\xdb\x04\x00\x00\x003\x00\xb4\x90t\xbf\xdd\xbbj\xbfGl\x0c'
 b'\xea\x83\xd1L{\x9f\xe3\xbac\x16\xc4\x06\x00\x00\x007\x00+\xad\xf6'
 b'\xc9\xe0\x1aml\xf8 \xb2\x9b\x9bc\xe9?\x99\x12|[\x02\x00\x91\x00OY\xc9'
 b'\xd9ER\xa1')

Результат разбора:

{'A1': [{'B1': -37710895,
         'B2': -0.12317248433828354,
         'B3': 31043,
         'B4': 918945354,
         'B5': -3773094055809333708,
         'B6': 'lux'},
        {'B1': 1940616295,
         'B2': 0.7683486342430115,
         'B3': 32015,
         'B4': 2857898101,
         'B5': -2634749295240491383,
         'B6': 'nehr'},
        {'B1': -1082879820,
         'B2': -0.9169290661811829,
         'B3': 27719,
         'B4': 3515083276,
         'B5': -4317153538454095028,
         'B6': 'hzmmjh'}],
 'A2': 0.5115012568529951,
 'A3': -31517,
 'A4': -7521,
 'A5': {'C1': 0.7934091607030771,
        'C2': {'D1': 1534857881, 'D2': [3388386603, 1819089632]},
        'C3': 22863,
        'C4': 201,
        'C5': -1588443687},
 'A6': [-3454, -14764, 8392, -9265, -18872, -8311, -9050, -15244],
 'A7': -24,
 'A8': [161, 52, 49]}

Вариант №10

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4c 0x46 0x45 0x24, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 float
2 int16
3 Размер (uint32) и адрес (uint16) массива char
4 uint64
5 uint8
6 Размер (uint16) и адрес (uint32) массива структур B
7 int32
8 Структура D

Структура B:

Поле Описание
1 float
2 Структура C

Структура C:

Поле Описание
1 int8
2 Массив int8, размер 4
3 uint64
4 int64

Структура D:

Поле Описание
1 uint32
2 float
3 uint16
4 Массив int32, размер 4

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'LFE$?^\xc1\xb3>;\x00\x00\x00\x03\x00=\xe2\xa36\x19@\xc8_\xfe\x04\x00\x02\x00'
 b'\x00\x00@uxW\xf5\xbd.l>\xbd\\\xe5\xceS5\x90\x0e\x1f\x9dNU\xd7,ET\xd6'
 b'H_\xaf\x9c\xfatgb?S\xa0\t\xf2.gj\xbe\xb3Z\x88\n\x17ow0\xcek\x88\xd5Z\xa4\x86'
 b'^\xbf\x01y\x8bw#\xa8\x02\n\xa8g\xec\xfc\x1e\xdd\x94~\xc3\xb4\xc4\xef\xb6\xe5'
 b'\xdcr')

Результат разбора:

{'A1': 0.8701431155204773,
 'A2': 15931,
 'A3': 'tgb',
 'A4': 16330956155864506366,
 'A5': 4,
 'A6': [{'B1': 0.826660692691803,
         'B2': {'C1': -14,
                'C2': [46, 103, 106, -66],
                'C3': 12923791657617291056,
                'C4': -3572611429458213282}},
        {'B1': -0.5057608485221863,
         'B2': {'C1': 119,
                'C2': [35, -88, 2, 10],
                'C3': 12134928288566842494,
                'C4': -4344631206660940686}}],
 'A7': 1970821109,
 'A8': {'D1': 3173936190,
        'D2': -0.053930096328258514,
        'D3': 21301,
        'D4': [-1878122595, 1314248492, 1163187784, 1605344506]}}

Пример 2

Двоичные данные:

(b'LFE$?=\x8ey\xb2\xbc\x00\x00\x00\x03\x00=\xacfD2p\xee032\x00\x02\x00'
 b'\x00\x00@\xb3\xc3\xe2\x02\xe6w@&\xbf\x03\x14L1\xa6X\xbe\xc1+\xa1gH'
 b'D\xce\x94\xae5\x0f\x8dhscus>\xd2\xf1\xc8z\x85\xac\x17[\xc2\xdf\xea\xb3(_\xab'
 b'\x8e\x17y>v\xe7@\r\xf1\xbfT\xcc\x83W\xe71C\xdc\x92u$?f{\x11\x82ZQIt.t'
 b'\x1a\x8b')

Результат разбора:

{'A1': 0.7404552102088928,
 'A2': -19780,
 'A3': 'cus',
 'A4': 12422691605581803571,
 'A5': 50,
 'A6': [{'B1': 0.4120008945465088,
         'B2': {'C1': 122,
                'C2': [-123, -84, 23, 91],
                'C3': 14042200218361899918,
                'C4': 1691451815461129713}},
        {'B1': -0.8312456011772156,
         'B2': {'C1': 87,
                'C2': [-25, 49, 67, -36],
                'C3': 10553381156533506434,
                'C4': 6508063699871472267}}],
 'A7': -1279008254,
 'A8': {'D1': 3866574886,
        'D2': -0.5120284557342529,
        'D3': 12710,
        'D4': [1488896299, -1587066812, -829116875, 260925555]}}

Вариант №11

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x4a 0x59 0x47, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 float
2 uint16
3 uint8
4 int64
5 int32
6 uint32
7 uint16
8 Структура B

Структура B:

Поле Описание
1 Массив структур C, размер 4
2 uint16
3 int8
4 Массив float, размер 2
5 int64
6 Структура D

Структура C:

Поле Описание
1 Массив uint16, размер 5
2 float

Структура D:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива uint16
2 uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b"VJYG\xbe\x8a9\x98\x8c\xa9\xf6r >\x9e\xac\x8cw\x91'\x82\x038\xc4\xff\xe0n\x13"
 b'\xdf(My\xdbk\xb0\x18\xcaG\xad?3\x1fIX\x86\xbe\xec\x80o\xdc\xee^\xba?\x10U'
 b'\xee\xbd\x01\xa7\xfb\xa5Vk\xa6\xac\xbb?d\x16\xb2+\x81\x18\xe9\xaa\xb98$\xa1'
 b"\xf2\xbe\xfa\xe7\xcdI\xb1\xef?v!\xd5\xbf\x11\x94}+\xae\xee'\x14\xb5\xb1="
 b'\x00\x00\x00\x04\x00\x00\x00r\xd78Z\xdby~\x0f\xe5\xaa;')

Результат разбора:

{'A1': -0.2699706554412842,
 'A2': 36009,
 'A3': 246,
 'A4': 8223641770799167377,
 'A5': 662831928,
 'A6': 3305103470,
 'A7': 5087,
 'A8': {'B1': [{'C1': [10317, 31195, 27568, 6346, 18349],
                'C2': 0.6996961236000061},
               {'C1': [22662, 48876, 32879, 56558, 24250],
                'C2': 0.563811182975769},
               {'C1': [48385, 43003, 42326, 27558, 44219],
                'C2': 0.890971302986145},
               {'C1': [11137, 6377, 43705, 14372, 41458],
                'C2': -0.4900497496128082}],
        'B2': 18865,
        'B3': -17,
        'B4': [0.9614537358283997, -0.5686720013618469],
        'B5': 3147715041197142333,
        'B6': {'D1': [23259, 31102, 4069, 43579], 'D2': 55096}}}

Пример 2

Двоичные данные:

(b'VJYG?\n\x01\xce\x9bk\xc6\xe1\xdeQ4\xe3[L\xb1hS\xdc\xfe\xed/R]\x93O\xec\x06('
 b'\xe5\xe0\xbf\xea\x18\xbdO>\xb8(&\x93UG\x13\xcf\xf6\x98\xaa\x8e\x00\xbd\xedl'
 b'\xf0FWcr\xdb\xba\xf9\x0fuD\xbfe;k\x14Y\x1d\xfa>\\Vv\xc1\x8f\xbe\n\xc6'
 b'1\xa3\x1bN?wv??y\x84d\xe4\xe4p\xaeC`\xeaK\x00\x00\x00\x04\x00\x00\x00r'
 b'\xc3\xec\xa0\xbe\xb7\xc4\xa7G\xe6\xd3')

Результат разбора:

{'A1': 0.5390900373458862,
 'A2': 39787,
 'A3': 198,
 'A4': -2171208682751439695,
 'A5': 1750326526,
 'A6': 3979301469,
 'A7': 37711,
 'A8': {'B1': [{'C1': [60422, 10469, 57535, 59928, 48463],
                'C2': 0.35968130826950073},
               {'C1': [37717, 18195, 53238, 39082, 36352],
                'C2': -0.11593043804168701},
               {'C1': [18007, 25458, 56250, 63759, 30020],
                'C2': -0.8954378962516785},
               {'C1': [5209, 7674, 15964, 22134, 49551],
                'C2': -0.13552166521549225}],
        'B2': 41755,
        'B3': 78,
        'B4': [0.9666480422019958, 0.9746763706207275],
        'B5': -1953312444614907317,
        'B6': {'D1': [41150, 47044, 42823, 59091], 'D2': 50156}}}

Вариант №12

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x6f 0x53 0x58 0x49 0x4d, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int16
2 Адрес (uint16) структуры B
3 Адрес (uint32) структуры C
4 int16
5 Массив int16, размер 3

Структура B:

Поле Описание
1 Массив int64, размер 2
2 uint16
3 uint8
4 uint16
5 int64

Структура C:

Поле Описание
1 float
2 double
3 Массив структур D, размер 7
4 int64
5 int32
6 Массив int32, размер 3

Структура D:

Поле Описание
1 uint32
2 uint8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'oSXIM\x8f\xcf\x00\x15\x00\x00\x002X\xdb\xdcq\xa0A\tm\xf9\x19\x97'
 b'M\x7f\xb5\xe6\xa8\xbb\xb4\x88dJ;k4\xa4\xb73\xdc\xab\xfcL\x10\x82#;\xb9=\xbfV'
 b"\x8e\x8d\xbf\xc6\x98\r\xd1E\rH~#QZ,\x90\x8f\x8cG{\x97O\xa4\xa1'Q\xa9\xa4"
 b'\xa8#\xdc\x91\x84\xed\x9dv\xd2\xe126\x88\xeb\x10a\x80\x05\t#\xb55\x90\xaa'
 b'UZ\x0f\x98\xb7\x82\xdc\x19\x8b\x01\x94TP\xe2[\xb7!')

Результат разбора:

{'A1': -28721,
 'A2': {'B1': [-497199924736825688, -4921158528485594316],
        'B2': 42167,
        'B3': 51,
        'B4': 56491,
        'B5': -266820126798792387},
 'A3': {'C1': -0.8381126523017883,
        'C2': -0.17651531904457785,
        'C3': [{'D1': 2116243802, 'D2': 44},
               {'D1': 2425326663, 'D2': 123},
               {'D1': 2538579105, 'D2': 39},
               {'D1': 1370072232, 'D2': 35},
               {'D1': 3700524269, 'D2': 157},
               {'D1': 1993531698, 'D2': 54},
               {'D1': 2297106529, 'D2': 128}],
        'C4': 362860506174761557,
        'C5': 1510971575,
        'C6': [-2099504757, 26498128, -497305823]},
 'A4': 22747,
 'A5': [-9103, -24511, 2413]}

Пример 2

Двоичные данные:

(b'oSXIMw\xa5\x00\x15\x00\x00\x002\xbe\xfb\xab\x13.\x96\x88\x89\x85\xecE'
 b'\xb4S_\x9d\x0cw\x0c\xbf\x05|\xb4\x81\xb3+[\xa7D\xa2\x94\xa8\xb1\x7f\x9e/'
 b'\xbb7\xbfKuM\xbf\xc5\xda\xff\xe6x\r\xe8w\x1d/\x1a1\xcb\xa3 \xa1\xc4'
 b'\x9c\x7f\xea\xd3$>\x9b\x1c\x0c\x08\x07\x9b\xde\xb6\xaag\xb3\xd7\x98\xad'
 b'c?h\x90J%\xeb$\xaa\x82B/\xe3\x95\xd3G\x1b[;\xc0\x00K\x00\xb1\xc2\xc71\xc3'
 b'\x9a')

Результат разбора:

{'A1': 30629,
 'A2': {'B1': [-8796579331366216436, 8578441420521898419],
        'B2': 11099,
        'B3': 167,
        'B4': 17570,
        'B5': -7734737198335935689},
 'A3': {'C1': -0.7947586178779602,
        'C2': -0.17074583772055907,
        'C3': [{'D1': 1998401306, 'D2': 49},
               {'D1': 3416465569, 'D2': 196},
               {'D1': 2625628883, 'D2': 36},
               {'D1': 1050352652, 'D2': 8},
               {'D1': 127655606, 'D2': 170},
               {'D1': 1739839384, 'D2': 173},
               {'D1': 1665099920, 'D2': 74}],
        'C4': 2732317913678753763,
        'C5': -1781315813,
        'C6': [1530642432, 1258336706, -953039974]},
 'A4': -16645,
 'A5': [-21741, 11926, -30583]}

Вариант №13

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x9c 0x57 0x4c 0x45, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива char
2 uint64
3 int8
4 Массив адресов (uint32) структур B, размер 2
5 Структура D

Структура B:

Поле Описание
1 int8
2 Размер (uint32) и адрес (uint16) массива uint8
3 Структура C
4 uint32
5 Массив int8, размер 5

Структура C:

Поле Описание
1 Массив int16, размер 4
2 float
3 uint16
4 int16
5 uint32

Структура D:

Поле Описание
1 int64
2 uint16
3 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\x9cWLE\x00\x02\x00\x00\x00&\xe3\x02zW\xd1095\xad\x00\x00\x00*\x00'
 b'\x00\x00Q\xfeTF\x1e\xd3\x1eI\xb9m\x01\x9awq)\x05f\x00\x00\x00\x02\x00'
 b'(*\xb9\x8f~hr\xa4i\xbe\xab}\xed+8n\x877*\x83x\\\xbaP\xfa[\xacwqI5\xad'
 b'`\x8b\x00\x00\x00\x03\x00N"\xbfP%_\xbf\xd7\xdb?,c\xe0\xb2\t\xb6xrF\x95\xed'
 b'Qmj\xd5\x99\xf6;,\xbe')

Результат разбора:

{'A1': 'wq',
 'A2': 16357771314153404725,
 'A3': -83,
 'A4': [{'B1': 102,
         'B2': [41, 5],
         'B3': {'C1': [10937, -28802, 26738, -23447],
                'C2': -0.33494511246681213,
                'C3': 11064,
                'C4': 28295,
                'C5': 925533048},
         'B4': 1555714298,
         'B5': [91, -84, 119, 113, 73]},
        {'B1': -117,
         'B2': [53, 173, 96],
         'B3': {'C1': [8895, 20517, 24511, -10277],
                'C2': 0.6733989715576172,
                'C3': 45577,
                'C4': -18824,
                'C5': 1917228525},
         'B4': 1366125269,
         'B5': [-103, -10, 59, 44, -66]}],
 'A5': {'D1': -120394191827220039, 'D2': 27905, 'D3': -102}}

Пример 2

Двоичные данные:

(b'\x9cWLE\x00\x05\x00\x00\x00&!\n\x0e\x99\x90!\xc3\t\x1d\x00\x00\x00.\x00'
 b"\x00\x00V#\x0c\xdf'\x14r34\xdb\xe7\x8caqqpw\xf7\xf1\xf1Q\x00\x00\x00\x03\x00"
 b"+\xd0\x91V'Y\xa0\xc0'\xbfn\xae\tL\xa5Db\xeb\xf7\xad5\xebj\xd0\xbb\xaa\x10b"
 b'\xe3\x10\xd8\x1a$w\x04\x00\x00\x00\x04\x00R\xb8\xa9\xd10l\x00d\xf7\xbfCu'
 b'\x1c\xa3B&x\xd3pG^\x10\xfb\xc4 \x9a\x17I{\\')

Результат разбора:

{'A1': 'aqqpw',
 'A2': 2380731405729645321,
 'A3': 29,
 'A4': [{'B1': 81,
         'B2': [247, 241, 241],
         'B3': {'C1': [-12143, 22055, 22944, -16345],
                'C2': -0.932343065738678,
                'C3': 19621,
                'C4': 17506,
                'C5': 3958877493},
         'B4': 3949646011,
         'B5': [-86, 16, 98, -29, 16]},
        {'B1': 4,
         'B2': [216, 26, 36, 119],
         'B3': {'C1': [-18263, -11984, 27648, 25847],
                'C2': -0.7635056972503662,
                'C3': 41794,
                'C4': 9848,
                'C5': 3547350878},
         'B4': 284935200,
         'B5': [-102, 23, 73, 123, 92]}],
 'A5': {'D1': 2525638849987752756, 'D2': 56295, 'D3': -116}}

Вариант №14

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4b 0x44 0x57, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 float
2 Адрес (uint32) структуры B
3 uint8
4 double
5 int16
6 float
7 Массив структур D, размер 2
8 int64

Структура B:

Поле Описание
1 Адрес (uint16) структуры C
2 Массив int32, размер 2
3 uint64
4 uint8

Структура C:

Поле Описание
1 int32
2 uint8

Структура D:

Поле Описание
1 double
2 Адрес (uint32) структуры E
3 uint8
4 uint16
5 int8

Структура E:

Поле Описание
1 uint64
2 Массив int8, размер 2
3 Размер (uint32) и адрес (uint16) массива uint8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'KDW\x10\xdbr>G\x00\x00\x00\xe1\xb0\x83\x1a\xdd\x0e\xf8\xd9\xbf1\x98\x02%'
 b'&?@\xfd10)X\xdb\xbf]\x00\x00\x00\x03\xdb\xc5\x0f\xe8\xe3\xf7gr\xd9'
 b'\xca\xbfp\x00\x00\x00I)\x06\x7f\xd1tm~>\xe9\x0c|\xaf?\xa9\xa5\x19B\x00\xa2|;'
 b'({\xb9\x1es!\x82m\x11ut\xe1mi\xdc\xe7\x8a\xa6q\x82\x91\xf4\x04\xc5c7`\x03'
 b'\x00\x00\x00Z\x00t.\xe6\x13jb\x96\x17\x98!\xc6\r\xf5\x03\x00\x00\x00m\x00')

Результат разбора:

{'A1': 0.23716378211975098,
 'A2': {'B1': {'C1': -1515634769, 'C2': 25},
        'B2': [674987170, 1931393403],
        'B3': 7917737666046427681,
        'B4': 105},
 'A3': 225,
 'A4': -0.40576526252885525,
 'A5': -26575,
 'A6': 0.649002194404602,
 'A7': [{'D1': -0.4272559137970866,
         'D2': {'E1': 7189157828626641318,
                'E2': [55, 96],
                'E3': [220, 231, 138]},
         'D3': 3,
         'D4': 50651,
         'D5': 15},
        {'D1': -0.20976095272615614,
         'D2': {'E1': 14276859520815884819,
                'E2': [13, -11],
                'E3': [116, 46, 230]},
         'D3': 73,
         'D4': 1577,
         'D5': 127}],
 'A8': 8938775815041938641}

Пример 2

Двоичные данные:

(b'KDW.xM?G\x00\x00\x00e\x80\xc2\xe1\x0e\xeem\x8a?D\x91\xe8\xe2w?@\xb4'
 b'\xc0A\x85`\xe3\xbf\\\x00\x00\x00\xcc\xd0\x95\xd7\xdc\xf6Z\xe4\x81]\xd6?n\x00'
 b'\x00\x00\xc1\x99_\xfc\xa7\xe1D~\x93\xf4\x11\xfbi\t\xfb9\xfaB\x00l?\xda'
 b'\xb7ML\xe1\x18\xae\xf7Mi\xcc\xd2#.O\x1e\x9e\x15\x03U\xc2\xc5\xb3\xd5\x9c'
 b'\x1bg\x02\x00\x00\x00Z\x00\x92\xff\x12\xbe\n\x041j\xcc\xd6 E\x02\x00\x00\x00'
 b'l\x00')

Результат разбора:

{'A1': 0.8026150465011597,
 'A2': {'B1': {'C1': 972753257, 'C2': 250},
        'B2': [-1210433684, 417418317],
        'B3': 3324732725311436718,
        'B4': 79},
 'A3': 101,
 'A4': 0.01290498717227817,
 'A5': -28348,
 'A6': 0.9683060646057129,
 'A7': [{'D1': -0.6055322918160826,
         'D2': {'E1': 11301136501906408213, 'E2': [27, 103], 'E3': [30, 158]},
         'D3': 204,
         'D4': 38352,
         'D5': -41},
        {'D1': 0.3494572382004273,
         'D2': {'E1': 15477862778119306770, 'E2': [32, 69], 'E3': [146, 255]},
         'D3': 193,
         'D4': 24473,
         'D5': -4}],
 'A8': -355233981269745241}

Вариант №15

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc0 0x4a 0x59 0x53, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int8
2 Структура B
3 uint32
4 Размер (uint32) и адрес (uint32) массива адресов (uint16) структур E

Структура B:

Поле Описание
1 uint16
2 float
3 Адрес (uint16) структуры C
4 double
5 double
6 Размер (uint16) и адрес (uint32) массива char

Структура C:

Поле Описание
1 uint8
2 Структура D
3 uint8
4 uint64

Структура D:

Поле Описание
1 double
2 int8
3 Массив uint8, размер 2

Структура E:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива uint16
2 float

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xc0JYS\x18B:\x12B!?/\x00Xw\x958X\xac\xc8?\x92\x8b\xda#\x1ci\xe1?\x03\x00D'
 b'\x00\x00\x00\xb5\x10\x0e\xb8\x04\x00\x00\x00\x87\x00\x00\x00{(-t\xaf'
 b'\x17,\xe9?\x13\xab\x18(~9\ng\xe8\xe0H\xd5pfa\xcc\xb1\xa6\xe2\x02'
 b'\x00\x00\x00G\x00\xd8\xbe\x9c>\xcazaU+o>$\x04\x00\x00\x00U\x00a\xb6\x89=B'
 b"f'\xfe\x0e(\x03\x00\x00\x00g\x00\x84P\xaa\xbe\x05\x8a\xb5\x16)"
 b'\x03\x03\x00\x00\x00w\x00\x1fyA?K\x00]\x00m\x00}\x00')

Результат разбора:

{'A1': 24,
 'A2': {'B1': 14914,
        'B2': 0.629914402961731,
        'B3': {'C1': 123,
               'C2': {'D1': 0.7866323878128343, 'D2': 19, 'D3': [171, 24]},
               'C3': 40,
               'C4': 15368781017167575422},
        'B4': 0.19275954020388997,
        'B5': 0.5440808010356355,
        'B6': 'pfa'},
 'A3': 3087929525,
 'A4': [{'E1': [45516, 58022], 'E2': 0.30614352226257324},
        {'E1': [31434, 21857, 28459, 9278], 'E2': 0.06724239140748978},
        {'E1': [26178, 65063, 10254], 'E2': -0.3326455354690552},
        {'E1': [35333, 5813, 809], 'E2': 0.7557544112205505}]}

Пример 2

Двоичные данные:

(b'\xc0JYSR`H\xd0\x0b\xcf\xbe/\x00\xa8d\xd1\xd11\xf8\xef\xbf0\xb7\x8fal\xbe\xb3'
 b'\xbf\x02\x00D\x00\x00\x00\xc8\xe9\xbfb\x03\x00\x00\x00|\x00\x00\x00\xa9'
 b'\xb4\xfd\xb6\xce\n\xc9\xd0?\xf83r\xce \x90vI\x07\xa64\xccdo\x80r'
 b'\xe6\x14\xda\x86\x05#\x04\x00\x00\x00F\x00\xf8\xbf\x03?O\xabC\xa3M\xff\xfbt'
 b'\x04\x00\x00\x00X\x00\x97\xb0\xd0\xbd\xd4v\x05\xf3\xe0\xc2\xb0\xe2\x04\x00'
 b'\x00\x00j\x00\\\xf3\x06?N\x00`\x00r\x00')

Результат разбора:

{'A1': 82,
 'A2': {'B1': 18528,
        'B2': -0.4043869972229004,
        'B3': {'C1': 169,
               'C2': {'D1': 0.26227064311020887, 'D2': -8, 'D3': [51, 114]},
               'C3': 206,
               'C4': 14714568432753741856},
        'B4': -0.9990471933371241,
        'B5': -0.07712437993879173,
        'B6': 'do'},
 'A3': 1656744392,
 'A4': [{'E1': [29312, 5350, 34522, 8965], 'E2': 0.5146479606628418},
        {'E1': [43855, 41795, 65357, 29947], 'E2': -0.10189931839704514},
        {'E1': [30420, 62213, 49888, 58032], 'E2': 0.5271508693695068}]}

Вариант №16

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xb2 0x4f 0x5a 0x55 0x5a, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint16
2 Массив адресов (uint16) структур B, размер 2
3 int64
4 Адрес (uint32) структуры C
5 uint8
6 int32

Структура B:

Поле Описание
1 int16
2 double
3 int16
4 uint32

Структура C:

Поле Описание
1 int64
2 uint64
3 Структура D

Структура D:

Поле Описание
1 uint16
2 Массив uint8, размер 5
3 Адрес (uint16) структуры E

Структура E:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива uint32
2 uint32
3 Массив uint8, размер 8
4 Массив uint32, размер 6
5 int64
6 uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xb2OZUZ\xe8\xc7\x00\x1c\x00,S\xeb\xb3^\xcc\xf3h4\x00\x00\x00~\x86]u\xbc\x03'
 b'#\xf7?\xd0\x19[cWW\x90I\xf3y\xea\xfd\xb0`2?\xe6\xb5\xf3\x8d%\xf4R\xa6\x98'
 b'LY\xf7\x8f\xc9K\x99#\xfb\xeawV?\xa2@V\x00\x00\x00\x03\x00\x00\x00<'
 b'5\xde\xb5\x80\xbe7F`\xd3\xc5w\xffG\xc0\xeeb9\x1eI\xa1\xac\\\xe1\xd5'
 b'\xa6lf\xff\xd7\x06\x98\x19s&\xbd-g\xec\x96D|\xe3\xef\x89\xd1\xb7\xf3I'
 b'\x95\t\xa4\xf9\xca\xa9\x85q\xdf\xef\xf0\x97\x8dj`\x10\x7f\xac\xd4\xa8'
 b'\xd8\x00H')

Результат разбора:

{'A1': 59591,
 'A2': [{'B1': 9207, 'B2': 0.2515476675156316, 'B3': 18931, 'B4': 2045443504},
        {'B1': 24626,
         'B2': 0.7097108609010638,
         'B3': -22888,
         'B4': 1280964495}],
 'A3': 6047124144421824564,
 'A4': {'C1': -916037180538107223,
        'C2': 9615712901039361386,
        'C3': {'D1': 24592,
               'D2': [127, 172, 212, 168, 216],
               'D3': {'E1': [3377174819, 4226447190, 1067597910],
                      'E2': 903787904,
                      'E3': [190, 55, 70, 96, 211, 197, 119, 255],
                      'E4': [1203826274,
                             958286241,
                             2891768277,
                             2792122111,
                             3607533593,
                             1931918637],
                      'E5': 7488525501307547529,
                      'E6': 53687}}},
 'A5': 134,
 'A6': 1567996931}

Пример 2

Двоичные данные:

(b'\xb2OZUZ\xfe\x96\x00\x1c\x00,S\xd9)\x9d\xa3W\xd0\x9b\x00\x00\x00~_'
 b'\xe86\xd6\xe4\x9f\xf1?\xb7,\xbf\xfc\xe2\x9c\xd0\x8br\x1f\xbc\xdf}'
 b'\xb3\xb2?\xdb\tx\x14\xfd\x9a\xd4\xaa\xd0\x1c\xf5\xd8\xa8WbDn!M\x15\xa8'
 b'\xad\xfa\xdd"\x00\x00\x00\x03\x00\x00\x00<\xae\xe0\xba|&)\xa4\xa9]Q\x8b4'
 b'\x0bQ\xb3\x16\xf2\xde;\x14S^@r\xb6w\xcep\xb6\xac\x9d\x87I\xf0\x1c,'
 b'\x14\x85\xf2?Y[\x9e(\xa8\xcf\x19^X\xc8tg\xfe\xff\x96U_\x1d\x85\x05\x90P4\xba'
 b'\xf1d\x0c1~\x00H')

Результат разбора:

{'A1': 65174,
 'A2': [{'B1': -24591,
         'B2': 0.09052658008532721,
         'B3': -29838,
         'B4': 532471677},
        {'B1': -19534,
         'B2': 0.42245294618480256,
         'B3': -21808,
         'B4': 485873832}],
 'A3': 6041906132121276571,
 'A4': {'C1': 1827996116728676095,
        'C2': 10832669059100020816,
        'C3': {'D1': 13498,
               'D2': [241, 100, 12, 49, 126],
               'D3': {'E1': [1466057838, 558699944, 2918898978],
                      'E2': 2933963388,
                      'E3': [38, 41, 164, 169, 93, 81, 139, 52],
                      'E4': [189903638,
                             4074650388,
                             1398685810,
                             3061304944,
                             3064765831,
                             1240472620],
                      'E5': 1478854406557113896,
                      'E6': 43215}}},
 'A5': 95,
 'A6': -399059228}

Вариант №17

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x56 0x54 0x49 0x4f 0x49, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 Адрес (uint32) структуры F
3 int32

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива структур C
2 int32
3 uint8
4 int32
5 int16
6 Адрес (uint32) структуры E
7 Размер (uint16) и адрес (uint32) массива int32

Структура C:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива int16
2 Адрес (uint16) структуры D

Структура D:

Поле Описание
1 int64
2 int16

Структура E:

Поле Описание
1 int8
2 uint64
3 uint16
4 uint16

Структура F:

Поле Описание
1 Массив uint8, размер 8
2 Массив uint8, размер 4

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'VTIOI\x02\x00\x00\x00J\x00\xe4\x13\xb4\xa5\xe4\x1f\xd2\xbee\x1e\x17V\x00'
 b'\x00\x00\x03\x00c\x00\x00\x00o\x00\x00\x00\x14\xec\xdb\xd4\x0f\xb0\xf3J'
 b'\xf9e\xb64\xb8\x04j\xfb\xe3bm\xef\xc6\x92\x82u\x8d\xcdB\xfce\xf7\xc9_'
 b'w\t\x82\x86Gb\x05\x00(\x002\x00\x02\x00<\x00@\x00\xdb\x04\x12\xc81\xf4'
 b'\xd3\xc41\x1e\xe5\xf9\xfc\xe2\xe7\xdc9\xe0\xc0\xf40i\xe4\x91\xd9o'
 b'\x00\xce\xd8\x17\xb7\xce\x9c>\xef\xf4\x0c')

Результат разбора:

{'A1': {'B1': [{'C1': [-20465, 19187, 26105, 13494, 1208],
                'C2': {'D1': -7870340045693781142, 'D2': 30082}},
               {'C1': [-12915, -958],
                'C2': {'D1': -8754424317341993115, 'D2': 25159}}],
        'B2': -1514925084,
        'B3': 228,
        'B4': 1707004447,
        'B5': 5918,
        'B6': {'E1': -37, 'E2': 3586224249054433796, 'E3': 58654, 'E4': 64761},
        'B7': [970778594, 821346528, -644750231]},
 'A2': {'F1': [111, 0, 206, 216, 23, 183, 206, 156], 'F2': [62, 239, 244, 12]},
 'A3': -723784684}

Пример 2

Двоичные данные:

(b'VTIOI\x02\x00\x00\x00D\x00\xea\x84\xe6\xfa\xa9\x89\x81\x81XUrP\x00'
 b'\x00\x00\x02\x00]\x00\x00\x00e\x00\x00\x00U\x0e\x9bA\xda\xef\xd4.j\xae\x13T'
 b'l,\xf36u\xf3\xb1\xde\xda\xe0\xce;\xad;0y\xd3\x93\xbc\xa2\x02\x00(\x00'
 b',\x00\x02\x006\x00:\x00\x8f?s\x94"\xb1r[/}\x805\x99\xf0a\xe9%\xbb?\xfe'
 b"\x8d\xc2}\xee{\xd5'\xfa&\xcbz:\x1a")

Результат разбора:

{'A1': {'B1': [{'C1': [-4134, 11988],
                'C2': {'D1': 3959557341167464042, 'D2': -3211}},
               {'C1': [-8527, -7974],
                'C2': {'D1': -7794753281981596722, 'D2': -23876}}],
        'B2': -85555990,
        'B3': 169,
        'B4': 1484882313,
        'B5': 29269,
        'B6': {'E1': -113, 'E2': 3412447247778214719, 'E3': 32893, 'E4': 39221},
        'B7': [636051952, -1912717381]},
 'A2': {'F1': [194, 125, 238, 123, 213, 39, 250, 38], 'F2': [203, 122, 58, 26]},
 'A3': 1100680789}

Вариант №18

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa9 0x57 0x43 0x48 0x4b, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 uint64
2 uint16
3 Структура B
4 Структура C

Структура B:

Поле Описание
1 uint32
2 int8
3 int16
4 int64

Структура C:

Поле Описание
1 float
2 uint8
3 Структура D
4 Размер (uint32) и адрес (uint16) массива uint32
5 uint32

Структура D:

Поле Описание
1 int32
2 double
3 Массив структур E, размер 3
4 Размер (uint32) и адрес (uint32) массива int16
5 uint32
6 Адрес (uint16) структуры F
7 Размер (uint16) и адрес (uint16) массива int16

Структура E:

Поле Описание
1 uint16
2 int8
3 uint8
4 uint8
5 Массив int8, размер 2
6 int64
7 float
8 int8

Структура F:

Поле Описание
1 int16
2 int32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xa9WCHK\xa3nV\xf3\x83\xfd\xed"oC\x02\x05\xf8\n\x15\x1dg\x7f\x07\xc4J\xa5_'
 b'R9\xbdU\xca>\x84m\xd1\xf0\n\xc8+\xb1&\xab\x0c\xde\xbfU\x17"N\xeb'
 b"\x16\x86:\x85\xcby`\xac2\x00\x89,G\xbf<\xbf\xed1\x8an^\xf0:\xb4@')g"
 b'\x9e\xbcP\x0fV\xbf\x93j\xc0\xf51C\xcbv\xe5b\xbb$B\xfbg\xbf\xb9\xe8,?S\x02'
 b'\x00\x00\x00\x87\x00\x00\x00\x16c<\xc0\x8b\x00\x02\x00\x91\x00\x03\x00\x00'
 b'\x00\x95\x00\xcb\xc5]\xb6\xfa\xac\t\x0e\xfaM\x90r\x93\x9f\th\x18'
 b'\\\x9b\xff\x8bvw6\xea.q\x06\x073')

Результат разбора:

{'A1': 2516946509935046307,
 'A2': 17263,
 'A3': {'B1': 184026370, 'B2': 21, 'B3': 26397, 'B4': 4130468971780769663},
 'A4': {'C1': 0.3951853811740875,
        'C2': 132,
        'C3': {'D1': 183554413,
               'D2': -0.4695232274868286,
               'D3': [{'E1': 5973,
                       'E2': 34,
                       'E3': 78,
                       'E4': 235,
                       'E5': [22, -122],
                       'E6': 14263279195751738,
                       'E7': -0.7780233025550842,
                       'E8': 60},
                      {'E1': 60863,
                       'E2': 49,
                       'E3': 138,
                       'E4': 110,
                       'E5': [94, -16],
                       'E6': -4855329921808944070,
                       'E7': -0.8361711502075195,
                       'E8': -109},
                      {'E1': 49258,
                       'E2': -11,
                       'E3': 49,
                       'E4': 67,
                       'E5': [-53, 118],
                       'E6': -4654475428361444635,
                       'E7': 0.6754260659217834,
                       'E8': 83}],
               'D4': [-21254, 3593],
               'D5': 3225182998,
               'D6': {'F1': 19962, 'F2': -1617726832},
               'D7': [26633, 23576]},
        'C4': [1988886427, 787101303, 856098417],
        'C5': 3059598795}}

Пример 2

Двоичные данные:

(b'\xa9WCHKASe\xf5\xa6\x86\xd3\xb4\x81+\xc8\x0fY@\t\xcd\xaaI\x96\xcf\x02\x1ej'
 b'\xff\xa0$\x02\xf8\xbe\xb8\x891 y\xce\x1e\xbeX\xdbq\xe6\xbfF.~\x9d\xd7'
 b'\xec\x1e\x89\xb5\xc2J\xd7\x03%\x87u\xf9D\xbe\x91\xe98K\x05\xb7'
 b'\xe8\xf8\x80\xca\xac\xf7V\xa7Ij\xc4L\x10\xbf\xd9\xd2]\x18\xd0vt\xca^-Cp\xd3z'
 b'Tr<Q!>\xfe\x02\x00\x00\x00\x87\x00\x00\x00\x97\xc2\x97\xd6\x8b'
 b'\x00\x03\x00\x91\x00\x02\x00\x00\x00\x97\x00_K\xe1\x0e\x05\xb5/7\xf2'
 b'\xce\xe2\xe00\x05\xd7{r1\xc2\xe1*\t\x11\xa2\xee\xe1\x8dW')

Результат разбора:

{'A1': 13029906198552728385,
 'A2': 11137,
 'A3': {'B1': 1079578568, 'B2': 9, 'B3': -21811, 'B4': -6845636231451142583},
 'A4': {'C1': -0.48439133167266846,
        'C2': 184,
        'C3': {'D1': 2032152969,
               'D2': -0.7013985379462271,
               'D3': [{'E1': 11846,
                       'E2': 126,
                       'E3': 157,
                       'E4': 215,
                       'E5': [-20, 30],
                       'E6': -8708550081243859575,
                       'E7': -0.1923578530550003,
                       'E8': -111},
                      {'E1': 14569,
                       'E2': 75,
                       'E3': 5,
                       'E4': 183,
                       'E5': [-24, -8],
                       'E6': 7658836633284561536,
                       'E7': -0.563671350479126,
                       'E8': -39},
                      {'E1': 24018,
                       'E2': 24,
                       'E3': 208,
                       'E4': 118,
                       'E5': [116, -54],
                       'E6': 8238344666907618654,
                       'E7': 0.15753644704818726,
                       'E8': -2}],
               'D4': [-19195, 14127],
               'D5': 3600269975,
               'D6': {'F1': -12558, 'F2': 87089378},
               'D7': [31703, 12658, -7742]},
        'C4': [2719025450, 1468916206],
        'C5': 249645919}}

Вариант №19

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x58 0x44 0x52 0x51 0xdd, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Массив структур B, размер 2
2 uint8
3 Структура C
4 uint32
5 Массив char, размер 7
6 Адрес (uint16) структуры D

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива char
2 uint16

Структура C:

Поле Описание
1 float
2 uint32
3 int8

Структура D:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива uint64
2 int32
3 int32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'XDRQ\xdd\x04\x00\x00\x000\x00\x00\x00\xd1\xf5\x07\x00\x00\x004'
 b'\x00\x00\x00\xe2\xe7c.@[?\xdbU\xa4x\xae\x1f\xed\xd1\x9doqqbssrK\x00sewabepl'
 b'ujpc\xc1_^q\x97e\xe2\xf5\x8cK*\x11\x95^\x1c\x02\x00\x00\x00;\x00#\xca\x08'
 b'\xc4\x87\x81\x02I')

Результат разбора:

{'A1': [{'B1': 'sewa', 'B2': 62929}, {'B1': 'beplujp', 'B2': 59362}],
 'A2': 99,
 'A3': {'C1': 0.8564480543136597, 'C2': 2024035803, 'C3': -82},
 'A4': 2647780639,
 'A5': 'oqqbssr',
 'A6': {'D1': [16313611738389922147, 2044235181829360885],
        'D2': -1006056925,
        'D3': 1224900999}}

Пример 2

Двоичные данные:

(b'XDRQ\xdd\x06\x00\x00\x000\x00\x00\x00l4\x05\x00\x00\x006\x00\x00\x00M'
 b'\xafV\x9bI_\xbfO\x93`\x89r\xca\x1c\xf4LsdsevvlS\x00ncfjgqsvxev9~C\xfe\xdf'
 b'=@7\xbeZ\t\xfe\xcb\xe8\x94\xbf\x03\xb1\xfe\xf0\xd8\x84\x03O\x03\x00\x00\x00;'
 b'\x00\xad\x9f\x88\xb6Qy\xf1\x12')

Результат разбора:

{'A1': [{'B1': 'ncfjgq', 'B2': 13420}, {'B1': 'svxev', 'B2': 44877}],
 'A2': 86,
 'A3': {'C1': -0.8722168803215027, 'C2': 2304807759, 'C3': 114},
 'A4': 1291066570,
 'A5': 'sdsevvl',
 'A6': {'D1': [3981250102848355897, 13804914720635443902, 5693540421217464579],
        'D2': -1232560211,
        'D3': 317815121}}

Вариант №20

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x42 0x58 0x55 0x4a, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 Массив char, размер 5
3 uint8
4 Структура D

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива char
2 double
3 uint64
4 int16
5 Массив структур C, размер 3

Структура C:

Поле Описание
1 uint32
2 uint8

Структура D:

Поле Описание
1 float
2 Размер (uint32) и адрес (uint32) массива int64
3 Размер (uint16) и адрес (uint32) массива uint16
4 uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'BXUJ\x00\x00\x00\x04\x00\x00\x00G?\xdb\xb8S?\xf6\xa3\xf8\xf1l\xbd\xdc'
 b'\xd37k\xa3\xab}\x95\xca\xf7\xf8&\xf6I\xa5\xa2\rJ\xb6\x8eP7qynna+?6\xd32\x00'
 b'\x00\x00\x04\x00\x00\x00K\x00\x02\x00\x00\x00k\x94Lxjyj\xad-@1\x81'
 b'\x08\xa8\\\x02\xe1{H80,;>\xe3\xff\x982\xb4\xbf\x10\x16FzpS\xc3\x87\x8a\x87'
 b'\xcc\n\xb4')

Результат разбора:

{'A1': {'B1': 'xjyj',
        'B2': 0.43312531706266055,
        'B3': 17396488216759462819,
        'B4': -21635,
        'B5': [{'C1': 2513106936, 'C2': 38},
               {'C1': 4132021666, 'C2': 13},
               {'C1': 1253477968, 'C2': 55}]},
 'A2': 'qynna',
 'A3': 43,
 'A4': {'D1': 0.7141600847244263,
        'D2': [-5968043349833635748,
               207582607946296379,
               4531746679215669008,
               1605104940064409482],
        'D3': [34764, 2740],
        'D4': 37964}}

Пример 2

Двоичные данные:

(b'BXUJ\x00\x00\x00\x04\x00\x00\x00G?\xe6\x93\x99\x7f\x81\x846\x11\x0e\x90\xc2'
 b'?\xb0\xef\x9ct [\xe2\xdc\xb1>\x0c\xbf>\x96>_\x10\x1e\xe9\xdblwmru\x9f>'
 b'\x870\xe3\x00\x00\x00\x06\x00\x00\x00K\x00\x02\x00\x00\x00{\x0f\x1decjt\xe2'
 b'\x85\xb3\xaa\xec=\x9e\x9a\x1b\xc2\xebS\xb4\xe1\xc8\xe1\xd3\x01:\xa19f.F\x05'
 b'\x07n\x9ewL\x8eC\xeaf\xc4\xb2\t\xf8Y\x9el\xe8\xef\xf3Yo^"\x11\x9c\xa2E')

Результат разбора:

{'A1': {'B1': 'ecjt',
        'B2': 0.7055175295209952,
        'B3': 1229078912285339548,
        'B4': 29728,
        'B5': [{'C1': 1541594289, 'C2': 62},
               {'C1': 213859990, 'C2': 62},
               {'C1': 1594892009, 'C2': 219}]},
 'A2': 'lwmru',
 'A3': 159,
 'A4': {'D1': 0.264044851064682,
        'D2': [-2124094102546047334,
               2000419929255430369,
               -3242245792602902970,
               362379921912008259,
               -1556340352259434082,
               7847786179149651490],
        'D3': [4508, 41541],
        'D4': 3869}}

Вариант №21

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x54 0x4a 0x4a 0x90, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int16
2 float
3 Структура B
4 int64

Структура B:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива char
2 Массив структур C, размер 4
3 Адрес (uint16) структуры D
4 Размер (uint16) и адрес (uint16) массива uint32

Структура C:

Поле Описание
1 int32
2 Массив int16, размер 3
3 double

Структура D:

Поле Описание
1 int32
2 uint16
3 int32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'ITJJ\x90\xf1t\x1dD\x88>\x07\x00e\x005iP\xc4\x1d\x1dQ\x14\x1a\xcc\xbeH\x95'
 b'x\x9c\xe6\xe7?~\x05A\xfb\r\xad\xd8\xc4\xc5\x16\xf0\x9f\xdc\xb0w\xcb\xe4\xbfh'
 b'u\x01\x84q\x9b\\\x86\xe3\xa4\x90\x80\xbf\x11\xdf3\xb2?\xaeS!\xe0\x9f\xa2\xa8'
 b'\x87\xd4\xbbPH\x1d\x9f[J\xbb?l\x00\x02\x00v\x00Y\x05\xf3\xfe\xeeNz^wjujukz'
 b'\x06\xe0 /\x8dL\x1f\xaf\xdd]X\xf0KF\x08\xf3\x17.')

Результат разбора:

{'A1': 29937,
 'A2': 0.26614466309547424,
 'A3': {'B1': 'wjujukz',
        'B2': [{'C1': -1001363147,
                'C2': [7453, 5201, -13286],
                'C3': 0.7469007830752827},
               {'C1': -79624834,
                'C2': [-21235, -15144, 5829],
                'C3': -0.6498373464901288},
               {'C1': -2080279192,
                'C2': [-25743, -31140, -23325],
                'C3': 0.07110399421026359},
               {'C1': -534686802,
                'C2': [-23905, -30808, -17452],
                'C3': 0.10660336146000415}],
        'B3': {'D1': 790683654, 'D2': 19597, 'D3': 1574809375},
        'B4': [1179381848, 773321480]},
 'A4': 6807840575110448473}

Пример 2

Двоичные данные:

(b'ITJJ\x90\xd2X(yG\xbf\x05\x00e\x00\xc6\xc6\xc3{\x88\xef\x85\x10V\xb5H\xe2}'
 b'\xb1eH\xdf\xbf\x12\xed\xf9C4\xa6\x06\x8a\xf5\xe9\x00\xda\x8c\x96\x8e'
 b'\xb7\x9d?s$?;\x86\xeb+\xccu{\xfe\x81\x99\x05O\xb6\xe0?\x8dO5\xbc\xfb\x81\xbb'
 b'E\x89\x9f\x0e\x80\x9a\x83\xeaO\xe6?j\x00\x02\x00t\x00>O\x90\x0c\xee"\x0b'
 b'\xf5zxcuo\xda\xa2\x9e\xe4\x11\xb9\x10\xcb\xeavcY\x7f\xbb\xef\x83\xe8\xd1')

Результат разбора:

{'A1': 22738,
 'A2': -0.7791924476623535,
 'A3': {'B1': 'zxcuo',
        'B2': [{'C1': 2076427974,
                'C2': [-4216, 4229, -19114],
                'C3': -0.48879377682854797},
               {'C1': 1140452626,
                'C2': [-22988, -30202, -5643],
                'C3': 0.029020526827673976},
               {'C1': 993993843,
                'C2': [-5242, -13269, 31605],
                'C3': 0.5222544774406399},
               {'C1': -1137356915,
                'C2': [-32261, 17851, -24695],
                'C3': 0.6972553797131711}],
        'B3': {'D1': -459365670, 'D2': 47377, 'D3': 1995098896},
        'B4': [3145685347, 3521676271]},
 'A4': -789498903865045186}

Вариант №22

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x53 0x44, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int64
2 Адрес (uint32) структуры B
3 Адрес (uint32) структуры C

Структура B:

Поле Описание
1 double
2 int32
3 uint32
4 uint8
5 uint16
6 int8
7 uint8

Структура C:

Поле Описание
1 uint16
2 Массив структур D, размер 4
3 Размер (uint32) и адрес (uint16) массива uint8
4 int8
5 Адрес (uint32) структуры E
6 uint16

Структура D:

Поле Описание
1 int8
2 int16

Структура E:

Поле Описание
1 Массив uint16, размер 3
2 int16
3 uint16
4 uint32
5 Размер (uint16) и адрес (uint16) массива int16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b"FSDS\xa0'\xc5T4gJ\x00\x00\x00\x13\x00\x00\x00C\xbf\xe6H\xa7v\xe9\x1ep\xaf"
 b"+\xad\xaf\xb1s'VO\xe7\xe4\xba\xa1Q\xaa\x04u\xc2a?\xc3\x80j\x85\xa28\x11\x936"
 b'\xfd\x12\xf6I4X,\x00\x02\x00-U\xce\xc8\x1a6)\xaa\x93SEd\xa0\xb8'
 b'\xda\x00\x00\x00\x05\x00(\xf8\x00\x00\x001\x8d[')

Результат разбора:

{'A1': 6025860029896484682,
 'A2': {'B1': -0.6963689157937107,
        'B2': -1356091985,
        'B3': 2977113942,
        'B4': 79,
        'B5': 59364,
        'B6': -70,
        'B7': 161},
 'A3': {'C1': 21966,
        'C2': [{'D1': -56, 'D2': 6710},
               {'D1': 41, 'D2': -21869},
               {'D1': 83, 'D2': 17764},
               {'D1': -96, 'D2': -18214}],
        'C3': [81, 170, 4, 117, 194],
        'C4': -8,
        'C5': {'E1': [27269, 41528, 4499],
               'E2': 14077,
               'E3': 4854,
               'E4': 1228167212,
               'E5': [24895, -15488]},
        'C6': 36187}}

Пример 2

Двоичные данные:

(b'FSD\xaa\x1dEm\xce\x7f5\r\x00\x00\x00\x13\x00\x00\x00@?\xcc\x13\x1c\x00'
 b'\xd5\xaf\x98a\xcfYw\xaf(\x02\x82Q\xa6\xbd}\xdc:^%m\x05"g\x19\x19\xff\x1b;'
 b'=*\x19\x80s\x15\xb6\x11\x00\x02\x00*\x1co{\x18zZ\xeb7\x9d\x9f\xe3\xf9'
 b'<\xbd\x00\x00\x00\x02\x00(\x8f\x00\x00\x00.\x9f\x8a')

Результат разбора:

{'A1': -6188713975018998515,
 'A2': {'B1': 0.21933317223317483,
        'B2': 1640978807,
        'B3': 2938634882,
        'B4': 81,
        'B5': 42685,
        'B6': 125,
        'B7': 220},
 'A3': {'C1': 7279,
        'C2': [{'D1': 123, 'D2': 6266},
               {'D1': 90, 'D2': -5321},
               {'D1': -99, 'D2': -24605},
               {'D1': -7, 'D2': 15549}],
        'C3': [58, 94],
        'C4': -113,
        'C5': {'E1': [26393, 6655, 6971],
               'E2': 15658,
               'E3': 6528,
               'E4': 1930802705,
               'E5': [9581, 1314]},
        'C6': 40842}}

Вариант №23

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x8c 0x58 0x52 0x41 0x54, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива int8
2 Размер (uint32) и адрес (uint32) массива структур B
3 Адрес (uint32) структуры E
4 Размер (uint16) и адрес (uint32) массива uint32
5 uint32

Структура B:

Поле Описание
1 int32
2 Адрес (uint16) структуры C
3 Адрес (uint16) структуры D

Структура C:

Поле Описание
1 int32
2 Массив float, размер 2
3 float

Структура D:

Поле Описание
1 int64
2 int16
3 uint32
4 uint64

Структура E:

Поле Описание
1 int8
2 double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\x8cXRAT\x03\x00\x1f\x00\x02\x00\x00\x00n\x00\x00\x00~\x00\x00'
 b'\x00\x06\x00\x87\x00\x00\x00 K_\x9a\xde\x00\t\xf9\xdf\xd2\x13 \xf7Y=\x91+'
 b'i?Fl\x1c\xbfs\x1f\x82\xc0\xc8\xeb\xc7\x0e^\xedc_[\x10$\x8c\xcc\xa0'
 b'\xf8D\xef\x16\xc3s\x03\xea\xe8\n\x1d\xbfp\x19\x1b\xbf\xec\xd2"?\x93Lnb'
 b'\xef\xc3g\xbc\x97\xc8\xc7\xc2WO\x85}\x91\xda|\x89\x02\x80c3jg"\x00'
 b'2\x00\xcb\xe7\xd0\x1cH\x00X\x006L\x08\xe5Y\xd8\x1e\xeb\xbf&\xbc\xf2\xd0R'
 b'\xea\xe4B<\x11.&\xee\xcb\xb2\x96|\xa2\xc2G[f\x9b\x06')

Результат разбора:

{'A1': [-34, 0, 9],
 'A2': [{'B1': 1735013219,
         'B2': {'C1': 332587001,
                'C2': [0.053214192390441895, 0.9108210206031799],
                'C3': -0.6110271215438843},
         'B3': {'D1': 1065079084352151411,
                'D2': -4770,
                'D3': 274423651,
                'D4': 1652615422908599332}},
        {'B1': 483452875,
         'B2': {'C1': -368872509,
                'C2': [-0.6134476661682129, -0.6058568954467773],
                'C3': 0.636030912399292},
         'B3': {'D1': -4870709039061906285,
                'D2': -14185,
                'D3': 1331151559,
                'D4': 9224086156144115077}}],
 'A3': {'E1': 54, 'E2': -0.8475152736430203},
 'A4': [3505568806, 1122298450, 640553276, 2528300014, 1203937916, 110847579],
 'A5': 2589936416}

Пример 2

Двоичные данные:

(b'\x8cXRAT\x07\x00\x1f\x00\x02\x00\x00\x00r\x00\x00\x00\x82\x00\x00'
 b'\x00\x07\x00\x8b\x00\x00\x00\xc3\xa9\x1f\xb2\xe3\x9c\x8c qN\x1a\x95\xbf'
 b'\xdb\xdc0\xb8\x80\xbe\xf6\xaep?+\x88v\xbf\xbe\xf9(\xef!\xc2\xbb\x16%*'
 b'\x8f\xfe|\xd2%\x00\xd8\x10\x94\xd0\x9f%\x84\xebZ-\xec(,\xbe\x04\xdbt\xbf'
 b'\x9f\xb6B?\x1e8\xcf*\xefZ\xb5f\x94\\\xa5\x81\x9f\x0b\xbd\xeb\xb3\x85U\xae'
 b'A"\x95]\xb7%&\x006\x00@\xd2\x9b\x06L\x00\\\x00\x95,8\x02\xe9\xa2'
 b'\x98\xda\xbf\x93"\xb0I}Uf$W\x9d\xd5\xfa\xcb\x18l\xfcd\xd8\xe4\xc9\xee'
 b'(\xc5\x9ab\xc0J\xd2')

Результат разбора:

{'A1': [-29, -100, -116, 32, 113, 78, 26],
 'A2': [{'B1': 632774037,
         'B2': {'C1': -589578347,
                'C2': [-0.2514052391052246, 0.9401696920394897],
                'C3': -0.9630152583122253},
         'B3': {'D1': 1638116340481456574,
                'D2': 10789,
                'D3': 3531406991,
                'D4': 2711114835056656421}},
        {'B1': 110875200,
         'B2': {'C1': 760933252,
                'C2': [-0.16812485456466675, -0.9564669132232666],
                'C3': 0.7605990767478943},
         'B3': {'D1': 7400921545915185182,
                'D2': 23700,
                'D3': 195002789,
                'D4': 2468445753114356669}}],
 'A3': {'E1': -107, 'E2': -0.41556618456604855},
 'A4': [1236279955,
        610686333,
        4208303447,
        4234942667,
        3387218020,
        2596612334,
        3528114274],
 'A5': 2988419523}

Вариант №24

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x57 0x4f 0x56 0x56, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint16) структуры B
2 int32
3 Размер (uint32) и адрес (uint16) массива float
4 uint16

Структура B:

Поле Описание
1 Размер (uint32) и адрес (uint32) массива char
2 double
3 Массив структур C, размер 2
4 uint16
5 Структура D
6 float

Структура C:

Поле Описание
1 uint16
2 uint16
3 Размер (uint32) и адрес (uint16) массива int32
4 int8
5 int16
6 uint32
7 int32
8 Размер (uint32) и адрес (uint32) массива int16

Структура D:

Поле Описание
1 float
2 int64

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'WOVV0\x00\xdaJ3N\x04\x00\x00\x00\x8c\x00\x02fvf\x9a\xafT\xef\x91\x80\xfc\t'
 b'\x1cR\x96`\x0c\xe2\x06\x1d\x1e\x8dNs4~\x11\xbdw\x93\x1ci\x02\x00\x00\x00'
 b'\x12\x00\x00\x00\x94\xcc/\x0e\xf1\x05\xe3?\xe0\xd6\x1dl\x02\x00\x00\x00'
 b'\x14\x00e\xc9q\xab\x87\xbaZM\xd3\xb1\xb5\x02\x00\x00\x00\x1c\x00\x00'
 b'\x00\x84\x123\xe9\x02\x00\x00\x00 \x00c\x18\xd63\x1d\x9a2}\xbf\x04m\x04\x00'
 b'\x00\x00(\x00\x00\x001w\xda\xbdg\xbf\xdev\xe8$t\xa6\x88z\xc2\x07\x15\xbf'
 b'\x81\x17\x86\xbe\t\x98/?l\xed\x1a?MO\x11?')

Результат разбора:

{'A1': {'B1': 'vf',
        'B2': 0.5944752957424435,
        'B3': [{'C1': 55008,
                'C2': 27677,
                'C3': [-279662694, 167542929],
                'C4': 101,
                'C5': 29129,
                'C6': 1522173867,
                'C7': -1246637235,
                'C8': [21020, 24726]},
               {'C1': 4740,
                'C2': 59699,
                'C3': [486990348, 1934527774],
                'C4': 99,
                'C5': -10728,
                'C6': 848960819,
                'C7': 1829027709,
                'C8': [32308, -17135, -27785, 26908]}],
        'B4': 30513,
        'B5': {'D1': -0.9052406549453735, 'D2': 8829490087225489118},
        'B6': -0.5821496248245239},
 'A2': 1311984346,
 'A3': [-0.26189807057380676,
        0.685913622379303,
        0.6051852703094482,
        0.5676162838935852],
 'A4': 26114}

Пример 2

Двоичные данные:

(b'WOVV5\x00q\xac\x89\xe3\x02\x00\x00\x00\x91\x00!\xc5kyq\x8ey\xd3\xdc\xba;C'
 b'rL\x10\x0f0F3\xbfil\xf9 h\xea\x8a\x11\x1d|\x81,\xcb\xce\x8b=\xe2\x03\x00\x00'
 b'\x00\x12\x00\x00\x00\x86o\xa1\xc1\x12\x9c\xe9?\x8a\xd2\t\xd0\x03\x00\x00'
 b'\x00\x15\x00\xdf\xdexK}.\xa4\xa6\xaax\xcd\x04\x00\x00\x00!\x00\x00\x000<'
 b'\xda_\x02\x00\x00\x00)\x00\xee\x8c5\xee\xee\x05d\xaeC\xc6\x85\x02'
 b'\x00\x00\x001\x00\x00\x00\x1f\xaf\x15\xf8\x80>\x10\x04\xa6A\x8d5n\x15\x14\n^'
 b'\xbf\xc4\x0en>\xaa&)\xbe')

Результат разбора:

{'A1': {'B1': 'kyq',
        'B2': 0.8003019124839603,
        'B3': [{'C1': 53898,
                'C2': 53257,
                'C3': [-590120562, 1917008826, 806293580],
                'C4': -33,
                'C5': 30942,
                'C6': 2754510155,
                'C7': -847730010,
                'C8': [13126, 27071, -1684, 26656]},
               {'C1': 15408,
                'C2': 24538,
                'C3': [487688938, -886275716],
                'C4': -18,
                'C5': 13708,
                'C6': 1678110446,
                'C7': -2050604114,
                'C8': [-29746, -7619]}],
        'B4': 44831,
        'B5': {'D1': 0.25189271569252014, 'D2': 1544230603042718736},
        'B6': -0.8673412799835205},
 'A2': -477516687,
 'A3': [0.23247820138931274, -0.1651865541934967],
 'A4': 50465}

Вариант №25

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x59 0x4d 0x55 0x43 0xb9, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Массив char, размер 5
2 Адрес (uint16) структуры B
3 int8
4 Массив структур D, размер 5
5 Массив uint8, размер 2

Структура B:

Поле Описание
1 Адрес (uint16) структуры C
2 uint64
3 uint64

Структура C:

Поле Описание
1 uint32
2 uint64

Структура D:

Поле Описание
1 int16
2 Размер (uint32) и адрес (uint32) массива int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'YMUC\xb9vcqxl\x00M\xcfgA\x00\x00\x00\x02\x00\x00\x00_\xd8~\x00\x00\x00'
 b'\x02\x00\x00\x00a*z\x00\x00\x00\x02\x00\x00\x00cO\x98\x00\x00\x00'
 b'\x03\x00\x00\x00e:\xfa\x00\x00\x00\x04\x00\x00\x00h\xd5K\xdc\xef3\xaci\xcfV'
 b"o\xcb[\xc3\x97\x00A\xde\x18\x1a\xbe#[q\xd43\x17V\x9d\xeb\x81\xd6j+]'\x89\x02"
 b'U\x8b\xbd\xabt[\xde\x1f')

Результат разбора:

{'A1': 'vcqxl',
 'A2': {'B1': {'C1': 3706663852, 'C2': 7624407732314686359},
        'B2': 16003570679800361428,
        'B3': 3681506456659678826},
 'A3': -49,
 'A4': [{'D1': 26433, 'D2': [43, 93]},
        {'D1': -10114, 'D2': [39, -119]},
        {'D1': 10874, 'D2': [2, 85]},
        {'D1': 20376, 'D2': [-117, -67, -85]},
        {'D1': 15098, 'D2': [116, 91, -34, 31]}],
 'A5': [213, 75]}

Пример 2

Двоичные данные:

(b'YMUC\xb9auiin\x00M\x05\xde4\x00\x00\x00\x04\x00\x00\x00_\x1e4\x00\x00\x00'
 b'\x02\x00\x00\x00c^\x06\x00\x00\x00\x02\x00\x00\x00e\t\x86\x00\x00\x00'
 b'\x02\x00\x00\x00g\x84C\x00\x00\x00\x02\x00\x00\x00i\x85\x9c\x17)n'
 b'\x8b\xc8\xb5\x0b\xbb\xfa\x8c(\x13\x00As\x17\xc7k\xa6\x0e(\x1da\xe4\xfch\x19'
 b'\xaa\x1a\x91\xd6k\xac\x8c\xbc\xba\xdak=\xb5>\x18')

Результат разбора:

{'A1': 'auiin',
 'A2': {'B1': {'C1': 388591243, 'C2': 14462478680360495123},
        'B2': 8293316503987431453,
        'B3': 7054040440406416017},
 'A3': 5,
 'A4': [{'D1': -8652, 'D2': [-42, 107, -84, -116]},
        {'D1': 7732, 'D2': [-68, -70]},
        {'D1': 24070, 'D2': [-38, 107]},
        {'D1': 2438, 'D2': [61, -75]},
        {'D1': -31677, 'D2': [62, 24]}],
 'A5': [133, 156]}

Вариант №26

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x4e 0x57 0x42 0x57, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int32
2 int32
3 double
4 Адрес (uint16) структуры B
5 uint8

Структура B:

Поле Описание
1 int64
2 Размер (uint32) и адрес (uint16) массива структур C
3 uint8
4 Структура D

Структура C:

Поле Описание
1 uint32
2 int8

Структура D:

Поле Описание
1 int8
2 Массив int64, размер 4
3 Размер (uint32) и адрес (uint32) массива int16
4 int64
5 Массив int16, размер 2

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'NWBW\x94JBPoW\xa1\xf2\xf0\xdd\x98\xfe\x12\x9a\xbe?%\x00\x0e\xe1\xb6\x01\x910'
 b'\xa9\xd1\xa9Bl\xd5e\xb7\xa9\xdc\xa2\xc7fE\x18\xcb?\x02\x00\x00'
 b'\x00\x17\x00\x1f\t\xce@\xb6\xcc_\xb8Jiz7\xf5\x8e\xb9\x01U\xc5\x0bi&'
 b'\x1e\xe7\xac\xee\x06\x9f\x18WYl_\xadY\x02\x00\x00\x00!\x00\x00\x00\x81\x10F'
 b'@C\x9eaWds\xb4\xce')

Результат разбора:

{'A1': 1346521748,
 'A2': -224307345,
 'A3': 0.11953848567724612,
 'A4': {'B1': 4596794531017892572,
        'B2': [{'C1': 2432808673, 'C2': 48}, {'C1': 1118425513, 'C2': 108}],
        'B3': 31,
        'B4': {'D1': 9,
               'D2': [7587079243854921934,
                      -4227470778738329734,
                      499526717327960331,
                      6461925959306516639],
               'D3': [26069, -22089],
               'D4': 6296487765718995073,
               'D5': [29540, -12620]}},
 'A5': 14}

Пример 2

Двоичные данные:

(b"NWBW\x99}\x19.\xb0Yx\xffX?/\x0cC\xe5\xda\xbf'\x00z\x8c\xaa\x1e\xd7\x08"
 b';\xa6E\xb8\x90\x7f7\xbf\xe2\x00\x83\xd71"\x01#\xae+\x8f\x02\x00\x00\x00\x17'
 b'\x00\x04\x9c\xc9\xe7M\x0f53p\xc3\xbe{\x19\x9eF\xfa\xc1k!\x9f\xcdY\x90'
 b'8\x07m\xf5|m\xd8\x0e\xf3\x16\x91\x03\x00\x00\x00!\x00\x00\x00\xcb\x9d5\x7f%'
 b'\xa2Vsz\x0c\xcei')

Результат разбора:

{'A1': 773422489,
 'A2': -8889936,
 'A3': -0.4202430361738059,
 'A4': {'B1': -8130213236921191977,
        'B2': [{'C1': 3609111180, 'C2': 8}, {'C1': 3091572283, 'C2': -112}],
        'B3': 4,
        'B4': {'D1': -100,
               'D2': [-4363931735938963511,
                      7764762413770570686,
                      7856310267604213537,
                      -7991933243636220683],
               'D3': [14207, -7489, -32000],
               'D4': 8311008444290538955,
               'D5': [3194, 27086]}},
 'A5': 122}

Вариант №27

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x54 0x53 0x48 0x9a, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива char
2 Структура B
3 Массив структур C, размер 3
4 Адрес (uint16) структуры D
5 double
6 Размер (uint32) и адрес (uint16) массива uint16

Структура B:

Поле Описание
1 Размер (uint16) и адрес (uint32) массива char
2 int8

Структура C:

Поле Описание
1 uint32
2 int16

Структура D:

Поле Описание
1 float
2 uint8
3 int8
4 uint32
5 int32
6 uint64

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'TSH\x9a\x04\x001\x00\x02\x005\x00\x00\x00\x1aI\x02\x9b\x875C\x95/k\x15\xbcbm'
 b'\xc3B1\nI7\x00\x80\xfc\xebo7\xcd\x9b?\x02\x00\x00\x00M\x00bzsdxtr'
 b'\xa0D\xbf\xaf\xad\x9djiW\xc5\x02j\xfb\xd7\xe2-\x9dTe\xfeq%I\x02H')

Результат разбора:

{'A1': 'bzsd',
 'A2': {'B1': 'xt', 'B2': 26},
 'A3': [{'C1': 2275082825, 'C2': 17205},
        {'C1': 359346069, 'C2': 25276},
        {'C1': 826458989, 'C2': 18698}],
 'A4': {'D1': -0.7680732011795044,
        'D2': 175,
        'D3': -83,
        'D4': 1466526365,
        'D5': -76938555,
        'D6': 8214114184459051735},
 'A5': 0.027150026518026227,
 'A6': [18725, 18434]}

Пример 2

Двоичные данные:

(b'TSH\x9a\x04\x001\x00\x02\x005\x00\x00\x00\xc2\xa8\x9a\xe5\xc7\xf8'
 b'\xd1 \x94\xfb\xa1u\x9b\x82\x9agm&\xb27\x00z\x9d\x12 D\xb1\xea?\x03'
 b'\x00\x00\x00M\x00ygrczg6\x9eu>GP\x1a?x\x9eV;\xd6\nX\xb7\xe4\xfe\xb8\xef\xe3'
 b'u\x8b\x87P\xdc\xed\x14')

Результат разбора:

{'A1': 'ygrc',
 'A2': {'B1': 'zg', 'B2': -62},
 'A3': [{'C1': 3353713320, 'C2': -11784},
        {'C1': 2717619232, 'C2': -25739},
        {'C1': 1835506306, 'C2': -19930}],
 'A4': {'D1': 0.23986133933067322,
        'D2': 71,
        'D3': 80,
        'D4': 2658680602,
        'D5': 181812054,
        'D6': 8494896899980310360},
 'A5': 0.8341389299793456,
 'A6': [34699, 56400, 5357]}

Вариант №28

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x55 0x45 0x41 0x9c, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int8
2 Размер (uint16) и адрес (uint32) массива char
3 Массив адресов (uint16) структур B, размер 2
4 uint8
5 Адрес (uint32) структуры C
6 uint64

Структура B:

Поле Описание
1 uint16
2 uint64
3 float

Структура C:

Поле Описание
1 int32
2 uint32
3 Массив int32, размер 2
4 Адрес (uint16) структуры D
5 float

Структура D:

Поле Описание
1 uint16
2 Массив uint8, размер 8
3 uint64
4 uint32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'UEA\x9c\x92\x03\x00\x1c\x00\x00\x00\x1f\x00-\x00\xc9Q\x00\x00\x00h\x87D3^]x~'
 b'qgo\xba\xa6\x0e\xf8\xf1/x>\xe8\xd2\xa7\x1c\x16\xbcvF"\xb3\xf5\x1f\x13'
 b'3\xb2 \xce^/\xbf\x8eH\xb3\xe9\x04\x01\xc6\x08\xe3\xdc\x1eH\xc7'
 b'\xeb\x8c\xbd\xb3\xbe\\LV\x88\x9c\x82\xde\xf2(\xf2t\xb3\xc4\x95\x93\xffyG\x8e'
 b'/;\x00\x0f:J\xbf')

Результат разбора:

{'A1': -110,
 'A2': 'qgo',
 'A3': [{'B1': 42682, 'B2': 15197465628483123214, 'B3': -0.009162104688584805},
        {'B1': 18038, 'B2': 2356001712301781794, 'B3': -0.6850403547286987}],
 'A4': 201,
 'A5': {'C1': -220298596,
        'C2': 3010785832,
        'C3': [-7105084, 797853561],
        'C4': {'D1': 18574,
               'D2': [179, 233, 4, 1, 198, 8, 227, 220],
               'D3': 13741535300986292254,
               'D4': 2287357020},
        'C5': -0.7899484038352966},
 'A6': 9113136505152636776}

Пример 2

Двоичные данные:

(b'UEA\x9cH\x02\x00\x1c\x00\x00\x00\x1e\x00,\x00:P\x00\x00\x00\x0b\xc3\xe2\xd6'
 b'\x88*\x90\xf7nl\t\xc6\xd6\xe8_\x85\xd0\xda\xfcqc/.?\xe1&Vi\xdbg\xb8\x0c'
 b'W\x84/#\x02>P\x0b\xd9FY+\x1e\x1e\xcf}\x9f<cI_2u\x93\xa79\x10\xc0'
 b'\xd3\xf1\x9f\xaa\x97\x04M\x9d;xxw\x1dB\xbdv:\x00\xc5\x8f\xff\xbe')

Результат разбора:

{'A1': 72,
 'A2': 'nl',
 'A3': [{'B1': 50697, 'B2': 8213680409542650070, 'B3': 0.6804105639457703},
        {'B1': 9953, 'B2': 9536104722136262998, 'B3': 0.12708733975887299}],
 'A4': 58,
 'A5': {'C1': -1432358445,
        'C2': 2639070359,
        'C3': [2004383803, 1992114717],
        'C4': {'D1': 2896,
               'D2': [217, 70, 89, 43, 30, 30, 207, 125],
               'D3': 10625454280685075615,
               'D4': 3222288807},
        'C5': -0.4991437494754791},
 'A6': 17838804891223638795}

Вариант №29

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xc 0x46 0x43 0x43, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint16) структуры B
2 int32

Структура B:

Поле Описание
1 Массив адресов (uint32) структур C, размер 2
2 int8
3 Размер (uint32) и адрес (uint32) массива int16
4 Структура D

Структура C:

Поле Описание
1 double
2 Массив float, размер 4

Структура D:

Поле Описание
1 Массив float, размер 4
2 uint64
3 int8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\x0cFCC\x00@\xf8\x1c\xda2\xbf\xe2\x9f\x08\x91\x99L\xc6\xbe\x89\xbbM?>'
 b'\x1cv\xbf,\xf7\xd1\xbd\xfd_\xd0?\xda\x12\xf0-vHX\xbf\x00\xba\xe6?F'
 b'\xee\xa8\xbf\x15\x89\x99>/{\x12\xc4L\xd5\xc9JK\x00\x00\x00\n\x00\x00\x00"'
 b'Y\x00\x00\x00\x03\x00\x00\x00:?\x15\xbe\xdf\xbd\xe2a\xeb>:\x94c\xbe\xa7\xfe'
 b'\x1f\x1e\x0f\x1e\xac=\xd9\\S\r')

Результат разбора:

{'A1': {'B1': [{'C1': -0.5819132655837158,
                'C2': [-0.2690071165561676,
                       0.7426217794418335,
                       -0.6756563782691956,
                       -0.12371790409088135]},
               {'C1': 0.4074058956113098,
                'C2': [-0.5028518438339233,
                       0.7770791053771973,
                       -0.5841308236122131,
                       0.17136791348457336]}],
        'B2': 89,
        'B3': [-15284, -10807, 19019],
        'B4': {'D1': [0.5849437117576599,
                      -0.11053832620382309,
                      0.1822066754102707,
                      -0.3281106650829315],
               'D2': 2165983670909361235,
               'D3': 13}},
 'A2': -132326862}

Пример 2

Двоичные данные:

(b'\x0cFCC\x00B\x18\xe9\xcd\xa4?\xe8\xab\x8e\xa7\xdc\xc0\x04>=\xd5\x18?V'
 b'\x0f\x1f=\xa1\xd4\xde\xbfA\n\x16?\xd3\x92\xd0o}\xf8\x08\xbfA\xd9\xa2>\xdf'
 b'X\xb4?K\x8aN\xbfxol2\xf3AF\xafb\x9c\xe7\x00\x00\x00\n\x00\x00\x00"\xef\x00'
 b'\x00\x00\x04\x00\x00\x00:\xbe\xb3@9?_\x14\x8a\xbeW4\xfc>\xc5\x85/;\xb7U\x96h'
 b'\x9f\x06\xa8\xca')

Результат разбора:

{'A1': {'B1': [{'C1': 0.7709420469818729,
                'C2': [0.18538320064544678,
                       0.8361682295799255,
                       0.07901929318904877,
                       -0.7540601491928101]},
               {'C1': 0.305835827712031,
                'C2': [-0.7572270631790161,
                       0.4362236261367798,
                       0.7950791120529175,
                       -0.9704501628875732]}],
        'B2': -17,
        'B3': [13043, 16710, -20638, -25369],
        'B4': {'D1': [-0.3500993549823761,
                      0.871407151222229,
                      -0.21016305685043335,
                      0.38578173518180847],
               'D2': 4303002073464506024,
               'D3': -54}},
 'A2': 417975716}

Вариант №30

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x46 0x57 0x41 0x42 0x49, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 int16
3 Массив uint16, размер 2

Структура B:

Поле Описание
1 double
2 uint16
3 Размер (uint16) и адрес (uint16) массива структур C
4 Адрес (uint32) структуры D
5 Размер (uint16) и адрес (uint16) массива int8

Структура C:

Поле Описание
1 int16
2 Массив uint16, размер 7
3 uint64
4 uint64

Структура D:

Поле Описание
1 int32
2 Массив uint32, размер 6

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'FWABI\xbf\xe88\xfb@\x9e\xce\x88\x13e\x00\x03\x00!\x00\x00\x00\x81\x00'
 b'\x06\x00\x9d\xb4\xb5\xfcbo\xcc\xf7\xc2>\xe2\xe3\xe5Y\xba\r\x1c\xe7K;\xdc\xb0'
 b'\xba\xdc\x0cS\x06\xb0/Q\x96\x1dO,9V\x97i\xfd\x1ag\xfa\x18j6\x01%\xecd\x1c'
 b'\xc1\xdf&=s|^\xfa` \xdc\xea\xc2\xb5\xb8\\n\xc4h4}g\t\x1c\x8a\xdd\x94P'
 b'\xd4\x1e\x04\x83H\x14M\xdd\xb7\xf5\xe4\xcd\xf29\x19(Q}b\x92\xe7\xd0/\xf6'
 b'\x1e\xa6\xaa\x17\xfb\xad5\xf2c\x8f$\xb5\x8bx\xec}\xe3\x07\xc9\xbb'
 b'\xac\x9a\\\xfd\x9e\xd9\xcbrOE\x86\x80\xb9i\x08')

Результат разбора:

{'A1': {'B1': -0.7569557439914698,
        'B2': 4965,
        'B3': [{'C1': -2110,
                'C2': [16098, 58341, 22970, 3356, 59211, 15324, 45242],
                'C3': 15856139676255474070,
                'C4': 2111955375037573629},
               {'C1': 6759,
                'C2': [64024, 27190, 293, 60516, 7361, 57126, 15731],
                'C3': 8961875599289019074,
                'C4': 13094317547391038589},
               {'C1': 26377,
                'C2': [7306, 56724, 20692, 7684, 33608, 5197, 56759],
                'C3': 17718513274206103633,
                'C4': 9034945326786541086}],
        'B4': {'D1': -1498802181,
               'D2': [2905993827,
                      2401547659,
                      2028764643,
                      130661292,
                      2589785502,
                      3653988943]},
        'B5': [69, -122, -128, -71, 105, 8]},
 'A2': -19275,
 'A3': [64610, 28620]}

Пример 2

Двоичные данные:

(b'FWABI?\xef\x1e\x19d)\xbb\xaa\xb3-\x00\x03\x00!\x00\x00\x00\x81\x00'
 b'\x07\x00\x9d\x87\xf5\xe8\xfe\x85OG\xd2\xb5\xfe\xac\xa1\xabb\xa0\xf8\x98'
 b'\x0c\xd5#m\xceO^\x86\x0ce\x1e\xabuA\x154\xef4\xa0\xe3\x18L)\xbe'
 b'\xa8\x0c\xa3\xc1.\xc3*=\xb3\t>N\x83IZ\x91\x85\xd7T\xbb"\x01+2\x88I,y'
 b'\xf6J\xc0\xe3\x9fyk\xd9%\xe6\xc4\xcc\xca,\xf8@\xda6\x8e@\x98p\xa6X'
 b'\xefG\x02\xb5E\xf4q`=v\x93\x06\xd0\x9e \t\xa7\xdbU2\n1\x05Y\xb1\xad\xa9.'
 b'l\x81\x84\x9f\xf4~\x9f\xfc\x90\x0c\x17\xd0J\xe5\xc8\xb6')

Результат разбора:

{'A1': {'B1': 0.972424216872118,
        'B2': 45869,
        'B3': [{'C1': 18386,
                'C2': [46590, 44193, 43874, 41208, 38924, 54563, 28110],
                'C3': 5719155964601346933,
                'C4': 4689712788961026840},
               {'C1': 19497,
                'C2': [48808, 3235, 49454, 49962, 15795, 2366, 20099],
                'C3': 5285697116702030626,
                'C4': 84216578961078774},
               {'C1': 19136,
                'C2': [58271, 31083, 55589, 59076, 52426, 11512, 16602],
                'C3': 3931150548210178287,
                'C4': 5116851438704746557}],
        'B4': {'D1': 1989347024,
               'D2': [2652899751,
                      3679793674,
                      822434225,
                      2913545836,
                      2172952564,
                      2124414096]},
        'B5': [12, 23, -48, 74, -27, -56, -74]},
 'A2': -30731,
 'A3': [59646, 34127]}

Вариант №31

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x51 0x58 0x49 0xcc, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 int16
3 Размер (uint16) и адрес (uint32) массива структур D
4 int16
5 Адрес (uint16) структуры E
6 float

Структура B:

Поле Описание
1 int8
2 int8
3 Размер (uint32) и адрес (uint16) массива char
4 Массив структур C, размер 2
5 uint32

Структура C:

Поле Описание
1 double
2 uint32

Структура D:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива uint8
2 uint32
3 float

Структура E:

Поле Описание
1 Массив int16, размер 6
2 uint32
3 float
4 double

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'QXI\xcc\xd4\x0e\x00\x00\x00\x02\x008\xbf\xe1\xf5)d\xce"\xe6\x1cV\xe7\x00'
 b'?\xc5MF\x16\xd9l\x90\xf6\xc5\x98\xf1\xa3\xd4!\x00\x18\x81\x00\x02'
 b'\x00\x00\x00HQ5\x00d\xbf\x1bi\x1fng\xf2\xda\x89\x19\x83`\xd6\xb7\x04\x87'
 b'\x02*\xa3b\x00\x00\x00\x07\x00:\x7fg\x04\x86\xbf\x15\xb6\xee\x00\x00'
 b'\x00\x07\x00A\x9a3\xa9\xdf\xbf\x07\x96T\xbb\x06\xdbky\xf7ViI\x04\xe8]'
 b'q\x8b\xbd\xab>"w\x9c?\xea_\xa4\xc0\x9c\x1e\xc2')

Результат разбора:

{'A1': {'B1': -44,
        'B2': 14,
        'B3': 'ng',
        'B4': [{'C1': -0.5611769646503404, 'C2': 475457280},
               {'C1': 0.16642070880593396, 'C2': 4140144881}],
        'B5': 2748588288},
 'A2': 6273,
 'A3': [{'D1': [242, 218, 137, 25, 131, 96, 214],
         'D2': 2137457798,
         'D3': -0.5848225355148315},
        {'D1': [183, 4, 135, 2, 42, 163, 98],
         'D2': 2587077087,
         'D3': -0.5296375751495361}],
 'A4': 20789,
 'A5': {'E1': [-17658, -9365, 31223, 22121, 18692, -6051],
        'E2': 1904983467,
        'E3': 0.15865939855575562,
        'E4': 0.8241752397452375},
 'A6': -0.6070727705955505}

Пример 2

Двоичные данные:

(b'QXI\xccA\xe1\x00\x00\x00\x02\x008\xbf\xd7\xcf\\%a\xc10\xd9\x8008?\xe4\x8e%'
 b'b\xffM\xf4\x9a\x06\xd7\x1e\xa0"\x95-\xb1\x88\x00\x03\x00\x00\x00G'
 b'\x9e\xe4\x00q\xbfs\x9dApp99\x89\x8aF\xf5Z\xecQ\x11{A\x82\x00\x00\x00\x03\x00'
 b':\x87\xe1\xac\xaf\xbe\x94\xdd\x1d\x00\x00\x00\x04\x00=\xb3\x00\xe9\xd8>'
 b'\xc5\xc7L\x00\x00\x00\x06\x00A$\xee\x1b\x02?}\xa0\xa6\x8a(\xb6'
 b'\xac\x13\x9e\xd3\xe7b:[:+M+p?>mU\xbf\xa9y\xf9\x05\x00\n\x80')

Результат разбора:

{'A1': {'B1': 65,
        'B2': -31,
        'B3': 'pp',
        'B4': [{'C1': -0.3720312466675919, 'C2': 3649056824},
               {'C1': 0.6423518117466629, 'C2': 2584139550}],
        'B5': 2686620973},
 'A2': -20088,
 'A3': [{'D1': [57, 57, 137], 'D2': 2279713967, 'D3': -0.2907494604587555},
        {'D1': [138, 70, 245, 90], 'D2': 3003181528, 'D3': 0.3862861394882202},
        {'D1': [236, 81, 17, 123, 65, 130],
         'D2': 619584258,
         'D3': 0.9907325506210327}],
 'A4': -24860,
 'A5': {'E1': [-30168, -18772, 5022, -11289, 25146, 23354],
        'E2': 726477680,
        'E3': 0.7438557744026184,
        'E4': -0.04975870309865105},
 'A6': -0.9516182541847229}

Вариант №32

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x55 0x59, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int16
2 Адрес (uint32) структуры B

Структура B:

Поле Описание
1 uint64
2 int64
3 Массив char, размер 5
4 Размер (uint16) и адрес (uint32) массива адресов (uint32) структур C
5 Размер (uint16) и адрес (uint32) массива int8
6 Массив int16, размер 3
7 double
8 Структура D

Структура C:

Поле Описание
1 int16
2 float

Структура D:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива uint16
2 uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'DUY<\xca\x00\x00\x00Y\x0e\x05\xbf5\xde\xa8\xd5\xa1\xbe\x93\xda\x134\x15>'
 b'\xe2\xe7IV\x18>Hi}\xe1\xdf\xbf\x03c\xacVY>\xdb\xcf\xe3\xabc\xbf'
 b'\r\x1a\x96\x00\x00\x00\t\x00\x00\x00\x0f\x00\x00\x00\x15\x00\x00\x00\x1b\x00'
 b"\x00\x00!\x00\x00\x00'\x00\x00\x00--M\xd2\xb5\xef\x15\xf8E\xb4\xca\xe3^\xf4"
 b'\x08\xe2\xf9j\xc6Z\xa5\xb5\xed\xf9:\x90\xd7iiymb\x00\x07\x00\x00\x003'
 b'\x00\x06\x00\x00\x00O\x95\xe6\x1e\x99L\x93\xbf\xe6\xba\x87\x0c\xfc^\x96'
 b'\x00\x02\x00U\xc3h')

Результат разбора:

{'A1': 15562,
 'A2': {'B1': 16383800813425355462,
        'B2': 6531826868264014039,
        'B3': 'iiymb',
        'B4': [{'C1': 3589, 'C2': -0.7104287147521973},
               {'C1': -10847, 'C2': -0.28877314925193787},
               {'C1': 13333, 'C2': 0.44317081570625305},
               {'C1': 22040, 'C2': 0.19571490585803986},
               {'C1': -7713, 'C2': -0.5132396221160889},
               {'C1': 22105, 'C2': 0.42932042479515076},
               {'C1': -21661, 'C2': -0.5511869192123413}],
        'B5': [45, 77, -46, -75, -17, 21],
        'B6': [-27162, 7833, 19603],
        'B7': -0.7102694753293288,
        'B8': {'D1': [63557, 46282], 'D2': 50024}}}

Пример 2

Двоичные данные:

(b'DUY\x8c\x9d\x00\x00\x000\x80\xda\xbfb\xf4\xb2\xb8T?BY\x81n\xe9?M\r\xa4\x00'
 b'\x00\x00\t\x00\x00\x00\x0f\x00\x00\x00\x15\x15\x07\xd7]\xc7\xc7\xef&j'
 b'}\xa9d\xc9\x0eV,\xfc\xdb<\xc8D\xbc2Qunhbvs\x00\x03\x00\x00\x00\x1b\x00'
 b"\x03\x00\x00\x00'\xcf\x15\x0c7qU?\xcb\x1b\xbd\x12[x\xc0\x00\x03\x00*mz")

Результат разбора:

{'A1': -29539,
 'A2': {'B1': 9054879340496825596,
        'B2': -2649022283259948683,
        'B3': 'nhbvs',
        'B4': [{'C1': -32550, 'C2': -0.88654625415802},
               {'C1': -18348, 'C2': 0.7591782212257385},
               {'C1': 28393, 'C2': 0.8009893894195557}],
        'B5': [21, 7, -41],
        'B6': [-12523, 3127, 29013],
        'B7': 0.21178401371338929,
        'B8': {'D1': [24007, 51183, 9834], 'D2': 28026}}}

Вариант №33

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x44 0x42 0x49 0x57, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 uint32
3 Адрес (uint32) структуры D
4 uint32
5 int64
6 Структура F

Структура B:

Поле Описание
1 int8
2 Размер (uint32) и адрес (uint32) массива структур C

Структура C:

Поле Описание
1 uint32
2 int32

Структура D:

Поле Описание
1 Массив char, размер 2
2 uint32
3 Адрес (uint32) структуры E
4 uint8

Структура E:

Поле Описание
1 Размер (uint32) и адрес (uint16) массива float
2 int32

Структура F:

Поле Описание
1 uint64
2 uint16
3 Размер (uint16) и адрес (uint16) массива int16
4 int64

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'DBIW\x80\x00\x00\x00\x04\x00\x00\x007\x07\x81\xf60\x00\x00\x00m1\x87L'
 b'{\xe4\x9aI\x13o\x0eB\xe8\xcd\x97\x14\\\xb2\xf6\x19\xb7\xb6\x89\x00'
 b'\x05\x00x\x9b!\x94x@W\x0f\xf7$\x94s\x92r\x9c%\x8a\xea\x19\xe7\xb9\x19'
 b"f\xde\x0c\xb1\x9ba\xa5\x14}\xb0'^\xb1\x07\xc6M\xa9\x90#>\xd1a\x7f?"
 b'L\x18\x7f\xbf\x0b\xbf\x9f\x00\x00\x00\x03\x00W\x01\x99U\xb3nc\x14'
 b'\xfc.\x8d\x00\x00\x00c\xaf\xedE\xfdb\x955d\xdf\x8b\t')

Результат разбора:

{'A1': {'B1': -128,
        'B2': [{'C1': 613708690, 'C2': 1922835850},
               {'C1': 3927566265, 'C2': 426171916},
               {'C1': 2979750309, 'C2': 343781415},
               {'C1': 1588660166, 'C2': 1302958115}]},
 'A2': 125957680,
 'A3': {'D1': 'nc',
        'D2': 352071309,
        'D3': {'E1': [0.4089469611644745,
                      0.7972487807273865,
                      -0.5458926558494568],
               'E2': 26826163},
        'D4': 175},
 'A4': 830950523,
 'A5': -1974185138832129304,
 'A6': {'F1': 14814331887630555575,
        'F2': 46729,
        'F3': [-4795, -670, -27339, 25823, -29943],
        'F4': -7268365079402835977}}

Пример 2

Двоичные данные:

(b'DBIW\xfe\x00\x00\x00\x06\x00\x00\x0071`fF\x00\x00\x00yUT\x08$\x12\x17\xfc'
 b'>\xba\x0e\xdb\xce\xcec\xd9\xcf&\x8c\xdb\xaeI\xe0\x00\x08\x00\x84\xad'
 b'w\x9b\xb1y\xf1iF\x7f\xfa\x93\x90\xea\xc9\xb4\x81F|O\xc5\xde\xc6\xb3\xc5&'
 b'\xd4WK\xf16gC\xa7n\x88\xa4E\xff\xcb\x98\x11M\x8e\xcaM\xfd\xd7\x14\xa8'
 b'\x9b]\xa54F\xa7]\xbf\x10(\x00=\xa2\xb3|\x00\x00\x00\x02\x00g\x07\xcb\x86'
 b'nam\xe5+\xe9L\x00\x00\x00o"\'\x99Itw]\xcbk\xb2|_tU\x0fL\xde')

Результат разбора:

{'A1': {'B1': -2,
        'B2': [{'C1': 2147128208, 'C2': -355879807},
               {'C1': 1182552005, 'C2': -557403195},
               {'C1': 651450187, 'C2': -248092861},
               {'C1': 2809039012, 'C2': 1174391704},
               {'C1': 290295498, 'C2': 1308481300},
               {'C1': 2828754341, 'C2': 877045597}]},
 'A2': 828401222,
 'A3': {'D1': 'am',
        'D2': 3844860236,
        'D3': {'E1': [-0.5631103515625, 0.07944390177726746], 'E2': 130778734},
        'D4': 34},
 'A4': 1431570468,
 'A5': 1303787963486755790,
 'A6': {'F1': 14871969878235732910,
        'F2': 18912,
        'F3': [10137, 18804, 30557, -13461, -19844, 24436, 21775, 19678],
        'F4': -5947113596362069690}}

Вариант №34

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xd4 0x4d 0x4f 0x47 0x46, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int64
2 Адрес (uint16) структуры B
3 float
4 uint64
5 Размер (uint32) и адрес (uint32) массива структур E
6 Размер (uint32) и адрес (uint32) массива int16
7 int8
8 Массив int8, размер 7

Структура B:

Поле Описание
1 int32
2 Структура C
3 int8
4 Размер (uint32) и адрес (uint16) массива char
5 uint32
6 uint64
7 int16

Структура C:

Поле Описание
1 uint32
2 Массив char, размер 3
3 uint64
4 Адрес (uint32) структуры D

Структура D:

Поле Описание
1 double
2 uint8
3 int8

Структура E:

Поле Описание
1 uint16
2 int16
3 int64

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\xd4MOGF#\x0e\xf9\xc2\x93\xb6\xb3\x1e?\x00aCs\xbfb\xc6\xe0\xe0}\xd9|P\x05'
 b'\x00\x00\x00k\x00\x00\x00\x02\x00\x00\x00\xa7\x00\x00\x00M\x03\xedA\xe3'
 b'\x9e\x10\x0ez\x91k~\x0c\xb9\xeb\xbf\xf3\x0cob\xea\x16\xf7\xa9\xd2'
 b'\xec\x0c\x06wto\\^\xf2:\xc5\xe2$\x923\x00\x00\x00\xd8\x02\x00\x00\x00='
 b'\x00\xf63\x0e\xc1|t:w\xad\xc1w\x11;\x0f\xbb\xc0\x18\x98\xe3/H\xd0\xf8'
 b'\xea\x87\xf1B\xb4\x94\xac\xab\x88j+j\xc9W\xae\xc2\xb3\xa1\xef\xe7'
 b'\xd1x\xde\x1c\\C\x82-\x07\xec\xcd\xc6tm\xbd\xc4\xc0}\x86+c\xe6\x9b\xbd'
 b'\xdb\xeb\xfeZ\x9f\xb7eB><`')

Результат разбора:

{'A1': 2212312587716595235,
 'A2': {'B1': -1443424534,
        'B2': {'C1': 101510354,
               'C2': 'wto',
               'C3': 10530791165424459356,
               'C4': {'D1': -0.8663389653343494, 'D2': 243, 'D3': 12}},
        'B3': -40,
        'B4': 'ob',
        'B5': 3238933494,
        'B6': 1258687571647165564,
        'B7': 3899},
 'A3': -0.9502468705177307,
 'A4': 5799749554813322850,
 'A5': [{'E1': 49339, 'E2': -26600, 'E3': -1042606434345799709},
        {'E1': 46146, 'E2': -21356, 'E3': -5884012930304145237},
        {'E1': 46018, 'E2': -4191, 'E3': -9060296746278006297},
        {'E1': 1837, 'E2': -12820, 'E3': -8755630149314186042},
        {'E1': 25387, 'E2': -25626, 'E3': 7329502131741514685}],
 'A6': [15938, 24636],
 'A7': 77,
 'A8': [3, -19, 65, -29, -98, 16, 14]}

Пример 2

Двоичные данные:

(b'\xd4MOGF"\xfb\x97\x03\x98y)?B\x00\x1c\x8c\xd6\xbe \xb2.s\xc7\t\xfby\x03'
 b'\x00\x00\x00n\x00\x00\x00\x02\x00\x00\x00\x92\x00\x00\x00b\xef\xae\x8b?'
 b'3\xb6z\x06\xe7&\x109\x91\xe7?\t\x8asiaid<\xe8o0\xe6\xa8\x96\xffasf%\x03\xd9'
 b"\x15Q\x9a\xdb$3\x00\x00\x00\xf8\x05\x00\x00\x00=\x00\xb6}\x9fY\xbe\xd8'\x03"
 b'&2*\x87x\xe9A\xf5\xd68*Q\x8bY\x17\x85{\x04\xa2Y\xfeO\xc0\xde\xd3$\xcf#'
 b'\x07\xe1\x91\xc0:6j\\\xe7\xcb\x87K@\x94N\xfa\xec\xfa')

Результат разбора:

{'A1': 4551302592236878626,
 'A2': {'B1': 812640316,
        'B2': {'C1': 4288063718,
               'C2': 'asf',
               'C3': 2655886078314611493,
               'C4': {'D1': 0.7364774051158924, 'D2': 9, 'D3': -118}},
        'B3': -8,
        'B4': 'siaid',
        'B5': 1503624630,
        'B6': 9739652282985207998,
        'B7': -5768},
 'A3': -0.41903769969940186,
 'A4': 8789629849979236896,
 'A5': [{'E1': 62785, 'E2': 14550, 'E3': 322998133620166954},
        {'E1': 22946, 'E2': 20478, 'E3': -2231775717755724096},
        {'E1': 49297, 'E2': 13882, 'E3': -7764122710973129622}],
 'A6': [-1458, -1300],
 'A7': 98,
 'A8': [-17, -82, -117, 63, 51, -74, 122]}

Вариант №35

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x57 0x56 0x4b, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int16
2 Структура B
3 uint16
4 float

Структура B:

Поле Описание
1 Массив адресов (uint32) структур C, размер 2
2 Размер (uint32) и адрес (uint32) массива uint32
3 uint64

Структура C:

Поле Описание
1 double
2 Структура D

Структура D:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива double
2 Массив double, размер 2
3 int8
4 int32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'SWVK~r\x00\x00\x004\x00\x00\x00e\x00\x00\x00\x02\x00\x00\x00\x86\x92\xb6)1dq'
 b'\xa0\xc0\xc2Y\xbc\xc2(\xb0?\xd1\xccH\xce\xc2\x1a\xa8\xbf\xd3\xd1b\xa1\x8f0$'
 b'\xbf\xe12fj\xec\xba\xca\x00\x02\x00$?\xeb\x99\xd8J\xfd\x97@?\xcbe2'
 b't\x85\xc8\xb8\x98\xbd\xf5\x07\r\xbf\xb0\xee1\x82\x160@?\xdfB\xa7Dd60?\xe6F'
 b'\xcb\x12y\xe8\xee\x00\x02\x00U\xbf\xda:?\xb9\x16\x85`\xbf\xecA\xdbr&m'
 b'\x1a\xd5\xef\x84GEa\xb5\xe8s\x8f\xd6U\x88')

Результат разбора:

{'A1': 32370,
 'A2': {'B1': [{'C1': -0.5374023521779574,
                'C2': {'D1': [0.2780935305712924, -0.30965486314085156],
                       'D2': [0.862529894319529, 0.21402579011516365],
                       'D3': -104,
                       'D4': -1108015347}},
               {'C1': 0.696141754232739,
                'C2': {'D1': [-0.06613454271263297, 0.48844319990971297],
                       'D2': [-0.4098052318095906, -0.8830392102712807],
                       'D3': -43,
                       'D4': -276543675}}],
        'B2': [1639311475, 2413188488],
        'B3': 10571682467414122688},
 'A3': 49753,
 'A4': -0.02370104193687439}

Пример 2

Двоичные данные:

(b'SWVK\xab)\x00\x00\x004\x00\x00\x00e\x00\x00\x00\x02\x00\x00\x00\x86\x89\x8d'
 b'\xcah\xec\x84\xe4\xfam\xc6=\xc9\r\xfe\xbf\xd7MR\xc1\x04{\xfc?\xe5U\xa2'
 b'\xcdB\x15\x06\xbf\xc2\x99T\xce\xb0\xac\xe0\x00\x02\x00$\xbf\xefB\xe8'
 b'\xa3\xbamH?\xcd\xcc\xb2[\xf9\xe5@`\xf2\xb2\xf9\xde?\xdeC8\x94\x8b\xf7'
 b'\x90\xbf\xe4\x98\x83$\x89P\xe0?\xeaO\xe5x=\xa3Z\x00\x02\x00U\xbf\xe8\xdd'
 b'\xd0\x03\xc7\xf6\xd6?\xee\xcd\xb4s@\xd66\xb6c\xf9o\xc1\xaes`QS\xa6\xd2=')

Результат разбора:

{'A1': -21719,
 'A2': {'B1': [{'C1': -0.14530429928104294,
                'C2': {'D1': [-0.36409443711630707, 0.6667036065051952],
                       'D2': [-0.9769175718132965, 0.23280934802077446],
                       'D3': 96,
                       'D4': -223151650}},
               {'C1': 0.8222529743626226,
                'C2': {'D1': [0.47285284525411786, -0.6436172212220548],
                       'D2': [-0.7770767282342728, 0.9626104594269183],
                       'D3': -74,
                       'D4': 1677291457}}],
        'B2': [2926796881, 1403441725],
        'B3': 9911800906905871610},
 'A3': 28102,
 'A4': 0.09817121922969818}

Вариант №36

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x49 0x4d, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Размер (uint16) и адрес (uint16) массива адресов (uint16) структур B
2 Адрес (uint32) структуры D
3 float
4 int64
5 float
6 int32
7 uint64

Структура B:

Поле Описание
1 float
2 uint16
3 Адрес (uint32) структуры C
4 int64
5 Массив int8, размер 3

Структура C:

Поле Описание
1 Массив float, размер 3
2 uint8
3 uint16

Структура D:

Поле Описание
1 uint32
2 int16
3 int64
4 Массив uint8, размер 8
5 uint16
6 uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'IIM\x00\x02\x00o\x00\x00\x00s\xbfQ\xcc\xe9j}u\xf3\xfc\xb6\x1f=\xbf\x0f\x8b}4'
 b"\x0e\x90\x19`\xcb'\x88\xbb\x82\xd3;\xbe\tR\x0f\xbf\x06\xab?\xbd"
 b"\x90\x0b\x0b\xd9\x01e>\xbf\xf3\x88\xa1\xb6\x00\x00\x00'c\xc9\xf5\xf0"
 b'd\xec\xc0\xf7\xd50\xa9\xbe\x98{J?J\x08\xaa>+x\xcd7\xaf\x13=\x80\xa2\xb0 S'
 b'\x00\x00\x00K\x13>U)?\tV`6h>\x006\x00Z\x9f\xb4\x17\xb7\xb4{\x99B\x8d'
 b'i\xcbc\x00\xd3e\x80\xde-{\x08\xac\xad\xb82\x02\n')

Результат разбора:

{'A1': [{'B1': 0.3749048709869385,
         'B2': 41398,
         'B3': {'C1': [-0.13410209119319916,
                       -0.5260505080223083,
                       -0.0703335627913475],
                'C2': 217,
                'C3': 357},
         'B4': 7190548692907901175,
         'B5': [-43, 48, -87]},
        {'B1': 0.06281030178070068,
         'B2': 8275,
         'B3': {'C1': [-0.29781562089920044,
                       0.7891947031021118,
                       0.16745300590991974],
                'C2': 55,
                'C3': 44819},
         'B4': 1386639370916288096,
         'B5': [54, 104, 62]}],
 'A2': {'D1': 2679379895,
        'D2': -19333,
        'D3': -7403199351920328493,
        'D4': [101, 128, 222, 45, 123, 8, 172, 173],
        'D5': 47154,
        'D6': 522},
 'A3': -0.8195329308509827,
 'A4': 7673419030886489917,
 'A5': -0.5607221722602844,
 'A6': 873369625,
 'A7': 6974711916128293691}

Пример 2

Двоичные данные:

(b'IIM\x00\x02\x00o\x00\x00\x00s\xbd\xed\xcd\xb4~\xeb\xf6\x06W\xfe|\x00>'
 b'\x12\xe80\xb1\xe4\xc1\xca\x0b\x19\xc4YPC\x93\xb3> {\xd9?+\x1c\xa3\xbf'
 b'\x0b"\x1b}v&>\x17\x8eW,\xa3\x00\x00\x00\'\xf2^\x8f[\xe1\xa8\xcf\xb2'
 b'\xd8+B\xbfK\xb2\xca\xbf9e/\xbf!\xe6\xb1>>\xaf\xbe\xff\xca<:\xdd\x00\x00\x00K'
 b'\xd5:\x18Z\x86\xa0\xcc\xe8\xab?\xa9\x006\x00ZDA\xc50\xe8@\xa8o\xbe'
 b"\x0e\xec\x0e&&;\xcb'{o\xfd'\xe9\x07\xf8*\xbd")

Результат разбора:

{'A1': [{'B1': 0.14800392091274261,
         'B2': 11427,
         'B3': {'C1': [0.15672244131565094,
                       0.6684057116508484,
                       -0.5434891581535339],
                'C2': 125,
                'C3': 30246},
         'B4': -982190043929456718,
         'B5': [-40, 43, 66]},
        {'B1': -0.49958980083465576,
         'B2': 15069,
         'B3': {'C1': [-0.7956968545913696,
                       -0.7242001891136169,
                       -0.6324263215065002],
                'C2': 62,
                'C3': 16047},
         'B4': -3082124217896874776,
         'B5': [-85, 63, -87]}],
 'A2': {'D1': 1145161008,
        'D2': -6080,
        'D3': -6309615581623605722,
        'D4': [59, 203, 39, 123, 111, 253, 39, 233],
        'D5': 2040,
        'D6': 10941},
 'A3': -0.11611500382423401,
 'A4': 9145673975412456448,
 'A5': 0.1434638500213623,
 'A6': -1310408246,
 'A7': 799886296712713139}

Вариант №37

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x53 0x4f 0x48, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Структура B
2 Массив char, размер 4
3 Массив int8, размер 5
4 int64

Структура B:

Поле Описание
1 Адрес (uint16) структуры C
2 uint32

Структура C:

Поле Описание
1 float
2 Массив структур D, размер 7

Структура D:

Поле Описание
1 double
2 float
3 Массив uint8, размер 2
4 uint8
5 uint8

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'SOH\x1a\x00\xd9\x8f\x07apgoyfy\xfd \xe5\xea\xb6\x85rvT\xfeP\xfe\xd0'
 b'\xc3\xbd\x00l7\x85J\xc4\xea\xbf{\x88\r?\xf0\xc9K\xaa8\xdc\x18\xb3\x8d@'
 b'\xcb\xbfa\xb6\xc7\xbc\xda63.2d\x9f?\x81\x8e\xee?T\x88\xd0\xbe\x13\x169Qf\x19'
 b'\x88\x0e\xd3\xee\xef\xbf\xd6\xea\xac\xbd\xc1J\x12\x87z\xdc\xb4\x11\xd0p'
 b'\xe1\xbf\xc0\xf7\xe5>\xf5?\xd4\xce\x00B\xe7\xb1\x0bka\xbf/\\/?\xcaL'
 b'\xb8`j\x81dqV,\xeb?\x9b\x89\x8c=\xdc\xad\x18\x87')

Результат разбора:

{'A1': {'B1': {'C1': -0.09561346471309662,
               'C2': [{'D1': -0.8364613153347591,
                       'D2': 0.5528637766838074,
                       'D3': [240, 201],
                       'D4': 75,
                       'D5': 170},
                      {'D1': -0.21290751690841758,
                       'D2': -0.024378957226872444,
                       'D3': [218, 54],
                       'D4': 51,
                       'D5': 46},
                      {'D1': 0.9548956148747776,
                       'D2': -0.40729010105133057,
                       'D3': [19, 22],
                       'D4': 57,
                       'D5': 81},
                      {'D1': -0.997903374082665,
                       'D2': -0.08443228900432587,
                       'D3': [193, 74],
                       'D4': 18,
                       'D5': 135},
                      {'D1': -0.5450210901098125,
                       'D2': 0.4491558074951172,
                       'D3': [245, 63],
                       'D4': 212,
                       'D5': 206},
                      {'D1': -0.002126238671941616,
                       'D2': 0.6850003600120544,
                       'D3': [202, 76],
                       'D4': 184,
                       'D5': 96},
                      {'D1': 0.8491623129557813,
                       'D2': 0.06862183660268784,
                       'D3': [220, 173],
                       'D4': 24,
                       'D5': 135}]},
        'B2': 1627885529},
 'A2': 'pgoy',
 'A3': [102, 121, -3, 32, -27],
 'A4': 5836195034822981354}

Пример 2

Двоичные данные:

(b'SOH\x1a\x00\x8b\xb1\x8f\xd3jbif"\x05\xf2)=\xee\x98\x93\x85\xa66R\x99\x9d\xb5'
 b'\x81\xbc\x00\x0c\x88\xe5U\xab\xbf?g\xb2f\xbfO\xffb\x14F,\x0e\x7fT\x91'
 b'\xe2\xbf\xfbO#\xbe\x15\x80\xe8\x1d\x8e\xf6\x90\x18I\xfb\xed\xbfF\xa5'
 b'\r\xbf\xeb\xc8\xb1\xba\xf0\xe9\xe8[\x0b(\xe2?\x1eS\x1d?\xd1l\xc0\xfa\xb8I'
 b'pi\xa6+\xcf?!\x88F?{\x05\x19~@\xce\xea\xe7\xa7Z\xea?O\x81\xba=\x9d\x99'
 b'Q^\xc6[\x85$\x8aO\xe3?\xc5\x9e\xe1\xbe$\xcd\xf6c')

Результат разбора:

{'A1': {'B1': {'C1': -0.015833670273423195,
               'C2': [{'D1': 0.12370812276644472,
                       'D2': -0.9011597037315369,
                       'D3': [79, 255],
                       'D4': 98,
                       'D5': 20},
                      {'D1': -0.5802404862928447,
                       'D2': -0.15948478877544403,
                       'D3': [21, 128],
                       'D4': 232,
                       'D5': 29},
                      {'D1': -0.9369245033082778,
                       'D2': -0.5533031225204468,
                       'D3': [235, 200],
                       'D4': 177,
                       'D5': 186},
                      {'D1': 0.5673882289041199,
                       'D2': 0.6145495176315308,
                       'D3': [209, 108],
                       'D4': 192,
                       'D5': 250},
                      {'D1': 0.2435195937001262,
                       'D2': 0.7755146622657776,
                       'D3': [123, 5],
                       'D4': 25,
                       'D5': 126},
                      {'D1': 0.8235663919098855,
                       'D2': 0.09106694906949997,
                       'D3': [157, 153],
                       'D4': 81,
                       'D5': 94},
                      {'D1': 0.6034594262408681,
                       'D2': -0.4406644403934479,
                       'D3': [36, 205],
                       'D4': 246,
                       'D5': 99}]},
        'B2': 3549409675},
 'A2': 'jbif',
 'A3': [34, 5, -14, 41, 61],
 'A4': -7398791148982789906}

Вариант №38

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x49 0x50 0x51 0x45, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 int64
2 int32
3 int8
4 Структура B
5 Массив char, размер 8
6 Структура E

Структура B:

Поле Описание
1 Массив структур C, размер 2
2 int16

Структура C:

Поле Описание
1 Структура D
2 uint16
3 int32
4 int32

Структура D:

Поле Описание
1 uint8
2 Размер (uint16) и адрес (uint32) массива uint8

Структура E:

Поле Описание
1 double
2 Массив uint64, размер 3
3 Размер (uint16) и адрес (uint32) массива uint32

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'IPQE\x91\xcb!\x87K\xb1H\xcb\x8a\xce4|k\xa5\x03\x00c\x00\x00\x00'
 b'\x00\xf5\x0f\xa1\xf2O\xdc\x9c\xdf\xd6\xd3\x04\x00f\x00\x00\x00\x0e\t\x0e'
 b']\x05Oe\xf7\x1e{\xc0\xcdcilqypyvj\xa3\x18\xd3\xcc\xdf\xe0\xbf\x00=q'
 b'\x1c\x80\xd2\xcb\xc49!Rgp\xa3\xfc\x9ez7\xd9\xd9q,O\xee\x04\x00j'
 b'\x00\x00\x00\x02\x10\xc8Ec\x87\xe9i\x1f;\xee\x86X|G\xd5\xce\x16\xa5\x82='
 b'\x13\x8b')

Результат разбора:

{'A1': -3798591347739210863,
 'A2': 2083835530,
 'A3': 107,
 'A4': {'B1': [{'C1': {'D1': 165, 'D2': [2, 16, 200]},
                'C2': 62720,
                'C3': 1341301007,
                'C4': -689988388},
               {'C1': {'D1': 211, 'D2': [69, 99, 135, 233]},
                'C2': 2318,
                'C3': 1325751566,
                'C4': 2065626981}],
        'B2': -12864},
 'A5': 'cilqypyv',
 'A6': {'E1': -0.5273193476651674,
        'E2': [14180659299380968704,
               11456211255288799545,
               17171992771684808570],
        'E3': [3996852073, 1199331462, 2769735381, 2333293954]}}

Пример 2

Двоичные данные:

(b'IPQE\x81L\xac9\x9eu\xa0\x97\xd4\t\x8a\x15\xdb\xd5\x02\x00c\x00\x00\x00'
 b'\xfe\x060\x02\x7f\xc5\xe2u4\xa0\x9b\x03\x00e\x00\x00\x00\xfe\x83$'
 b'\xf5.\x9a\xdc\xc3\xc8\xa7Lvxealwgnb\xba\xbf|\xfc\xd3\xa4\xe3?1\x11\x17'
 b'}\xb9\xd3a\xdd\x7fv\xc0\xdb\x87\xc15#\xc3\xd7\xb8\x82\xb0\xf2\xea'
 b'\xba\x04\x00h\x00\x00\x00\xde:\xe6\x1bX\xf0\x02\xc5\xf0Wh\x84\x0c\x87S\x9b}'
 b'\xd5^.c')

Результат разбора:

{'A1': -7520882055275852671,
 'A2': 361368020,
 'A3': -37,
 'A4': {'B1': [{'C1': {'D1': 213, 'D2': [222, 58]},
                'C2': 1790,
                'C3': -981532112,
                'C4': -1607174686},
               {'C1': {'D1': 155, 'D2': [230, 27, 88]},
                'C2': 33790,
                'C3': -1708198620,
                'C4': -1480014884}],
        'B2': 30284},
 'A5': 'xealwgnb',
 'A6': {'E1': 0.6138706141846264,
        'E2': [15952264148744081713, 2537146754344711807, 13468844475526207427],
        'E3': [4039443184, 210004055, 2107331463, 1663983317]}}

Вариант №39

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x30 0x45 0x45 0x56 0x44, за которой следует структура A. Порядок байт: от старшего к младшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Массив char, размер 4
2 Массив структур B, размер 2
3 float
4 int32
5 uint64
6 uint64
7 Структура C

Структура B:

Поле Описание
1 int64
2 int32
3 int64

Структура C:

Поле Описание
1 Адрес (uint32) структуры D
2 int8

Структура D:

Поле Описание
1 uint64
2 float
3 Размер (uint32) и адрес (uint16) массива int8
4 uint32
5 Размер (uint16) и адрес (uint16) массива uint64
6 int64

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'0EEVDpwly\xfd\xd5\xf6d\nLY<\x93\x97\x13\xbb\xa6Nn\xdd\xa6\x94l'
 b'\x89\x88\xf8\x9a\xed\x1a\x91\xdb4\xed\x19\rmG\xdc\xa3M\xbeZ\xcb\x8e\xbfh\x91'
 b'\x13\xea\xf2\x1cg\xa2\xe0\x08\xd5\x90\x08Y\xf6\xa6\xb9sh\r\x8a;'
 b'\x1a\x00\x00\x00\x80\x1f\xae\x19/1\xff\xaa\xd2\x03\xbc\x93@n\xe34'
 b'\x99Z\xde\x08\x0e.\x02\x1d0o\xa8\xe9\xbc\xdd\x86He\xa4\xe0\x86l\xc3u%'
 b'\x9b\xa9\x89\xf6!\x1f\x0b\xa9\xb7\xedV/\xa6\x92\xfcl\xbd\xf4\xc4->\xb9Q\x12'
 b'\x00\x00\x00\x02\x00N\xfcs\x9a\x95\x00\x06\x00P\x13\xac\x95\xb1\x06\xc1'
 b'\xa7\xa4')

Результат разбора:

{'A1': 'pwly',
 'A2': [{'B1': -155947702544475844,
         'B2': -1818815557,
         'B3': -6463106516968510327},
        {'B1': -8576935147183416524,
         'B2': -317125267,
         'B3': 5178193225870658446}],
 'A3': -0.9084636569023132,
 'A4': -353231769,
 'A5': 11736390342265035254,
 'A6': 12013760371728464666,
 'A7': {'C1': {'D1': 12002933500869395501,
               'D2': 0.36194664239883423,
               'D3': [-82, 25],
               'D4': 4235434645,
               'D5': [3400780302774418579,
                      4642898080916233736,
                      1021756489849612521,
                      13609181294484578438,
                      7837236580940614134,
                      2386639151092815407],
               'D6': 1417672570269968292},
        'C2': 31}}

Пример 2

Двоичные данные:

(b"0EEVDedzo\xb5\x0b\xce'\xb2\xceV}k\xda*2\xcf0\xd0\xc1\x08\xe91\x94\xe8k\xef"
 b'\xe1\\\x82Y\x01\x99\xe3\xa8\x8f\x9b\xba\x17G0\xdb\xb2w\xbfr\x0e:\xff\x0cc'
 b'\xdd\xec\x92\x988\xf2J\xe4\x08\xa9t_\xc8[\xf4H\x16\x00\x00\x00p\x87\xa2\x97'
 b'C\xb1\xbc\xc6\x1a\xf9\xf5\xa0Mp\xc9\x9f,@\xaes\x965`\xe2\x8dv\xea\xd1'
 b'.\x0b\x10(\x99\xfe\x05\x9dOC\x87\xe1,8\x9f\x04?B\x86Q\x00\x00\x00\x02\x00N;A'
 b'\x10\xa7\x00\x04\x00PA\x9d\xb03\xbc\xc9&5')

Результат разбора:

{'A1': 'edzo',
 'A2': [{'B1': -5400996658201864579,
         'B2': 1809459762,
         'B3': -3517081781479591532},
        {'B1': -1699000683203503871,
         'B2': -1713133425,
         'B3': -7225437057632718217}],
 'A3': -0.945529580116272,
 'A4': -15965219,
 'A5': 17046854909901333512,
 'A6': 12210489803849091094,
 'A7': {'C1': {'D1': 5711558153615220484,
               'D2': 0.7598620057106018,
               'D3': [-94, -105],
               'D4': 994119847,
               'D5': [4877887430461093280,
                      5580181623791464051,
                      10823663805607111377,
                      3317763317056800157],
               'D6': 4728128920066008629},
        'C2': -121}}

Вариант №40

Задача №12

Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0x90 0x47 0x4a 0x5a, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.

Структура A:

Поле Описание
1 Адрес (uint16) структуры B
2 Размер (uint16) и адрес (uint16) массива структур D
3 Структура E
4 int8

Структура B:

Поле Описание
1 uint16
2 uint32
3 Структура C

Структура C:

Поле Описание
1 int64
2 float
3 Массив char, размер 4
4 uint64
5 uint16
6 uint64

Структура D:

Поле Описание
1 float
2 int32
3 Массив int8, размер 6

Структура E:

Поле Описание
1 int8
2 Размер (uint16) и адрес (uint32) массива double
3 float
4 uint16

Ниже показаны примеры разбора двоичного формата.

Пример 1

Двоичные данные:

(b'\x90GJZ\x18\x00\x02\x00@\x00\x0e\x02\x00\\\x00\x00\x00\x8f\x03\x08'
 b'\xbf\x87M\xb3\xccP\xe1\xba{p\x1ba2`\xffy\xe5c\x02\x19\xf3>ilca\xc6\x8d'
 b'@\x8a\xdb\xce\xc2!Z\xdc\x92\xc7\xc9\xde\x9f\xa3\xa5\xe0\xca\xa50?\x07\x803h'
 b'\xa6\xc6\x02f\xdf\x15\x11~\xb3\xbe\xe1/T\xc7\xce(J\xeb%Q\x8eU\x10\x17'
 b'\xb4\xdb\xe5?\xa8\x16 V\xa3\xd3\xe5\xbf')

Результат разбора:

{'A1': {'B1': 20684,
        'B2': 1887156961,
        'B3': {'C1': 7198293717159141659,
               'C2': 0.474800169467926,
               'C3': 'ilca',
               'C4': 2432734191046135238,
               'C5': 56410,
               'C6': 16187524342686009234}},
 'A2': [{'D1': 0.6900297403335571,
         'D2': 1748205575,
         'D3': [-90, -58, 2, 102, -33, 21]},
        {'D1': -0.3505711853504181,
         'D2': -950784031,
         'D3': [-50, 40, 74, -21, 37, 81]}],
 'A3': {'E1': 14,
        'E2': [0.6830692720856619, -0.6820847208152445],
        'E3': -0.5313042998313904,
        'E4': 19847},
 'A4': -77}

Пример 2

Двоичные данные:

(b'\x90GJZ\x18\x00\x02\x00@\x00\x94\x03\x00\\\x00\x00\x00\xb0\x11\x0c?\xde4\xd2'
 b'\xfb\x9e.[Pyt\xc6\x93\x16\x84\xc5\ng3\xd3Q?fttt\xdb\t\x05u\xf5"\xd7\xfbXJ'
 b"\xb0\xe0Q\x85\x96'!8\xca\xc2\xbd>\xacB)\x93\xe3\x89~\x95\x8aS\xdd\xed"
 b'\x95\xbeY\x1d\xad\x0et\x14\x98\x12Oed\xc5\x1e\x08\xea]\xe1\xbf\xee\xfesT'
 b'52\xe0?rn+tK\xbc\xe5\xbf')

Результат разбора:

{'A1': {'B1': 40699,
        'B2': 2035309358,
        'B3': {'C1': 7424964106778822260,
               'C2': 0.819628894329071,
               'C3': 'fttt',
               'C4': 18147011661138299355,
               'C5': 19032,
               'C6': 4044557467790729392}},
 'A2': [{'D1': 0.3706267476081848,
         'D2': -1826012500,
         'D3': [-29, -119, 126, -107, -118, 83]},
        {'D1': -0.29283037781715393,
         'D2': 246226265,
         'D3': [116, 20, -104, 18, 79, 101]}],
 'A3': {'E1': -108,
        'E2': [-0.5427141340825696, 0.506128945300558, -0.6792351979197078],
        'E3': 0.547144889831543,
        'E4': 13534},
 'A4': -46}