ИКБО-04-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KQG\x18\xea\xa1\xe0E\x02\x00H\x00\xc5\x82\xaa}X)VJ\x1d+\xea\x98'
 b'\xe3\x11\xc4\x02\x00T\x00\x00\x00\xdc\x84q\xbf\x00\xa3\x99V\\\x03\x00'
 b'\x00\x00v\x00\x00\x00\x95\xc1O\xee(\xeae<\x8e\xdb\xc4?\xc4/.\x98q\xa4'
 b'\xe7\xfa\xb6Znz\xd2nn\xc5\xc5\x9a\x18]\x19\xb0\xe5[2$\xa9\xc0\x13\xd7'
 b'\x99x\x16\x8dl\x05\x00J\x00\xb2a\xc1\xef\x8b\xeb\xa33\xb2\x17\xd6'
 b'!\x02\x05\x00O\x00\x19\xdb\xd8ge\xae\t\xa1\xd3\r\x8e\xa1\xa7\x81'
 b'R\xf7\x89\x16;:\xd0F8\xfd')

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

{'A1': {'B1': 1172349418,
        'B2': 'nz',
        'B3': -59,
        'B4': 1484630658,
        'B5': 22057,
        'B6': 14128323751941184842,
        'B7': [{'C1': -2948801498308256795,
                'C2': 30873,
                'C3': 22,
                'C4': 27789,
                'C5': [-46, 110, 110, -59, -59]},
               {'C1': 3721076703393571250,
                'C2': 6066,
                'C3': -42,
                'C4': 545,
                'C5': [-102, 24, 93, 25, -80]}],
        'B8': -0.9434335231781006},
 'A2': 0,
 'A3': 1549179299,
 'A4': [11603997665453988633, 17821449232428436947, 18246411750435657353],
 'A5': 3998204309,
 'A6': 0.16295030545355016,
 'A7': {'D1': 196, 'D2': 13185105552546999855, 'D3': 90}}

Пример 2

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

(b'KQG\x18\x06S\xa3\x9b\x02\x00H\x00S\xf3I{h\xe1s\x84/\xa1\xb2z\xa9\xca\x1d\x02'
 b'\x00S\x00\x00\x00\xc7<0\xbf\xeeLL\x80\x0e\x03\x00\x00\x00u\x00\x00\x00N\x87'
 b'\x12\xc5`\x07\x8b\xb0p\xbb\xb6?\xdd\xde\xf92\x97O\xf9\x1d\xe8Yia\xcb\xc2'
 b'\x9f\xb0\x1a\xfd\xad\xca\x11\x90\x91I\\FS@\x99a`\x96M\xa5\x02\x00J\x00'
 b'\x92\xb0\xcc\xb9|q`\x0f\xb6\xaa\xa1\xa2k\x07\x00L\x00\xa1\xff\x04#d \x03'
 b'\xd0[k/j\x1a3A\x1a7\xd3\x054\x96\x1d\xbd\x94')

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

{'A1': {'B1': 2611172102,
        'B2': 'ia',
        'B3': 83,
        'B4': 1752910323,
        'B5': 29665,
        'B6': 2146714516843474820,
        'B7': [{'C1': -7403826225735954032,
                'C2': 24673,
                'C3': -106,
                'C4': -23219,
                'C5': [-53, -62]},
               {'C1': 1108010288840224914,
                'C2': -21834,
                'C3': -95,
                'C4': 27554,
                'C5': [-97, -80, 26, -3, -83, -54, 17]}],
        'B8': -0.6884273886680603},
 'A2': 238,
 'A3': 243289164,
 'A4': [14988859599275491233, 1891849507015977819, 10717755219166745399],
 'A5': 3306325838,
 'A6': 0.08879761037954159,
 'A7': {'D1': 221, 'D2': 16725798711358323166, 'D3': 89}}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'EJJ%%\x00\x00\x00\x04\x00\x00\x007\x00\x02\x00;\xd5\x94\x00\x04\x00ur'
 b'\xbfm\xa0\x15\x14\xed&\xb6\xe7\xaf\x0c[L\xe49_\xbb\xd4\xc6\xb1\xb5\xbf\x98O'
 b"\x8c\xaeeg\xee\xc4Ybhef\xb1Y;\xff\xbf\xeb[\xed\x06\xc7\xe2\x16\xc2\xed\x96T'"
 b'\x1aw]\xcee\xfc_Tj\xc1\x96\xba\x13\xf0#"\xbf\xd1/@+LKln\xbe\x1c\xeb'
 b'\xba\xb2v\xf8\x96\xa9;\xdb\xdab\xf3\xf7\x94\x9d\x87\x87\x9a9H$G\x05\xef1'
 b'$D\x81\xc6h')

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

{'A1': 37,
 'A2': 'bhef',
 'A3': [{'B1': 2975415295,
         'B2': {'C1': -0.8549714214742064,
                'C2': 14046048101015910237,
                'C3': [206, 101, 252, 95, 84, 106, 193]},
         'B3': 38586},
        {'B1': 334504738,
         'B2': {'C1': -0.2685089514572414,
                'C2': 7979847388522247928,
                'C3': [150, 169, 59, 219, 218, 98, 243]},
         'B3': 63380}],
 'A4': 54676,
 'A5': {'D1': [-1652062310, 961029191, 99561764, 1149355624],
        'D2': 1925148064,
        'D3': 353692966,
        'D4': 13179695302129280057,
        'D5': [95, -69],
        'D6': -3114606698118492276},
 'A6': -1369085970,
 'A7': 50265}

Пример 2

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

(b'EJJ%\x17\x00\x00\x00\x04\x00\x00\x007\x00\x02\x00;`\x07\x00\x07\x00u\x9e'
 b'6&\xac\r-\x82,\x04i\x92Y2\x10\xec\xfbO\x1e\x19w\xe5^t\xf0[\x07\xd9!\xc3'
 b'\xe1\x17*yrhz\x8ay(0?\xed\x9d\xa6\xce*\x7f\xa6\xd2)\xec0\xe4\xbc\xb1\xb7\xf7'
 b'\x1f\x9e\x14\xf7\x8e\xfb\xbbz\x90\t\xfd\x9c?\xe7d\xeeI\x9a\x06@t)/m'
 b'\xc9\xf8\x84\xe0A\x88\xec\x88\x00\xd5\xe6\xb7\xfa\xc8\x10\x998\xef\x1e\x01'
 b'@`w\xa8\xc2\xd1<00\xfa\xc2\xb4\xa5\xd7\x95\x93\xa3vt\xcd\x84')

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

{'A1': 23,
 'A2': 'yrhz',
 'A3': [{'B1': 2323195952,
         'B2': {'C1': 0.9254945780448807,
                'C2': 15143894916750160311,
                'C3': [247, 31, 158, 20, 247, 142, 251]},
         'B3': 47994},
        {'B1': 2416573852,
         'B2': {'C1': 0.7310706555874233,
                'C2': 8370273531031225568,
                'C3': [65, 136, 236, 136, 0, 213, 230]},
         'B3': 47098}],
 'A4': 24583,
 'A5': {'D1': [-938436296,
               -283246272,
               1618454722,
               -784584656,
               -87903067,
               -678063197,
               1987366276],
        'D2': 2654348972,
        'D3': 221086252,
        'D4': 317946160496045307,
        'D5': [79, 30],
        'D6': 1835187567028361991},
 'A6': -652098591,
 'A7': 5930}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

Поле Описание
1 uint8
2 float
3 Адрес (uint32) структуры E
4 int16
5 float
6 Структура F
7 Адрес (uint16) структуры G
8 uint16

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'BRWA(\x00\x00\x00A\x00\x00\x00Z\x00\x00\x00s\x00\x00\x00\x96\x00\x00\x00'
 b'\xba\x97\x83\xc05\xa7\xaa\xab\x88>\xe4lq\x83\xc7\xbf\xe3\x04\x84ZO?\x18\x00'
 b'%\xad\x84%\x00\xe6\xcb\x8a\xea \xd7\xa5\xa7?L\xbe\xbf\xb3d\xdc\xacW\xbf1'
 b'\x00_\x80Q\xaf\'\xbaU\x15\xa6\xe6&B\xe2\x9e\xff\xe6?\xf0r"\x1d\xdf>J\x00,k'
 b'\xddJ\x97\xde\xe9\xd6A0_@\xe7j\x94\xe0\xbf\xce\xf8\x16\xac\x05?c\x00r'
 b"O\xfd\x07\x10\x9a\xe1\xb8^(\xe8\x16%S2\xd3\xf3\x8c\xfd~:0'4`Y\x85\x86~"
 b'\xde\xc6\xbe|\x00\x00\x00\x8e\xd2\xe5\x0c.?p\xa1\x83\nk\xbeh\xab\xd3F\xd7'
 b'\xdbF\x8f\x05\xc0<[\xac\x9d\\\x96\x8a\x00\xcdt')

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

{'A1': [{'B1': 1251,
         'B2': 0.8099749088287354,
         'B3': {'C1': -1065117766,
                'C2': -1414879435,
                'C3': -0.18369882409068716},
         'B4': 37},
        {'B1': 25779,
         'B2': -0.8424813747406006,
         'B3': {'C1': 2458797, 'C2': -360002586, 'C3': -0.11835096209491924},
         'B4': 95},
        {'B1': 29424,
         'B2': 0.43576914072036743,
         'B3': {'C1': 665801088, 'C2': -1508551238, 'C3': 0.7187036913976186},
         'B4': 44},
        {'B1': 63694,
         'B2': 0.5221570730209351,
         'B3': {'C1': -1756701333, 'C2': 1104603614, 'C3': -0.5181173817281657},
         'B4': 114}],
 'A2': {'D1': 134,
        'D2': -0.38841623067855835,
        'D3': {'E1': [79, 253, 7],
               'E2': -1193174512,
               'E3': [94, 40, 232, 22, 37],
               'E4': 12883},
        'D4': -11634,
        'D5': 0.6798842549324036,
        'D6': {'F1': -24208,
               'F2': [3194686083, 1188277096, 2403785687],
               'F3': 10834708167137214469},
        'D7': {'G1': 62419, 'G2': 64908, 'G3': 9608817057083701886},
        'D8': 29901}}

Пример 2

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

(b'BRWA(\x00\x00\x00A\x00\x00\x00Z\x00\x00\x00s\x00\x00\x00\x96\x00\x00\x00'
 b'\xa6\xec\xb8z\xe1p\x12\x1dH\xcb\xdc`\\\xe1\xd9?y\xe9\x08\xbd\x10?\x18\x00'
 b'\x93\x85\xf3\xcc\xa1\x9d4o\xeeP\x07\xab\xe78W\xdc\xbf\x8e\x88\x1d&L?1'
 b'\x00!\x88\x97\x0c\xc8Y\x15\xd9W^}\x89\xf4`\xff\xeb?,\xce\x00Sg\xbfJ\x00\x19b'
 b'\x16\xd1qu\xe9\xb2\x8bRq\xda\xcd\x98\x90\xef\xbfB;\x0c\xee3\xbfc\x00\xcf'
 b'@\xb9C5\xe1Q\x1d<\xf1f\x00\x17\x82\x90\xb2O?\x88\xb6\xd4\xd8[1\xf6v\xc7G\x16'
 b'\xd7\xd5>|\x00\x00\x00\x8cmR\xd4*?/\x01S/\xb8\x81\xeaBLJ\xe8]\x18l\xca'
 b'x\xbd`q\xea\xb2_\x8a\x00\x80\xcb')

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

{'A1': [{'B1': 59769,
         'B2': 0.5653843879699707,
         'B3': {'C1': 2058939558, 'C2': 487747809, 'C3': 0.40437993487573864},
         'B4': 147},
        {'B1': 34958,
         'B2': 0.7974565625190735,
         'B3': {'C1': -1580403835, 'C2': -294701923, 'C3': -0.4428236257918927},
         'B4': 33},
        {'B1': 52780,
         'B2': -0.9036102294921875,
         'B3': {'C1': -938698872, 'C2': 1473844569, 'C3': 0.8749241615404733},
         'B4': 25},
        {'B1': 15170,
         'B2': -0.7028510570526123,
         'B3': {'C1': 1909528162, 'C2': -1951209099, 'C3': -0.986400987679682},
         'B4': 207}],
 'A2': {'D1': 71,
        'D2': 0.4176566004753113,
        'D3': {'E1': [64, 185, 67],
               'E2': 491905333,
               'E3': [60, 241, 102, 0, 23],
               'E4': 36994},
        'D4': 28044,
        'D5': 0.6673022508621216,
        'D6': {'F1': 303,
               'F2': [2176331603, 1246511850, 1813536232],
               'F3': 6895831752132884682},
        'D7': {'G1': 20402, 'G2': 34879, 'G3': 14372945952654283958},
        'D8': 52096}}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x9dPWWc\x00\x00\x00f\x00\x00\x00\xe3uc\x92Z;\xe4\xcb\xc3\x0f\x92\x15BY\x8dg'
 b'(r\x8e9!\xd3\xe2\xfb.\xe8\x1e\xed&RQ\xe2!\xb4FV\xbbc!\x8a\xca\xbd\x18C'
 b'k\x1e]:N\x8e\xc7vb\xca\x845\xf2t\x89c\xbe\xc6\xa8\x8a\xbc\x90\xef\x0e'
 b'\xa7\xbc\xfe\xec)S\xa5\xf7\x9ai\x00\x04\x00\x00\x00s\x00\x00\x00\xf7'
 b'Q\xd9\x0f\xf8w\xc4\xbfb\xbf%\x11\xba\x9e?&\t\x1f".-k\xba\xe8\x98|p\x99a'
 b'\x93\xd5\xa9')

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

{'A1': [{'B1': 20983, 'B2': -39}, {'B1': -2033, 'B2': 119}],
 'A2': {'C1': -29,
        'C2': 'uc',
        'C3': 23186,
        'C4': [4761872777421251643,
               2394101297879420249,
               2804932125491192531,
               -4947689401143373486,
               7729048588923838819,
               7095077676980526366,
               -4727784048436083510,
               -6408921814784104250],
        'C5': 11166575577692700348,
        'C6': {'D1': 49092, 'D2': 2756096018962825058},
        'C7': [773988105, 3904531245, 2574285976, 2849346401]}}

Пример 2

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

(b'\x9dPWWc\x00\x00\x00f\x00\x00\x00\x0cms\x0c\x96\x91\xdcp.m\x1c\x9b'
 b'\x03\x96\x01r\xad\xa6#S\xc8\x1ebG\xd7\xdd\xe5\tlfQGc\xbe\xdf!\x06\xd3k\xed'
 b'\n\xc9<\x05\xef\xe9\x95\x9c\x13J\xcd"\x0c\xe6\x02\xce\x9e\xb07\x94v\xf0IR'
 b'9UO\xc4e(VB\xb1\x8bj\x85\xabi\x00\x04\x00\x00\x00s\x00\x00\x00\x95M\xfeX\xf6'
 b'*\xa7\xf9\x92 \x00\xd7\xf5\x14\xdd\tO\x12\x002m\x7f\xd26\x90\x0e\xe0\xf5\xdf'
 b'\x98\x10(')

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

{'A1': [{'B1': 19861, 'B2': -2}, {'B1': -2472, 'B2': 42}],
 'A2': {'C1': 12,
        'C2': 'ms',
        'C3': 38412,
        'C4': [259832658760096913,
               -4011823644275506794,
               7785006171848925726,
               441880247261417830,
               -1223504889591796781,
               874486995703600617,
               8544515624746746598,
               7333073320718518768],
        'C5': 12359401900595107368,
        'C6': {'D1': 63911, 'D2': 710747362301059218},
        'C7': [838865487, 919764845, 4125101712, 672176351]}}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'KCRS\x003\xe9\xfd@|\xdet\xb6\x1a \x00\x04\x00\x00\x00C=\x8b\x80'
 b'\xdc\x00\x00\x00O\x00\x00\x00k\x87\xe3TS\xac.\x11\xea(\xe4\xbf\xe6\x860#'
 b"\xe2!\x06M\xd8TB?\xe9\xa1r\x9e>\xd1\xbe>\x88\xb7\xa0paki>gul'c\x1eWj3=\x90'"
 b'\x1f\xdbA9\xb5-\xb8\x00\x02\x00G\x93\x1c+:\xf4d~T\xe4\xe2\x9a\x9a\xbb'
 b'\xf9\x0f\xa7\xe8\xcf\xb9\xf1c\x06)x\x00\x03\x00_')

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

{'A1': {'B1': 1306022978,
        'B2': {'C1': 0.8009579745035393, 'C2': 0.2670259475708008}},
 'A2': -23,
 'A3': 18248722984987925024,
 'A4': {'D1': 'paki', 'D2': 0.06811687350273132},
 'A5': [{'E1': 1781742992,
         'E2': 2819212964944752056,
         'E3': [1046967660, 660807255]},
        {'E1': 3153661863,
         'E2': -1670912490331559560,
         'E3': [-1826870470, -194740652, -454911334]}],
 'A6': [-30749, 21587, -21458, 4586, 10468],
 'A7': -0.703880376896479}

Пример 2

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

(b'KCRS\x003\xdf\xf0\xcd\x8a[\xc1\xed\x8d\xa9\x00\x02\x00\x00\x00C?\x13\x9f'
 b"/\x00\x00\x00M\x00\x00\x00e\xd7'\x1cK\xa4\xac\x95\x10\x1d|?\xe0\x1f\x8a\x98"
 b'r\xc0P\x83\xc8{\xef\xbf\xc8\xd7\x86w\x87\x1aH>P\x1b\xf2wp\xd3\xf6C\xdc\xc5nA'
 b'\xa7][\xa4\x88d\xcc\x99\xc9\xe2\x89\xca\x8f\x00\x02\x00Efr\x14\xbe\xdc%R'
 b'\xaf\xe3\xe9 \x96\xdb\x98\xcbp\xc9,=\xaa\x00\x02\x00]')

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

{'A1': {'B1': 2210954223,
        'B2': {'C1': -0.1940773090011183, 'C2': 0.2032316029071808}},
 'A2': -33,
 'A3': 17351677066028617129,
 'A4': {'D1': 'wp', 'D2': 0.5766476988792419},
 'A5': [{'E1': 1566286984,
         'E2': 7263349391409924751,
         'E3': [-738835492, -982629977]},
        {'E1': 3823706262,
         'E2': -2623123097671418454,
         'E3': [1718752446, -601533777]}],
 'A6': [-10457, 7243, -23380, -27376, 7548],
 'A7': 0.5038502671723197}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZDGaliv\x9bl\x8fL\xe3\xac\xe9\xf1\t\xfe\xdf\xbcd$#L\x7f\x9a\x0c\xa0\xdc'
 b',\xd8:H\xb9\x9c?\xe4\xe7C\xa2\xc3<\xb3;\x00\x04\x00\x00\x00\x8f\xa9"\xc3'
 b'\xf2\x1f\x07\xe9\xcaegDR)\x15\x16O\x9d\xfe\x04{?\xc5\x87\xc5U\xc7R'
 b'\xad\x81\xf9\xb2\x9c\x7f\xef\xf4Z\xf2z\xfc\x0f\xf9{\xc4\xb3\x9b\x0e/'
 b'_d\xe3\xd0\xbfR~\xd9\xe5\xc9MX_\x00\x02\x00\x00\x00\x9f\xb2\xfc\xb1t\x83'
 b'C\x8dp\xbc\xa0c\xf9RR#\xf4\x18\x80\xcb\x12\xa5\xac\xe0\xf5\xbd\xfcm\xccl'
 b'\x94\xd5I\xa6b${\x9f\xba\x0eiRO\x8b\x0b\xa3\xbckU4\xb3\xd9\xc3')

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

{'A1': 'aliv',
 'A2': [{'B1': 2607583052,
         'B2': {'C1': [3819760113,
                       167698364,
                       1680089932,
                       2140802208,
                       3693926458,
                       1220123711,
                       3840361378,
                       3275535163],
                'C2': [1821693257, 2791449723, 2679770729, 1380944651]},
         'B3': {'D1': 12187518986288097738, 'D2': 7306884040099173967},
         'B4': -1644297093,
         'B5': 1069909957},
        {'B1': 1439126189,
         'B2': {'C1': [2180625052,
                       2146432090,
                       4068146191,
                       4185638067,
                       2601398111,
                       1692651711,
                       1384045029,
                       3377289311],
                'C2': [2747034453, 884201923]},
         'B3': {'D1': 12897378546858823024, 'D2': 13591973597883278324},
         'B4': 411093778,
         'B5': 2779570421}],
 'A3': -0.12325629591941833}

Пример 2

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

(b'ZDGtzhy\x12d\x17g\x91{;\x82\xe6\xad\x9f^\xc1\x88<\x17\xca\xe1v\xa8\x12'
 b'\x0479,\xf9vDZP\xc2\xba\xdbF\x82&\x00\x03\x00\x00\x00\x8f\xf4\xaa\xc3'
 b' \xfd\x03_\xa9L\xde\xc0WC`X\xbf<>\xac\xa8\xefa\x982\xc0Y\nII\x8b\xda'
 b"$\xe4\xb5\x07\x10\xc4\x81\xf2v\x94?\xa1\xbe$:\xb3;}\xe5*5\xe3'4M\x1e@\xc4"
 b'\x99\x00\x02\x00\x00\x00\x9b\x03\x8b\x81\x08\xf4\xbd\xe5\xc3\x18BF3\x06'
 b'\xf3\xf2D\x0c\xc6\xbb\x85\x93\xe8\xa5n>\xa2\xe9@D;|\x1d\x13\xc5\xad?b'
 b'n\xa4\xb6+\x7f\xcd\xe1P/\x99\xa4')

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

{'A1': 'tzhy',
 'A2': [{'B1': 308549479,
         'B2': {'C1': [2440772482,
                       3870138206,
                       3246930967,
                       3403773608,
                       302266169,
                       754546244,
                       1515242170,
                       3678831142],
                'C2': [1144749085, 331722047, 1651418294]},
         'B3': {'D1': 17630118237746454441, 'D2': 5539076072737364159},
         'B4': 1010740392,
         'B5': 4016150578},
        {'B1': 3227060809,
         'B2': {'C1': [1233902116,
                       3837069072,
                       3296850550,
                       2487198142,
                       607826747,
                       2112170549,
                       3810997325,
                       507561113],
                'C2': [729796065, 1345296804]},
         'B3': {'D1': 255439679342372291, 'D2': 1748036790347100740},
         'B4': 214350725,
         'B5': 2481497454}],
 'A3': 0.31818580627441406}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'UGL\xd0\x00\x00\x00\r\x19\x00\x00\x00\x8f\x89\xd1\x9fpD\xe4\x9b?\xbe{\\'
 b"\t>\xf1'\x1d\xdaBD\x93\xa3\x08\xacL\xb8_\x95\xd4\xe7\x81`\x19\xe8\xf9\xb6"
 b'7\xbd\xea\x81\x13/\xd7\xdf\xbfy9\xb6\xbf\x19.|V\xcc\x17\xaa\xf5Z\xb6:'
 b'\xda\xcbO\xfc\xc3\x90\xd4\x84U8\xa1\xf2>L#\xd6\xbfg\xee\xa7\xc0\xa1\xc7?'
 b'\xb0\xb4\x04\x03\xc1\xe7\xe0?\xe5e\xd7\x04\xc6\x0b\xf0\xbf\xea\x81!\x18'
 b'\xd7\x97(\xbf\xe3{x*Qw\xe6?\xdb\xfb\xcdD2\t\x10\xbf\xe8\xear\xd9o\x8bx_'
 b'\xc3-J\x83\xdd0o\x00\x02\x00\x00\x00T\xbf\x0b\xb9*\x00\x03\x00\x00\x00\\\x00'
 b'\x06\x00\x00\x00_')

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

{'A1': {'B1': [{'C1': -8515850115839911105,
                'C2': -0.24546827375888824,
                'C3': {'D1': 0.471001535654068, 'D2': [55874, 17555, 41736]},
                'C4': 2890709087,
                'C5': 10796508749563029753,
                'C6': 182},
               {'C1': 4016624282777933791,
                'C2': -0.9735368490219116,
                'C3': {'D1': -0.5983655452728271, 'D2': [22220, 6058, 62810]},
                'C4': 3057310411,
                'C5': 5763696649935541560,
                'C6': 161}],
        'B2': 242},
 'A2': 25,
 'A3': {'E1': 6900408852124872815,
        'E2': [0.19935545325279236, -0.9059852957725525],
        'E3': -0.5457941293716431,
        'E4': [192, 161, 199],
        'E5': [0.0652468213246773,
               0.6686816304430732,
               -0.8282628522108313,
               -0.6088219477203409,
               0.4372437635394286,
               -0.7786192175666278]}}

Пример 2

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

(b'UGL\xd0\x00\x00\x00\r\xe1\x00\x00\x00~#RS\x98?\xd6\x19\x07?L\xc9'
 b'\xce\xbfA\x85\x1d\xb5r\x16\xf5D\xd6\x05\xedR\x18S\xe5\xc0q\xc4\xf7\x96\x8d{'
 b'"\x7f\x0c=r\x96\x076\xbf{\xed&>\x07\x8d$\x0f\x9f \xc5\x12X\x9bs\x8c\xe6\x8cc'
 b'\x8f\xe8W\x7f\x84S\xa8\xbd?B%\xe2\xbe:7\xc5\x1f\xc5\xbf\xbf\xdc\xd6\x84\x00'
 b"\x04p\xbf\xd4Y6\xbc\xbb\xd0\x80?\xd2u\xf179\rH\xbf\xe7\xbc?\x16@&T.'"
 b'\x0e\xaa\xb6~!\x9f\x00\x02\x00\x00\x00T\xbeP\x044\x00\x02\x00\x00'
 b'\x00\\\x00\x04\x00\x00\x00^')

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

{'A1': {'B1': [{'C1': 2545188652788881671,
                'C2': 0.7999542951583862,
                'C3': {'D1': -0.755937397480011, 'D2': [46450, 5877, 17622]},
                'C4': 99439128,
                'C5': 6045449669683156621,
                'C6': 123},
               {'C1': 2485718977386776374,
                'C2': -0.984087347984314,
                'C3': {'D1': 0.1323743462562561, 'D2': [3999, 8389, 4696]},
                'C4': 2608041190,
                'C5': 10116087416067425363,
                'C6': 168}],
        'B2': 189},
 'A2': -31,
 'A3': {'E1': 3325642976205349279,
        'E2': [0.7583905458450317, -0.18185336887836456],
        'E3': -0.20314103364944458,
        'E4': [31, 197],
        'E5': [-0.12446346972139266,
               -0.3179451792814305,
               0.2884486235891086,
               -0.7417293009359107]}}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'tHNKA\x00\x04\x00\x00\x00)*\x00\x00\x00\x02\x00\x00\x00-\x01\x1cb\xb9'
 b'\xedN\x08\xe4\xbf\xe2r\x0e\r\xfc\x9e>\xdd\x00\x00\x00]kuclyk\xb26\xfb"\xe9'
 b'\\\x12Y}V\xf96\xd1\xa0?Q$\xdd\xf0\xf0c\xb0\x83\x8d\x0b\xa1\xa9p\xca'
 b'\xc9)\xdf\xa8\xde\x12\x01\x17g\xbf\x1fx\x15@\x88d\x8f\xbf\xeb\x1c)c\x87\x1c'
 b'\xde?\xe3A\x04\x9cK\xd7v?\xe3\xf8\xc6\\\xd2X\xc2\xbf\xdf\xd5\xd5\x85\xec\xb1'
 b' ?\xe3F\x93t\x0b\xec\xda?\xe6C\xa7\x12\x91Q\xf6\xbf\x94@\x9f\xe9L\xa8'
 b"\x80w\xe8m\x93\xcc\xa1E'\xb8\xac\xca\xb4\x04T[\xc1\x9d\x8b")

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

{'A1': 'kucl',
 'A2': 42,
 'A3': {'B1': [{'C1': [8749282650308667740, 1322225778111730080],
                'C2': 0.8169687390327454,
                'C3': 61680,
                'C4': 25520},
               {'C1': [-8967498494064407863, 3017315947099789159],
                'C2': -0.6229260563850403,
                'C3': 16520,
                'C4': 25743}],
        'B2': 18637497,
        'B3': -313653020,
        'B4': -0.5764227173976406,
        'B5': -35},
 'A4': {'D1': [-0.8471877044584308,
               0.6016867687855967,
               0.6241180241511517,
               -0.49742639616558115,
               0.6023652330908604,
               0.6957583773278759,
               -0.019777773489444872],
        'D2': [2011721107, 3433121063, 3098331828, 72637377],
        'D3': 40331}}

Пример 2

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

(b'tHNKA\x00\x03\x00\x00\x00)\xcf\x00\x00\x00\x02\x00\x00\x00,\xf72J\xf9A\x13kD'
 b'?\xb5l\x16\xeb\xa8\x85\x90\x0c\x00\x00\x00\\kdk:\x05\x80n\x0b/sr'
 b'\xc8\xd2\x9c\xc1\xac\xfd\xdcH?\x0eN!\xd1\x88\xc3\x8a\xf8U\x17\x1f'
 b'\x95\xc1\xbb-\xe0\xe3\xf7o\\\x1e\xaeK=\xa9v\x19y\x8aV1\xbf\xb8\xba\xec'
 b'Nx\xb6\xd0\xbf\xe8o\x9b\x9c\xfe`\xf6\xbf\xb8\xe1\xd29\x84\x110'
 b'\xbf\xef\x06\xd366Op\xbf\xe2\xf6EP\x9b\x14&\xbf\xe3\x89\xa4s\xc4\xe2\x86'
 b'\xbf\xe8\xe6\t*\x0f\xab\xf0\xbd\xb41%=*\x84\xb7\xeb2e\x83\xbf\x99h1\xa6M')

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

{'A1': 'kdk',
 'A2': -49,
 'A3': {'B1': [{'C1': [4180889039205790578, -3975943165369787320],
                'C2': 0.5558796525001526,
                'C3': 53640,
                'C4': -15478},
               {'C1': [-552509954859091155, -2241676131841429941],
                'C2': 0.0827447846531868,
                'C3': 31114,
                'C4': 22065}],
        'B2': 4147268345,
        'B3': 1091791684,
        'B4': 0.08368056538940594,
        'B5': 12},
 'A4': {'D1': [-0.09660221973237104,
               -0.7636240068705138,
               -0.09719575790592638,
               -0.9695831354933784,
               -0.592562348778874,
               -0.6105520497431633,
               -0.7780805417545462],
        'D2': [3182702885, 1026196663, 3945948547, 3214501937],
        'D3': 42573}}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'^KCA\xbf\x99\xfa\xbc\xa2\xac}\xc0\x00\x00\x009\xc5\x00\x00\x00\x97?^4'
 b"\xba'\x8e\x0c\x9b\xb174\xf7\xea\x83w\x84\x15\xd9z\x98OV?\n\xfc]\xf0"
 b'F_\x1e\x95\xaf0/\x95a\xb8\xcf\xea\x8dV\x9bV\xce\xb6\xa0\xe7\xa7x\xf6n'
 b"\xec\xafSJ\\\xce\x95\xca\xdfp\xe2\xcc\x18C\xa9c\x98[\xc5'W\xf1\n\x10AOS\xc6"
 b'\xfe\xdaIh\x0f\xd1\xa2\xf0T\x14\xc7\xa3+\x08\xd1\xbe\xb5\xc7\xde\x9a'
 b'E\x02\xb4\xd6\x00\x03\x00!Q\xc4\x81\x1dn\xe1\xe4G\x05:?\xc4\xb63Sk:`Ke'
 b'\xe1\x8bnT%T"n')

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

{'A1': -0.025370547703571722,
 'A2': {'B1': [{'C1': {'D1': 184, 'D2': -12310, 'D3': 2371263318},
                'C2': -12618},
               {'C1': {'D1': 160, 'D2': -6233, 'D3': 2029416172}, 'C2': -20653},
               {'C1': {'D1': 74, 'D2': 23758, 'D3': 2513100656}, 'C2': -7476},
               {'C1': {'D1': 24, 'D2': 17321, 'D3': 1670929349}, 'C2': 10071},
               {'C1': {'D1': 241, 'D2': 2576, 'D3': 1095717830}, 'C2': -294}],
        'B2': 1231556561,
        'B3': -6705767396929230072,
        'B4': [-11842, -19001, -8550],
        'B5': 1157805270,
        'B6': [-1548262437699356008, 5716826093409660998, 6854080262564713825],
        'B7': 1371832605,
        'B8': {'E1': 28385,
               'E2': -465107654,
               'E3': 0.16181031773745058,
               'E4': [75, 101, 225, 139, 110]}},
 'A3': 197,
 'A4': {'F1': 84, 'F2': 9556, 'F3': 8814},
 'A5': 0.8679920434951782,
 'A6': 2850229477004752119}

Пример 2

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

(b'^KCA\xbf\xd1\xe0\xb6\xea\xb4:\xc4\x00\x00\x009\x14\x00\x00\x00\x97\xbf%Q'
 b'\xa6\xad\xfc[\xd1\xba\xf70\x90`\xde\x1e[<\xdf\xb0\x9cu^6\xaa\xda\xea\xea'
 b'\x86Y"\x98\x04\xaf_\xc3!!`?\x9e\xe8\xd1\xd1\xaa\x07\xeb\xfd\xa3>\x1a}'
 b'\x1d\xc5\xd4\x176&\x96\xa7\x95\x97/\xd9$$\xf0\xc7\x93\xbe\x95\x00'
 b'\xb4\x83\xa3\xe7\xed\xf6\xae@%.\x19&C\x8b\xf2"\xd1\x0cf\xdfWE\xa7I'
 b'$\xf1\xf3\x03\xcb\xa9:\xd7\x00\x03\x00!\x9c3Il\xf4y\x9e\xe0\xb8\xbf\xbf\xe0'
 b'\xa8e\xcaO(l|\xb9\x03\xe6\xcfmT\xd9\x9d#')

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

{'A1': -0.27934048576655024,
 'A2': {'B1': [{'C1': {'D1': 33, 'D2': 24639, 'D3': 2666058193}, 'C2': -22009},
               {'C1': {'D1': 235, 'D2': -605, 'D3': 1041923357}, 'C2': -14892},
               {'C1': {'D1': 23, 'D2': 13862, 'D3': 2527565207}, 'C2': 12249},
               {'C1': {'D1': 36, 'D2': 9456, 'D3': 3348348565}, 'C2': 180},
               {'C1': {'D1': 131, 'D2': -23577, 'D3': 3992366656}, 'C2': 9518}],
        'B2': 421938059,
        'B3': -999006316127103163,
        'B4': [-22711, 9457, -3325],
        'B5': 3416865495,
        'B6': [6980049849682997404, 8457257257693538950, 6422863164473328417],
        'B7': 2620606828,
        'B8': {'E1': 62585,
               'E2': -1629439809,
               'E3': -0.5205563498832482,
               'E4': [124, 185, 3, 230, 207]}},
 'A3': 20,
 'A4': {'F1': 109, 'F2': 21721, 'F3': 40227},
 'A5': -0.6457771062850952,
 'A6': 12536996419035672720}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'PWJV\x00\x02\x00\x1a\xa6\x02CR\xbf6r]:?\x1c[\x000\x1b[\xb6\xd2}\xc5'
 b'|\x96\x8b~?_\x1d\xe3\xbf\x16\xb6P?&\x03p>\xb9R-\x9a;@\xcd#{|\x07br\x8f\xfc'
 b'}\xeb\xd2\x05\xe1\x02\xdaB9\r\xcc\x80qr}|\xfd8M\x86\x0fJ\xb1@\xca\x83U\xad'
 b'mh\xf3\xe3r\x193\x03?\xe7\xff\x1b\xa7\x7f#\xa2\x00\x00\x00\x04\x00 ')

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

{'A1': [{'B1': 32197, 'B2': 124}, {'B1': -26997, 'B2': 126}],
 'A2': 2785166162,
 'A3': -0.7126825451850891,
 'A4': 14911,
 'A5': 7259,
 'A6': {'C1': [{'D1': 11113547755274599431,
                'D2': [98, 114, -113, -4, 125],
                'D3': -21},
               {'D1': 15133749525216377101,
                'D2': [-52, -128, 113, 114, 125],
                'D3': 124},
               {'D1': 18246419128469074240,
                'D2': [-54, -125, 85, -83, 109],
                'D3': 104}],
        'C2': {'E1': -3101, 'E2': 29209, 'E3': 13059},
        'C3': 0.7498911162775708,
        'C4': [0.8715497851371765,
               -0.588719367980957,
               0.6484899520874023,
               0.36195507645606995]},
 'A7': 7003,
 'A8': -18734}

Пример 2

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

(b'PWJV\x00\x05\x00\x1a\x93\xd8\x13\xf4?0\xcb\x1e\xed\xb7G\xce\x001WP8)\xf6T'
 b'a\xf0\xab\x99\xc3\xab\xa3LJ\\{B\xac\xbfZ\x996?g\xa4\rO\x88\xbb\x1aSg]'
 b'\x8c\xbc\x8c\x13\xfaf\x97\xd0v\x94x}\x9b\xcd]\xe6\xbe\xdfZ~\xd8Cp\xcf'
 b'\xa7\xc1\xc9f2\xa4\x07\xe4\xd8\xc9\n\xc6\x81~\xd9\x90\xb3?\xa8AB<\x9dD'
 b' \x00\x00\x00\x02\x00)')

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

{'A1': [{'B1': -2476, 'B2': 97},
        {'B1': -3925, 'B2': 153},
        {'B1': -15445, 'B2': 163},
        {'B1': 19530, 'B2': 92},
        {'B1': 31554, 'B2': 172}],
 'A2': 2480411636,
 'A3': 0.6905993223190308,
 'A4': -4681,
 'A5': 18382,
 'A6': {'C1': [{'D1': 5731036247571783052,
                'D2': [-68, -116, 19, -6, 102],
                'D3': -105},
               {'D1': 15021356852365217117,
                'D2': [-26, -66, -33, 90, 126],
                'D3': -40},
               {'D1': 4859612317350454834,
                'D2': [-92, 7, -28, -40, -55],
                'D3': 10}],
        'C2': {'E1': -14719, 'E2': 32473, 'E3': -28493},
        'C3': 0.047372884654244496,
        'C4': [-0.8539003133773804, 0.9048469662666321]},
 'A7': 22352,
 'A8': 14377}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CTUGos\x0f\x00#\x00\x00\x00\x05\x00??\x02\xdb\x1a\x00D\x00S\x00b\x00q\x00'
 b'\x80\x9d8\xe5\xd5x\x1a>\xf4\xd5\xea\xf7\x15\xbc\xdf\xbf<\xf0\t?'
 b'\xc3\x8d\x87\xf6\x19I0\xbf\xee\\\xe9\xb5,\xbf\xa6jjscu\x80\xcf~\xf6'
 b'\xb0a\x97\xd7MM8`\xcbS\xdc\xba\x84\x02\x02\x97L\xb8\xd6\xad\x196p\x82'
 b'\xc80\rW\xd5\x81\x04O\xd9\xc3(\xdd\xe8\xdb\xe5\xfa\xf5\xd7\xb5!'
 b'\x96\xd4\x1a\xc7\x1c\xd1\xd8\xa2k\xc4\xd6\x18\xfd\x85X\x02\xf6*z}&+(\xc6'
 b'\xec\xc5"')

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

{'A1': 111,
 'A2': 29455,
 'A3': {'B1': {'C1': 0.47819453477859497, 'C2': -149570337},
        'B2': -0.738037645816803,
        'B3': 0.1527566863683858,
        'B4': -0.9488419092722225},
 'A4': 'jjscu',
 'A5': 0.5111557245254517,
 'A6': [{'D1': -9164967118689429545, 'D2': [77, 77, 56, 96, 203, 83, 220]},
        {'D1': -5006874675577571114, 'D2': [173, 25, 54, 112, 130, 200, 48]},
        {'D1': 961471795566729667, 'D2': [40, 221, 232, 219, 229, 250, 245]},
        {'D1': -2903377453083080932, 'D2': [209, 216, 162, 107, 196, 214, 24]},
        {'D1': -178639840468108675, 'D2': [38, 43, 40, 198, 236, 197, 34]}],
 'A7': [-25288, -6699, 30746]}

Пример 2

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

(b'CTUG\xfb\xd2\xd9\x00#\x00\x00\x00\x03\x00?>\xe2\xd0a\x00B\x00Q\x00`\x00o\x00'
 b'~\x15p\xfd\xda\xe4s>SE1\xdbSz\xbd\xbe\x12h\xd2\xbf\xa0\x1d>\x01 \x10\x80\xbf'
 b'\xe3\x00\x90\xaba\xbb\xd6ejg\x9f\xe3\x8dM\n\xb9\r\x8b\xa5E\x10H\xf7\xb7'
 b'e\xb2Z\xd2<5\xb8\x00\xbd2S\xc4\x94\xa9e\x12\xfc\xae\x87N2C1\xa8\xea\xf2\xb3N'
 b'J\xba\xd2?\xf8\xeb\xd4\xd2\xb2\xf4Y\xe5\xa4\n\x0e\x15\xba\x12@\xa6_kx\xd4'
 b'M\x85)n~q\x1d\xcb\xc7')

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

{'A1': -5,
 'A2': 53977,
 'A3': {'B1': {'C1': 0.20631863176822662, 'C2': -615286083},
        'B2': -0.1429779827594757,
        'B3': -0.031473100316390834,
        'B4': -0.5938189837742083},
 'A4': 'ejg',
 'A5': 0.4429960548877716,
 'A6': [{'D1': -6925536439933792885, 'D2': [165, 69, 16, 72, 247, 183, 101]},
        {'D1': -5594928431013297987, 'D2': [50, 83, 196, 148, 169, 101, 18]},
        {'D1': -239104960283594328, 'D2': [234, 242, 179, 78, 74, 186, 210]},
        {'D1': 4609693517914240089, 'D2': [229, 164, 10, 14, 21, 186, 18]},
        {'D1': 4658515779754675589, 'D2': [41, 110, 126, 113, 29, 203, 199]}],
 'A7': [5488, -550, -7053]}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BIBS\xe6\xfc\x19\xf7\xe6B\x10+<\xa3\x80\xd8_\x8b\xe3)8g\x00\x00\x00\\w\xda'
 b'O\xb1\x1a\xe3_/CW\xd3\x10!\x9f\xe5u\x00\x00\x00[@\\\xdd\xbf\x99\x04E\nV?'
 b'\xaf5\xa9\xec\xc6\x85\x00\x00\x00\xc7\xa1"\x02ls\xf2Ii\x8a\x99\xd9\xc5\x15t'
 b'?\x02\x00\x8f\x00\x00\x00\x1c&q\xff\x86\xd73\x8a\x9f\xed\xfe\xea\xa2'
 b'\xf2\xc1\x8a3\x08\x02\x00\x00\x00c\x00\x00\x00\x00~q\x82v\xce\x02'
 b'\x00\x00\x00q\x00\x00\x00\xf3p\x89$_\x0e\xf0\x83\x03\x00\x00\x00\x7f'
 b'\x00\x00\x00\xfc\x0b|\xe1')

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

{'A1': {'B1': [{'C1': 6652,
                'C2': [59127, 4162, 15403, 32931, 24536, 58251, 14377],
                'C3': {'D1': 2099, 'D2': [-3422, -30015]}},
               {'C1': 30556,
                'C2': [20442, 6833, 24547, 17199, 54103, 8464, 58783],
                'C3': {'D1': -12682, 'D2': [32256, -32143]}},
               {'C1': 16475,
                'C2': [56668, 39359, 17668, 22026, 44863, 43317, 50924],
                'C3': {'D1': -31760, 'D2': [28915, 9353, 3679]}}],
        'B2': [-24121, 546, 29548, 18930, -30103],
        'B3': -9831,
        'B4': 0.9534571766853333,
        'B5': [3068, 57724]},
 'A2': 4285605404,
 'A3': 16933232918433879942}

Пример 2

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

(b'BIBS\xe6\x94l\xdd)\x9cF\x18\xe0\xdaRNu\x03\x12\xcf\x15k\x00\x00'
 b'\x00\x92\xb8\xa8\xfeE\xfa\xb4\xe5\xd0V\r\x18\x16u\x82Ry\x00\x00\x00xF\xa0'
 b'\xc7T\xc3y\xe1k\x1f\xcbJ.E\xf5n\x8b\x00\x00\x00\xba\x01\xf2b\xe0}\x06'
 b'w\xc3\xd7\x0b\x1f\xb2\x99-?\x03\x00\x95\x00\x00\x00k$\xa0~\xe7c\xc5\xee\x1c'
 b'\x82\x13V]$\x1dq`x\x92\x9f&\x85\x04\x00\x00\x00c\x00\x00\x00%<\xca@b\x0f\x02'
 b'\x00\x00\x00u\x00\x00\x00\x0cd\xa8wi\x0c\xa9\xf7x\xae\x04\x00\x00'
 b'\x00\x83\x00\x00\x00M\xe0\x12\x87e\xd6')

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

{'A1': {'B1': [{'C1': 27796,
                'C2': [10717, 18076, 57368, 21210, 30030, 4611, 5583],
                'C3': {'D1': -31450, 'D2': [9309, 28957, 30816, -24686]}},
               {'C1': -18286,
                'C2': [65192, 64069, 58804, 22224, 6157, 29974, 21122],
                'C3': {'D1': 3938, 'D2': [15397, 16586]}},
               {'C1': 18040,
                'C2': [51104, 50004, 57721, 8043, 19147, 17710, 28405],
                'C3': {'D1': -20872, 'D2': [25612, 30632, 3177, -2135]}}],
        'B2': [442, 25330, 32224, 30470, -10301],
        'B3': 7947,
        'B4': 0.6781264543533325,
        'B5': [57421, 34578, 54885]},
 'A2': 2124424299,
 'A3': 6202444172595913703}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XLZ\x00\x02\x00>\xa2gq\xfdm\x00D\xd8\xb0\x00_\xd6R\x00z\xfd\x82B\xa5\xc92'
 b'3\xb1\xc7\x8d\r\x92\xf3\x03\n\xb0T8\xfcO{\xb2\xdb_\xf9\x9f\x99\xe0@\x96'
 b'?\xbf\x9b\xf5\tn\x05\x90\x8a\x0cbrt:\x11\xd3/\xb4\xf2\xbd\xdcJ\xd5\x04'
 b'\x00b\xa8<:}\x17\x00\x00\x00\x02\x00@\xd4EXt\x82<\xa2\x03\x1b\xbe\x9d'
 b'G\x92\xc4\t\xbc\x1a\x99\x0cS\xbc\x00\x00\x00\x02\x00[ogc\x1c\xea\xc3O\xb0'
 b'\x15?%\xfbb\xdf\x07\t|]\xb0\xacv\x00\x00\x00\x02\x00v\xf3j')

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

{'A1': 'br',
 'A2': -94,
 'A3': 26481,
 'A4': [{'B1': -659,
         'B2': {'C1': 47,
                'C2': 46322,
                'C3': -0.10756460577249527,
                'C4': 288338850856205591,
                'C5': [29754, 4563],
                'C6': 54341}},
        {'B1': -10064,
         'B2': {'C1': 162,
                'C2': 795,
                'C3': -0.30718666315078735,
                'C4': -4320715545062386756,
                'C5': [22644, -32196],
                'C6': 28519}},
        {'B1': -10670,
         'B2': {'C1': 79,
                'C2': 45077,
                'C3': 0.6483670473098755,
                'C4': -2375919848662193034,
                'C5': [25372, -5437],
                'C6': 62314}}],
 'A5': [64898, 17061, 51506, 13233, 51085, 3474],
 'A6': {'D1': -935892545119388593, 'D2': 31666, 'D3': 15807627680970457238},
 'A7': 0.12347346763819744,
 'A8': -30196}

Пример 2

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

(b'XLZ\x00\x02\x00>\x890db\xfa\x00D\x849\x00_\x17\x00\x00z\xfbU6\x1f\x86\xcd'
 b"\\'gm\xc1'\x80 \x87\x01)\xccf\xe3\xbd\xacd*\xe9B\xf8\xeamt?\xee\xd8{"
 b'\xa8\x0b\xf0b\xc0\nxs\xa8\r\xf8\x9f\xe3\x06!\xbflw\xb9\x07\x8b%-\xa4'
 b'\xa3\x1f\xb9\x00\x00\x00\x02\x00@\x05Oe\xac2\xc8\xd8q\xf8>\xb8L\xcdG\xdc'
 b'\xc4\xa5\xb6OU\n\x00\x00\x00\x02\x00[\xcb`r\xc0\xca$\xb8:\xb9<\t\xaf'
 b'6{\xba\xc6h\xd4\x97p-\x00\x00\x00\x02\x00v\xa7\x88')

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

{'A1': 'xs',
 'A2': -119,
 'A3': 12388,
 'A4': [{'B1': 25338,
         'B2': {'C1': 227,
                'C2': 1569,
                'C3': -0.923701822757721,
                'C4': 543569057994186681,
                'C5': [-22515, -1889],
                'C6': 1359}},
        {'B1': -31687,
         'B2': {'C1': 216,
                'C2': 29176,
                'C3': 0.3599609434604645,
                'C4': 5178229887576528138,
                'C5': [26028, 13000],
                'C6': 52064}},
        {'B1': 5888,
         'B2': {'C1': 184,
                'C2': 15033,
                'C3': 0.008403589949011803,
                'C4': 8915656565878911021,
                'C5': [29376, -13788],
                'C6': 42888}}],
 'A5': [64341, 13855, 34509, 23591, 26477, 49447],
 'A6': {'D1': -9214216398534056221, 'D2': 48556, 'D3': 7217837826667867508},
 'A7': 0.9639261514817117,
 'A8': -16374}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'WXWFY)\x00B{g\x00\x00\x00\xdck\x83\xe5\x03\x89\x7f\x9b=\xac8?\xc8\x99K'
 b'\xbc\xf7\xd9$\x0f\xe3m7\x05\xba\x06\xa0U]H?\xbe\xc4!\xfd\xe2\xf7\ta'
 b'T\x15\xde[*jj\x9a\xf2\xff\xb2a\xe6\xb3\xf1\xd9?\xf7\x9dPj\xe5\xb2\x08'
 b'\xe2\xe2\x8b\xb7U\xde?&D\xbe\xad\xdf\x02\xea?\xcbk\x15\xf5\x1f?\xd1@\x1c'
 b')q\xb0\x8eh\xe8\x89\x02\x00\x00\x00K\x00\x00\x00\x03\x00\x00\x00['
 b'\x00\x00\x00S\x1a\xf0B\xfc\x03')

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

{'A1': {'B1': -0.18679948151111603,
        'B2': [-60, 33, -3, -30],
        'B3': 3052277355664968183,
        'B4': 27242,
        'B5': [{'C1': -3430, 'C2': 255, 'C3': -78},
               {'C1': -6559, 'C2': 179, 'C3': -15}],
        'B6': 12890826402898067417},
 'A2': 31554,
 'A3': {'D1': {'E1': -1981257586,
               'E2': [0.47398174916045877, 0.812850798933259]},
        'D2': [4111821771, 1087455007, 2960206108],
        'D3': 6739,
        'D4': 66863856},
 'A4': -7241919025959965732,
 'A5': 0.7213781476020813,
 'A6': 1091236667769723336,
 'A7': 6169938885518781923}

Пример 2

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

(b'WXWFY)\x00\xcc\x10{\x00\x00\x00\xb4\xd3i\x1b\x15\xfe\\4\x90h}\xbf\x13|\x02'
 b'P\xd8\xa5\xc8\x9c\x0f\xa1\xab1X\xa7\x96\x97^pg?Y\xb7\x9e\x8f\x07\r\x19'
 b'\xc3a\xe7\th\x8e\x83\x14\x8cN\x913\xb3\rQc\xb7\x07(:\xa3\n\xd7\x00'
 b'\xfd\t\x9f\xbc\xc5\xb6?\x12\xde\xbd\x8eg\x98\xec?Dk\xdf(\x82\x84\xd1?h'
 b'KP\x89\xfdc\xe2\xbf\xe0G\x1b\xdf^M\xde?c\x10pfKQ\xee\x07\xc7\x00\x90\x1f\x05'
 b'\x00\x00\x00K\x00\x00\x00\x02\x00\x00\x00s\x00\x00\x00f/\xc3\x83:9')

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

{'A1': {'B1': 0.9040583372116089,
        'B2': [89, -73, -98, -113],
        'B3': 7496777461805944071,
        'B4': 33678,
        'B5': [{'C1': -29676, 'C2': 78, 'C3': -111},
               {'C1': -19661, 'C2': 13, 'C3': 81}],
        'B6': 15495376938096637795},
 'A2': 4300,
 'A3': {'D1': {'E1': 529531079,
               'E2': [0.0889547241476869,
                      0.8936040676043737,
                      0.2737126731059798,
                      -0.5747058565051306,
                      0.4734723261618665]},
        'D2': [1718620259, 133058891],
        'D3': 12134,
        'D4': 960136131},
 'A4': 3773169954437321652,
 'A5': -0.9898767471313477,
 'A6': -7149282059976803309,
 'A7': -7523642130243542769}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"NLWK\xe4-4\x00\x00\x00\x1e@zx3\xc6'\x10kjudhfo@j.MT\x02\x00\x91\x00\xa3\xd4"
 b'\xb2\xf0\x9a6#,O\xeb\xa7\n\xd3\xbc\x9c\x14au\xed\xd5\xdb\xfd\xd5\xfa\xab\xe5'
 b'e+\x02\x1e\x06\xbf\xa2\x12\x00\x87\xa6jm\xf7t4\x90\xddL\xbf\xb9\xe2\xf8u'
 b'\x80\xa2t\xa9Gd\xafgS\xbf\x8d\xd4&\xfc\x95T\xd6\x11\x85\x0e@\x1d\xd0\xbe]>4K'
 b"i'\xf3\x95i\xdc\x8837=0\x90||\xec\x13@|\x9d\xa9<\xc7\x96\xbd3\xbda]"
 b'\xff\xce\xbfA\x9cD\xfa9%')

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

{'A1': 11748,
 'A2': {'B1': [{'C1': 4259042797,
                'C2': 3853253333,
                'C3': 11109,
                'C4': -0.5238953828811646},
               {'C1': 2264928930,
                'C2': 4151143078,
                'C3': 13428,
                'C4': -0.8002557754516602},
               {'C1': 1979245241,
                'C2': 2842993280,
                'C3': 25671,
                'C4': -0.8258008360862732},
               {'C1': 4230403213,
                'C2': 299259029,
                'C3': 3717,
                'C4': -0.40647315979003906},
               {'C1': 1261715037,
                'C2': 2515740521,
                'C3': 56425,
                'C4': 0.04472687840461731},
               {'C1': 2088538160,
                'C2': 2084574188,
                'C3': 43421,
                'C4': -0.0736221969127655}],
        'B2': 51,
        'B3': -7187252634538122819},
 'A3': {'D1': 1164116953065472030,
        'D2': 'kjudh',
        'D3': [102, 111, 64, 106, 46, 77, 84],
        'D4': [-1468, 9529],
        'D5': {'E1': 3180445800944817315, 'E2': [79, -21, -89, 10]},
        'D6': 345816275,
        'D7': 30049}}

Пример 2

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

(b'NLWKG\x134\x00\x00\x00\x1ei\x93\x7f3\xdaDXonmlp\x96Hy\x16\xa1k\x94\x02\x00'
 b'\x91\x00{%v\xeb.\x82\xd8\xc1\x06nI\xd0\x93\xa3*g\xb8\x8c\x19\xe11\x83'
 b'\xb3\xd8i\xfc#C\xd0e\x8d\xbe8\x11\xc3q(\x9f|\xbe\x01&\x04=??2c\xf0\x0b'
 b':e\x01\x19\xa2\xdbZXT?\\\x9f\xe6\xe6\xf2So \x16Wr\xa3z?$F\xef\x90If\xb7\xfc'
 b'dD\xbf\x92\x0f\xbe\xa4\xe6k\xb7\x86\xc7:q\xc4\x0f\xc2\xa8\x81>\x18i\xa8\xc9'
 b'Gb\xb8\xf5B\xe9H$\x1a')

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

{'A1': 4935,
 'A2': {'B1': [{'C1': 2201084185,
                'C2': 4234795187,
                'C3': 17187,
                'C4': -0.2761673927307129},
               {'C1': 1908609336,
                'C2': 3195838248,
                'C3': 9729,
                'C4': 0.7470247745513916},
               {'C1': 200303410,
                'C2': 419521850,
                'C3': 56226,
                'C4': 0.8294731378555298},
               {'C1': 3873873756,
                'C2': 544166898,
                'C3': 22294,
                'C4': 0.9790564775466919},
               {'C1': 2431600164,
                'C2': 4239877705,
                'C3': 17508,
                'C4': -0.14020822942256927},
               {'C1': 3077301924,
                'C2': 1899677574,
                'C3': 4036,
                'C4': 0.2532406449317932}],
        'B2': 24,
        'B3': 4824965308048058473},
 'A3': {'D1': 6360448488472537374,
        'D2': 'onmlp',
        'D3': [150, 72, 121, 22, 161, 107, 148],
        'D4': [18665, 6692],
        'D5': {'E1': 13968057382320088443, 'E2': [6, 110, 73, -48]},
        'D6': 1730847635,
        'D7': -29512}}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'IHZ\xcb\xcfUr\x00\x02\x00a\x00\x00\x00\x02\x00e\x8a\xc2\xb6\x8a\xcf\xdb?'
 b'\xce\xe8\xd5\x93\xa8\xc9\xf8\r\xf0\x7f\x00\x03\x00m\x00\x00\x00\x03\x00s'
 b'\xb2;\x9e\x93\x04\xab?\xc4\x9e\x0c\x1d\x96\xfe@\xba\xf7\x0c\x00\x05\x00'
 b'\x7f\x00\x00\x00\x04\x00\x89A\x82\xde\xb4\xe2\xca?\xea\x05\xa6L=N'
 b'\xd8\x13\x17?\x00\x00\x00\x9b\x00\xa5dM\xf8\r\x01\xda\x90q\xa4\xf0L\xcf\x145'
 b'\xdd\xc5\xaf*\x892R\xac\x07\xbfVH/P\xe2\x88D\x98tjy\xbbtgLg\xc0\xf1'
 b'\xbc<\xa2\xc3\x8eS\x84\xff3\xe5\xfa\xf2\xac\x9a5\xfa\xfdaj>p+R\x00'
 b'\x02\x00\x00\x00\x99\xbf\xdb*\x8dd\xbc\xe0\xac?\xe2\x08\xfc\xa3t\xf1n')

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

{'A1': [{'B1': 207,
         'B2': {'C1': 21874, 'C2': [3329, 55952]},
         'B3': [1906634828, -820759075],
         'B4': 2328016522,
         'B5': -12325,
         'B6': 0.24148053846290884},
        {'B1': 13,
         'B2': {'C1': -3969, 'C2': [50607, 10889, 12882]},
         'B3': [-1408778410, 1211060450, -2008770444],
         'B4': 2990251667,
         'B5': 1195,
         'B6': 0.1610732216340569},
        {'B1': 186,
         'B2': {'C1': -2292, 'C2': [27257, 47988, 26444, 26560, 61884]},
         'B3': [1017299854, 1401225011, -436538708, -1707738371],
         'B4': 1099095732,
         'B5': -7478,
         'B6': 0.8131896485378673}],
 'A2': 19,
 'A3': 5951,
 'A4': {'D1': 0.23454025387763977, 'D2': [97, 106]},
 'A5': {'E1': -0.4244721874015436, 'E2': 0.5635970299258994},
 'A6': 100,
 'A7': 19960}

Пример 2

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

(b'IHZ\xcb\xb8S\x10\x00\x04\x00a\x00\x00\x00\x04\x00ij\x04\x7f\xeb\xbbn\xbf'
 b'\xc9\xb0\x14\x06\x973\x88\x06`M\x00\x04\x00y\x00\x00\x00\x02\x00\x81'
 b',\xbbx\x13\xa3\xc1?\xc1&we\x9f\xbc`\xc2\x1cO\x00\x02\x00\x89\x00\x00\x00'
 b'\x04\x00\x8d\xea09\xee\x8f\xa1\xbf\xeb\x08ZS\\,\x0c\x8e\xd9\x9c'
 b"\x00\x00\x00\xa1\x00\xab\xa1\t\x1b\x9c\x81\xa9z\x7f'\x96;\xc4\xf5=\xc5x\xa3V"
 b'b#\t\xfe\xbe\xaf\x17\xd7\xd7\x04\xb2\x12\xbfE\x86\x99Ty\xb2p\xf4\xce\xf6&'
 b'a\x04\xfa\xaf\xc6\xa7\xd5\x97\xef\xc4K\x8aS\x15\xf3\x99,#v\x80G\xc7\xe4;'
 b'I?\x1e\x80\x0b\x00\x04\x00\x00\x00\x9d?\xe9-M\x9a\xed\xdc\xb8?\xe6\x90H,'
 b'\x05N\x84')

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

{'A1': [{'B1': 184,
         'B2': {'C1': 21264, 'C2': [40065, 43386, 32551, 38459]},
         'B3': [-990560827, 2023970402, 587857598, -1357391913],
         'B4': 1778679787,
         'B5': -17554,
         'B6': -0.2006859810047923},
        {'B1': 6,
         'B2': {'C1': 24653, 'C2': [1202, 4799, 17798, 39252]},
         'B3': [2041737460, -822729119],
         'B4': 750483475,
         'B5': -23615,
         'B6': 0.13398640119655436},
        {'B1': 194,
         'B2': {'C1': 7247, 'C2': [1274, 44998]},
         'B3': [-1479174161, -1001682349, 368285996, 594968647],
         'B4': 3929029102,
         'B5': -28767,
         'B6': -0.8447696331144257}],
 'A2': -114,
 'A3': 55708,
 'A4': {'D1': 0.6191412806510925, 'D2': [199, 228, 59, 73]},
 'A5': {'E1': 0.7867801691017098, 'E2': 0.7051125392703885},
 'A6': -95,
 'A7': 2331}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'QGWL\xdd\x02\x00\x00\x00\x9f\x00\xec e\x85\xc5\x9e\x97Xlt\x9f\x04g'
 b'\x80U\x16\xdc\\D\xca\x10A\x1d\xa5L\xe6\xa7-i^\xbf\xea\xe9`\xc0\x1e\x80'
 b'\x81\\\x1f\xc81\xf2\x0e\xd4?\x81\x0c\x02\x00\x00\x00\x13\x00\x00\x00\x15'
 b'\x00\x00\x00\xba%\xfc5\xb1\x0bI\xd9\xe5\x94j\xd0}\x0cWb\x8cizf\x17'
 b'/\xad\xd6\xf4\xad\xa6|\x9b\xdf\x7f\xc2s$P\xb5\xa0\xc4(\xaa\xdc@~l\xeeJ\x89] '
 b'I\x9f\x02\x8fe\xcd?\xc1M\x02\x00\x00\x00Y\x00\x00\x00[\x00\x00\x00W\x03\x9f'
 b'p\x99\xdezW\x84\xbb\xc4L\xe7`\x8d\xc6\x98\x191\x00w\x00')

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

{'A1': [{'B1': {'C1': 0.31341223584649014, 'C2': 3201},
         'B2': 'lt',
         'B3': {'D1': 1183,
                'D2': -32665,
                'D3': 1557927509,
                'D4': 51780,
                'D5': [16, 65, 29, -91, 76, -26, -89, 45],
                'D6': 2215877574448340585,
                'D7': -32384},
         'B4': -2789685638436477510,
         'B5': 229,
         'B6': 148,
         'B7': 7605561996733173866},
        {'B1': {'C1': 0.22966182354009224, 'C2': 19905},
         'B2': 'zf',
         'B3': {'D1': 12055,
                'D2': -10579,
                'D3': 2091298292,
                'D4': 57243,
                'D5': [127, -62, 115, 36, 80, -75, -96, -60],
                'D6': 5399372292773685800,
                'D7': 23945},
         'B4': 6303595379059262295,
         'B5': 132,
         'B6': 187,
         'B7': 1844442357926677700}],
 'A2': [8428, -31387, -24891, 22679]}

Пример 2

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

(b'QGWL\xdd\x02\x00\x00\x00\x9f\x007?\xf3R\xcboZdvx\xe1\xff\x16<2do(\x9a\x83J'
 b'\x02\x85\xef\x0f5d,\xf4\xc6\x8a>\xf4\xa5F\xe6$\xd7,\x1a\xdd\x8a\x0f\x95\xe6'
 b'?nQ\x02\x00\x00\x00\x13\x00\x00\x00\x15\x00\x00\x00/3Y\xb1\xf2BI\xda,'
 b'\xaa9\xad\xd1%\x8cN\xea0lf\x12\xd1\xb4\xd7Y\x19\xe8\xc3\xf3\xacf&\x01'
 b'\xf1*\xd4\xa4\x0c\xcfQG8\xe4\xdcX8\xcf}\x80\x01\xb4>>\xbf\xb2?|'
 b'\x89\x02\x00\x00\x00Y\x00\x00\x00[\x00\x00\x00\xb1\xf7\xd5\xb6&\x0f\x7f'
 b'X\xd5\x98w~\xc9>\x06tz\x8c1\x00w\x00')

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

{'A1': [{'B1': {'C1': 0.7056958877736341, 'C2': 20846},
         'B2': 'vx',
         'B3': {'D1': -31,
                'D2': 15382,
                'D3': 678388786,
                'D4': 33690,
                'D5': [74, 2, -123, -17, 15, 53, 100, 44],
                'D6': -1853611728176494860,
                'D7': -10460},
         'B4': -2717567290016451793,
         'B5': 44,
         'B6': 170,
         'B7': 3524716022207720761},
        {'B1': {'C1': 0.07323063879812786, 'C2': 35196},
         'B2': 'lf',
         'B3': {'D1': -12014,
                'D2': -10316,
                'D3': -1008199335,
                'D4': 44275,
                'D5': [102, 38, 1, -15, 42, -44, -92, 12],
                'D6': 4060237936829354447,
                'D7': 32207},
         'B4': 6376832256330561457,
         'B5': 213,
         'B6': 152,
         'B7': -8324213391068922249}],
 'A2': [16183, 21235, 28619, 25690]}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x0bWAS[\x00\xe8\x8a\x00\xacb\xef\xcd%\xc2\x19\xcc5\x19\x17\xbf\xcb\xdf"'
 b'\xf8\x06\xf1p^\x1b\x02\x00\x0c\x00\x00\x00B\xf0HK\xff\x1cq\rN\xfd\x9e`'
 b'\xe3\xdfS2g\xa4b\xa4\xc6\xce\x9d\x02\x00)\x00\x00\x00\xe7\xa9\xf1'
 b'\x11$\x88\xfd\x86\x1b\xf0\xa1\x05\x80:\xab\xf6G\xd6\xf4\xb3\x02\x00C'
 b'\x00\x00\x00\xb3?\x8c"\xfa3\xe2\x02\x00\n\x00\x00\x00\x1c\x00\x00\x00'
 b'_\x91\x05\x00$\x00\x00\x009\x00\x00\x00LR\x02\x00A\x00\x00\x00S\x00\x00\x00'
 b'\xeb\x84\x10\xbe\x92C\x02\x00\x00\x00\x88\x00\x00\x00v\xc4\x97>6\xed'
 b'\xd4\xeaO\xe4')

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

{'A1': {'B1': 579616691,
        'B2': -6,
        'B3': [{'C1': 57907,
                'C2': [98, -17],
                'C3': {'D1': 7006,
                       'D2': [1664420688011863501, 8138293664441945023]}},
               {'C1': 37215,
                'C2': [66, -16, 72, 75, -1],
                'C3': {'D1': 40398,
                       'D2': [16384270255147282716, 14313673973935789023]}},
               {'C1': 21068,
                'C2': [-25, -87],
                'C3': {'D1': 46068,
                       'D2': [17301570816942805489, 15440581062744343969]}}],
        'B4': -0.14113204181194305},
 'A2': 232,
 'A3': {'E1': [-110, 67],
        'E2': 0.29642075300216675,
        'E3': -355144394,
        'E4': 58447},
 'A4': 172}

Пример 2

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

(b'\x0bWASe\x003\x96\x00\x962\x82~/l\x96\x01"H^\xfayoV\xb9\x0e8\xa6'
 b'\x94\x02$\x02\x00\r\x00\x00\x00\xcdUG&c\xab\xd1{"\xcf%^\x89\x89\xe8'
 b"3\x8a\x99\xb0\xb8\x02\x00'\x00\x00\x00w\x9fW\xcb\x1f\xb4 /\x1c\xfctj "
 b'\x12\xcbRM\x84[\xcc@~\xc16\x99\xb31\x1e6\x9c\xb9k\x03\x00E\x00\x00'
 b'\x00#\x12\xdf\xc5\xe5s\xfd\x03\x00\n\x00\x00\x00\x1d\x00\x00\x00\xa7\xd1'
 b'\x02\x00%\x00\x00\x007\x00\x00\x00\x7f\x89\x06\x00?\x00\x00\x00]\x00'
 b'\x00\x00w\x86\x19>\x00\xce\x0e\xeb\x04\x00\x00\x00\x92\x00\x00\x00\xba\xeb'
 b'\xd3>\x9e\xa5\xeb\x9a\x0c\xf7')

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

{'A1': {'B1': 3319730723,
        'B2': -27,
        'B3': [{'C1': 64883,
                'C2': [50, -126, 126],
                'C3': {'D1': 9218,
                       'D2': [18040936468185508911, 10711310399637450617]}},
               {'C1': 53671,
                'C2': [-51, 85],
                'C3': {'D1': 47280,
                       'D2': [14925628255513028167, 11063712508421955109]}},
               {'C1': 35199,
                'C2': [119, -97, 87, -53, 31, -76],
                'C3': {'D1': 27577,
                       'D2': [1306160942615899936,
                              9097495940722152139,
                              11256217517474526913]}}],
        'B4': 0.14992700517177582},
 'A2': 51,
 'A3': {'E1': [0, -50, 14, -21],
        'E2': 0.41390782594680786,
        'E3': -1695832674,
        'E4': 63244},
 'A4': 150}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

Поле Описание
1 double
2 uint64
3 uint32
4 int8
5 Структура C

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x9fOYGY?\xd9\xd4\xb5\x147n\xd0\xaf95\xb6\x8a\x083\x1e\xe7E*\xd1\x13\x00\x02'
 b'\x00\x00\x00g\x10T\x81\xfd\x88\x93\xfe\xbb\x9b\xfae\xe1\xa9\x08\xd9\xfd'
 b'\xbf\xe5\xe9s\x05\nh\xb2\xd4f0<HnV\xa9\xc3\x9f\xec\xaa\xc4\x00\x02\x00'
 b'\x00\x00i\xed\x87\xee\xbe\xe5\x1f\x88F\x93\x0ez\xdfS\xbd\x81+atod\x00'
 b'\x00\x00\x05\x00\x00\x00k \xf68\xfavu\x0b\xf1\xe2\xb0\x04&s\xd7=\xc3!'
 b'*\xfeJ\xdcM\x89\xe9')

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

{'A1': [{'B1': 0.40360762571593245,
         'B2': 12626182088426009374,
         'B3': 3880069841,
         'B4': 19,
         'B5': {'C1': [32, 246],
                'C2': {'D1': 1176708328568651451,
                       'D2': 2616878561,
                       'D3': 2835929597}}},
        {'B1': -0.6847472284746543,
         'B2': 15304973419136571049,
         'B3': 3282037930,
         'B4': -60,
         'B5': {'C1': [56, 250],
                'C2': {'D1': -1330832661209446330,
                       'D2': 2467199711,
                       'D3': 1404928299}}}],
 'A2': 'atod',
 'A3': [1987382257, -491781082, 1943485891, 556465738, -598898199]}

Пример 2

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

(b"\x9fOYGY\xbf\xdf\xb1\x13\xf7\xb6\xf8x\xe6\x9f#\x80\xd6'\xaa\x92\x11R8"
 b')\t\x00\x02\x00\x00\x00g\xf0\x06\xba\xb5\xc2f\xe1\xb0\xd4\x0es%\xbc\x0b\\+'
 b'?\xe8\xde,\x0ef\xd78\x00\x11\xedS\xbe\xf9H\xbd\xa2+\xd6\xfe\xd9\x00\x04\x00'
 b'\x00\x00i\xb93\x93\xa1\x06\x9fY\x03\xb3\x91i\xc3\x05r\xb0Teoze\x00'
 b'\x00\x00\x03\x00\x00\x00mv\xbdZF,`\xdc\xbb\xa4\x02\x7f\xf7e\xfd\xc1\x012a')

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

{'A1': [{'B1': -0.49518298331157196,
         'B2': 16618040186276129426,
         'B3': 290601001,
         'B4': 9,
         'B5': {'C1': [118, 189],
                'C2': {'D1': -1151027364933213776,
                       'D2': 3557716773,
                       'D3': 3154861099}}},
        {'B1': 0.7771206170352576,
         'B2': 5046018546157757,
         'B3': 2720782078,
         'B4': -39,
         'B5': {'C1': [90, 70, 44, 96],
                'C2': {'D1': -5101571633070515965,
                       'D2': 3012651459,
                       'D3': 91402324}}}],
 'A2': 'eoze',
 'A3': [-591682558, 2146919933, -1056886175]}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

Поле Описание
1 int16
2 Адрес (uint32) структуры D
3 uint64
4 uint16
5 float

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'CYXO.r\x00\x06\x00\x00\x00\x9e\x00\x00\x00\x80f\xdb\xa4\xf1\x19\xa3\xbf_'
 b'\x83\xab\xb0\xbfhgpx\x13\xcc\x98\x02e\xde2\xd9\x15\x98?{\xbcG{!\xa7\xa7\xc7s'
 b'1\xcc\x9f\x9a\x17\xce_\x883\xfb\x17AQ0Y\xa4F\xc0\xab\xfe\xbf\xdcF\x81'
 b'\x02\x00 \x00o\xe1&\x8d\x94\xfe\x7f|\x8d9\xc4\xc5\xa2\x02\x000\x00\xd7\xe5a'
 b'k\xfb\xbf@\xff\xb6\xc0\xe4\x1c\xf9\x9f\xaf\xb6?\xbc\x8c\x17\x00\x00\x00'
 b'\xfeYU\xf3v\xdeP\x08\x97\x7f\xad\x0b\x1e?\x04\x00\x00\x00\x1c\x00'
 b'\x00\x00\xfe/\x8b\x8fW\xbf\x02\x00@\x00\x00\x00b\x00\x00\x00\x97t,?\xc2\xe5'
 b'j\xbf\xa6\xa5{\xbf\x0c\x9d9\xbcO\n\xa4>\x1b\xb4\x94\xbe')

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

{'A1': {'B1': {'C1': -29508,
               'C2': {'D1': 95, 'D2': -1078940797},
               'C3': 599223352910240254,
               'C4': 32663,
               'C5': 0.6173656582832336},
        'B2': 'hgpx',
        'B3': 12286,
        'B4': -0.8420340418815613,
        'B5': [{'E1': -95771557420781487,
                'E2': -2126062401,
                'E3': [15650816180482526227, 2412600900234221589],
                'E4': 111},
               {'E1': -8251579685858892063,
                'E2': -1564097479,
                'E3': [11141848515905824679, 4690493735679544855],
                'E4': 215}],
        'B6': {'F1': -5260414646444400155, 'F2': 0.08861732322556559}},
 'A2': [0.6736540198326111,
        -0.9175683259963989,
        -0.9829963445663452,
        -0.01132894679903984,
        0.32039114832878113,
        -0.29043659567832947],
 'A3': -0.03730731141486121}

Пример 2

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

(b'CYXO.p\x00\x05\x00\x00\x00\x9c\x00\x00\x000\xf7\xbf\x94\x02k\xd3\xbf]'
 b'\xad\xf3\xe2\xb0uv\xa8\x90\x1e\xcc}\x08eq7\x7fG\xe0\xa8MV\xe4wp>\x08N\x90'
 b'\xe1\xd7\xca\x87\x93\x0b8a\xc1b*\x84\x8c\x85U\xe7\xe4\xae)\x1a'
 b'\xd4\xb6\x02\x00\x1e\x00\xd5\x05\xf7"\n\x1d\xf4\x01\xc5=\xa9\x1e7\x02'
 b'\x00.\x00 \tC@\x80G\x9d\xa7\x97\xa4\xec\x81\t;@\xd1\xbfe\xfb\x17\x00'
 b'\x00\x00\x97iMa\x1f\xec\xef\xa0\xaap\xb5\xa2\xa9\xbe\x02\x00\x00\x00'
 b'\x1c\x00\x00\x00\x16\xf9\x07\xb8@?\x02\x00>\x00\x00\x00`\x00\x00\x00D\xc7f>'
 b'o\x90\x88>\xe0\xf7\x94>3\x8bb\xbfV\xd5z?')

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

{'A1': {'B1': {'C1': -1179,
               'C2': {'D1': 93, 'D2': -1327303763},
               'C3': 11596747185022921111,
               'C4': 28842,
               'C5': -0.3313194811344147},
        'B2': 'uv',
        'B3': -1770,
        'B4': 0.7528080344200134,
        'B5': [{'E1': -5844292061921246166,
                'E2': -1227613655,
                'E3': [8170946435322122408, 16453423676357312311],
                'E4': 213},
               {'E1': -4250848167699745019,
                'E2': 924756285,
                'E3': [15555873252734562423, 7116075779562375114],
                'E4': 32}],
        'B6': {'F1': -7518868122451819767, 'F2': -0.2695453255507323}},
 'A2': [0.22536951303482056,
        0.26672694087028503,
        0.2909536361694336,
        -0.884936511516571,
        0.9798177480697632],
 'A3': -0.30340637709001594}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xd4APFK\x13\xdey\x9b7\xf1\xe4\xdb\x00.\x8d\x00\x02\x00\x9d\\~\x03\xab'
 b'V\xaa\x08\xc1\xe1e\xc5L\xa5\xcc\xcd\xd9$2U1;\xe5:\xcd\x15\xe7\xb4R'
 b'*\x08\x91\x91\xde\xf9\xdcE\xd2\xfe\xbf\xebW\xf3?\nIRC\nJ\x0fabeawvakZ\x00'
 b'\x00\x00"\xf3\xfaxc\x87H\xe64J\xe9i\x17\x1e\r\xf8E]\x0f\x98\xd9E%2\x0f\xc8'
 b'7f\x04V\xcc\xe8p\x1a\xfd\xa3\xf4\xbd\xf8:\x02\x96\xd5\xb3\xcb.?\xb5\x83\xfd'
 b'\xf8\x9am\x160\xd7\xc9]\xaf;Pp$o\x15\x80\x87\x95g\x1a\x06mf\xc0\x04eo')

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

{'A1': 333347227,
 'A2': 938599643,
 'A3': {'B1': 12993494091207663353,
        'B2': 3695563518,
        'B3': -0.8544861060384312,
        'B4': {'C1': 1124747791, 'C2': 'abeawvak', 'C3': 90},
        'B5': {'D1': -12839, 'D2': 607278385, 'D3': 1004878541, 'D4': 5607},
        'B6': 17580496464260949556,
        'B7': [{'E1': 1256810775, 'E2': 504232005, 'E3': 93, 'E4': 3992},
               {'E1': -649779918, 'E2': 264779622, 'E3': 4, 'E4': 22220},
               {'E1': -395306243, 'E2': 2750725624, 'E3': 58, 'E4': 662},
               {'E1': -709637330, 'E2': 1068860413, 'E3': -8, 'E4': 39533},
               {'E1': 372299721, 'E2': 1571765072, 'E3': 112, 'E4': 9327},
               {'E1': 360744853, 'E2': 1729758829, 'E3': 102, 'E4': 49156}]},
 'A4': -115,
 'A5': 'eo',
 'A6': 23678,
 'A7': [3, 171, 86, 170, 8, 193, 225, 101],
 'A8': 3310134732}

Пример 2

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

(b'\xd4APFKY\x17\x85=R&\x9e>\x00.\xc4\x00\x02\x00\x9d-P<\x91\x9d\xaf\x7f\x18'
 b'\xf4h\xbe\xca\x8cz\xae\xce\x02i\xef\xb5\xd6^\x10\x86Ef;\xa8\x8f[\xccW'
 b'\x8b\xd1)\x0e\xfcz\xbf\xb61\xf4\xb4\xa1\xb9@`\x17\xdc\x02nkkfwlge\xc9\x00'
 b'\x00\x00"\xe0\xb4\x7f-a6\xb5(\xa0\xcel`\xfe\xf2\x86\r\x04\x17\x9f\x03\''
 b'\xf3\x0b\xdb\r\xb9\xbf\xb8\x9f\xe6V:\xf6\x8dR\xc8k\x8f\x99\x99k\x02)\x0e\xdf'
 b"\xb5\x01\x0f\x1au\x84\xf49\xbbU|\xef\xc1s\x8d\xf8\xaa\x13\x98\x13g\xf4j#m.>'"
 b'\x87ok')

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

{'A1': 1494713661,
 'A2': 1378262590,
 'A3': {'B1': 4298843468758223825,
        'B2': 688847994,
        'B3': -0.08669976625399034,
        'B4': {'C1': 1612176386, 'C2': 'nkkfwlge', 'C3': -55},
        'B5': {'D1': -20786, 'D2': 40497077, 'D3': -698478458, 'D4': 17766},
        'B6': 16191706393185006888,
        'B7': [{'E1': -1597084576, 'E2': 4277306893, 'E3': 4, 'E4': 6047},
               {'E1': 52949771, 'E2': 3675109823, 'E3': -72, 'E4': 40934},
               {'E1': 1446704781, 'E2': 1388866447, 'E3': -103, 'E4': 39275},
               {'E1': 36245215, 'E2': 3036745498, 'E3': 117, 'E4': 34036},
               {'E1': 968578428, 'E2': 4022432653, 'E3': -8, 'E4': 43539},
               {'E1': -1743558668, 'E2': 1780706606, 'E3': 62, 'E4': 10119}]},
 'A4': -60,
 'A5': 'ok',
 'A6': 11600,
 'A7': [60, 145, 157, 175, 127, 24, 244, 104],
 'A8': 3200945274}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'DHUE\xf0\xcb\x00\x00\x00\x03\x00\x00\x00I\x00L\x00V\x00`\x00j\x00t'
 b'\xbf\xe4\xc2r\xdbhQT\x9d\xe3@^j\xd6\x9c\x1c\x93\xf8P\xe0\xb0\x11\x85\xc3'
 b'\xb4?$\xc5\x15>\xe5\xe8Q>\xb8\xb4\xf6\xbfOG\x94Q\x00\x00\x00\x84\xf6\xb5'
 b'\xf1iiu\xf8\xd3\xed\x8dD?\xdf\xa9L\xc2~\xfa?\xa2\xde\x94\xb2\xa6\x10\x0b'
 b'\x96\xdc\xaf\x9c~\xba\xe0\xbf/m\x12\xa3\x82{\xa51\x04\xd3\x9bt\xca\xd0OW'
 b'^\xea\xbdm\xb4\x0e\x8b\xce@4\x97\xba\x00\x06\x00\x00\x00~4\xce*\xa6\xba\xa5'
 b'\x1b\xc2?\xc6\xc3\x15\x01\x01XH\x04\x9d?\xf2>,"/\x82Z\xf8\xedC\xcd\x1fyz\x16'
 b"\xc0\x84?\xe2\xce\x83\xd0'A\xfe-")

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

{'A1': 203,
 'A2': 'iiu',
 'A3': [{'B1': 63699, 'B2': 17117412799831166146},
        {'B1': 32506, 'B2': 4585472100850339851},
        {'B1': 38620, 'B2': 12654128394103893869},
        {'B1': 4771, 'B2': 9402290277018999668},
        {'B1': 51920, 'B2': 5717142614263575566}],
 'A4': -0.6487364087393339,
 'A5': -1646051234,
 'A6': {'C1': 106,
        'C2': -2982477431374290768,
        'C3': 293979060,
        'C4': [0.6436322331428528,
               0.4490380585193634,
               0.3607556223869324,
               -0.8096859455108643],
        'C5': 81,
        'C6': {'D1': [-117, -50, 64, 52, -105, -70],
               'D2': 3805025630758968258,
               'D3': 0.17782843159756312,
               'D4': [77414386, 1043079727, 2187000045, 1137516409, 2048311428],
               'D5': 0.5877093377585536,
               'D6': 45}},
 'A7': {'E1': -10, 'E2': 181, 'E3': 241}}

Пример 2

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

(b'DHUE\xf0r\x00\x00\x00\x05\x00\x00\x00I\x00N\x00X\x00b\x00l\x00v'
 b'\xbf\xe9\x03\x08\x08\x1dG\xee\x19\xb1(!\xa9\xd2\xef\x12<=\xbd\xd1'
 b'\xf0\x0e\x80^l?p\x13\xb3\xbf+=N=\x83\xaf\xd2\xbf1D\x1c\xb6\x00\x00'
 b'\x00\x85\xed\nSaarra\xcd\xffa\x12\xff\xdd\x8a!\x12%\xd2F\xfb\xd0\x7fB\xaa5'
 b"x\xb2\x87\x9dY?\xf4\x18\xf8\xd5\xec\x97\x8dY\x96\x12\x90\xa7AG'9\xf9\xaf"
 b'9S\x12\xe3\xe51\xec\n\xbd\x18\xb6\xc65\x00\x05\x00\x00\x00\x80\xf7\xb2j`r'
 b')C\xe4\xbf\xab;F\xf8\x90\x13 ;;\xc1\xd7\xe0S\xf1j\x99\xbe9\xa9~'
 b'\x92\xa7\xf4\xd2\xd2f4\xbf\xc1\n>\x19\xf5\xf5\xc8\x9c')

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

{'A1': 114,
 'A2': 'aarra',
 'A3': [{'B1': 52735, 'B2': 6994934498230080037},
        {'B1': 53830, 'B2': 18145142822975928498},
        {'B1': 34717, 'B2': 6431127180999519383},
        {'B1': 36185, 'B2': 10813864703299102521},
        {'B1': 63919, 'B2': 4130666053241007114}],
 'A4': -0.781620040748974,
 'A5': 431040545,
 'A6': {'C1': -87,
        'C2': -3247356756367650320,
        'C3': 243293804,
        'C4': [0.9378005862236023,
               -0.668904185295105,
               0.06430019438266754,
               -0.6924455165863037],
        'C5': 182,
        'C6': {'D1': [-67, 24, -74, -58, 53],
               'D2': 17848445235687408612,
               'D3': -0.05318662437642829,
               'D4': [993771991,
                      3763597674,
                      2579380649,
                      2123540468,
                      3537004084],
               'D5': -0.13312507884613312,
               'D6': 156}},
 'A7': {'E1': -19, 'E2': 10, 'E3': 83}}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BGLiwoolzto\xdag\xf34y\xd2\xec\xbf<Np\x83\x9bG\xba\xb5\x99\x1a\xbeJh'
 b'\xcd\xfd3\xaa\xc9\xc9?E\x8f<JXf\x17(\x06\x81>\\h\x84\x9b\xda\xb5_\xd2?\xf6'
 b'\xa8:\x10}n\xba\x91r\xdeI\xec\x04\x08\x1e\x87\xbe\x12\xdb?c\xa4\xe8\x9e\xcf'
 b'p\x87z\xd8\x14\tQ\xe4\x90=\xc0:f\xed\xbf\x1a\x96\xcd\x9a\x95\x97\\\xe8\xdc'
 b'*\x8c\xfe>\xa8\x98\x9e\xc3\xb6\xc7\xdf\xee\xbf\x80/zOqP\xab?\x1c\xed0'
 b'=>\x8f\x00\xb3\x02\xc6l\x10\x90\xec.\x81\x1d\x03\x03\x00\x8c\x00')

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

{'A1': 'iwoolzto',
 'A2': [{'B1': -0.9006925615496997,
         'B2': -2089791940,
         'B3': 5385771451862894491},
        {'B1': 0.2014668229927381, 'B2': 1245482821, 'B3': 6646891963487839832},
        {'B1': 0.28709169720065697,
         'B2': 272279798,
         'B3': 17026384449903423101},
        {'B1': 0.42301905818033014,
         'B2': -1628920733,
         'B3': 5839221311863746767},
        {'B1': -0.9187291865059959,
         'B2': -1697802726,
         'B3': 18342082510652741525}],
 'A3': -22466,
 'A4': {'C1': -0.9648169107067188,
        'C2': 0.05334810347730379,
        'C3': 28,
        'C4': 0.18475694954395294,
        'C5': {'D1': 52265262, 'D2': [16, -112, -20]}},
 'A5': [179, 2, 198, 108]}

Пример 2

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

(b'BGLgplpbftw\xb0Wk\xe1\xb4\n\xcf\xbf\xd9\xc2\xd8\xe6\xdb\xf5\xden\x06'
 b'\xcdW\xa4\xa0 !\x1a\xf9\xa8\xcb\xbf\xadU\x97^?& \xfbV\x00\x80\xcb,[Q~\x07'
 b'h\xe5\xbf\xa3\x00\xf1\xef\x86\x9e_\xee\x9f^\xff\xda\xac?\x01\xa9C'
 b'\xdd\xe2\xbf*\xc8v\xcb$\xc2&r\x95\x0ez.\x92\xc6\xb0b\x1f\xeb\xe6?\xde'
 b'\xdf~\x85\xef\x13\x0fA\x90\xd4\x8c\xf8@\xf3~\xa7\xa3\xb8\xd8&\xed\xbf\x88Y '
 b',\x1c\xcb\xc4\xbf\xf7\xb3.\xf4>\x90\x00\x1f)\xce/F\x85]:\xdb\xca\xa5\x7f'
 b'\x04\x00\x8c\x00')

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

{'A1': 'gplpbftw',
 'A2': [{'B1': -0.2425142384224137,
         'B2': -422001959,
         'B3': 11842159172707612123},
        {'B1': -0.21609414840555008,
         'B2': 1586976173,
         'B3': 14663720760298710591},
        {'B1': -0.66894888564534, 'B2': -269418333, 'B3': 15780435660321562246},
        {'B1': -0.5895098019482155,
         'B2': -881407958,
         'B3': 3349005307931443748},
        {'B1': 0.7162014892148412,
         'B2': -2055282722,
         'B3': 17909923534177506287}],
 'A3': -3264,
 'A4': {'C1': -0.9109920126186208,
        'C2': -0.16244842676742288,
        'C3': 247,
        'C4': 0.4769187867641449,
        'C5': {'D1': 2141571803, 'D2': [70, -123, 93, 58]}},
 'A5': [31, 41, 206, 47]}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YDO\x90\x1f*\x94\x0cZ\xff\x9b\xa30\xe8\x00\x00\x00\x02\x00H\xc6\xaa\x95\x8d'
 b'WL\xe2\x87g\xd8\x1b\x1c_\xdd\x8c\xbf\x19#p3Z\x9f\xda\x16\x93nO\xc9'
 b'n\x9b\xfe\x13F\xc8\x00\x02\x00V\xee\xcf\xbc\xa6\xc7\xbdJ\xee\xc3\xb9'
 b'c\xc8\xfcH\x00\x04\x00\x00\x00A\x86\x00\x03\x00\x00\x00E`\xc2\xed')

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

{'A1': -1877005676,
 'A2': 207290267,
 'A3': 41776,
 'A4': {'B1': -24,
        'B2': [{'C1': [-18, -61, -71, 99], 'C2': 134},
               {'C1': [-56, -4, 72], 'C2': 96}],
        'B3': [-58, -86, -107, -115, 87, 76, -30],
        'B4': 9757004728673230220,
        'B5': {'D1': -0.5981969833374023,
               'D2': 3700445802868731471,
               'D3': -55,
               'D4': 1855716883,
               'D5': 18120,
               'D6': [-62, -19]},
        'B6': 4006591654,
        'B7': -57},
 'A5': 48458}

Пример 2

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

(b'YDO\xd7\xba\x13\x97\xb6S\x9aj\xff\xd2\xb4\x00\x00\x00\x07\x00UY\xf2O\x1cGJB-'
 b'\xdc\x96\xe7\x14\x94\xa2\x01>#\xdc\x1fB\xd9u\xa4\x15\\\xca\x8d\xcbu;(\xf8'
 b'\xb26\x00\x02\x00\x86\xad\x85\xf6\xd8x*p\xaf\xf8\r\xd6\x19\x9dYU\xb96\x81'
 b'\x82\xc8nx\xfe\x99\xb3\xd6\x97\x00\x03\x00\x00\x00A\xb1\x00\x03\x00\x00'
 b'\x00D\xb8\x00\x02\x00\x00\x00G?\x00\x02\x00\x00\x00I\xeb\x00\x02\x00'
 b'\x00\x00K\x04\x00\x04\x00\x00\x00M\x9e\x00\x04\x00\x00\x00Q\xb7\xe4<')

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

{'A1': -675671145,
 'A2': -1236034966,
 'A3': 65490,
 'A4': {'B1': -76,
        'B2': [{'C1': [-81, -8, 13], 'C2': 177},
               {'C1': [-42, 25, -99], 'C2': 184},
               {'C1': [89, 85], 'C2': 63},
               {'C1': [-71, 54], 'C2': 235},
               {'C1': [-127, -126], 'C2': 4},
               {'C1': [-56, 110, 120, -2], 'C2': 158},
               {'C1': [-103, -77, -42, -105], 'C2': 183}],
        'B3': [89, -14, 79, 28, 71, 74, 66],
        'B4': 3304682145809998337,
        'B5': {'D1': 0.1600193828344345,
               'D2': 4817010624042945165,
               'D3': -53,
               'D4': 1966811384,
               'D5': -19914,
               'D6': [-28, 60]},
        'B6': 2911237848,
        'B7': 120},
 'A5': 10864}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xb7OWP\x00T\x06\x8c\x99\x00\x02\x00~\xc53\xa0y\x156#\xed\x1b\xa1\xeb'
 b'\xaa\xedJ\xcfC\xb7\x00\x00\x00\x02\x00\x0egc\x85\x0e\x9d\x85\x9b\x8a'
 b'c\x00\x00\x00\x03\x00\x10\x9b\xa7,\xe5r\xd8\xa2\xa7\xd0\x00\x00\x00\x02'
 b'\x00\x13\xaa\x07 \x93\x19\xd6\x00\xfb\xf2\x9fWZ\x8b\xdbpq\xd6&'
 b'\x00\x00\x00\x03\x00\x00\x00\x15\xbf\xd6c/\xe6\x919\xa8:z\xd7\xf1?\xc8\x8ez'
 b'xp\x99\xc0\x00\x00\x00\x02\x00B\x00\x02\x00Dy\xad\xa5\x07\xa3v')

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

{'A1': {'B1': [{'C1': 1991131629632540483, 'C2': -73, 'C3': [51, -96]},
               {'C1': 7449944506419747722, 'C2': 99, 'C3': [121, 21, 54]},
               {'C1': 11215982760975442599, 'C2': -48, 'C3': [35, -19]}],
        'B2': {'D1': -0.3498039008744862,
               'D2': 981129201,
               'D3': 0.19184809571124894,
               'D4': [-86, 7]},
        'B3': [2347248237720367775, 6294497203804296742],
        'B4': 2041423111},
 'A2': 1676,
 'A3': -103,
 'A4': [163, 118],
 'A5': 197}

Пример 2

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

(b'\xb7OWP\x00LI\xceF\x00\x03\x00v\xa0\x13\xfe5\xe8V\xc6\xc2y\x030\x11vC\x18'
 b'\x00\x00\x00\x03\x00\x0e\xdfb\x96\xdbcH:\xda\x0b\x00\x00\x00\x02\x00'
 b'\x11\xec\xf9\x18\xc4\xb2h3\xd8\x84\xca\x19\x18u\xf7N\x0c\xb4#\xdb'
 b'\xa4\xc1\x14\xfd\xab\x0e\xa0X\x00\x00\x00\x02\x00\x00\x00\x13\xbf\xe9$r'
 b'\xb6m\x19\x12\xbe\xb6\x1c\xe1\xbf\xe9\xaf]\x891\xf8X\x00\x00\x00\x03'
 b'\x001\x00\x03\x004\xce\x82\x90\x13\x0c\xcd%')

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

{'A1': {'B1': [{'C1': 14322142819589912131, 'C2': 24, 'C3': [19, -2, 53]},
               {'C1': 16096593887183256282, 'C2': 11, 'C3': [-24, 86]}],
        'B2': {'D1': -0.7856992304812442,
               'D2': -1095361311,
               'D3': -0.8026569060891786,
               'D4': [-20, -7, 24]},
        'B3': [14173505549173574169, 1762586743778059227, 11871793172454482008],
        'B4': 3464663059},
 'A2': 18894,
 'A3': 70,
 'A4': [12, 205, 37],
 'A5': 160}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'TTVU\xb2\xe6uS\xd49\xbd\x02\x8c\x16\x00\x97*\xaalt\xbcJ~\x1e\xff\xe2\xech'
 b'\x8d\xe9g\xdbc\xf5T\xaf\xd1\x8d\xdaa\xa4\x9d\xf3>\xbb=\xc0\x08'
 b'\xc0\x94\xce\xf0\xbcJE\x00?c$\x18\x1c\x88?\\E\xe7\xe2\xe6\x9b\xea\xa2\xdf'
 b'y\x9eg\x00\xa9\xbbj \x07s\xb4\xc3/\x94jI\xb3\xb2\n\xb9\x0c\xaf\x8a\xc4'
 b'3#\x03)\xce\xa9\xb4\xb7?\xa0"v\xacm\x13\xfb\xa3Vs\x92\x99\xcf@\xa5\xa5~>\xb0'
 b'r\xe5\x92Eg\xdd+\xaf\x0b\xa5\xf6\x8aofv-g&\xbe')

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

{'A1': {'B1': [{'C1': -26, 'C2': 21365},
               {'C1': -44, 'C2': -17095},
               {'C1': 2, 'C2': 5772},
               {'C1': 0, 'C2': 10903},
               {'C1': -86, 'C2': 29804},
               {'C1': -68, 'C2': 32330},
               {'C1': 30, 'C2': -7425},
               {'C1': -20, 'C2': -29336}],
        'B2': 233,
        'B3': 103,
        'B4': {'D1': 219,
               'D2': [2941580643, 1641713105],
               'D3': 0.47581207752227783,
               'D4': 15803,
               'D5': 5385444024477812928,
               'D6': {'E1': -23830,
                      'E2': [7690926607868787167,
                             7679815782166103840,
                             9993220087046386505,
                             13018162873432748996,
                             1399964682569138103,
                             4670120192885826555,
                             10584992600492516773,
                             17772624351470643013],
                      'E3': 1986424714,
                      'E4': 26413,
                      'E5': 38,
                      'E6': -66}},
        'B5': [63, 99, 36, 24, 28, 136, 63]},
 'A2': 17756,
 'A3': -7449,
 'A4': -25626}

Пример 2

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

(b'TTVU\xb2\xa2\xa4\x0f{s\xc6\xa3\x1a\xd26\x08j\x11\xd0\xaa\x1d\xcf\xcee~IR\xde'
 b'\xcbJ\xb7\x14\x96\xdd\xe9m\xd9\x89\\\xee7\xdb[\xbfk\xaeJu\xa6./<\xc36E\x00'
 b'\xee\xafX\xf1%c\x13\x8a\x92\xd6\x84\x18\x1a\n\xd7\x9b\xa2\x11L\x83'
 b'\xde\xa1\xcd\x15\x0b\xc7:\xc1\x1e\x03\xfb{\xaf88\x9f\xc3z\xf7\xb7GI\xd0\x1d'
 b'\x01\x1dC\xfe\xf28\x9d\xa6\x05i\xfa\x16\xa6&\x19s\x1f<\x0cbcG;]\xf8Mp\xe0'
 b'\xb9p-\x0b\x9e\xa2\x1d\x15/\x87PL\x10`\xc6')

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

{'A1': {'B1': [{'C1': -94, 'C2': 4004},
               {'C1': 123, 'C2': -14733},
               {'C1': -93, 'C2': -11750},
               {'C1': 54, 'C2': 27144},
               {'C1': 17, 'C2': -21808},
               {'C1': 29, 'C2': -12593},
               {'C1': 101, 'C2': 18814},
               {'C1': 82, 'C2': -13346}],
        'B2': 74,
        'B3': 183,
        'B4': {'D1': 20,
               'D2': [1844043158, 3999042009],
               'D3': -0.8588137030601501,
               'D4': 44651,
               'D5': 3946063871850476874,
               'D6': {'E1': -10486,
                      'E2': [14817368904523948699,
                             18087334343713688341,
                             17832780763137355643,
                             4836022802425923511,
                             18043959595197068030,
                             881614206261437974,
                             8092397184764830562,
                             2135442944171227616],
                      'E3': 1351036693,
                      'E4': 4172,
                      'E5': 96,
                      'E6': -58}},
        'B5': [238, 175, 88, 241, 37, 99, 19]},
 'A2': -28022,
 'A3': -31530,
 'A4': 6680}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xe5NUT\xb5\x07\xd2.\x00\x00\x00\x03\x00\x00\x00zb=\x9dA\xdaC\x81\x8fGj\x81d'
 b'a\xa6\xbfdk\xe1\xbe\xa8@\x07?So\xe4?Z[\x9f=#\x8d\xdc?0\xab!?\xe5\\[Chc`R\xbd'
 b'z\xdbz\x19=\x1c\xc8M\xc2^\x0e\xad>\xfd:\x16\xbf\x12\xc9\xbb\xbf\x1a\xe5\x84'
 b'?T\xc7T>b\xa4\x1a>\x80~u\xbf\xe6\x1f!w\x08\x8f\xf0\x95\xed\x07\x1d< \xd7\x84'
 b'F\xad\xac%\xca\xa8vvx')

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

{'A1': -1257778642,
 'A2': 'vvx',
 'A3': [{'B1': 98,
         'B2': 0.07678575813770294,
         'B3': 1132564295,
         'B4': {'C1': 1786864737, 'C2': -90},
         'B5': [-0.892271101474762,
                -0.3286134898662567,
                0.8259260654449463,
                0.8529605269432068,
                0.03993020951747894,
                0.6901112198829651],
         'B6': 0.6675239864881455},
        {'B1': 82,
         'B2': -0.06124446541070938,
         'B3': 423435464,
         'B4': {'C1': 1304583694, 'C2': -83},
         'B5': [0.49458378553390503,
                -0.5733906626701355,
                -0.6050646305084229,
                0.8311665058135986,
                0.22132912278175354,
                0.25096479058265686],
         'B6': -0.6913001370307921}],
 'A4': {'D1': [-27155, 1821, 15392], 'D2': -2917128946897794392}}

Пример 2

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

(b'\xe5NUT~]\x8b\xa8\x00\x00\x00\x03\x00\x00\x00z`>\xb9\xed\xff\xf9\xf2\xd0'
 b'f\xbf00G-?g\xa3P>\r\xa9\x9c\xbffm\x05>;\xfd\xd6?\x13\xd4.\xbe(\xe9a?\xdd'
 b'e\x8db\xad\xd2\x9c|\xbfI\x88\x85\xbf\x98\xca\xdfT&\x04t\xfb?|\xb8\x10'
 b"\xbe\xa6\xaaN\xbfS\x06\x90\xbfJ\xcc >)\x97'>\xaf\x9e9\xbf\xe0\xdc\xd2/S\xcfh"
 b'\xf1\x1c\xafQzN\xdc\x1a\x14\xa1)\xefr\x18gcd')

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

{'A1': 2120059816,
 'A2': 'gcd',
 'A3': [{'B1': 96,
         'B2': 0.3631438910961151,
         'B3': 4193439846,
         'B4': {'C1': 3207606343, 'C2': 45},
         'B5': [0.9048357009887695,
                0.13834232091903687,
                -0.9001010060310364,
                0.1835854947566986,
                0.5774563550949097,
                -0.16495276987552643],
         'B6': 0.4593232597028789},
        {'B1': 124,
         'B2': -0.7872393727302551,
         'B3': 3214461663,
         'B4': {'C1': 1411777652, 'C2': -5},
         'B5': [0.9871835708618164,
                -0.32551807165145874,
                -0.8243188858032227,
                -0.7921772003173828,
                0.16561566293239594,
                0.3430040180683136],
         'B6': -0.526955692707344}],
 'A4': {'D1': [-3812, -20655, 31310], 'D2': -2586732353545080296}}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xceCHD\x7f \x00`\x00\x02\x00\x8b\xcd\x1eo\x1b\x7f\x9a\xc5\x17\xde;\xceq'
 b'\xf3<\xd9\x00\x02\x00\x9b\xe96\x82\xaaUzdcc\xeb\x93\xa6\x90h#Xs'
 b'\x00\x00\x00\x02\x00(\x16K\x04w\xe6\x00K#\x00\x00\x00\x02\x006joK\n'
 b'\xc4^\xc6\xd5\x00\x00\x00\x02\x00Djx\x07A\xea\x9ec\x0c\x00\x00\x00\x02\x00R'
 b'\xf1I\x00\x00\x00\x04\x00\x00\x00$\x00,\x00:\x00H\x00Vm\x0b\xec\x98S.'
 b'iy\x8f\xf5\xe5l?\xee\xce\x88\xc1X\xfd\xc6l\xd8\xe0\xcf\x1bT\xc5\x11\xed\x80'
 b'\x92\xcd\xd4\xf5\x89\x1b\xc5\xd1\x17\n\x9f>A\x99\xb4\xbf[k\xfc')

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

{'A1': 32544,
 'A2': {'B1': -3767,
        'B2': 'zdcc',
        'B3': [{'C1': 104, 'C2': 9048, 'C3': 115, 'C4': [60307, 42640]},
               {'C1': -26, 'C2': 75, 'C3': 35, 'C4': [5707, 1143]},
               {'C1': -60, 'C2': 24262, 'C3': 213, 'C4': [27247, 19210]},
               {'C1': -22, 'C2': -24989, 'C3': 12, 'C4': [27256, 1857]}],
        'B4': 1829498008,
        'B5': 5993844124903925100,
        'B6': 0.9627116943665264,
        'B7': 108,
        'B8': 3638611739},
 'A3': {'D1': [6108308181359971796, -754040926177391969],
        'D2': 52510,
        'D3': 8006133065289555515,
        'D4': -831392964,
        'D5': 217,
        'D6': [0.18906289339065552, -0.8571164608001709],
        'D7': 233},
 'A4': 914532949}

Пример 2

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

(b'\xceCHD,7\x00c\x00\x02\x00\x8e\xc7\x87\xcbw\xa7\xec\xc2@\xbd\xbflj'
 b'\xc9\x15`\x00\x04\x00\x9e\x18\x84\x80\\\xa4uqltfwpp>\xbb\xc0\xd6'
 b'\xa5\r\xb0\x00\x00\x00\x02\x00+\xdb\xb0\xe2J\x98\x82=K\x00\x00\x00\x02\x009C'
 b'$|\xca$\xc3q\xe8\x00\x00\x00\x02\x00G:Su\x87\xe8\xa2k\x95\x00\x00\x00'
 b'\x02\x00U\x10\xd6\x00\x00\x00\x07\x00\x00\x00$\x00/\x00=\x00K\x00YS\x07\x02'
 b'\x8b\xee\x8b\n\xba\xc8[y\xe0?\xd0\x10d\x93\xfa\x00P\x8d"\xdb\xef\x16\xc6\xf3'
 b'P\xd5\x0fqN"tH\x90t\xc8\xda\xdf\xa3\xbe\xe4J=\xbf\x18#3>\x84t\xbb>]i*')

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

{'A1': 11319,
 'A2': {'B1': 4310,
        'B2': 'uqltfwp',
        'B3': [{'C1': -42, 'C2': -23283, 'C3': 176, 'C4': [28734, 48064]},
               {'C1': -104, 'C2': -32195, 'C3': 75, 'C4': [56240, 57930]},
               {'C1': 36, 'C2': -15503, 'C3': 232, 'C4': [17188, 31946]},
               {'C1': -24, 'C2': -23957, 'C3': 149, 'C4': [14931, 30087]}],
        'B4': 1392968331,
        'B5': -1257899873578288672,
        'B6': 0.25100054217182777,
        'B7': 141,
        'B8': 584838934},
 'A3': {'D1': [-4110853158841790942, 8379105937983201187],
        'D2': 51079,
        'D3': -3785372326468469313,
        'D4': 1818937621,
        'D5': 96,
        'D6': [-0.44587889313697815,
               -0.594287097454071,
               0.2587030827999115,
               0.21622148156166077],
        'D7': 24},
 'A4': -2071962460}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'WWU-\x16\x00\x00\x00\x18\x00+\x00>\x00Wi\xdd\xe5f\x00\x00\x00S\xd1r\xb9P\xbe'
 b'\xa8Oy\xbf\xc4\x82\x08\x0e\xcdykusls\xdc\xe54\xbf@f\x85>\xb4\xfc\xd2M\x1a'
 b'owdgwx\xa2\xe5\xbe>\xfe\xbc|\xbf\xcbh<zNpzmmvi\x9c\xceD\xf1A\x81\xee'
 b'\xbf\x00\xe5\xddX\xb2\x11t?\xbd\x17\xfe\xba\x19\x00\xb8u\xee\xc4\xd1'
 b'<d\x02\x00Q\x00\x00\x00i\x0f\xf0\x8e#\x8a\xa9\xa3y\x08\xd1D\x02\xa7\xe9w'
 b'\xa1\xec\xbf\x05\x00\x00\x00a\x00\xbd\xcepI`\xc3\xee\x81N\xa0\xd7'
 b'?\xbb\xdc\x99\x89\x08\xac\xa0N\xe0&S\xd3:')

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

{'A1': {'B1': 83, 'B2': -47},
 'A2': [{'C1': -0.20383241772651672,
         'C2': -0.9738717079162598,
         'C3': 235438788,
         'C4': -51,
         'C5': 'ykusls'},
        {'C1': -0.7066323757171631,
         'C2': 0.2605457305908203,
         'C3': 1305672884,
         'C4': 26,
         'C5': 'owdgwx'},
        {'C1': 0.37284570932388306,
         'C2': -0.987258791923523,
         'C3': 2050779339,
         'C4': 78,
         'C5': 'pzmmvi'}],
 'A3': -438474409,
 'A4': {'D1': 7222878546139920384,
        'D2': [-0.9532785141259015, 0.004899689358233816],
        'D3': -6653635089136611479,
        'D4': {'E1': 121,
               'E2': -12024,
               'E3': -0.8947104991457953,
               'E4': [189, 23, 254, 186, 25],
               'E5': 1232129725,
               'E6': 0.36915934265839745,
               'E7': 2308562107},
        'D5': 8,
        'D6': 4238823100722880684}}

Пример 2

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

(b'WWU-\x16\x00\x00\x00\x18\x00+\x00>\x00)\xd5RKe\x00\x00\x00\x8b\xf7\xef\x10#?'
 b'\xd5\x99\x14?\xbf^\x19\x82 abekwp\xe1dx\xbe\xec\x84\xc4=R\\fC\xaffanmsdI\x91'
 b'\x00?|\x97\xe7>B9\xf8$\xfevkdeay@<\x8d\x8b\xe1O\xa7\xbf\xb4\x1b\xb2'
 b'5\x19#\xeb\xbf\x08\xe1"X\xca+\xfcc\x08\x81\xba\xd2\x02\x00Q\x00\x00\x00b'
 b'\x0c\x83\xed\xf8\x8b\xd3#\xd3\xa8P|+\xe9\xb9\xfc\x91\xda?\x04\x00'
 b'\x00\x00a\x00\x04\xe4I\x97\x88\xd6:\xec\xfa\xd2\xc0?\xb6\x81\xdd\x13'
 b'\xca\x9f\xdb\x11\x8a\x8fR\xd4n')

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

{'A1': {'B1': -117, 'B2': -9},
 'A2': [{'C1': 0.6369771361351013,
         'C2': 0.5804722905158997,
         'C3': 2182700735,
         'C4': 32,
         'C5': 'abekwp'},
        {'C1': -0.24257232248783112,
         'C2': 0.09595665335655212,
         'C3': 1130781778,
         'C4': -81,
         'C5': 'fanmsd'},
        {'C1': 0.5022168755531311,
         'C2': 0.4523276090621948,
         'C3': 620247362,
         'C4': -2,
         'C5': 'vkdeay'}],
 'A3': 1263719721,
 'A4': {'D1': 15184590966670240714,
        'D2': [-0.04553131893646212, -0.8480344818825558],
        'D3': 2581560912666365026,
        'D4': {'E1': -45,
               'E2': 20648,
               'E3': 0.4151603522811269,
               'E4': [8, 225, 34, 88],
               'E5': 2538202116,
               'E6': 0.13143860373172722,
               'E7': 333283766},
        'D5': 202,
        'D6': 7986098815684959135}}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KBMT\x00\x0e+_\x00\x00\x00\x03\x00*P\x0b\x7f\xb4`\xcdr\xc4\x00\x00\x00`q,'
 b'\x00\x00\x00\x02\x00j\xbfc\xca\x8f>\xffn\xf5K>\xf46rx;bouabprs?\x17\xd8'
 b'\x86\xe7fgpjmmdb\xb9?\x1a\xa8\x0b\x8c\x1fbqcouon\xbd\xd63^=Z\xa1\xdf'
 b'\xbe\xfc"\n\xe5\xbf\xa3\x9f\x00\x03\x00\x00\x00T*\x8d')

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

{'A1': 928607,
 'A2': [{'B1': 75, 'B2': 0.4769778847694397, 'B3': 30779, 'B4': 'bouabpr'},
        {'B1': 115, 'B2': 0.5931476354598999, 'B3': 59238, 'B4': 'gpjmmdb'},
        {'B1': -71, 'B2': 0.6041266322135925, 'B3': 35871, 'B4': 'bqcouon'}],
 'A3': {'C1': 5767844160472969924,
        'C2': {'D1': 3854541727,
               'D2': [-0.10459016263484955,
                      0.05337702855467796,
                      -0.4924471974372864]},
        'C3': 28972,
        'C4': [42, -115],
        'C5': -0.8898095488548279},
 'A4': 0.4988934099674225}

Пример 2

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

(b'KBMT\x10\x96\x19\xe9\x00\x00\x00\x04\x00*&\t4J\xce\x16\xd9\xc2\x00\x00'
 b'\x00r\x0e\xe8\x00\x00\x00\x03\x00|\xbe\x08*\xd9\xbf\x10\x9f\xdd:?'
 b'\x1c\xc4\x06\x02cltxwpqq?\xbf1\xe7ht\xd7gefbcsr\x80<5h\x87\xdd-wtpqxyw'
 b'\xa3\xbd\x83\x1c0\xeeZmfoeduk=\xd0\x97w>*\xe0\x82>\xc9\x93\x94>\x81'
 b'\xb0"\xa6\xad\xbb\x8a\x00\x04\x00\x00\x00bD\xd3\xb7')

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

{'A1': 278272489,
 'A2': [{'B1': 58, 'B2': 0.6123660802841187, 'B3': 611, 'B4': 'ltxwpqq'},
        {'B1': 63, 'B2': -0.6949372291564941, 'B3': 29911, 'B4': 'gefbcsr'},
        {'B1': -128, 'B2': 0.011072284542024136, 'B3': 56621, 'B4': 'wtpqxyw'},
        {'B1': -93, 'B2': -0.0640186071395874, 'B3': 61018, 'B4': 'mfoeduk'}],
 'A3': {'C1': 2740779344121485762,
        'C2': {'D1': 2796403594,
               'D2': [0.10185139626264572,
                      0.1668720543384552,
                      0.39370405673980713,
                      0.2532969117164612]},
        'C3': 3816,
        'C4': [68, -45, -73],
        'C5': -0.13297595083713531},
 'A4': -0.5649393200874329}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TBNQl\x00\x13\x04\xfa\xee\x8a %\xb3\xfd\x99\x06\x00\x97\x00\x00\x00\xc6]'
 b'\xc3\x1b\xa2\x04\tA\xee\x03y\x80\xa7\xb4\xe0\xe4\x89\r5\x19\x16\x97'
 b'\xc3\x84\xc9u\xd9xN^\xec\xba\x02\x00\x00\x00\x16\x00\x00\x00%\xd0'
 b'*\xb2\xfb\xba\xdd#\xea\\T@\xd6\x0f"!\xa0\xe6>\x02\x00\x00\x00&\x00\x00'
 b'\x00\x94\xbb\xc5x\x1eu\xa5\x8cV\x9e\xa7!(\x88\x8fd\xd12?\xbb\xc2Z?'
 b'\x0e\xf6\x8a\x9aD\xab\xef\xbfhrtlhtc\xa0\xaa\x02\x00\x00\x006\x00T'
 b'b\x8d\x8d\tD\x12t\x83fy-j3{\xbf\xe82j\xeaB\xe0')

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

{'A1': {'B1': 0.854533851146698,
        'B2': -0.9896567362226862,
        'B3': 'hrtlhtc',
        'B4': 43680,
        'B5': [{'C1': [4686281981552713158, 16492380466938708974],
                'C2': 2584427351369240613,
                'C3': -22,
                'C4': -700427172,
                'C5': 8719,
                'C6': 0.4504404366016388},
               {'C1': [9566656154633047433, 13469244276686288329],
                'C2': -8312108763506689132,
                'C3': 86,
                'C4': 673294238,
                'C5': -28792,
                'C6': 0.69850754737854}],
        'B6': 2374853204,
        'B7': 3276762918662849545,
        'B8': -0.9812532663345337},
 'A2': 12908759688014332947,
 'A3': {'D1': -26115, 'D2': [-24, 50, 106, -22, 66, -32]}}

Пример 2

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

(b'TBNQt\x00"\x86>\x93P\x1a\xd6\x87&T\x02\x00\x9f\x00\x00\x00\xcb,$)\xd3\xe5'
 b'\xf9\xd4a\xd4\x85\xdb\xa1\x00\xf0H\x13\xdaw\x0b(\xfa\xb6z\x89\x16'
 b'o\xdc\x95\xfb\x13\xf3\r\xe3\x00j\x1c\xc8\xab\x91\x03\x00\x00\x00\x16\x00'
 b'\x00\x00$\x01.\xa6\x8a*g\xdd\x13\x92\x97\xa9O\x98\xae\xe9\xec\xc0'
 b">\x02\x00\x00\x00.\x00\x00\x00F\xd7\xb6\xce|\x93\x85A'\xe2\x00"
 b'\xab\xc9\x1b\xff\x1c\x8bW>V\xd0S?\xb0\tI\x1e\xdbl\xb3?mgexjpj\x8e'
 b'-\x02\x00\x00\x00>\x00\xc7\xd5\x01\x1c\xbc\xe9x\xc1\xa6\xf4\xa6\xf6\xf0)$?+'
 b'\xda')

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

{'A1': {'B1': 0.8273977041244507,
        'B2': 0.07587975968730265,
        'B3': 'mgexjpj',
        'B4': 11662,
        'B5': [{'C1': [15346549900332772555,
                       5255701460314084449,
                       8842529968286587411],
                'C2': -2492977093744393948,
                'C3': 19,
                'C4': 1336514450,
                'C5': -20840,
                'C6': 0.37680748105049133},
               {'C1': [17515619996840957577, 10496703380880155405],
                'C2': 4721341948621150022,
                'C3': 39,
                'C4': -911539998,
                'C5': -229,
                'C6': 0.2104915976524353}],
        'B6': 469882311,
        'B7': -673582097197635140,
        'B8': 0.6412649154663086},
 'A2': 9788039773506405922,
 'A3': {'D1': 21542, 'D2': [43, -38]}}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xfcMVOZ-kvsaaiF\xc84\x8e\x86\x9c\xe0\xbf{\x02t.\xe3\xad\xd1{\t\xcf2\xe9'
 b'L\xc3\x17Z\xaa\x8f\xefro\xa9\x83\xba\xad\xbb\x89\xf0\x06\xee\xbf\x9b<#\xbe/'
 b'\xcd\x89I\xf7\x84\xcd{\xf7\x14\xcc1\xdfq\xecZ\x02\xec_\x02\x00\x00\x00S\x00'
 b'\xedU\x00ze93\xc4L\xd9q\xbeL\xb1\x82n\x00;')

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

{'A1': 45,
 'A2': {'B1': 'kvsaai',
        'B2': [{'C1': -0.5191071298088523,
                'C2': 123,
                'C3': 683370313247781890,
                'C4': 1290351311,
                'C5': 6083,
                'C6': 9487236629468785242},
               {'C1': -0.9383471193408959,
                'C2': -101,
                'C3': 17818924915030369084,
                'C4': -142881404,
                'C5': 52244,
                'C6': 6911902117644066609}]},
 'A3': 'ze',
 'A4': 237,
 'A5': {'D1': 57,
        'D2': 50227,
        'D3': -0.23618048429489136,
        'D4': [-20148, 28290, 15104]}}

Пример 2

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

(b'\xfcMVOZ\xb5nxjxfr\xf0\xdb\xa5yb9\xd4?\x1a\x0c\xad\xbbs\xe9U\x16'
 b'\xef\xef\xec@\xa2\xbd[\xae\x8f\x10Gy\x11\xa1\xdaV2\x18\xe2\x03\xa1\xe2?\x16'
 b'l\x1d\x8c\xd7\xeb\xe22\x91\x89\xf4P\xc5&\x8aM}\xb4\xe2\x17\xc1'
 b'\xe6\x91\x03\x00\x00\x00S\x00:V\x00mvyRf.\x0f\xc3k\xbf\x8aQ\xd3y\xac\xe3')

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

{'A1': 181,
 'A2': {'B1': 'nxjxfr',
        'B2': [{'C1': 0.3160024822204255,
                'C2': 26,
                'C3': 17228051885709831436,
                'C4': -1572803345,
                'C5': 23485,
                'C6': 15753892184099688366},
               {'C1': 0.582155171957832,
                'C2': 22,
                'C3': 10462674386896559468,
                'C4': -984550263,
                'C5': 35366,
                'C6': 10513302688474889549}]},
 'A3': 'mvy',
 'A4': 58,
 'A5': {'D1': 82,
        'D2': 11878,
        'D3': -0.9209451079368591,
        'D4': [20874, 31187, -7252]}}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CEVGJ\x00\x00\x00\x04\x00\x00\x00qV?\x1aJ\x07\x00\x06\x00\x81\x04\xb5'
 b'\xa0\x00\x00\x00\x02\x00\x87\x07\x14\xd8n\x94\xdf\x9a\x8aB\x0e\xfbZ\xf7'
 b'\xc24M\x00\x00\x00\x02\x00\x00\x00\x89\x16=b\xb5(\x8c\xc0\x07\xb3%\xbfV\xdf'
 b'W\x96\x1a\x1f\xb9\x99\xbc\x01\xf1C\xc2\xbf^\xa8\xa6%\x11x\xb6G\x17V\x87Xo?yn'
 b'\xe5\x88\xd9\x00\xc9\xc2\xd1/5\x8e\xfa?f#\xdd=\x19\x00\x00\x009\x00\x00\x00'
 b'G\x00\x00\x00U\x00\x00\x00cstdfquok\xa0\xc71f\xf3]\xe7\x84')

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

{'A1': {'B1': {'C1': [{'D1': 7112635771483829029,
                       'D2': -0.839345395565033,
                       'D3': -27110},
                      {'D1': 2286027318632727490,
                       'D2': -0.8697608709335327,
                       'D3': 9489},
                      {'D1': 8698217895874222191,
                       'D2': 0.9743483662605286,
                       'D3': -30503},
                      {'D1': 56790674014834426,
                       'D2': 0.8989847302436829,
                       'D3': 15641}],
               'C2': 86,
               'C3': 0.6026920676231384},
        'B2': 'stdfqu',
        'B3': 4},
 'A2': 46496,
 'A3': 'ok',
 'A4': 510270627255392906,
 'A5': 4760018224299521101,
 'A6': [2697408870, 4083017604],
 'A7': 5693}

Пример 2

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

(b'CEVGJ\x00\x00\x00\x04\x00\x00\x00q\x1d?#?\x17\x00\x04\x00\x81N\x90'
 b'\xf5\x00\x00\x00\x04\x00\x85\x04\xd5\xb43HI\\\xd1\xf3\xa74\xdf\xb7'
 b'\x92\xc8\x11\x00\x00\x00\x03\x00\x00\x00\x89\xac%\xf9\xfb\\j7G[z>\xd0\xaa'
 b'\xa4\xd2\x13\x8aV\xa4\x1aTN\xad\x0c<\xbe\x17\xae\x18\x92\x8du\xc1'
 b'\xa7\xef\x85\xe6\xe4\xbf\x12%\xca\xb7\x94\x91TG\xd82f\xc2\xbc\xbf'
 b'^\xd3\x0e\x05\x03\x00\x00\x009\x00\x00\x00G\x00\x00\x00U\x00\x00\x00cczzubuc'
 b'cXn\xde\xeei)\xcbS\xa9Z\x03\xcc')

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

{'A1': {'B1': {'C1': [{'D1': -433651327847408774,
                       'D2': 0.4075518846511841,
                       'D3': -11757},
                      {'D1': -8478408815487832820,
                       'D2': 0.023204650729894638,
                       'D3': 6290},
                      {'D1': -8253477815064336668,
                       'D2': -0.5708891153335571,
                       'D3': -18540},
                      {'D1': -7974670046282202436,
                       'D2': -0.8704079389572144,
                       'D3': 1283}],
               'C2': 29,
               'C3': 0.6376814246177673},
        'B2': 'czzu',
        'B3': 78},
 'A2': 37109,
 'A3': 'bucc',
 'A4': 348382678540180689,
 'A5': -889684265920182255,
 'A6': [1483661038, 1764346707, 2841248716],
 'A7': 44069}

Вариант №34

Задача №12

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

Структура A:

Поле Описание
1 int32
2 uint8
3 Структура B

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xb8CMS\xa10\xa5<\xaa\x00\x00\x00\x03\x00Ax\x95]\x8f\x91\x08!U\xeav\xd8o\xa1'
 b'\xb5\xf7#\x00\x07\x00n\x9a\x87J\xc4\x97N\xae\x81\xe0\x07}\x00\xc6'
 b'\xa4\xaf\x9d\x0f\xc3\xb0%w\xe6u\xd3J\xe1.)\x8c%O\x00\x00\x00\x04\x00#'
 b'I\xd9U\xfe\x8d\x9d\xde\xa7\xd8\x00\x00\x00\x07\x00+\xecU\x9d\xe5\xe2'
 b'\x99\xbe\x9e8\x00\x00\x00\x04\x009\x8c\xc0\xb2K\x83\xea\xb4\x85\xad\xa6'
 b'\xaa\xad\xef\xf5w\x94>\x95\xa5\xa2f!')

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

{'A1': -1590647492,
 'A2': 170,
 'A3': {'B1': [{'C1': 79,
                'C2': [39559, 19140, 38734, 44673],
                'C3': 5321378986500939431},
               {'C1': -40,
                'C2': [57351, 32000, 50852, 44957, 4035, 45093, 30694],
                'C3': 17029691176646196894},
               {'C1': 56,
                'C2': [30163, 19169, 11817, 35877],
                'C3': 10142302398243845253}],
        'B2': [30869, 23951, -28408, 8533, -5514, -10129],
        'B3': {'D1': 41397,
               'D2': 63267,
               'D3': [-21082, -21843, -4107, 30612, 16021, -23134, 26145]}}}

Пример 2

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

(b'\xb8CMSb\xa1+\x03\x8a\x00\x00\x00\x03\x003\xee0\xadB[\x93\xaf&\n'
 b'\xc7\xc1\x919p\x9eR\x00\x06\x00`?\xd8\xd8\x05,@[\xa2\x0e7^F0\xec\xbd$\xf3'
 b'\x00\x00\x00\x03\x00#\x07R\xfb\xe3ml\x86\xec\xaa\x00\x00\x00\x02\x00'
 b')\x8ff\xcb\x91dl](\xa3\x00\x00\x00\x03\x00-\xb9\xe5\x87+\x88\x1e\xe3\xed'
 b'!\xe4\\\xaf}+\xee+\x94[\x01\xfb')

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

{'A1': 1654729475,
 'A2': 138,
 'A3': {'B1': [{'C1': -13,
                'C2': [16344, 55301, 11328],
                'C3': 527761060567746284},
               {'C1': -86, 'C2': [23458, 3639], 'C3': 10333170220363701544},
               {'C1': -93,
                'C2': [24134, 12524, 48420],
                'C3': 13395261287720477677}],
        'B2': [-4560, -21182, 23443, -20698, 2759, -15983],
        'B3': {'D1': 14704,
               'D2': 40530,
               'D3': [8676, 23727, 32043, -4565, -27557, 507]}}}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x81KFDZP\xfe\xb7\xc2f\x1b\x85)\x00\x00\x00\x02\x00Gtdgbri\xfc\xaa\x16'
 b'A\xaf\x025\x92\x00\x02\x00\x00\x00K{\xcf\xea\xd41\xf81\x86\x00Y\x07v/-_\xae:'
 b'\x9b\xc9\xcd\x17\xb9$\xa5\xfe\x82_d\xeb\x7fw\x90\x001\x00< e\x04\x0f\x0e'
 b'\x08\xd4\x8b\xf7\xb4mky\xc3SDO\xac\x00\x03\x00\x00\x00M')

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

{'A1': 5836304212683359529,
 'A2': {'B1': [{'C1': 537669077442640539, 'C2': 201, 'C3': 52503},
               {'C1': -5105773565003733781, 'C2': 127, 'C3': 30608}],
        'B2': 'tdgbri',
        'B3': -240355158746057326,
        'B4': [32, 101],
        'B5': 2077223636,
        'B6': 838349190,
        'B7': {'D1': 1396985772, 'D2': [68095496, 3565942708, 1835760067]}}}

Пример 2

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

(b'\x81KFDZ\xbd\x84\x18H\x01\x9e{\x94\x00\x00\x00\x05\x00hssalsysA\xd6rs\xcf+'
 b'\x7f\x00\x02\x00\x00\x00r\x17\x96\xcb\xf8\xac\xa5\xa8\xd1\x00\x80\xc8\x98)'
 b'\xeaV\x85|\xf0V\x00\x0ek\x17L\xac{\x05|\x15I\xaco5\x0f\xe5h\xf0^\xf9\x18\x82'
 b'\x91)\xc50\x85:EFO\xa8l\x86l"n\xe7\xb2)\xc0\x94\x8c\xe3\xc2\xcc\x001\x00<'
 b'\x00G\x00R\x00]\xffzD\x13\x19\xc3Z?)\x0e\xc0\xf9\x11\x88\x05<\xd5K'
 b'\x00\x03\x00\x00\x00t')

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

{'A1': 13656066667638061972,
 'A2': {'B1': [{'C1': -3992394983213269776, 'C2': 86, 'C3': 14},
               {'C1': 7716720790204677141, 'C2': 73, 'C3': 44143},
               {'C1': 3823526847532955928, 'C2': 130, 'C3': 37161},
               {'C1': -4237740764038803544, 'C2': 108, 'C3': 34412},
               {'C1': 2481175197118403724, 'C2': 227, 'C3': 49868}],
        'B2': 'ssalsy',
        'B3': 8305154974905478015,
        'B4': [-1, 122],
        'B5': 395758584,
        'B6': -1398429487,
        'B7': {'D1': 87872843, 'D2': [1142102467, 1514088718, 3237548424]}}}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'OPOO\xfa\xc8\xbe\xd5fx\x00\x00\x00\x06\x00\x00\x00:\x8a)i\xe3\x00\x00'
 b'\x00\x02\x00\x82H\xa1\x0f6>\xda\xb8A\x08[\xf6\x15\x1bxU\xbf\xd5~B\x9c'
 b'\x7f\xc9\xfcU\xea\xcb\xc4\xc9\x05\xfe?\xeaz\xe9?\xea\xe3\xbd4i\xde.\x9e\xd4'
 b'\xd9\xd3?\xc8\x1c\xfbm\x8e\x84\xa0\x00\xa9\xfc\xa3\xbf\xe9>\xde"U'
 b'E\x8e\xae\xfcF\xc2?\xd0\x08\xb7\x8f\x8a\x1c\x18\xb9\x85\xa01\xbf\xea'
 b')\xd9\x8dQ\x880\x8f\x00M\xe7?\xba\xf3\xebx\n\xe8Plm')

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

{'A1': {'B1': -1336,
        'B2': -0.416797399520874,
        'B3': [{'C1': 1072331497, 'C2': 0.8403001807882384},
               {'C1': 2664749523, 'C2': 0.18838446473549642},
               {'C1': 11140259, 'C2': -0.7889242811744894},
               {'C1': 2935768770, 'C2': 0.25053204553154407},
               {'C1': 3112542257, 'C2': -0.8176086197020194},
               {'C1': 2399161831, 'C2': 0.10528442078330724}],
        'B4': {'D1': 138, 'D2': 10601, 'D3': -29},
        'B5': 'lm',
        'B6': 1218514742,
        'B7': 0.4271869957447052,
        'B8': {'E1': 8,
               'E2': [1542853915, 2018885589, 2118294655, 3388757482]}},
 'A2': [-53, -60, -55, 5, -2]}

Пример 2

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

(b'OPOO\xdbI\xbf$_i\x00\x00\x00\x06\x00\x00\x00:\xe7\xa9\xe2\xc1\x00\x00'
 b'\x00\x02\x00\x82t%\x0b\xf6>\x97L\xcb7\xa6\x0f\xff\xa4\xde6\x9b\x8d,\x82\xd7'
 b'E\xa1gE\xe0_Y\xa8?\xf7\xe4\x13X\xa1?\xe6\xf0I\xb7\xf6\xbc\xb8|\xfc_\xa8?\xdb'
 b'\xcc\x96<^,L\xe4Q\xa83?\xddv&\x156\xbe\xa4n\xed\xd4N?\xb7\xcf\x943\xfe'
 b'\np\x1d\x97Q,?\xde8\xe1Q\xe2\x13$0\x15\xfe\xb4\xbf\xee\x08\xeb\xf1\xd9'
 b'\xeb\xa4uq')

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

{'A1': {'B1': -9399,
        'B2': -0.6420808434486389,
        'B3': [{'C1': 3826473121, 'C2': 0.7168320267718604},
               {'C1': 2096914344, 'C2': 0.4343619908838192},
               {'C1': 3830556723, 'C2': 0.46033622810043995},
               {'C1': 1861080142, 'C2': 0.09301115292877582},
               {'C1': 496455980, 'C2': 0.4722216891898816},
               {'C1': 806747828, 'C2': -0.9385890697152388}],
        'B4': {'D1': 231, 'D2': -22046, 'D3': -63},
        'B5': 'uq',
        'B6': 1948584950,
        'B7': 0.2955077588558197,
        'B8': {'E1': 55,
               'E2': [2786066340, 3728120717, 746772293, 2707899872]}},
 'A2': [95, 89, -88, 63, -9]}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'NSU.{P\x00\x00\x000\x00\x04\x00<R\xb4\x00\x03\x00\x00\x00|\x93H l\x00\x00'
 b'\x00\x97"\x00\x00\x00\x05\x00\x00\x00\xa0(I\xa0\xb2g\xc6}\xdd\x8c?\xeeL\xa2'
 b'xJ\xc6Z\xce\x8a`L\x1et\xa65@g\xcb9\xda\x1f\xae6\xbc\xfc\xed\xe9\xc5\xd7\x14='
 b'\xe8\xe59\xdc\xb4r\xcf\\J\x93\x99\xd8Pf<\xd8\xf4\xab\xf7\xcf\xd5\x83n\xd3'
 b"\xe8'\xd1\xcaV\xb2\x8c\xaeO*Q\xf9\x93.\xe6\x0f\xcd>9\x05fra!\x97r'\xe5"
 b'\x94\xa4\xabtUW\xcc+\x8e,\x0c\xe2}\x0b.\x8f\x9b\x12v\x00\x00\x00\x06\x00'
 b'\x00\x00\x7f\x87\x0bgi\x04n')

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

{'A1': {'B1': 31568,
        'B2': {'C1': 0.9468548154311052, 'C2': 52874, 'C3': 24652},
        'B3': [{'D1': 2194561666080295737, 'D2': 15717472774668479977},
               {'D1': 14255885401597491676, 'D2': 13002683069467171288},
               {'D1': 5793384873174235087, 'D2': 15385262608439824842},
               {'D1': 6247210313396670969, 'D2': 10605667128046401797}],
        'B4': 21172,
        'B5': 'fra'},
 'A2': -27832,
 'A3': 8300,
 'A4': {'E1': [563573287,
               3851723947,
               1951750092,
               730737676,
               3799845678,
               2409304694],
        'E2': -121},
 'A5': 34,
 'A6': [11, 103, 105, 4, 110],
 'A7': 40,
 'A8': 5305436519823957388}

Пример 2

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

(b'NSU.\x11\r\x00\x00\x000\x00\x02\x00<-\x0f\x00\x02\x00\x00\x00\\F\xc9'
 b'\x8dj\x00\x00\x00f^\x00\x00\x00\x05\x00\x00\x00oAZX\x1a"xx8\x86\xbf\xc3Z\xa2'
 b'\xeb\x82k\x98\xee\xeb\x7f\x05*\x8e[z\xbbRag:\x84\x8e\x8e\x07,_\x02'
 b'\x98\xf4\xde\xc6\xd1\xb0\x90\x05\x9cX\x1c_d\xdd\x19Xaw\xb0\xda\x9a\xf60G'
 b'WE\x00\x00\x00\x02\x00\x00\x00^\xfe(\xb0\xac\xd5\xc3')

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

{'A1': {'B1': 4365,
        'B2': {'C1': -0.15120350360379287, 'C2': 61163, 'C3': 32517},
        'B3': [{'D1': 3066488978972762471, 'D2': 4216651891782475522},
               {'D1': 11021679133585346565, 'D2': 11265785663906978136}],
        'B4': 11535,
        'B5': 'aw'},
 'A2': 18121,
 'A3': -29334,
 'A4': {'E1': [2967116534, 809981765], 'E2': -2},
 'A5': 94,
 'A6': [40, -80, -84, -43, -61],
 'A7': 65,
 'A8': 6509981996716406918}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CYQN\xf2\xc6\xf1\xb5\xdbl\xcf\xa7\x11\x84\xc6\xb5\x05*\xf38\xee\xc9\x0e\xbe'
 b'~\xa2z_u\x0e\xc2\xe2\x89\xefS\x02\x00\x00\x00`\x00vjqw\xd4\x0c \x98\xc9\xa2a'
 b'\xd7?+\x07\x19\\) \xde\xdf&\xa3\xc3\x95\xb6G|\x0c^\x8d\xc3\x84\xfb\xe2'
 b'\n\x8f>\xb9\xc0\x05\xbdl\xc8&>\x9fdE>5\x13\x15b\xbf\xc6i\xbf\xa9Ex\xca>'
 b'\x0c\xeb\xe9\x17\xb4\x81\xdf>')

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

{'A1': 1272213486205006278,
 'A2': 50820,
 'A3': 1461,
 'A4': {'B1': 9132753354801869610,
        'B2': -8511026978422293854,
        'B3': 21487,
        'B4': [{'C1': 2847893958, 'C2': 0.39544883370399475},
               {'C1': 401206028, 'C2': 0.43653643131256104}],
        'B5': 'vjqw',
        'B6': -44,
        'B7': 0.36533422171533014,
        'B8': [1835, 23577, 8233, -8226, -23770, -27197]},
 'A5': {'D1': 9566645468540979126,
        'D2': 251,
        'D3': [0.2793799042701721, -0.032654497772455215, 0.16287392377853394],
        'D4': 1044735135,
        'D5': 53,
        'D6': -0.8831340670585632}}

Пример 2

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

(b'CYQN\xf2\xaf\xe2U\xd2\xa2\xf2]\xa9\x0e\xbc(\x19(\x88\xd3\x94!\xaa\x1aL`/}'
 b'\x80F\xf7\x10B\x13\x88\x02\x00\x00\x00`\x00nzkg\x06\xfc\x13\x92X\xc3j'
 b'\xd7?\x9b1\xd1\x1c\x19\xad\xfe\xb3\t\xa4wj\xa6\xab\xff\x84\xb6I\x1f*\xc6\xba'
 b'\xae\x0b\xbe\xe5)f>}\x13&?\xcf\xfb\x93\xb6\x81\xd2\xd8!?\xcc\xee>\x8d'
 b'\x9fy\xa5\xbe#\xf1\x8crLSX?')

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

{'A1': -6242566727338171729,
 'A2': 48142,
 'A3': 6440,
 'A4': {'B1': 5483882557484533800,
        'B2': 4760576688306073440,
        'B3': -30701,
        'B4': [{'C1': 2369711820, 'C2': -0.3231935203075409},
               {'C1': 1921839395, 'C2': 0.8450210094451904}],
        'B5': 'nzkg',
        'B6': 6,
        'B7': 0.36589130067324027,
        'B8': [12699, 7377, -21223, -19458, -23543, 27255]},
 'A5': {'D1': 3035225722135227302,
        'D2': 198,
        'D3': [-0.1364087164402008, 0.22476918995380402, 0.6487348675727844],
        'D4': -1231815729,
        'D5': -127,
        'D6': 0.6322146654129028}}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'-VFFY\x00\x02\x00\x00\x00(\x00\x00\x00\x02\x00\x00\x00D\x1b\xe3\xf3 \xad'
 b'\t\x8d\x00\x00\x00T\xee:lbyivrja\xbf\xea}S\xca\x98\x1a\x08\x00\x04\x00\x00'
 b'\x00 ?\xdb\x97\x961\x05\xf5x\x00\x04\x00\x00\x00$\x16\x0c\xcaL\x99x\xe5\xc9'
 b'\xdd7\xe0}@f\x15\xda\xbe\xbd0\x17\x9f\xa0\xfb\xa6\xc9Dg\x0fA^\xee\x18'
 b'\xe1g\xb2`\xe2%\x12a-\x03\x87\x00\xef\xff\xcd#\x07{\xd8\xb8\xe3\xe1\x9f\xad'
 b'\x8a\x80\xb6I\xa8$\xb7\x8b\xa8D\xf1Q=\x0f\xee=')

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

{'A1': [{'B1': -0.8277987439076364, 'B2': 'lbyi'},
        {'B1': 0.4311271170370996, 'B2': 'vrja'}],
 'A2': {'C1': [1588867198896104905, -2506287839052425766],
        'C2': 27,
        'C3': 58355,
        'C4': 548211085},
 'A3': {'D1': -0.3695075213909149,
        'D2': [-6944273931645458673,
               4710464050904412768,
               -2151293038423210240,
               -1152977429250451272,
               -2026162789638162871,
               -6330733365724647087],
        'D3': 1024454205},
 'A4': -4550}

Пример 2

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

(b'-VFFY\x00\x02\x00\x00\x00(\x00\x00\x00\x04\x00\x00\x00D\x8d\xa5\xad\x0bl'
 b'>\x9c\x00\x00\x00d\xde\x03ooqeytpu?\xd6\x17\x0f\xfc\x95\x8b\xec'
 b'\x00\x04\x00\x00\x00 \xbf\xb1L\x96\x90\x1f\xc3\xa0\x00\x04\x00\x00\x00$'
 b'\xf6c\x03\xd5\x8a:\x96\xbbX7\x12M\xe0w:i\xe2L\x1cj\xc5\x92|\xb1\xc7U_%'
 b'y\xea3.\xbc\xaa_\xdak\x81\x99m\x84\xc8_\x16\r\xf7\xd3\xa2\x08k\x0e\x90'
 b'\xda\xf0!\xe8\xa1\x19\x91j\xa8#\xd0p\x01\xb4\xe3O\xacXm\xc4M\xd6\xe6)'
 b'\xf8<R\x01i\x9b\xba\x8e|\xf5\x9a\x96')

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

{'A1': [{'B1': 0.3451576201097726, 'B2': 'ooqe'},
        {'B1': -0.06757489222196833, 'B2': 'ytpu'}],
 'A2': {'C1': [-692705702002911557,
               6356569524744436329,
               -2140304478001005391,
               -4083252872577666258],
        'C2': 141,
        'C3': 42413,
        'C4': 191643292},
 'A3': {'D1': -0.02079765871167183,
        'D2': [7746641529712172822,
               1006505734619991696,
               -2670597296011767446,
               -6330987471669238961,
               -6027947411348462039,
               -559482087680525682],
        'D3': 2096470678},
 'A4': -8701}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

Поле Описание
1 double
2 Структура C
3 uint64
4 uint32
5 int64

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xf3YMC\xc7$\xa0\x8b\xecN\x0bE\xcc?\xb0\xd3AWGG"A\xb0\xca\x19\xe4\xb7B'
 b'\xbf?qftrbuw\xccH\xee\xf79\xe9j\x7f7\xc7\xdd\xf6\xb7\x8e\xab\xdcz\x9c\xad'
 b'\xc4$\\\x02\x00\x00\x00p\x00\x00\x00\xcb\xb9\x95KC\xcab\xbe\x99d\x99#\x18'
 b'\x9ag\x1a\x1f\x02\x00H\x00\x00\x00\xf3-\x96\xf8=|\xe8r\x12\xfc\xfbN\xaf\xa1'
 b'\x02\x00\\\x00\x00\x00\x8dmP\x00\x00\x00d\x00\x00\x00')

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

{'A1': 9415,
 'A2': {'B1': 0.22085706094466406,
        'B2': {'C1': 4693392133405660080,
               'C2': 0.12211179083696311,
               'C3': 'qftrbuw',
               'C4': [204, 72]},
        'B3': 14355082434422896622,
        'B4': 2394420957,
        'B5': 6639648000584637611},
 'A3': [{'D1': 26522,
         'D2': 26,
         'D3': 31,
         'D4': [-1715576118, 404986212],
         'D5': 11763},
        {'D1': 20219,
         'D2': 175,
         'D3': -95,
         'D4': [2084436118, -65899800],
         'D5': 28045}],
 'A4': -53,
 'A5': 185,
 'A6': 19349,
 'A7': 67}

Пример 2

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

(b'\xf3YMC\xf1\xa8\xe4*\xec\x10\xf6@\xe0?\xc6d\xdf\x94\x16\x8c\x07\xb7:\xe1'
 b'\xfa\xff\xb5i\xee\xbfkhjmvzh<"\xe3\x9f\xc5C\xed\xee\x8c\xd1$[Zo%'
 b'l\x01\xb7\xac\x100\xda\x02\x00\x00\x00p\x00\x00\x00\x16\x1d[w\xd1'
 b'\x9e\xc7\xfb\x03\xe6\x84\xf5\xccX\xe2\xd7\xa9\x02\x00H\x00\x00\x00k\xb1'
 b'\xa7`\xfd\xdd\xb4E\x8d_\x0f\xb8Lg\x02\x00\\\x00\x00\x00\x02\x04P\x00\x00\x00'
 b'd\x00\x00\x00')

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

{'A1': 43249,
 'A2': {'B1': 0.5079298334615854,
        'B2': {'C1': 13188664062392624326,
               'C2': -0.9504041671380385,
               'C3': 'khjmvzh',
               'C4': [60, 34]},
        'B3': 15099706353478115299,
        'B4': 1868192548,
        'B5': -2724659440568407003},
 'A3': [{'D1': -7592,
         'D2': 215,
         'D3': -87,
         'D4': [66832286, -856324890],
         'D5': 45419},
        {'D1': -18417,
         'D2': 76,
         'D3': 103,
         'D4': [-570597209, 1603093940],
         'D5': 1026}],
 'A4': 22,
 'A5': 29,
 'A6': 30555,
 'A7': -47}