ИКБО-05-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'SRN\xbf\x03\x00\x00\x00+\x00\x00\x00\x02\x00\x00\x00|\x00\x00\x00cxcz'
 b'~\x00\x00\x00\x89,\x16D\xd3\x87\x00\xe1\x10\xe5[\xff\x87\x1a\xc7MR9\x12\t'
 b'\xad\xac\x91\xca\xa1\xd3r\xbf\x86\x1b\x086]0\xb1\xac\xb6\x19\x04\xd0'
 b'\xbf\x97V\x87\x0f\xe5P\xa4\xc5#\xa7\x99\x92\xc4\xa0\x82\xfb\xea\xff\r'
 b'\xe4G\xca\xf9\x14\x07\xde?j\xb9\xe4c5\x02K\xea\xcao\x01\x10\rt\n\x96'
 b'N\x90\xff\xe0O\xc5 i\xbd\xe6\xbf\xbctgK\xe4*\x06\xb7\x05DV\xde\x94'
 b'\xef\xe5\x83\x07\xff\t\x1c8BhJ,\x8e\x1e\xdf\xfdO\xf6\xc8\x8f\xce\x1aRE'
 b'\xb5l::&\xaa\x96\xf7\x07tPe\x8c\x1d*a\xe4\xda=\xbf')

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

{'A1': [{'B1': -7949788987743710643,
         'B2': 41418,
         'B3': 6716564808587506387,
         'B4': -0.25025027121843646,
         'B5': 151},
        {'B1': 2577647029086816086,
         'B2': 39335,
         'B3': 1008783207503545490,
         'B4': 0.46918224710054646,
         'B5': 106},
        {'B1': -3825162460640058183,
         'B2': 367,
         'B3': -31438791064154864,
         'B4': -0.7106214180043899,
         'B5': 188}],
 'A2': 'tg',
 'A3': 'cxcz',
 'A4': {'C1': 6216099669318755403, 'C2': 222},
 'A5': 137,
 'A6': -750512596,
 'A7': {'D1': 148,
        'D2': [126084591,
               941361663,
               743073858,
               4259257998,
               2412312143,
               1163008718,
               976907445],
        'D3': 7300462573535013414,
        'D4': 1630150028,
        'D5': -0.7416212558746338},
 'A8': -4099814979939266335}

Пример 2

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

(b'SRN\xbf\x02\x00\x00\x00+\x00\x00\x00\x02\x00\x00\x00a\x00\x00\x00udrw'
 b'c\x00\x00\x00\xdf\xbd\x87\xb0\xe5l\x00\x7f\xe9\xb7=\xe9\xcc\x80g-'
 b'\xa5\xdb\x0fd\t\xf8Io\xbct#\xc2C\xceJ\x80\x11h\x9d}\x9f;\x0b\xec?\n\xf1^'
 b'\xfd>\n\x8d1\xd7\xf9!!\x10k%A\x1d\xc6\xb9\\|\x8e\xff\xb4l\xd2\xbf\xf6za\x87'
 b'o{C"\x8d\x9b@\x8c^G@\x16zef\xfd\xfeU\x9e\xaa\\\x1dSk\x9d\xfelRo4\xb9\xd5'
 b"\xba\xc7\x88W\xa2c.\x85S#\xe0'\xf1\x1d\xca\xf8\x84C\xdf\xf9>")

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

{'A1': [{'B1': 5330020484360414509,
         'B2': 48239,
         'B3': 1261090145424253812,
         'B4': 0.8763712039043812,
         'B5': 10},
        {'B1': -2940414006550241551,
         'B2': 8697,
         'B3': -5060324965666320351,
         'B4': -0.28788495022485505,
         'B5': 246}],
 'A2': 'za',
 'A3': 'udrw',
 'A4': {'C1': 4655469818118107015, 'C2': 140},
 'A5': 223,
 'A6': -441415747,
 'A7': {'D1': 94,
        'D2': [2048278599,
               4278019685,
               1554685525,
               2641056541,
               1867672830,
               3134568756,
               2723645639],
        'D3': -1069639944147489181,
        'D4': -2064070115,
        'D5': 0.4880314767360687},
 'A8': 7458186285060450687}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FJBLN\\\xa1\x00\x00\x00\x05\x00k\x00\x00\x00\x02\x00\x00\x00p#k\x0c'
 b'Z\xff\xd2]C5?s\x19\xdc=\xcd\xa4X\xf4F\xab\xbd\xcf\xbfB\x89T\xaa\xb1\xf3Qx'
 b'\x8f\x1ar> #(7\x9a/\rj{\n\x03\xe0\x18\x01E$wh\xe9\xaf\xd0\x80\x18\x15'
 b'\xc1\x12/\x1f"\xcfO\x8cEM\xc1\xa3:\xcd\xe2O\xcc\xf7\xf0\xe8x\xb6O\xf5'
 b'\xc1\x06ihfabiP\xf1S_r\xa4\xe8\x92\x8a\x16\xf6*')

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

{'A1': 23713,
 'A2': 'hfabi',
 'A3': {'B1': [{'C1': 20721, 'C2': 21343, 'C3': 114, 'C4': -92},
               {'C1': -5998, 'C2': 35350, 'C3': 246, 'C4': 42}],
        'B2': 35},
 'A4': 7713640316571304757,
 'A5': {'D1': 0.9496133327484131,
        'D2': 1036887128,
        'D3': [17601945025346749065,
               6100884303828782874,
               8232052504250522159,
               966720352969299969],
        'D4': 69,
        'D5': [2627684260480319512,
               1567554138896781135,
               10107570432765513186,
               5750243438309717583]},
 'A6': -171899287}

Пример 2

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

(b'FJBLN\x00\x0b\x00\x00\x00\x02\x00k\x00\x00\x00\x04\x00\x00\x00m\xc6\xed\x1e'
 b'\xca\x7f\xfc\x0bv\xac\xbf@;&F\xe7a\x9fTD\x154\x80m\xbf\x02\xe3l\x8d\xa5\rR'
 b'Y\xa9\xd7(!\x18\xdb7\x01\x98\xc5\xb6\xdbnZ\xee\x08\x9e\x9a\xb9'
 b'\xec\xa1\xf4\xfat\xe5J\xc4n\x1f\x968\xc4\xff\x987\n\xc0ei?{z\xe7'
 b'\xc8\xb8~\xbe\xf3\x00\x17\x08\x85\x02%ea\xd8\xa5\x9c8e\xb5\x94\x1c\x06_\x91'
 b'\xcdC\x17\xc2\x7f\nh\x1c\xbd\x16\x9b\xeb\xb4')

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

{'A1': 11,
 'A2': 'ea',
 'A3': {'B1': [{'C1': -10075, 'C2': 39992, 'C3': 101, 'C4': -75},
               {'C1': -27620, 'C2': 1631, 'C3': 145, 'C4': -51},
               {'C1': 17175, 'C2': 49791, 'C3': 10, 'C4': 104},
               {'C1': 7357, 'C2': 5787, 'C3': 235, 'C4': -76}],
        'B2': 198},
 'A4': -1360427386381044052,
 'A5': {'D1': -0.750902533531189,
        'D2': 1189568927,
        'D3': [6072001512839429890,
               16387628884127013289,
               15503678107863679384,
               14246815738251577502],
        'D4': 154,
        'D5': [13397261065066440010,
               14154285408930037656,
               3966193963643140986,
               16701802072612470807]},
 'A6': 142934565}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xddVANDN\xf2U\x0b#!\x00\x00\x00\x01X\xb1\\?w\xcc[\xc9\x88=\x04\x00D'
 b'\x00\x044UE\xeb\x11\xfe\x19\xf3\xee\xb5X_1\x82G\xb8\x8f^\xbc\xf3%\xfb'
 b'\xd6\xb8\x98I{\x03\x89X\xd8JN?\x02\x00\x1d\x00\x96g\xac\xba]\xf5\xb2.'
 b'\x82\xbb\x89Ob=S=\xa2\xeb\x8915\xa5\x97\xc8\x7f\xdd\xc89u\xadW:\xea1\x1b\x18'
 b'\xd6\xeb\xc0M\x18Yt\xa4\x1aL~$\x9b\xdc\xc2\x83e\xba\xa7b\xd3\xc4 \x9b'
 b'\xb8\x8c\x82\xb2\x04\x91Z/')

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

{'A1': {'B1': 78,
        'B2': 587945458,
        'B3': {'C1': {'D1': 436081131,
                      'D2': 243,
                      'D3': -5168018898819697170,
                      'D4': [24207, 62396, 64293, 47318, 18840, 891, 22665],
                      'D5': 0.8058295249938965,
                      'D6': [13316, 17749]},
               'C2': 1}},
 'A2': 0.8620810508728027,
 'A3': 52343,
 'A4': 0.06679030507802963,
 'A5': [{'E1': -1163106410,
         'E2': [783480157, 1334426498, 1028865378],
         'E3': -94},
        {'E1': 892439019, 'E2': [2143852453, 1966721245, -365275219], 'E3': 49},
        {'E1': -338290661,
         'E2': [1494764992, 1276814452, -593812354],
         'E3': -62},
        {'E1': -1480956541,
         'E2': [549770082, -2104706917, 1519453362],
         'E3': 47}]}

Пример 2

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

(b'\xddVAND{\x05K\xa3a%\x00\x00\x00:s\xb3\xb0\xbdl\xb5C\r6\xbf\x05\x00H'
 b'\x00\xc3\xb8\x0b\x9eB\x86Nf\xbcC\xa4Vz\xfb\xad\xbb\x15\xf3@\xf7\x81\xce\x14'
 b'4\xeb=U\n\xf7\xc4Q\xb5P\xa1\xf1@]\x04?\x04\x00\x1d\x00\xe06^;&!\xa7\x85'
 b'\x8e\x06\x16-Q\x91\xb2\xc8\x8e \xc2\xb0\xdf\xa7|./\xca\xc0\xa4'
 b"\x18\xab\xb4\xb4\xa1i\x9d'0D\xcd\xff\xeb;\xf1F\x8eJ%\x8c\x8f\xeba\x8cj\x84S`"
 b'\x17\x8f^8\x1c\xcfK\x9bNw\xb2\x8a\xc5\xa6\xea8\xce(\xd50E|\x91\xcf'
 b'\xc7g\xfb\x9d\xe3')

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

{'A1': {'B1': 123,
        'B2': 1638091525,
        'B3': {'C1': {'D1': 1453605820,
                      'D2': 122,
                      'D3': -9081718710783463941,
                      'D4': [5326, 60212, 21821, 63242, 20932, 20661, 61857],
                      'D5': 0.5170478820800781,
                      'D6': [-18237, -25077, -31166, 26190]},
               'C2': 58}},
 'A2': -0.08627977222204208,
 'A3': 46444,
 'A4': -0.7111398577690125,
 'A5': [{'E1': 996030176,
         'E2': [-2052644570, 756418190, -927821487],
         'E3': -114},
        {'E1': -542064096,
         'E2': [791575719, 413450442, -1581992789],
         'E3': 105},
        {'E1': 1144006557,
         'E2': [1005322189, 1250838257, -342914011],
         'E3': 97},
        {'E1': 1401186956,
         'E2': [1586435936, 1271864376, -1300803941],
         'E3': -118},
        {'E1': 954902213,
         'E2': [819275982, -812549051, -1644468281],
         'E3': -29}]}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xd1FJB\x00*C3\xf3\xd4\xf6\x9b\x870\x00\x00\x00\x03\x00\x00\x00K\x00\x00'
 b'\x00\x04\x00\x00\x00~>*\x12\xeb\x00\x86\xab\x94=R\x83\xdaT\xb7;n\x88\xe3'
 b'2\x96\x95\xd2\x16\xdb\x01\x00\x00\x00\x02\x00\x00\x00(T\xbd\xc5\xcc\x81'
 b'\xc4\x83Sc:\xc0b)\xde\xb0\xdd\x07\x10m\xfa\xd4\x00\x00\x00\x02\x00\x00\x00?'
 b'\xff\xda\xedj\n\xea\xf0\xb2l\x00\x00\x00\x02\x00\x00\x00C\x9d\x0b.'
 b'\xda\xef\x15\x99\x9c\xd9\x00\x00\x00\x02\x00\x00\x00G\xa90E=r\xc8'
 b'{\x87\xbf\xe5%\xb3hG\x93\xdc\xb5')

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

{'A1': {'B1': 21687,
        'B2': {'C1': 15214,
               'C2': -120,
               'C3': [{'D1': -7374, 'D2': 38549}, {'D1': -11754, 'D2': 56065}],
               'C4': [131, 218]}},
 'A2': 4842482120349419312,
 'A3': [{'E1': 41, 'E2': -2400175578978321708, 'E3': [21693, 50636]},
        {'E1': 255, 'E2': -2671362408836976020, 'E3': [33220, 33619]},
        {'E1': 157, 'E2': 805822103740325081, 'E3': [25402, 49250]}],
 'A4': [43312, 17725, 29384, 31623],
 'A5': 0.1660877913236618,
 'A6': {'F1': -0.6608521496497093, 'F2': -75},
 'A7': -1416348334}

Пример 2

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

(b'\xd1FJB\x00*(\xd1\xab\xa3\xad~\xfb@\x00\x00\x00\x04\x00\x00\x00O\x00\x00'
 b'\x00\x02\x00\x00\x00\x93?/\xe7Z\x00\x974\xf6\xf3\xe6Sq\xe2\x80\xfd\xda\xeeM'
 b"\x97\xdcM\x11\x1a\x00m\x00\x00\x00\x02\x00\x00\x00(n\xf9'\xa6)"
 b'\xb2\x88\xc7\xbb-\x1f\xfbP\x84\xd4G\xa6\xd2\xae\xaaX\r\xbe\xd8\x06'
 b'\x00\x00\x00\x02\x00\x00\x00?\x80H\xc5\x9d\x8fLMV%\x00\x00\x00'
 b"\x02\x00\x00\x00C\x94\xe5\xbf'\xb8\x87\xd1\x959\x00\x00\x00\x02\x00\x00"
 b'\x00G\xd4\x1f4\xdb\x12u\xe7\xe9\x9f\x00\x00\x00\x02\x00\x00\x00K6'
 b'\xaa\xd1\xc3\xbf\xca]]$\x9b!\xc8\xd7')

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

{'A1': {'B1': -7552,
        'B2': {'C1': 64986,
               'C2': -18,
               'C3': [{'D1': 19863, 'D2': 56397}, {'D1': 4378, 'D2': 109}],
               'C4': [83, 113]}},
 'A2': 2941320751128443712,
 'A3': [{'E1': 166, 'E2': -3265485384632575994, 'E3': [28409, 10150]},
        {'E1': 128, 'E2': 5243770579928831525, 'E3': [10674, 35015]},
        {'E1': 148, 'E2': -1891749644966193863, 'E3': [47917, 8187]},
        {'E1': 212, 'E2': 2248662986298747295, 'E3': [20612, 54343]}],
 'A4': [13994, 53699],
 'A5': 0.6871238946914673,
 'A6': {'F1': -0.20597423827554295, 'F2': -41},
 'A7': 888599526}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xf6TCGPs\x00\x00\x00\x02\x00\x00\x00\xa0\x00\x00\x00\x13\x96\xc1'
 b'\x89\xc9\x9aAY\xcc\xec\xe0\x0f\x9e\x82\x94\x17H\xee\x0e8h#\xbe<\x0esW'
 b'm\xfa\x16\xbb\xad\xdd\xd4@m\x9c\xe7l\xa2\xb6g\x02bK4\xc7\xd2v\xef\xf8'
 b'\xea\xfe\x997\x01\x82k\xe9|"\x1cX\xf8,\\P\x9e/\x17\xed\xc6a\xe9\x88'
 b'Y\x85\xb8N\xbf\x95\xaa\xd2\\\x92\'\xc2\xaaS"R\x03u\x06\x01Tq\xc4~-\xbddQ'
 b'\xad\xc6j[\x03\x08\x00\x00\x00\x11\x00\x05\x00I\x00\x00\x00\xce\x15\xa3'
 b'\x95q\x00\x00\x00\x0f\x08\x1b\x94R\xc6\x98\xba\x08Y\x83\x85\xccWRm\xca\xff='
 b'\xecF(\xbf')

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

{'A1': {'B1': 11646,
        'B2': 241904406538314941,
        'B3': [{'C1': [-27117, -30271, -25911], 'C2': 65},
               {'C1': [-13223, -7956, -25073], 'C2': -126},
               {'C1': [6036, -4536, 14350], 'C2': 104},
               {'C1': [-16861, 3644, 22387], 'C2': 109},
               {'C1': [5882, -21061, -11043], 'C2': 64},
               {'C1': [-25491, 27879, -18782], 'C2': 103},
               {'C1': [25090, 13387, -11577], 'C2': 118},
               {'C1': [-1809, -278, 14233], 'C2': 1}],
        'B4': [-551660019902747774,
               -4112605391432426452,
               -4661585681409578655,
               -6142303432203916651,
               6053126473799311955],
        'B5': 2510493134,
        'B6': {'D1': 113, 'D2': -60},
        'B7': [15, 8, 27, 148, 82, 198, 152],
        'B8': 5933435907890284730},
 'A2': [0.12489781528711319, -0.657332181930542]}

Пример 2

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

(b'\xf6TCGPl\x00\x00\x00\x05\x00\x00\x00\x99\x00\x00\x003\xe3\xaa\xe0\x82k#'
 b'\x04h\x0b\xa8C\x06:\xbf2o\xa2\r\x9f\xbf\x13\xa1vg\t\xefJ\x8f\xc2\x82'
 b'\xf7c\xe6\x00*\xc6}h\xf0\xdctT\xea\xcd\xab\xf8+G"\xa7\xb9Y\xdfd2@\xac\xc5'
 b'#\xd1\x07\x8b\xc2\xc8\xbf)\xb2_L\x85\x9e\xb7\xa8R\xc3\x9c\xd0d\xc2qj\xf9'
 b"\x90\x1e.j\x9e$\x06\x85\x8e\xda#\x84D\xfb'\xe2\xa6u\x07\x00\x00\x00\x11\x00"
 b'\x05\x00B\x00\x00\x00\x0eg<~j\x00\x00\x00ch@\xe5cX\x1f<_\xd47\xe9\x94\xd2'
 b'\x0eV\x03m\xbf\x1b\x9d\xce\xbd\x87\xb5\xba=(G5?\x14f\x7f\xbf')

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

{'A1': {'B1': 55950,
        'B2': 8477712009918710819,
        'B3': [{'C1': [-7373, -8022, 27522], 'C2': 35},
               {'C1': [26628, -22517, 1603], 'C2': 58},
               {'C1': [12991, -23953, -24819], 'C2': -65},
               {'C1': [-24301, 26486, -4343], 'C2': 74},
               {'C1': [-15729, -2174, -6557], 'C2': 0},
               {'C1': [-14806, 26749, -8976], 'C2': 116},
               {'C1': [-5548, -21555, 11256], 'C2': 71}],
        'B4': [4625870677708744482,
               -3980466254952282708,
               -5215584755378935361,
               8197225118913745576,
               2638663177999546730],
        'B5': 2117887758,
        'B6': {'D1': 6, 'D2': -123},
        'B7': [99, 104, 64, 229, 99, 88, 31],
        'B8': 1068079791025184572},
 'A2': [-0.9258321523666382,
        -0.10088559240102768,
        0.09116654843091965,
        0.7081170082092285,
        -0.9976513385772705]}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'GAV\xcc\x81\x00\x02\x00\x00\x009@\xa1\x00\x02\x00E3\x0c*[Ip\xab\x82\x00M9'
 b'@\x00\x00\x00\x04\x00\x00\x00cG\xa1\xcb\x10dq\xbf2\x9e\xc50\xe5:\x13\xa4'
 b'<\x00\x02\x00kne?r\x1b\xab\xec\xbf\x01\xa1\x90\xde\x00\x00\x00;\x00\x00\x00'
 b'@\xb4\n\xa2\xd7?\xe1g\xc0|\xd5S\x1a\xc5?\xd8\xaa\x02F*j\x18\x17\x07'
 b'!\xd4\x9fe\x1b\x9c\x8b\x1e\xad~\x84')

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

{'A1': -13183,
 'A2': {'B1': 'ne',
        'B2': 16545,
        'B3': [{'C1': 0.9457346796989441, 'C2': -20},
               {'C1': -0.5063714981079102, 'C2': -34}],
        'B4': 3678361567217363842,
        'B5': {'D1': 3020595927,
               'D2': 0.5439150274420144,
               'D3': 197,
               'D4': 0.3853765187465412,
               'D5': 23},
        'B6': 14656,
        'B7': [1825, 54431, 25883, 40075],
        'B8': 5161629919208390450},
 'A3': 2663723237,
 'A4': {'E1': 974365756, 'E2': [7853, 32388]}}

Пример 2

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

(b'GAVx\xc5\x00\x04\x00\x00\x009\x81~\x00\x02\x00G\x18a\r\xa9\x828c\x02\x00O;'
 b'\xeb\x00\x00\x00\x04\x00\x00\x00e\xf1l\xd8\x11UM\n\xbe1\x1b\x8f'
 b'\x98\x96\x8b\x87\x13\x00\x02\x00mxqnp>\x17\xd85W>\x89A\x924\x00\x00\x00=\x00'
 b'\x00\x00B\x0c`*\xd7\xbf\xe2\x1d\x81\xdfY\xd4vZ?\xd9\xb1\xdeS\x83\xf10'
 b'\x83\xefx\x162\xcb\x19Y\xf5\xb8r\x93\xf1')

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

{'A1': 30917,
 'A2': {'B1': 'xqnp',
        'B2': 33150,
        'B3': [{'C1': 0.14828570187091827, 'C2': 87},
               {'C1': 0.26807838678359985, 'C2': 52}],
        'B4': 1756700351336571650,
        'B5': {'D1': 207629015,
               'D2': -0.5661019670793752,
               'D3': 90,
               'D4': 0.40148122936058694,
               'D5': -125},
        'B6': 15339,
        'B7': [61304, 5682, 51993, 23029],
        'B8': 17396517029582539454},
 'A3': 823889816,
 'A4': {'E1': 2525726483, 'E2': [-18318, -27663]}}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xf2FMGP\x00\x00\x00\x80\x9b\x8b\xde\x13\x16\x95\xbf\xfd9\x19\x98'
 b'\x9a\xc1\x06i\xd2\x88\x94 \xdc\x1a\xa7q/h\x10\x00\x00\x00\x19\x00'
 b'\x00\x000\xaf\xca\x83\x91\xfes\xa3\x02\x00"\x00\x00\x00T-4\xe8'
 b'\xe9\x0c\x05\xca)[!\x94;r\xa1/\xa6,g\xf5\xdb\xcb\xe6\xc3W\xa8*\x00'
 b'\xf2~\xed\xe3\xef\x08\xd8D\xbe{\xb1*3\x86\x03\x00\x00\x008\x00O\x13\\u'
 b'\xd6\x15K|i\xd3u$\xbc^\xe0\xd4\xc5\x94\xdc\xfd\xbd\x83')

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

{'A1': {'B1': 43095,
        'B2': {'C1': 11778037351438790448,
               'C2': [{'D1': 253, 'D2': -3285087024597952199},
                      {'D1': 136, 'D2': 7507344066374017172}]},
        'B3': [3823992562, 1155008751, 716274622],
        'B4': 34355,
        'B5': [-3889688504401908396, 3432149991246879529, -4330549846094697306],
        'B6': [4943, 30044, 5590, 31819, 54121, 9333, 24252],
        'B7': 9493022713397499104},
 'A2': -0.02059203191575021}

Пример 2

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

(b'\xf2FMGP\x00\x00\x00\x80&\x9d\x13\x11h\xbf\xbfi\xb1\x8e\xa6*b\xfe\x87'
 b' \x1e\x08Q\xe3t\xbe\x94\x1f\t\x10\x00\x00\x00\x19\x00\x00\x00\xc82\x96{\xe60'
 b'Ri\x02\x00"\x00\x00\x00\xe6\xc0\xb4\xa9\x95\xf1G\xbb3\x92\xad\x0e'
 b'\xdb\xb1+\xee{\x13v\xad\x19\xa2\xab\xbb\x8b\xf6*\x00\x89B\xf1O\x18|\xd9\x9f'
 b'\x03\xf8\x08\x94\xaf`\x03\x00\x00\x008\x00\xeaF\n^d\xc8\x84D8\xb0\x18\x02'
 b'\x87\xc6\xa6L\xd5\xf7:\x99Y\xdb')

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

{'A1': {'B1': 63115,
        'B2': {'C1': 7589182088546759368,
               'C2': [{'D1': 105, 'D2': 2344121828645441201},
                      {'D1': 30, 'D2': 657407616345133320}]},
        'B3': [1341211273, 2681830424, 2483615747],
        'B4': 24751,
        'B5': [-4951723640170954522,
               -1284737714281934285,
               -4923663536431426693],
        'B6': [18154, 24074, 51300, 17540, 45112, 536, 50823],
        'B7': 15805832845778570406},
 'A2': -0.12268168190817086}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'AOHP9h:\xcf\xe5hv\xc6\x00\x03\x00\x00\x00u?\xeb\xbc\xfa.\xd8\xa3|-\xe3'
 b'\x00\x00\x00\x93Yc\x87\x1c\x02\x83\xd3\xea\x08\xb4K\x00\x03\x00 \xbf'
 b'\xba,\x8f\x9c\x93\x8f@\xa8\x02 O\xd1\xac\xa8\xb0\xd1\xaeI\xcc\xbdk\x8dkX'
 b'\x04\x00\x06\x00;\xbf\xe6\xe5\x10\xdf\xa1\xa2\x98\x8a%\xe7\xc3UK&~j\x1f1'
 b'\x8a\xa4\xd8\x0c\x7f\x00\x04\x00Y?\xe2\xf4\x9a\x03^\x07*\xb7\x1e\xef'
 b'f\x00#\x00A\x00]?"\xb7a\xbf`VD;\x8ald\xbe\x1c\x96\x89>u\xb2\x0c\xbeW6-\x00'
 b'\x00\x00\x06\x00\x00\x00{\xf7\xf5pQ\x13j\x0b\xd6Tl\xdc-\x1b\xa4\x82\xc7#'
 b'z\xe1\x1d\xca\xd3\xee\x12\xdd&\xa6\xec@\xf0\xec\xfd\x13bP\xc8')

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

{'A1': 57,
 'A2': 1748684773,
 'A3': 'hv',
 'A4': 198,
 'A5': {'B1': [{'C1': 469926867,
                'C2': -368528309,
                'C3': [89, 99, 135],
                'C4': -0.10224244663873794,
                'C5': 2818711631},
               {'C1': 1238154603,
                'C2': -1922344956,
                'C3': [209, 172, 168, 176, 209, 174],
                'C4': -0.7154621475029499,
                'C5': 2317739971},
               {'C1': 1780429194,
                'C2': -1529344897,
                'C3': [85, 75, 38, 126],
                'C4': 0.5923585954444424,
                'C5': 3072257894}],
        'B2': 0.866818515297481,
        'B3': 11747},
 'A6': {'D1': [0.6356106400489807,
               -0.8763163089752197,
               0.004224346950650215,
               -0.1529179960489273,
               0.23993700742721558,
               -0.21016760170459747],
        'D2': -2059,
        'D3': [1884361578,
               198595692,
               3693943716,
               2194088826,
               3776826067,
               3994213670,
               2800500976,
               3976008546],
        'D4': 80,
        'D5': -56}}

Пример 2

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

(b'AOHPe\x7f\xc1)\xc2fo,\x00\x02\x00\x00\x00Z?\x96|K}\x83E@\xb2k\x00\x00\x00n'
 b'I\xf1\xff\xd6\x90\xfb\x9e\xed\xcf\xdab\x1f\x00\x04\x00 ?\xbdx[r\x02\x1a\x90'
 b'\xd5XQ\xc97\xbcE\xaaF\xa5T\xf8up\x15w\x83\xc3\x00\x06\x00<?\xe0S\xd2\xa4\xd4'
 b'<\x96\xcd\x03cI\x00$\x00B?>q~\xbe\xdayN\xbche\xd1>\xfe\xbe\xa7\x00\x00'
 b'\x00\x04\x00\x00\x00^\x8f\xb5\xc9\xe0\xb1\x86\xa8\x93\x0798\xb4f\xaca\x86Y5'
 b'\x7f\xa2J\xdc!\xf1? \x17/\xd5\x06L_\x96\x94\x9c\x89')

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

{'A1': 101,
 'A2': 2143365570,
 'A3': 'fo',
 'A4': 44,
 'A5': {'B1': [{'C1': -1862557971,
                'C2': -807771617,
                'C3': [73, 241, 255, 214],
                'C4': 0.1151177552547813,
                'C5': 3579335113},
               {'C1': 1425569136,
                'C2': 360154051,
                'C3': [55, 188, 69, 170, 70, 165],
                'C4': 0.5102322787587521,
                'C5': 3439551305}],
        'B2': 0.02195852235383211,
        'B3': 45675},
 'A6': {'D1': [0.7439192533493042,
               -0.4267067313194275,
               -0.014184431172907352,
               0.49754831194877625],
        'D2': -28747,
        'D3': [3386945926,
               2828207929,
               951346860,
               1636194613,
               2141342428,
               569458464,
               389010694,
               1281332884],
        'D4': -100,
        'D5': -119}}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x80NHY\x10\xc9"\x00\x00\x00X\x80\x90\x0e}\x15\xd5\x17\xa9\x14\x1cw\xd2\x9d'
 b'>\x06\xbc\xcc\xee\x9f\xe6q&\xc1\xce\x14]\x1b\x10=[\xceaGD\xf6\xffL3\xee\xe09'
 b'\xec\n\x91\xab\xb9\xe3\x14\x93\xb1u\xd2\xa9x\xc1\x91"Y\xe3\xe5F6\xc115'
 b"&\x90y'Gyugblmw\x00\x05\x00Q\x83\\\xb32\xb6I5\xbd\x1d2'\x1e\x00\x00\x00\x02"
 b'\x00\x00\x00V[\xbf8"\xd7')

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

{'A1': 16,
 'A2': 51490,
 'A3': {'B1': 'yugbl',
        'B2': 33628,
        'B3': 12912583507175087410,
        'B4': 10014,
        'B5': 'mw',
        'B6': 91,
        'B7': -0.7192816138267517},
 'A4': [{'C1': 2156924541,
         'C2': [5589, 6057, 5148, 30674],
         'C3': 40254,
         'C4': 113036526},
        {'C1': 2682679590,
         'C2': [49614, 5213, 6928, 15707],
         'C3': 52833,
         'C4': 1195702015},
        {'C1': 1278471904,
         'C2': [14828, 2705, 43961, 58132],
         'C3': 37809,
         'C4': 1976740216}],
 'A5': {'D1': -1047453095, 'D2': -7195, 'D3': 70, 'D4': 54},
 'A6': -4525777710781749433}

Пример 2

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

(b'\x80NHYj%L\x00\x00\x00Yc\x87\xa3\xf9\rk\xe3\xd1\x05/\x1b\xfc|H\x98V\xf6'
 b'\x03ho\xa2P\x109]\x05\x99\x1e\xb2\x8b\x08\xae\x17\x88)\xa0\xd3\xa4&\xf4\xf4'
 b'I\x1e\x95\xcd\xf33\xb6k3\xd4@\xa4\xfea\xfa\x80\x06\x0b\xe9\x94+\xc3\x8c\x96'
 b'\xf2\x05\xcaB\x07xbwdphdv\x00\x06\x00Q\x83K7`6\xaa\xafD\xef\x07\xd1'
 b'\x1a\x00\x00\x00\x02\x00\x00\x00W\x85>\x0e\xf0\xed')

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

{'A1': 106,
 'A2': 9548,
 'A3': {'B1': 'xbwdph',
        'B2': 33611,
        'B3': 3990249376563130119,
        'B4': -12006,
        'B5': 'dv',
        'B6': -123,
        'B7': 0.13959093391895294},
 'A4': [{'C1': 1669833721,
         'C2': [3435, 58321, 1327, 7164],
         'C3': 31816,
         'C4': 2555835907},
        {'C1': 1752146512,
         'C2': [4153, 23813, 39198, 45707],
         'C3': 2222,
         'C4': 394799520},
        {'C1': 3550750452,
         'C2': [62537, 7829, 52723, 13238],
         'C3': 27443,
         'C4': 3561006334}],
 'A5': {'D1': 1643806726, 'D2': 3049, 'D3': 148, 'D4': 43},
 'A6': -4355940773350718969}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"RHJU{6C/\x17@\xd7\xf1o'\x16\x874\x94\xf1{V\x93x3\x1f;\x9c\\72\xb6\xa7"
 b'Q\xcdz\x830\x85\x92\x00\x00\x00\x02\x00\x00\x00M}\x0c]^\x18\xf7\xc2\xb8\x9f'
 b'\xaa\x00\x00\x00\x05\x00\x00\x00\x89\xbe\xb2\xc8\x8fu\x88L\xbc\x02\x81\x0c'
 b'T\xf9\x00\x00\x00\x02\x00E\x82eL\xdf\x85\xa1\xc1g\r(\xb0\xe5m5R6M\xc1W\xf3'
 b'\xda\xb0\x85\xe5\x00\x00\x00\x02\x00I[\xfc7/\x8cHU\x1a\x9e\xb9\xde]\xd7`'
 b'\x07\x10\xc2X1(\x05\x8al\xd8m\xd0h\x88')

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

{'A1': {'B1': 13891,
        'B2': [{'C1': 12055, 'C2': 1087893871, 'C3': 39},
               {'C1': 5767, 'C2': 882176379, 'C3': 86},
               {'C1': 37752, 'C2': 857684892, 'C3': 92},
               {'C1': 14130, 'C2': -1230548531, 'C3': 122}]},
 'A2': -2093972078,
 'A3': [{'D1': {'E1': -7, 'E2': [30088, 19644]},
         'D2': -2107290401,
         'D3': 133,
         'D4': [41409, 26381, 10416, 58733, 13650, 13901, 49495, 62426],
         'D5': 45189},
        {'D1': {'E1': -27, 'E2': [641, 3156]},
         'D2': 1543255855,
         'D3': 140,
         'D4': [18517, 6814, 47582, 24023, 24583, 4290, 22577, 10245],
         'D5': 35436}],
 'A4': 125,
 'A5': 12,
 'A6': 6727842345740967850,
 'A7': [216, 109, 208, 104, 136],
 'A8': -0.34918639063835144}

Пример 2

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

(b'RHJU{c\x8cN^\x97\xcf\xbda\xc08\x155.9&\xbe\x98\xe6\x989\x885u^\x8a?_'
 b'-z\xde\x13\x9b\x1c\x8e\x00\x00\x00\x03\x00\x00\x00Q\x1d3\xb7\x93\x02'
 b'\xce\x99\x97\x93\x92\x00\x00\x00\x05\x00\x00\x00\xab=\xb2\xd2(\xb9L\x1e'
 b'Ae`\xd1\xe5\x91\xa8\x00\x01\xfb\x00\x00\x00\x02\x00E\x1c\x1d0g5\xed\x02O'
 b'\x8c\xc5\xda\xab\xcdQ3B\xf4L\xb8UJ\x11\xa4B\x00\x00\x00\x02\x00IDa'
 b'\xeb\x99\x0b\xafA=e\x88\xcb\x8bb\xa3\x03)\x95w\x07\x96\x0c\xfe'
 b'\x9a\x05\x00\x00\x00\x02\x00M\x00\x93\xc56\x87\xe3(7\x85\xb3K\x8d\x01i5\xd6'
 b'\xbe\xf1\x9dv\x83\x1a\xcdb\xae\xf8Z\x11')

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

{'A1': {'B1': 25484,
        'B2': [{'C1': 20062, 'C2': -1747993247, 'C3': 192},
               {'C1': 14357, 'C2': 892221734, 'C3': 190},
               {'C1': 39142, 'C2': -1741060043, 'C3': 117},
               {'C1': 24202, 'C2': 1063202170, 'C3': 222}]},
 'A2': 328932494,
 'A3': [{'D1': {'E1': -5, 'E2': [47436, 7745]},
         'D2': 471674983,
         'D3': 53,
         'D4': [60674, 20364, 50650, 43981, 20787, 17140, 19640, 21834],
         'D5': 4516},
        {'D1': {'E1': 66, 'E2': [25952, 53733]},
         'D2': 1147267993,
         'D3': 11,
         'D4': [44865, 15717, 35019, 35682, 41731, 10645, 30471, 38412],
         'D5': 65178},
        {'D1': {'E1': 5, 'E2': [37288, 1]},
         'D2': 9684278,
         'D3': 135,
         'D4': [58152, 14213, 45899, 36097, 26933, 54974, 61853, 30339],
         'D5': 6861}],
 'A4': 29,
 'A5': 51,
 'A6': 13227919616880645010,
 'A7': [98, 174, 248, 90, 17],
 'A8': 0.0873149037361145}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xbeGUS0\x1fx\xd4\xd65\x12\x1e\xbf\xce_i\xb5\x9a\x82`\x9d\x00\x00\x00'
 b'\x02\x00x,P\xde\x00\x04\x00\x80\xf9\xd0\x14(Tm\xf9\x8ag  \x05\x1a*'
 b'h\xc0\x00\x00\x00\x86\xe5\x07\xf4\x9a\t\xed\x85\xc3\xd3#\xa5\x99p\xc7'
 b'\xb5\x0e\xf2\x99D\xc0\xbf\xdb\x1c<\x00\x00\x00\x03\x008734.\xb5\x1f\xea\xc0'
 b'\xb1\xf4\xb9\x8f\\\xaa\x11\xde\xcb\xde\xd8\x03b\x01\xcb\xd0\xed\xc1\x00\x00'
 b'\x00\x03\x00X~\xcc\xe1E\x00\x00\x00>\x00\x00\x00^moqjI\xc0\x8c\x01"\x00E\\'
 b'Bd\xd4?Ww\x97\x00\x02\x00\x00\x00\x84')

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

{'A1': 3467623093620773406,
 'A2': {'B1': -0.23728677146302157,
        'B2': {'C1': -99,
               'C2': [{'D1': 3542328729,
                       'D2': 8126663128417649856,
                       'D3': 49115,
                       'D4': 7228,
                       'D5': [-2918, 2541, -31293],
                       'D6': 926102574},
                      {'D1': 3113180330,
                       'D2': 1287690701441819137,
                       'D3': 52176,
                       'D4': 60865,
                       'D5': [-19169, -5440, -19980],
                       'D6': 2127356229}]},
        'B3': 11344,
        'B4': -34},
 'A3': 'moqj',
 'A4': 18000909874047613322,
 'A5': 7430974591447230656,
 'A6': {'E1': -116,
        'E2': 81628041146688724,
        'E3': 0.8416685461997986,
        'E4': [73, 192]},
 'A7': 58631}

Пример 2

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

(b'\xbeGUS\xdc\xf89.O\xfd\xe8\xeb\xbf\xe8YW\xb4N\xda\xcc\x06\x00\x00\x00'
 b'\x03\x00\x9cI\xd3W\x00\x07\x00\xa8f\x8a\xad02u\xfe\xcb\xc5w\x1fx\x11\xb2'
 b'd\xb1\x00\x00\x00\xb2tR\x81:\xb0\xa0\xa7\x86\xa5n\xa8Y\x85\xc9)\xf0\x96\xc8'
 b'\xfb*Uj\xa3\x0ef\xe9\x00\x00\x00\x04\x008\xcb\x15\xcdX\xe5v4`:\xfb'
 b"\xac'\x9c\xdf\x11\xf4\xc7\x94\xcb\xf6\xff\xca\t\xa0\xf1(\x00\x00\x00\x03"
 b'\x00Z\xbd.\x18\x98\xca\xa2\x00)\xe4\xcb#\xf3\x96[\xb85\x8d.\xe3\xc1/\x0b'
 b'T\x0b\x98\xb1m\xeb\x00\x00\x00\x04\x00z\xe1t\xb1Y\x00\x00\x00@\x00\x00\x00`'
 b'\x00\x00\x00\x82efkkavx\xc1\xa4\xec-\xec^\x92gN@\xd0\xb7>\x9a\xdf1\x00'
 b'\x03\x00\x00\x00\xaf')

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

{'A1': -2524204720067843861,
 'A2': {'B1': -0.7609060784951338,
        'B2': {'C1': 6,
               'C2': [{'D1': 2824439241,
                       'D2': 3022081139917084010,
                       'D3': 41742,
                       'D4': 26345,
                       'D5': [-32454, -20320, -22650, -23186],
                       'D6': -887763624},
                      {'D1': 2888277215,
                       'D2': 1293878434853224394,
                       'D3': 2464,
                       'D4': 61736,
                       'D5': [-6794, 13408, 15099],
                       'D6': -1121052520},
                      {'D1': 2522593333,
                       'D2': 10173319027133993995,
                       'D3': 39089,
                       'D4': 28139,
                       'D5': [-13662, 41, -6965, 9203],
                       'D6': -512446119}]},
        'B3': 18899,
        'B4': 87},
 'A3': 'efkkavx',
 'A4': 7388908561171349195,
 'A5': -4217867925455739727,
 'A6': {'E1': 45,
        'E2': -1414532260555599689,
        'E3': 0.30248406529426575,
        'E4': [193, 164, 236]},
 'A7': 29778}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'PTZIH.5\x99z\x04\xbfu\x00\x03\x97\xe1\x02\xb77\x03\x82<\x15\x11\xccw\xe2\xf1'
 b'\xe9\xb6\xe3?n>\x18)\x02\x00\x00\x00\x81\x00\x00\x00\xa9\xfc]?\x87\x9a\xf6>'
 b'\xe2\xefM\xbf\xe3X\x9f\xbe\x16-L?\x08\xdb\x06L^H\xd8\xc2tT\xe5\x9a'
 b'\x0eU\x0e\xf07\xac\xd8\xcf\r\xdcp\xf6\xca\xfc\xe4\x1f\xae\x03+\x93\x98\xb9*T'
 b"\x01\xc30\xddX<\x03\x00\x00\x00\x99\x00\x9f\x00I*\xeb\x92\xf5't\xc4\xaf\xe6"
 b'\x8a^\xc6\xe6\xae\xa57\xe6>E\xa7\x8a\xf2\x14!\xf0A\x95\x04>\xbfR\r\xfa'
 b"b\xf5\xd9FJ\x044D'\x0e\xa6\xc4\xe4\x02\xf0\x84x*\xf2\x1e\x80")

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

{'A1': 46,
 'A2': 53,
 'A3': -0.5174956917762756,
 'A4': {'B1': 1948775826, 'B2': 12602978716602511300},
 'A5': {'C1': 3,
        'C2': 57751,
        'C3': 1230956602253096706,
        'C4': {'D1': 0.6160783504781135,
               'D2': 689454702,
               'D3': [{'E1': 0.4496432840824127, 'E2': 4751333980728108869},
                      {'E1': -0.7422574162483215, 'E2': 5352204855127182674}],
               'D4': [0.867136538028717,
                      0.48164770007133484,
                      -0.8044415712356567,
                      -0.311225026845932,
                      0.7975629568099976],
               'D5': -9464,
               'D6': [6085703230667246598,
                      12409651242589919973,
                      18215642607442055128,
                      13373600906431307748],
               'D7': {'F1': 4348468641726026794, 'F2': [13316, 10052, -23026]},
               'D8': {'G1': 58564, 'G2': 9232082550380621826}},
        'C5': 73,
        'C6': -5334}}

Пример 2

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

(b'PTZIH0L}\x11F?u\x00\x85\x18\x17\xc2\xeb\xb8\xec\xced\n}\xa4\xb2\x9f\xa3'
 b'6i\xd8?5\xcbh\x14\x02\x00\x00\x00\x81\x00\x00\x00\xcaM;>\x07k\xde>\x03:\xfa>'
 b'\xc3\xac\x86\xbd\xd9\xefo\xbf\x00\xa9=A\xa7\xbb\xa2\xdb}\xe4"\x8c'
 b'\xf6\x10\x7f\xd5\xf6\xa0\x80G\x13o\xb4XrH\xb4\x1e\x0bp\xef\xd8\x0e_\xebD'
 b'\x9fr\x82)\xfa\xe3\x03\x00\x00\x00\x99\x00\x9f\x00\xef\x81+F#\x86'
 b'\xb1\x03\x83\x9cm\x08*\xe5\xc9b7_>\xd2\x1dH\x9d\xb8cE\xceE\x1b >\xcb\xff\xe0'
 b's\\sz\x1f\x11\xb66\x00@E\xbd1P\x05\xfcR\x1c\x19b\xdf')

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

{'A1': 48,
 'A2': 76,
 'A3': 0.7737043499946594,
 'A4': {'B1': 2978358086, 'B2': 14548080386977334019},
 'A5': {'C1': 133,
        'C2': 5912,
        'C3': 9010124844405681090,
        'C4': {'D1': 0.3814217183960784,
               'D2': 342412085,
               'D3': [{'E1': 0.21798470616340637, 'E2': -3583348283939480110},
                      {'E1': 0.15635402500629425, 'E2': 2268252203252776907}],
               'D4': [0.18291392922401428,
                      0.43441030383110046,
                      0.48872384428977966,
                      -0.06575920432806015,
                      -0.9372535347938538],
               'D5': -22272,
               'D6': [16464557304715886909,
                      11598692632061447202,
                      5220332450056718208,
                      6849650606165663412],
               'D7': {'F1': 16427488231032833259, 'F2': [-18927, 54, 17728]},
               'D8': {'G1': 12733, 'G2': 16096455627617600848}},
        'C5': 239,
        'C6': 11137}}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xe3RTOY\xc9\xa9\x11\x00RLgev\x00\x00\x00\x02\x9c\xc1~\xcesjqqjokb\xbd\xb3'
 b'\xc7\x04\xee\x1d\xb9\x8cVe\x03\xf4\x843\xde\xb5JO\x98\xc4\x1f\xbb'
 b'\xc3\x0e\xd4\x82{\xc9\xae\xed\xc9\x92\x9b\x15%\xa4\x85\xc9\xfc\xd5%\xa0'
 b'){\xd1qU\xfb\xccp\xac\x0c\xc6i\xc6\xe3\x86\xb9\xc0M\x8f\x13n9\xdd\x87'
 b'\x10\xa1P\x80:\xeac\x01,\x07\xc7\xa7<\x19\x88)\x9e\xd1\xdc\xf1'
 b'\x08\xc4\xbc\xf1\xd9\xd8\x1c\x84p\x13.\xb7\xdfX\xb4?\x94\xe9\x9ft'
 b'\x1e\x00\x00\x00J\x00\x00\x00K|Y\x13\x87)\x85\xfc\xfc^\xa6\x81R-D\xd9'
 b'\x08z\x17r\x9c!\xfb&\x1bN\xe0\xb8\xb4\x12$\xdd\xef')

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

{'A1': 43465,
 'A2': {'B1': 2126617602, 'B2': -50, 'B3': 'sjqqjokb'},
 'A3': 1701268562,
 'A4': {'C1': -3652,
        'C2': 2216483033,
        'C3': 0.07948110792319851,
        'C4': 1956637076,
        'C5': [{'D1': 80196541,
                'D2': [17583008792587083246,
                       14166159810191307652,
                       14518341671051311903,
                       11827883754285297070],
                'D3': 8874800625074620805},
               {'D1': -78286383,
                'D2': [16412922191335420108,
                       4138266613805791622,
                       16877943637312309213,
                       1818512822811492707],
                'D3': 14125806161959463304}],
        'C6': [324631627,
               -58381945,
               -2119803140,
               -649843374,
               1914141192,
               653992348,
               -1193259493,
               -584838476],
        'C7': -17}}

Пример 2

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

(b'\xe3RTOY\xe2B\x11\x00?t64v\x00\x00\x007\x05\x1exegdugedgoC\xcd'
 b'\x84\x13\xcc\xf1X\x06p \xb2\tyq\xde\x95O\xb8\xf9a\xf5\x88\xed"\x8eZ'
 b';\xce\x08\x9a,\xa81\xb2\x0b/\x07"\xdb|(^a\xd1\x90N\xc7m\xdf\xe1.v\xf1\t'
 b'\x8c\x04rUf\x1d\x86XcX\x1f\x9ai\xfc\xe7Y\xe3"\xcc`}S\xa2H\xe7\xf0\xf5\x93'
 b'\x81\x85\x7f\xd0\xa3I\x8fX\xee\xf5m\x068\xac2\xf9W\x9e\xe6\xbf'
 b'\xf8\xe2\x17\xe4\x1e\x00\x00\x00J\x00\x00\x00\xcb\x07_qk\x99\x1c\x1d'
 b'\xfc\x9b\x9a\x0e7Iq<V;\x82E\x19\xda\xa2O[\xba\x92\t\x9d\x99\xe1\xb3F')

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

{'A1': 17122,
 'A2': {'B1': 2015233335, 'B2': 101, 'B3': 'gdugedgo'},
 'A3': 875983935,
 'A4': {'C1': 22671,
        'C2': 107869678,
        'C3': -0.7068290583750985,
        'C4': 3826770680,
        'C5': [{'D1': 327470403,
                'D2': [698656557710766540,
                       7059876542836273529,
                       14860570961956931829,
                       3389999070871067144],
                'D3': 15087443754654310919},
               {'D1': 1841778320,
                'D2': [327647805565755871,
                       6369031631074121074,
                       2513951869909965343,
                       17358923150745493708],
                'D3': 5306314032091862005}],
        'C6': [1902053323,
               488413547,
               245013500,
               1014057271,
               1166162774,
               1336072729,
               160610907,
               -1277060707],
        'C7': 70}}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YRKN\x89^\x00\x00\x00\xa3\xe2\xd9\xe5\x02\x00\x00\x00\x85\x001\x84!c\xc1'
 b'\xf1\xa0q\xdb\xf7 \xfa\xe2\xe8\xe2\x15\x1e\xf5\x19?,\xbd\x04\x00\x00'
 b'\x00\x1b\x00\xe1\x0e\xfb\x9f\xc4\xe8L\xeb\xbe\x9b\x8c\x02\x00\x00\x000\x00'
 b'\xb5\x13Z\xc3J\x18\xd8:O\xa8\xaf.\x7f\x86r\x81\x7f&\x85\x8f>^\x1f\x08'
 b'\x00\x00\x00A\x00\xa8K\xf8\x02u\xe4S#\x004\x00Q\x00%c\x18\xfa\xe5\xd5\tBM>'
 b'\xc1\xbb\x91!\xebk\xa2\xad\x01\xe3\xba\x80\x80\xb1\x05\n\x9e\xc0\x1d\x7f'
 b'\t\x1c\x02\xa9\xbf\xea\xe0mfH\x05\xeb?')

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

{'A1': {'B1': {'C1': -1973,
               'C2': 29954,
               'C3': 21476,
               'C4': [{'D1': 0.6013964414596558,
                       'D2': 48428,
                       'D3': [-2085, -1504, -5918, 5602],
                       'D4': -31},
                      {'D1': -0.45957112312316895,
                       'D2': 35995,
                       'D3': [-1266, -15201],
                       'D4': -75},
                      {'D1': 0.280312716960907,
                       'D2': 8030,
                       'D3': [23059,
                              19139,
                              -10216,
                              20282,
                              -20568,
                              32558,
                              29318,
                              32641],
                       'D4': -88}],
               'C5': 4195902245},
        'B2': 13529163257139025381,
        'B3': 145,
        'B4': -5343,
        'B5': [-23957, 429, -17693, -32640, 1457, -25078]},
 'A2': 3856261795,
 'A3': [-0.04884421935963301, 0.8443948746271677],
 'A4': 8187809935453684785}

Пример 2

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

(b"YRKN\x89Z\x00\x00\x00\xe5}\xd6e\x02\x00\x00\x00\x81\x00\xe6'\x06T\xeb"
 b'\xa2\x82e.\x85XI\r\xec\xba\xbe\xbc\x8c\x02\x00\x00\x00\x1b\x00\x07'
 b'h\x86\x98\xb7x)\xfe\x15te\x99\x14m\xeb\x9e>\xe0\x01\x06\x00\x00\x00,\x00'
 b'hS\xa1\xaf\xe2&\xf0\xc6\xec\x91\xadT?\x1ed\x04\x00\x00\x00E\x00\xfe\x87;'
 b'!b\xc0\x8d\x1f\x008\x00M\x00\xc6\x17]f\xe7f\xa5\xb6\xa84`\xbbB3\x08P\x07\xdd'
 b'cR\x8e\xaf!\xf0\xad\xa8\xef\x0c\x99\xd2k\xae|\xe5\xbf\xb0\x90\x8f'
 b'\xde\xe1\x00\xb9\xbf')

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

{'A1': {'B1': {'C1': 15239,
               'C2': 25121,
               'C3': 36288,
               'C4': [{'D1': -0.36508217453956604,
                       'D2': 36028,
                       'D3': [-31442, 18776],
                       'D4': 7},
                      {'D1': 0.310389906167984,
                       'D2': 480,
                       'D3': [-31128, -18536, 10616, 5630, 25972, 5273],
                       'D4': 104},
                      {'D1': 0.8307734131813049,
                       'D2': 25630,
                       'D3': [-24237, -7505, -4058, -4922],
                       'D4': -2}],
               'C5': 1717376966},
        'B2': 13501849582080190183,
        'B3': 66,
        'B4': 2099,
        'B5': [1872, 25565, -29102, 8623, -21008, -4184]},
 'A2': 1708555749,
 'A3': [-0.6714698892508593, -0.09766971286404913],
 'A4': 7314587876413810662}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'HXPD\x0e;\x00\x00\x00\x03\x00\x00\x00)\xbf\xc9#\xb8M,\x9b@\xce\x86'
 b'\x02/\x7f\x00\x00\x00\x02\x00\x00\x006\x00\x02\x00\x00\x00Nxmz\xca]\xef\xe1'
 b'\xac\xfb\xd1\x01G\xe7\x00\x00\x00\x02\x00\x00\x00,Q_\xd9W\x00\x00'
 b'\x00\x03\x00\x00\x000\xf11\x82\x084\xd1')

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

{'A1': 3643,
 'A2': {'B1': 'xmz',
        'B2': {'C1': -0.19640258568071012, 'C2': [52870, 559], 'C3': 127}},
 'A3': [{'D1': [51805, 61409], 'D2': 1365236055},
        {'D1': [44283, 53505, 18407], 'D2': 4046553608}],
 'A4': [52, -47]}

Пример 2

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

(b'HXPD\xfb\x9f\x00\x00\x00\x03\x00\x00\x00)?\xc9D\xac\xc19\xbf\x80\xc5\xbe'
 b'\xe9;\r\x00\x00\x00\x06\x00\x00\x00R\x00\x03\x00\x00\x00\x9afea/\xeb\x8d\x08'
 b'\xefJ\xbaf`d\xb4\xb7\xec\\$\x1a\xec@Y\x02\x99\xcc\x95\xae9E\xa1\xff'
 b'\x7fT\x96g\x07}\xdd\x8d8\xac\x00\x00\x00\x03\x00\x00\x00,o\xb1\xbfB\x00\x00'
 b'\x00\x04\x00\x00\x002Y\xb6\xf8\xc2\x00\x00\x00\x03\x00\x00\x00:_\x05'
 b'\x15\xfd\x00\x00\x00\x04\x00\x00\x00@n\x97\x1cI\x00\x00\x00\x03\x00\x00'
 b'\x00H\x89\x98\xbe\xa7\x00\x00\x00\x02\x00\x00\x00N^\x91H\xc2\x9dS\x7f')

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

{'A1': -1121,
 'A2': {'B1': 'fea',
        'B2': {'C1': 0.19740828928797427, 'C2': [50622, 59707], 'C3': 13}},
 'A3': [{'D1': [12267, 36104, 61258], 'D2': 1873919810},
        {'D1': [47718, 24676, 46263, 60508], 'D2': 1505163458},
        {'D1': [9242, 60480, 22786], 'D2': 1594168829},
        {'D1': [39372, 38318, 14661, 41471], 'D2': 1855396937},
        {'D1': [32596, 38503, 1917], 'D2': 2308488871},
        {'D1': [56717, 14508], 'D2': 1586579650}],
 'A4': [-99, 83, 127]}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BJUY\xd9w\xea!\x1c\x00\x00\x00\xf3\xb3-\x00i\x00\x02\x00\x99\x00\x00\x00rehf'
 b'\x92\xc25\x04\x00\x00\x00\x18\x00\x13\xa2c\xd9;\xe9\xe5\x9b\xd0\x0f=\x8d({x'
 b'$XRv\xa3\x02\xbevap\xf7\xbb\x1f\xc1\xbdej\xfa\x89.\x8d\xbdj\xd0h\xf7\x96\xd3'
 b'\x02\x00\x00\x00%\x00\x00\x005z\xc5\xcbvR\xa4\xf0\xc0j\xe5\xbf\xbd\xae=+'
 b'\xb4F\xed\x88\xba\t\xdbG\xc3/\xd4\x05q\x1e\x8d\xe2\x91@\x8cx\xb1\xff\x88\xbc'
 b'\xb3\xbf1E@\x98uW\xaa\x86j\xa1\x03\x00\x00\x00]\x00\x00\x00\xc9=\x06\xec'
 b'\x8c\xad\xfc')

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

{'A1': 569014233,
 'A2': {'B1': -15726, 'B2': 53, 'B3': 'rehf'},
 'A3': 46067,
 'A4': [{'C1': {'D1': 2627985796669181904,
                'D2': 2742440536,
                'D3': 2,
                'D4': 30398,
                'D5': 3153555553,
                'D6': 3353486732434456863,
                'D7': 3496656269},
         'C2': -745080984,
         'C3': [-647781869, -1679431365],
         'C4': 3418716725,
         'C5': 118},
        {'C1': {'D1': -4375287678136423098,
                'D2': 1896207407,
                'D3': 30,
                'D4': 57997,
                'D5': 2022457489,
                'D6': 4985977041158995889,
                'D7': 1467324480},
         'C2': -1586854230,
         'C3': [-1057971118, -1111497366, -1272234578],
         'C4': 3959832009,
         'C5': -116}],
 'A5': [173, 252]}

Пример 2

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

(b'BJUYv\xe3\xcec\x1a\x00\x00\x003\xb3+\x00g\x00\x02\x00\x97\x00\x00\x00vo\xd2I'
 b'\x1e\x02\x00\x00\x00\x18\x00\xf0\x10\xb00\x15\xf6\x95aX\x0e\xd2\xc0\xedGE H'
 b'\x80\x9c)\xf2\xc0\x99Yu2\xf7\xfa\xdc\x98\x186,X\xbf{\xf1\xa1{b\x7f'
 b'\xdb\xde\x02\x00\x00\x00#\x00\x00\x00\x82\xfd\x8e\xee\xae\xc7\xcf\xc2U\xc0'
 b'\x1a\x044<\x0b\xc3\xc8\x94\xc6\x97\xa5D1\xb1s\xd9\x1d\xab`\xfc/\xfd\x98\xc2'
 b'`s\xa3dr\x16\xfa\xd7\x13K\x1c\xc9\x9d{.eb\n\x03\x00\x00\x00[\x00'
 b'\x00\x00\xb2h\xd5\xe3\xe9\x04\x8b')

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

{'A1': 1674503030,
 'A2': {'B1': 18898, 'B2': 30, 'B3': 'vo'},
 'A3': 45875,
 'A4': [{'C1': {'D1': 2325343869074542168,
                'D2': 698122312,
                'D3': -14,
                'D4': 39360,
                'D5': 4147279193,
                'D6': -4658925203662250758,
                'D7': 2074210683},
         'C2': -556040350,
         'C3': [816845040, 1637217813],
         'C4': 4002348418,
         'C5': -82},
        {'C1': {'D1': 8336498556145223316,
                'D2': 1621827033,
                'D3': -4,
                'D4': 64815,
                'D5': 1935721112,
                'D6': 5409905046520489123,
                'D7': 2073938204},
         'C2': 174220590,
         'C3': [1438830535, 872684224, -926741700],
         'C4': 3822414002,
         'C5': -23}],
 'A5': [4, 139]}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'RODR\x02\x00\x9a\x00\x00\x00J\x98B5\xb4(\xe0\xec\xbfM9\x02\x00\x00'
 b'\x00\xa2\x00\xaa\x00\x00\x00\xb7\xf1\xbdr\xba\xa7s\x0cE\xe8\x8f\x19\xba'
 b'F@\xc8~?\x07\x00\x1f\x00\x00\x00\x8c}\x14v_j\xd6\xady\xa9\x01\xe1\x88'
 b'\xbe\x05\x00&\x00\x00\x00\xa7\xb7\x92\x8b\xeb\x0bn\xd0\xbe\x99\xbc{\x02'
 b'\x00+\x00\xf8c9V\x8fb]~\xae\x19\xd1\x13\xb3\xdf\x89\xcb\xf0\xfdA?\x05'
 b'\x00\\\x00\x00\x00b_h\xb7\xd9\xee>B$\x8e\t0n\xbf\x08\x00a\x00\x00\x00O\xdfY'
 b'\x0e\xf3d\xf4\xe3\x06\xe8\xce\x0f\x02\x00i\x00ES\x00\x00\x00\x91\x00'
 b'\x00\x00w\xe4\x11?x\xd5n?\xf2\xe7C\xb6\xf3\xc2\xe5M\xa4\xa0\xa8\xca@\xcc'
 b'b\x96X\x7f\xea:^(\xb1\xf9\xed?\x8c\xc1\xafe\xb7\x95\xec\x8f6\xf0\xed\xe8'
 b'\xc9')

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

{'A1': [{'B1': 2075957694,
         'B2': [{'C1': -70,
                 'C2': 70,
                 'C3': 0.9952430725097656,
                 'C4': [-73, -15, -67, 114, -70, -89, 115],
                 'C5': 1981054348,
                 'C6': 27231,
                 'C7': -21034},
                {'C1': 121,
                 'C2': 169,
                 'C3': -0.26734164357185364,
                 'C4': [12, 69, -24, -113, 25],
                 'C5': 2341648295,
                 'C6': 3051,
                 'C7': -12178}],
         'B3': -8},
        {'B1': 265218054,
         'B2': [{'C1': -119,
                 'C2': 203,
                 'C3': 0.7577810287475586,
                 'C4': [99, 57, 86, -113, 98],
                 'C5': 3077070690,
                 'C6': -4391,
                 'C7': 16958},
                {'C1': 36,
                 'C2': 142,
                 'C3': -0.930420458316803,
                 'C4': [93, 126, -82, 25, -47, 19, -77, -33],
                 'C5': 240770895,
                 'C6': 25843,
                 'C7': -7180}],
         'B3': 69}],
 'A2': 74,
 'A3': -0.9023631591499734,
 'A4': 77,
 'A5': 57,
 'A6': [0.5698923468589783, 0.9329447746276855],
 'A7': {'D1': 59378,
        'D2': [3270751811, 2695122405, 3426798248, 2136512098],
        'D3': 0.9367299831809224,
        'D4': 1706017164,
        'D5': 183,
        'D6': -3897603861525828459}}

Пример 2

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

(b'RODR\x02\x00\x97\x00\x00\x00g\xe0syO\xbd\x0c\xaa\xbfRr\x02\x00\x00'
 b'\x00\x9f\x00\xa7\x00\x00\x00\xe1oYp>Y\xdf\xb4\x7f\xea\x105(y\xf4$\xbe'
 b'\x14\xbf\x07\x00\x1f\x00\x00\x00F:\x8c\x9a\x8a\xa8\xc6\xfe\xdd\x11\x8b\x8a'
 b'\xd1\xbe\x06\x00&\x00\x00\x00\x8c\x88DG\x0e\xdf\x95\xc2\x1bH\x04\xcb'
 b'\x02\x00,\x00\x13\x8dI%\x91\xf3Yi\xbe\x80L/\x80\x87\xcc\xbe\x03\x00]\x00'
 b'\x00\x00\xa7\x03)\xe3@\xc2\xdb>\xb3\xe96\xfdk\xbf\x06\x00`\x00'
 b'\x00\x00\xb5\xc7\xb0#\xec&\x86\t;2bD\x02\x00f\x00GT\x00\x00\x00\x8e'
 b'\x00\x00\x00[\xfc\xd1\xbe \xd10\xbfR\xb7\xb7|\xdf\x9dmgZ\xa6\x0e\xf1\x04'
 b'>M\x99~\xa3nFA\xfc\xa7\x1e\xed?\xd4\x82\xec*ZR\xe9z8\xa2\xe6P\x86')

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

{'A1': [{'B1': 3406055451,
         'B2': [{'C1': 121,
                 'C2': 244,
                 'C3': -0.5810263156890869,
                 'C4': [-31, 111, 89, 112, 62, 89, -33],
                 'C5': 2592881222,
                 'C6': -22390,
                 'C7': -314},
                {'C1': -35,
                 'C2': 17,
                 'C3': -0.4092601239681244,
                 'C4': [-76, 127, -22, 16, 53, 40],
                 'C5': 1195673740,
                 'C6': -8434,
                 'C7': -15723}],
         'B3': 19},
        {'B1': 1147286075,
         'B2': [{'C1': 76,
                 'C2': 47,
                 'C3': -0.3994712829589844,
                 'C4': [-115, 73, 37],
                 'C5': 3811115943,
                 'C6': -15808,
                 'C7': 16091},
                {'C1': -77,
                 'C2': 233,
                 'C3': -0.9218324422836304,
                 'C4': [-111, -13, 89, 105, -66, -128],
                 'C5': 598788021,
                 'C6': 9964,
                 'C7': 2438}],
         'B3': 71}],
 'A2': 103,
 'A3': -0.050878444625346964,
 'A4': 82,
 'A5': 114,
 'A6': [-0.4101284444332123, -0.6906909942626953],
 'A7': {'D1': 46930,
        'D2': [2648669367, 2790942573, 1040511246, 2742982989],
        'D3': 0.9099922110419365,
        'D4': 720143060,
        'D5': 90,
        'D6': -8768254890083686062}}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'iAYL\x1f%\x04\x00\x00\x00.\x00*\xab\x8b\xdf\x81?M\xba\xfd\xa0/\xfd'
 b'u\xa9\x18\xd6o\xe4\xfc"8\x00\x00\x00\x02\x00\x00\x00]\x00\xe9m\xb9\xbdqpplfh'
 b'ttfl\x1dYO<B\x0e\xd9DQ\xc8\xebdOR\x0b\xc6\xda}\x06\x002\x00\xef;\xb5\x8c{;'
 b'\xea\xda\xe5M\xfd<\x92!zO\x00\x00\x00V\x00\x00\x00')

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

{'A1': 9503,
 'A2': 'qppl',
 'A3': {'B1': -21718, 'B2': 11600633056116989835},
 'A4': 16460610564473093423,
 'A5': 8956,
 'A6': {'C1': 4961012142167775517,
        'C2': -14255,
        'C3': 9068778551591789803,
        'C4': 'fhttfl',
        'C5': 239},
 'A7': [{'D1': 59, 'D2': [36021, 15227, 56042]},
        {'D1': 229, 'D2': [64845, 37436, 31265]}],
 'A8': -0.09054166823625565}

Пример 2

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

(b'iAYL\x92\xc2\x04\x00\x00\x00.\x00\x1e/\xbb}3\x8a\x0fP>\xe0NH\x98\xd8JK'
 b'\xef\xf3\xaf\x038\x00\x00\x00\x03\x00\x00\x00d\x00\nKB?jhhuhsravj\x801\xebl'
 b'\xc0P\xb9\x96\x8f\x7fqm\xfbr\xfcT\xe3\x11\x06\x002\x004\x81\xcd\xfed|l@)\\'
 b'4\x14\x966\x81\xaa\x81\x8ctocqO\x00\x00\x00V\x00\x00\x00]\x00\x00\x00')

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

{'A1': 49810,
 'A2': 'jhhu',
 'A3': {'B1': 12062, 'B2': 16158440540725280187},
 'A4': 17577350655483856974,
 'A5': 943,
 'A6': {'C1': -7585943309937593984,
        'C2': 32655,
        'C3': 1288967361595665777,
        'C4': 'hsravj',
        'C5': 52},
 'A7': [{'D1': 129, 'D2': [65229, 31844, 16492]},
        {'D1': 41, 'D2': [13404, 38420, 33078]},
        {'D1': 170, 'D2': [35969, 28532, 29027]}],
 'A8': 0.7589575052261353}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x8eEPEN\x00\x00\x00\x1d\x00\x02\x00{\xbf\xee\x8097Q\x00\x92g\xdb\xb9\xa7pxj'
 b't?\xcf?)\xf0\xae\xa6\x07\x00\x04\x00\x19\xcf@\xce\xcdo\xcb7\x14hnv'
 b'?\xdf\xf3\xa3\xa8\xe5WX\x81;$\xd9?Q\xe1K\x10>\x9d\xeew?l\x98\xad>\xa7\x11'
 b'\xb4\xd2\xcd\xea\t>\xc4\x86b>\x7f\xe3\xddBq\x10>\xf2\xce\x9e\xbe\xc5X\xc8'
 b'>-H\x98*5?\x15\xbe\xf6/5>=\xd0\x8e\x05\xfd@\x00E\x00`')

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

{'A1': {'B1': 63,
        'B2': {'C1': -49, 'C2': 0.6638287305831909, 'C3': -23033, 'C4': 'pxjt'},
        'B3': -3512580327609780460,
        'B4': 'hnv',
        'B5': 0.49924556249367447,
        'B6': -2126830375,
        'B7': 0.8198439478874207,
        'B8': 16},
 'A2': [{'D1': [0.30845996737480164, 0.9242046475410461, 0.32630693912506104],
         'D2': [53965, 59913],
         'D3': 0.3838377594947815,
         'D4': 0.24989266693592072,
         'D5': 66,
         'D6': 28944},
        {'D1': [0.47423261404037476, -0.38544297218322754, 0.16922223567962646],
         'D2': [10805, 16149],
         'D3': -0.4808289110660553,
         'D4': 0.18536588549613953,
         'D5': 5,
         'D6': 64832}],
 'A3': -0.9531522827528696,
 'A4': 1742453159}

Пример 2

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

(b'\x8eEPEN\x00\x00\x00\x1c\x00\x02\x00z?\xeb\xca\xcf\xbb8<(5\xab5\x13tyz'
 b'\xd8\xcf?3\xb2r\xbf\x1f\x00\x03\x00\x19od\xf2H\xd0\xdd\xd1\x8fvxj?'
 b'\xe2\\\xd4!\xe8\xb2&.s\r\xfa>\xa8H\x91{\xbeJA\x92<\xb6\x160\xbf\x08$\xe4'
 b'f\x82\xe3\x82\xbbm\xb0\x01>\xabI\xfa\xdc|\xc1?o\x96\xd7\xbfc\x1eL?'
 b'\x0e\xd6@\x9b\x04\x08\xf4\xbf5\xc6\xc8\xbf!\x8d\x81\xdeV*\x00D\x00_')

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

{'A1': {'B1': 216,
        'B2': {'C1': -49, 'C2': 0.7019416093826294, 'C3': -16609, 'C4': 'tyz'},
        'B3': 8026806830436831631,
        'B4': 'vxj',
        'B5': 0.5738316213879144,
        'B6': 779292154,
        'B7': 0.3286786377429962,
        'B8': 123},
 'A2': [{'D1': [-0.19751575589179993,
                0.022227376699447632,
                -0.5318129062652588],
         'D2': [26242, 58242],
         'D3': -0.0036268236581236124,
         'D4': 0.3345487713813782,
         'D5': -36,
         'D6': 31937},
        {'D1': [0.9358953833580017, -0.8871810436248779, 0.5579566955566406],
         'D2': [39684, 2292],
         'D3': -0.7100644111633301,
         'D4': -0.6310654282569885,
         'D5': -34,
         'D6': 22058}],
 'A3': 0.8685072571405543,
 'A4': 900412691}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ILR\xe0AV=\x81p\xf0\xdbt\xf4\xa704!.\xc3\xf5\x02\x00I\x00ljsbqiae\x008\x92D'
 b"N'i\x94-\xb8\x00c\xbf\x906y\x8a\xe5\xed\xb1\x01(\x0c\xc7\xb0P\xd7\x12"
 b'\x0c\xcf\x0cD?\xa6{\xce6\xb0\xdb\xe8\x823]!\x00y\xd5"\x11%N\xe4\x13z\xbdQ'
 b'5\x00@\x019\x90\xe4\xf6\x87\xee\xfamz\xb6j\xd1\x88\x83\xd0\x026\x15\x02\x00'
 b'c\x00\x00\x00')

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

{'A1': 15848290789098930656,
 'A2': 816313460,
 'A3': [52, 33, 46, -61, -11],
 'A4': [{'B1': 23859,
         'B2': {'C1': 3284365645797691960,
                'C2': -0.8867297172546387,
                'C3': 122140235042207376},
         'B3': 1433356502518912377,
         'B4': 122},
        {'B1': 20925,
         'B2': {'C1': 869994419599117352,
                'C2': 0.7658204436302185,
                'C3': -9013713104301818970},
         'B3': 17187977964415418688,
         'B4': 250}],
 'A5': 'ljsbqia',
 'A6': {'D1': 182, 'D2': 1528412218122097002, 'D3': [109, 122]}}

Пример 2

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

(b"ILR\xae\x9c2\xc3V\x06{mw\xe8<\xea'\xb9\xc6\xb9\xa0\x03\x00]\x00mbirzne\x86"
 b'\x00U\xc3\xf8\xb8(\xea\xefi\xddJJ\xbf>0\xc6f\xa9F\xc1YK\xf4L\x10\x83k\x1b'
 b'\xa7}\x8b\xe4\xbe"\xa3R\\\xbdC\x92\x9b\xd9.\x1c\xac\xff\x04\xe1\x08$\xaf`'
 b'>\x8a\x1e\xefG\xc5W\x826\xf7\xd6!\x00S\x95\xee\x96\xc5,#\xb3R\x8az5\x001\x86'
 b'\x8e\xc7\x8d+{\x19\xc8s\xacI\x00\x1e\x7f\x02M\xd8\x91\x82@\xa5\xbc?\xa5w'
 b'!\xbdEr\xa9\xf31\x02\x00\x84\x00\x00\x00')

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

{'A1': 7888906141981383854,
 'A2': 3929860215,
 'A3': [39, -71, -58, -71, -96],
 'A4': [{'B1': -10505,
         'B2': {'C1': 7633577354039182165,
                'C2': -0.7902048230171204,
                'C3': 6467528233268424766},
         'B3': 12908210184126371155,
         'B4': 82},
        {'B1': 31370,
         'B2': {'C1': -6405407834346032053,
                'C2': -0.4463767111301422,
                'C3': -7236647170654166238},
         'B3': 1836109161021998641,
         'B4': 200},
        {'B1': -21389,
         'B2': {'C1': 639798118214020825,
                'C2': 0.21941810846328735,
                'C3': 3927798329847520906},
         'B3': 4648438123590745886,
         'B4': 165}],
 'A5': 'mbirzne',
 'A6': {'D1': 165, 'D2': 3599406835460546935, 'D3': [-68, 63]}}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

Структура H:

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

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

Пример 1

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

(b'fDJT\x86\xe7R\x8d\xf5\xc5\x0ea?m\x85\xf2\xdc\x00\x00\x00\x03\x00\x80\xbc'
 b'\x00\x17\xec\x8a\x00\x00\x00\x02\x00\x86>\xe7*\xb0W\x00\x00\x00\x02\x00'
 b'\x8a=\xef\x9f\x814\x00\x00\x00\x03\x00\x8e\xbe\xee\xa7\xb5;\x00\x00\x00'
 b'\x03\x00\x94\xbfh\x90\xe2\x95\x00\x00\x00\x02\x00\x9a\xbe`\xa3\x92\xbf\xcf'
 b'\x19\xcf\xb3\xac\xb1\x08\x1dJ\x10j\xb9\xd1\xaeq\xb0\x00\x9e\xbf\x06\x0f'
 b'5\xf4\xa03\xbae\x00\xb3?%2\xb8\xbd\x81$D>\xceu)?g\x08+\xbb\x8a\xe8\xe9'
 b"\x9fe'\x00!&d\xa4?l\xf5\xec\x99Z\x04W(\x82\xf9\xf9\xbc\xf7\x91h\xbeue\xbf"
 b'\xe2\xe7\xa2\xf1D\x9b\xe0?\nKM\xbeg\x8b\xc8\xbe\xf5x-\xe2\x89\xe5\x02\x8b'
 b'\xd5')

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

{'A1': {'B1': -2031660403, 'B2': -171635103},
 'A2': 0.9278250932693481,
 'A3': [{'C1': -36, 'C2': [-17526, -5911, -24731], 'C3': -0.007818203419446945},
        {'C1': -118, 'C2': [9984, 8486], 'C3': 0.45149755477905273},
        {'C1': 87, 'C2': [25764, 16236], 'C3': 0.11700344830751419},
        {'C1': 52, 'C2': [-2580, -26278, 1111], 'C3': -0.4661232531070709},
        {'C1': 59, 'C2': [10370, -1543, -17161], 'C3': -0.9084607362747192},
        {'C1': -107, 'C2': [-28312, -16779], 'C3': -0.21937397122383118}],
 'A4': -0.2429751994435565,
 'A5': 491393130,
 'A6': {'D1': -17967,
        'D2': {'E1': 44657, 'E2': 176},
        'D3': {'F1': 101,
               'F2': -0.5907759392038052,
               'F3': 0.5402114987373352,
               'F4': [-0.22611916065216064, -0.47943249344825745]},
        'D4': {'G1': -0.5236695408821106, 'G2': 244},
        'D5': -24525,
        'D6': 47717,
        'D7': {'H1': 3800687874, 'H2': 35797}},
 'A7': [0.6453051567077637,
        -0.06305745244026184,
        0.40323761105537415,
        0.9024683833122253]}

Пример 2

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

(b'fDJT\x1eXD-\xf2\xd6\x87\x7f\xbf\x1b{\x83\x82\x00\x00\x00\x02\x00\x80?'
 b'8\xaf\x14\xa1\x00\x00\x00\x03\x00\x84\xbfs?R\x14\x00\x00\x00\x02\x00'
 b'\x8a\xbe\x86\x9e\x9b\x8f\x00\x00\x00\x02\x00\x8e\xbf\x06\xd7\xaf'
 b'\x87\x00\x00\x00\x03\x00\x92?|\x8f\x06\x85\x00\x00\x00\x02\x00\x98>\xfd'
 b'\x9b\xf9?\xd7\xe8<9\x92\x9b\x18)HOF\x1b\x8a\x16\xbd\xb7\x00\x9c>\xb0\xc5'
 b'\xb6\x0f\x80\xc1\xfd\xa6\x00\xb1\xbd\x86\x08\x97?\x7fD\x83>\xe8W5'
 b'\xbf,\xb9\x8c"\xb8\xa8\xe7\x8c\x0c\xd8\xd4\x19\x8bc\xa4Q\xc5\x03\xbe'
 b'\x1d\x1f\x1d"\x9c\xf9\xa1\xaa\xd7\xef\x16 \xb7?\xd4\xd6r\xf4\x18\xa2'
 b'\x0c\xbd\xb9#\xd6?\\\xc4\x06>\x02\xc0mH\x1c0\x90\xed\x9a')

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

{'A1': {'B1': 509101101, 'B2': -220821633},
 'A2': -0.6073533892631531,
 'A3': [{'C1': -126, 'C2': [8888, -22297], 'C3': 0.721421480178833},
        {'C1': -95, 'C2': [-29684, -10028, 6539], 'C3': -0.9501849412918091},
        {'C1': 20, 'C2': [25508, 20933], 'C3': -0.2629288136959076},
        {'C1': -113, 'C2': [958, 7455], 'C3': -0.5267285704612732},
        {'C1': -121, 'C2': [7458, -25351, -24150], 'C3': 0.9865573644638062},
        {'C1': -123, 'C2': [-10257, 5664], 'C3': 0.4953306019306183}],
 'A4': 0.37354951498348177,
 'A5': 692604742,
 'A6': {'D1': 7050,
        'D2': {'E1': 5821, 'E2': 183},
        'D3': {'F1': 183,
               'F2': 0.3255889304878401,
               'F3': -0.09040038287639618,
               'F4': [0.8623660802841187, 0.12768717110157013]},
        'D4': {'G1': 0.3452584147453308, 'G2': 15},
        'D5': -32575,
        'D6': 64934,
        'D7': {'H1': 1209806992, 'H2': 60826}},
 'A7': [-0.06544607132673264,
        0.9971391558647156,
        0.4537903368473053,
        -0.674706220626831]}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LNA\x02+L\x8f-k\xbbi\xcag\x05\x00m\x00\x00\x00Z\x9b\xb9\x87s\x03\x00r\x00'
 b'\x00\x00\xd2\x02\x02\x00u\x00\x00\x00\xdd\xca\x03\x00w\x00\x00\x00\xcc\r'
 b'\x02\x00z\x00\x00\x00\x06\x88\x98!%q\xd4\xba\xe7v\x16xX\x18!\x04\x1dX'
 b'+\xe0<\xee?H\xa6W\xbf\xbf\x95?=\xac\x83>?\xa3\xccT\xbf\xa3\r\x9b>\xda\xaeL'
 b'?\x82\x9aI\xbf\xc1B\xa5>hqybmQ\xc9\xab\xdf\x08\x91\xeb"\xba?')

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

{'A1': 43,
 'A2': {'B1': 7478906384880078668, 'B2': 'hqybm'},
 'A3': {'C1': 90,
        'C2': 47515,
        'C3': [{'D1': 29575, 'D2': [81, 201, 171]},
               {'D1': 722, 'D2': [223, 8]},
               {'D1': -13603, 'D2': [145, 235, 34]},
               {'D1': 3532, 'D2': [186, 63]}],
        'C4': 6,
        'C5': 622958728,
        'C6': 6374869972492670065,
        'C7': 8472},
 'A4': 0.9449311110082879,
 'A5': [-0.8423810005187988,
        0.04677366837859154,
        0.7441966533660889,
        -0.8312475085258484,
        0.30283841490745544,
        0.799543023109436,
        -0.7875138521194458,
        0.3227749168872833]}

Пример 2

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

(b'LNA\x02\xa6\xa5\xfab\xacK\xcc}\x99\x03\x00m\x00\x00\x00%\xf0\xbc\x8a/'
 b'\x03\x00p\x00\x00\x00zP\x02\x00s\x00\x00\x00\x03\xdb\x02\x00u\x00\x00\x00#\n'
 b'\x03\x00w\x00\x00\x00\xe8\x0e\xee\x01\x15Xe*\xf5q\x1e\r#O\xba\x8e\xc2\xfc'
 b'|\x9a?\xee?B-\xce\xbc\t\x1a/\xbb\xa7\xa49\xbd\x02\x84*\xbf\xc4\x92N'
 b'?\xb9\xbf;\xbf\xe6\xec3>\xa5\xbe\xbf>tdm\x9b|lDu\xf3\xe7\xa4 \x9d')

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

{'A1': 166,
 'A2': {'B1': 11060220885278587557, 'B2': 'tdm'},
 'A3': {'C1': 37,
        'C2': 48368,
        'C3': [{'D1': 12170, 'D2': [155, 124, 108]},
               {'D1': 20602, 'D2': [68, 117]},
               {'D1': -9469, 'D2': [243, 231]},
               {'D1': 2595, 'D2': [164, 32, 157]}],
        'C4': -24,
        'C5': 352448014,
        'C6': 2525708440818050392,
        'C7': -17841},
 'A4': 0.9452640954169327,
 'A5': [-0.02516806498169899,
        -0.002671839902177453,
        -0.04532304033637047,
        -0.6660767793655396,
        0.806926965713501,
        -0.733394205570221,
        0.17570838332176208,
        0.37450137734413147]}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'RAO\xf5-\xb3OK\x00\x00\x00\x08\x00\x00\x00\x87\x00\x00\x00\xb2a\xdfM\xa0'
 b'\xd91\xfc\xb6\xc6\xe8\xbf\xe0\x03\x96I\xac\xce\xb6?\xd2\x03\xadd\x9b'
 b'\x10\xea\xbf\x1a!\xbe\xb7\x95\x88\x01\xb2\r\xafY\xc0x\x1eK\xd4%p<m\xf3'
 b'\xae\xac\xd1:\x82\xd1\xe8\x80\xcf\x98q\xbd\xdcY=\xdbU \xd6/Af\xc9\xce'
 b'\xa5\xad\xf6\x80*\x17\x95\xef\xe9\xb0\xf21\xd7Y$\x8c\x92\xb4\x93\x9a'
 b'\xd5\xfa\x99\xda\x16\x9d4\xc2N\xa8j\xa8\xf2P\x10\x13\x00\x07\x00\x00'
 b'\x00/\x00R\xd0K\xb3\xe4\xd7\xa6\x9aa\x0c\x14\xe4\xfdck`')

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

{'A1': 1337142773,
 'A2': {'B1': {'C1': [{'D1': -128, 'D2': [39119, 48497, 23004, 56125, 8277]},
                      {'D1': -42, 'D2': [16687, 51558, 42446, 63149, 10880]},
                      {'D1': 23, 'D2': [61333, 45289, 12786, 22999, 35876]},
                      {'D1': -110, 'D2': [37812, 54682, 39418, 5850, 13469]}],
               'C2': 1175706307901542082},
        'B2': {'E1': 1306485170,
               'E2': -0.7742571759870778,
               'E3': 0.08909107967885133,
               'E4': -0.8145272222828857},
        'B3': [-1212276454,
               -1308522347,
               -1067864307,
               -733274504,
               1832677413,
               -777212173,
               -388922822]},
 'A3': [53330, 45899, 55268, 39590, 3169, 58388, 25597, 24683]}

Пример 2

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

(b'RAOn\xb6\xcc\x13K\x00\x00\x00\x02\x00\x00\x00\x87\x00\x00\x00\xd5'
 b'\xa1V\xea\xda\x00\xa8\xd0\x1e\x86\xe2?>\x10\x94/\x9c)\xef\xbfT\xc4pK\x8c'
 b'\xcb\xec?\x05\xf7\x17\xe7\xc9e\x94\x94\x16Q\xe7Y\x11H\xe0,\x83\x9f\xd0\\\xf0'
 b'\xe4\xe6l1\xc6\\\xf4d\x16|!\xad\x9fIs\x912\xbd\x1a\x12\xf9/t\x15^=*\x84'
 b'\x0fd\xceI{\xdc\xa6\x83\xff\x17\x10\x08\xc8-9\x8eZ\x18\xce\xf8Ce\xe3W'
 b'VQ\xd1\x8e[\xe9\xe1\x13\x00\x07\x00\x00\x00/\x00*\xe0\xa1\x01')

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

{'A1': 332183150,
 'A2': {'B1': {'C1': [{'D1': 100, 'D2': [31766, 44321, 18847, 37235, 48434]},
                      {'D1': 26, 'D2': [63762, 29743, 24085, 10813, 3972]},
                      {'D1': 100, 'D2': [18894, 56443, 33702, 6143, 2064]},
                      {'D1': -56, 'D2': [14637, 23182, 52760, 17400, 58213]}],
               'C2': -2168101076646930857},
        'B2': {'E1': -363421227,
               'E2': 0.5788721156423222,
               'E3': -0.9738293580308051,
               'E4': 0.8998471711585219},
        'B3': [-417859835,
               -1802213943,
               1508331798,
               752896017,
               1557176195,
               1827071216,
               -195246543]},
 'A3': [57386, 417]}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'IELc\x04\x00>\x00B\x00\x00\x00\x8b\x1c\xd8\xbc#\r\x87\xaf\xd0\x05\x15\x9b'
 b'\xde\x98G\xf9\x02\x00\x00\x00O\x00\x14\x98Us\xbf\xf1\x04\x00\x00\x00'
 b'a\x00`\xe8\t0\x99I\x1f1\x9e\x0c\x05\x00\x00\x00e\x00mnrzr\x92\xaa\x83\x91H'
 b'\x8c\x06\xd1;\xc3=\x115\xa1w\xea\x13v\xef\x91\x99T\xae f\xf8\xf7W*'
 b'\xdb\x12{\x8e*\xa7\xc5\xc4\x86\xee\x15{\x88\xa43')

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

{'A1': 'mnrz',
 'A2': {'B1': 471831850783511154, 'B2': 1036205009, 'B3': 17},
 'A3': -5798651548072928117,
 'A4': 17962493720642520528,
 'A5': [{'C1': 53, 'C2': 11065889049845331873},
        {'C1': 84, 'C2': 15792531765864046766}],
 'A6': {'D1': 20,
        'D2': -0.9505248069763184,
        'D3': -15,
        'D4': {'E1': [18, 123, 142, 42], 'E2': 3539628754421278816},
        'D5': -98},
 'A7': 12,
 'A8': [50599, 34500, 5614, 34939, 13220]}

Пример 2

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

(b'IELc\x04\x00>\x00B\x00\x00\x00\x19\xb7\x8fTu~/L`\x80\xe7N\x97f\xa0"'
 b'\x02\x00\x00\x00O\x00\xd4\x03\x16p\xbfd\x02\x00\x00\x00a\x00\xe6\xed'
 b'\x7f\xc9#\xdcD3\x9a\xb3\x08\x00\x00\x00c\x00tgkwN^\x16(:\ty\x1e\xae\xb0'
 b't\xa9\xa3-]K\x11|"u\xcc\x92W\xd1]\x04\x9c\xbc\x12\x9c\x06}\x91\xa9'
 b"\x83'\x960\x8b\xce/\xcc\xcaz\\\x14\xa9CU")

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

{'A1': 'tgkw',
 'A2': {'B1': 2195796438705135182, 'B2': -1451970386, 'B3': 163},
 'A3': 5489745513182902041,
 'A4': 2495106993613144160,
 'A5': [{'C1': 45, 'C2': 10577958415757298525},
        {'C1': 87, 'C2': 476276261875113425}],
 'A6': {'D1': -44,
        'D2': -0.9378358721733093,
        'D3': 100,
        'D4': {'E1': [125, 145], 'E2': 3694319640613219814},
        'D5': -102},
 'A7': 179,
 'A8': [33705, 38439, 35632, 12238, 51916, 23674, 43284, 21827]}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x18NJZ\x16>\x83\xf4,\x00\x03\x00\x00\x00P\xbf(yE\x00\x03\x00\x00\x00'
 b'\\\xaf\xe0\xaf\xd5>\xeec\xcf\rf\x0f&\x86O\x00\x00\x00\x02\x00\x00\x00t\xc1'
 b'5UX\x8e\xcd\xc8\x99\xbf\xd7\x81@\xfe\xb6V\xc0\x00\x03\x00\x84&\xfeJ~\xa4'
 b'\\\xbf\xa17\xbbd[0\x00\x00\x00D\x00\x00\x00H\x00\x00\x00L`MSQ\xc4\x14\xe9N'
 b'9\x1b\xa8\x047\x8a980\x1b\x80\xe1\xc9e\x18d\xbf\xb7"\xb2\xb6{\x12P'
 b'\xbf\xc2\xab\xd8\t\xbf\xa7\x00\x9b\x19\xf8')

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

{'A1': 22,
 'A2': {'B1': 0.25772225856781006,
        'B2': {'C1': [{'D1': 254, 'D2': 74, 'D3': 32420},
                      {'D1': 92, 'D2': 191, 'D3': -24265},
                      {'D1': 187, 'D2': 100, 'D3': 23344}],
               'C2': -0.658100426197052,
               'C3': [6939294211494963534,
                      4115067420598221112,
                      3466506045426571364],
               'C4': 12673322681839281103},
        'B3': [13, 102, 15, 38, 134, 79],
        'B4': [-0.09037320094200507, -0.14586925960548314],
        'B5': 13922127661927090329},
 'A3': -0.3672640311645914,
 'A4': [-101, 25, -8],
 'A5': 38}

Пример 2

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

(b'\x18NJZ\xfd>a\x11_\x00\x02\x00\x00\x00L\xbfIh#\x00\x03\x00\x00\x00TBG\xb1'
 b'\xb8\x96\r\xe7:\x18\x0fU\xc0\xa1\xf8\x00\x00\x00\x02\x00\x00\x00ls'
 b'\x1c1\xb5\x19<\xbe\xc4?\xe1\xa9.4\x02\xed\xe2\x00\x03\x00|6\xb9T\x92\xd1'
 b'dZ\x9f\xc7\x00\x00\x00D\x00\x00\x00H_\xc0SC\x92\x8e\x15\xa9\xbd\xea\xdcH'
 b'\xe6`\xd5z.jm\x0c\xf1\x08\xabV?\xd1\xad\x0bR\x92\xc0\\\xbf\xd8!;'
 b'\xb0\xef\x18\xd8\x8c|\x9f')

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

{'A1': 253,
 'A2': {'B1': 0.21979282796382904,
        'B2': {'C1': [{'D1': 185, 'D2': 84, 'D3': -27951},
                      {'D1': 100, 'D2': 90, 'D3': -24633}],
               'C2': -0.7867452502250671,
               'C3': [6899606178818299305,
                      13684992623379535226,
                      3344605575626926934],
               'C4': 4775981336199292730},
        'B3': [24, 15, 85, 192, 161, 248],
        'B4': [0.27618678153794973, -0.3770283916350201],
        'B5': 8294559267591864004},
 'A3': 0.551901914200638,
 'A4': [-116, 124, -97],
 'A5': 54}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'xSJH\x0f\x8a\x1b\xf24\xdb\xed\x0c\xe9jZK/jAGX\x1c\xab\xd4\xef\xe42B'
 b'\xfc\xb0F\xfe\xba[\x1e(\xb8\xf6Qvhghkim\x1bpm\x00\x00\x00O\x8f<\x89'
 b'\x19\r\x04\x01\xc3\x80\xdf\x8d\xd3\xcd\x193\xcf\xd1;6\xa1\xee\x88\xde'
 b'V\x87w\xbdRi\x89\x02\x006\x00\x00\x004\x82\xce\xa6\xfd7\xce\x05\x82\xb9\x02'
 b'\x00\x00\x00F\x00\x8c\xe01\xbfJ\x00\x00\x00\xf9\x037\x1f\xf1\x87b'
 b'\xa8\xb5\x84\x03\xf3`D\x83')

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

{'A1': [{'B1': 15, 'B2': 7050, 'B3': -304401166},
        {'B1': 12, 'B2': 27369, 'B3': 1781484378},
        {'B1': 65, 'B2': 22599, 'B3': -271275236},
        {'B1': -28, 'B2': 16946, 'B3': -28921604},
        {'B1': -70, 'B2': 7771, 'B3': 1375123496}],
 'A2': 'vhghkim',
 'A3': 28699,
 'A4': {'C1': {'D1': 136,
               'D2': 9901536229458400990,
               'D3': [-9168483299484923588, -3328385413683114529],
               'D4': -32204,
               'D5': 13367253027249825486,
               'D6': [13883, -4447],
               'D7': -0.6948325634002686},
        'C2': 1017,
        'C3': 55,
        'C4': [1653076255, 59028904, 2202296563]},
 'A5': 79,
 'A6': 143}

Пример 2

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

(b'xSJHB\xcb\x892\xdf1_f\xa5\xa5dj\xd0\xe9\xae+\x15\xa8G\xe7\x8d\xcf|\xac'
 b"\xad\xc0\xdc0B\xfd\xd2\xf3\xb5DRzdqzpjl\xee\xdd\x85\x00\x00\x00s]'c"
 b'Z\x05\x05\xaf\xcd+\r\x92\x99\x80\xa0\xb1D\xc1*\x1cL\x9eOK\xf6Aw\xd9'
 b"\xb8\xe5}\x89I\xb7g4\x8f\xeb\xbe'\xc6\xc9\xca\xdex\x0f_\xee6\xc6\x9a\x98"
 b'}\x02\xc5\x05\x006\x00\x00\x00\x06X8+\xa5F\x97SW9\x02\x00\x00\x00^'
 b'\x00\x83\x990\xbeb\x00\x00\x00xz\x04\xc7\xb6\xf6\x11\x04v\xfb\xf9'
 b'\x8e\xfd\xf8\x1b')

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

{'A1': [{'B1': 66, 'B2': -30261, 'B3': 1597103922},
        {'B1': 102, 'B2': -23131, 'B3': -372217244},
        {'B1': -82, 'B2': 5419, 'B3': -1914222680},
        {'B1': -49, 'B2': -21380, 'B3': 819773613},
        {'B1': 66, 'B2': -11523, 'B3': 1380234739}],
 'A2': 'zdqzpjl',
 'A3': -8722,
 'A4': {'C1': {'D1': 95,
               'D2': 14196047069810407150,
               'D3': [3156371349956092711,
                      -4520292823062703603,
                      4753069262066424874,
                      -5239505517650847369,
                      -3907391925748026265],
               'D4': 22534,
               'D5': 4131863092326116152,
               'D6': [-8502, 3960],
               'D7': -0.17246060073375702},
        'C2': 31352,
        'C3': 4,
        'C4': [301381319, 4194006532, 469302670]},
 'A5': 115,
 'A6': 93}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'QHCFLP\x907Q\xaf\xc2\x97\xc4\xd9I\xc1\xf6\xe2\xabF\xc1\t|v\x01{\xbf\xb4'
 b"F\x92\xf2a\xd4\xcbW#5m\xd9\x8el\xae\x9e\xe4L\x16*\xaa;\x8c'\xf9\x98,\xd3\x92"
 b'H\x00\x00\x00U\xf7#?\x94\xc7hDM\x0e\xdf?\x95f\xc2^-\xbc')

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

{'A1': {'B1': 20556,
        'B2': 144,
        'B3': [{'C1': 20791,
                'C2': [175, 194, 151, 196, 217],
                'C3': [73, 193, 246, 226],
                'C4': -85},
               {'C1': 49478,
                'C2': [9, 124, 118, 1, 123],
                'C3': [191, 180, 70, 146],
                'C4': -14}]},
 'A2': 15667237104604927073,
 'A3': 142,
 'A4': [44652, 58526, 5708, 43562, 35899, 63783, 11416, 37587],
 'A5': {'D1': 26261, 'D2': 3157089986},
 'A6': 0.6404927372932434,
 'A7': 0.48524791412921187}

Пример 2

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

(b'QHCFc\x96\x81z\xb3\x83\\\xf0\x87\x8dm\xf1\xd1\xfc\xd2\xcc\xa7\x8f\xf0\x9d'
 b'K8\xa7!\x0e\xfaA\x9a\xce\xfdA\x8d\xcej2O\x81\xde\xed^\xea\xaf\xf8~'
 b'\xf3r\xbd\x0f\xd7\xb0\x07\xeeH\x00\x00\x00\xcaOX= \x86|\xcd\x12\xb2\xa5?'
 b'\x11\xfet\xe6\x0fa')

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

{'A1': {'B1': -27037,
        'B2': 129,
        'B3': [{'C1': 45946,
                'C2': [131, 92, 240, 135, 141],
                'C3': [109, 241, 209, 252],
                'C4': -46},
               {'C1': 42956,
                'C2': [143, 240, 157, 75, 56],
                'C3': [167, 33, 14, 250],
                'C4': 65}]},
 'A2': 3632943155520589466,
 'A3': 79,
 'A4': [56961, 24301, 45034, 32504, 29427, 4029, 45271, 60935],
 'A5': {'D1': -495, 'D2': 1628431988},
 'A6': 0.05281046777963638,
 'A7': 0.04237421759013338}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'PJETD\xb2"`\x00\x02\x00\x00\x00\x96\x00\xd8\xc0\xed\xd9\xbb\x01\xce?n'
 b'l\xe7N\xc8*4\x15.\xf3\xacDr\xd0\x97w\xca`(RM\xfe\xe7\xbf\xba\x80^>O'
 b'|9\xd8\x16\xd1\x08v\xbb+\x83W\x96\xc3\x86\xd87\x90\xd2T$.\xc73\xec'
 b'\xd9\x0e\xc1*U\xbf\x03/Sy\xa3s`\xdcN\xe1\xc2\xb6\x8e\x18\x02\x00\x00\x00'
 b'\x17\x00\x19\x00X&\xa2\xff-\x02\xd7?\x02\x00\x00\x005\x00\xa4N'
 b'\xca\x8e\x97\xe6\xd3\xbf\x03\x00\x00\x009\x00\x06}\xbd\x1d\xeaw\x93\xce'
 b'\xc4\xee9\x82?\x00\x00\x00\xf7N{\xec')

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

{'A1': 8882,
 'A2': {'B1': 'nl',
        'B2': {'C1': 20199,
               'C2': 4948597469823118024,
               'C3': 2006438002,
               'C4': -0.7497927288668731,
               'C5': 0.21728792786598206,
               'C6': 31823},
        'B3': [{'D1': 0.35950803722571356, 'D2': [55353, 53526]},
               {'D1': -0.3109492201267392, 'D2': [30216, 11195, 22403]}],
        'B4': 498957574,
        'B5': -9062950246059640854,
        'B6': {'E1': -15466,
               'E2': 55430,
               'E3': 36919,
               'E4': -2743761142409833262,
               'E5': 14,
               'E6': -0.8326836228370667,
               'E7': [2035494659, -597658717, -1228742322],
               'E8': 6286},
        'B7': 20215},
 'A3': [123, -20],
 'A4': 0.23442791119624107}

Пример 2

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

(b'PJETD\xe3\xe8^\x00\x04\x00\x00\x00\x94\x00\xb6\xe7M\x98*\xcd\xee?l'
 b'y\x8c\x9f\xb9y\x01N\xef\xffDKBxw\xdf\xa4\xf1\xc8\xe3Q\x86\xea\xbf\x88'
 b'\xc6\x13\xbf@\x1d5cw\xd1\xecG\xb2\xe2N\xba1b8d\xbe\x9a\xd0\xae\xd6'
 b'\x98>\xd3\x7ft\\]\xbf\xbe?\x02g\xbd\x92\xa6f\x9bx\xbf\x16\x16\x9a\x02\x00'
 b'\x00\x00\x17\x00\x19\x00\x80s\xf4\xbd\xd8\xd5\xdb\xbf\x02\x00\x00\x005\x00'
 b' CS\xc86N\xe8?\x02\x00\x00\x009\x00]\x11b\xdb9m\xfeI\xabO\xca\xa0=\x00'
 b'\x00\x00\x85a\x93\x9d\x10\xcf')

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

{'A1': 59619,
 'A2': {'B1': 'ly',
        'B2': {'C1': -24692,
               'C2': 5423741254531905977,
               'C3': -545818558,
               'C4': -0.8288964699673227,
               'C5': -0.5772480964660645,
               'C6': 7488},
        'B3': [{'D1': -0.4349271636036107, 'D2': [25397, 53623]},
               {'D1': 0.7595476067163851, 'D2': [18412, 58034]}],
        'B4': 3680637277,
        'B5': -6860583485246116551,
        'B6': {'E1': -17842,
               'E2': 25137,
               'E3': 25656,
               'E4': -3224972235327366466,
               'E5': 127,
               'E6': -0.864691972732544,
               'E7': [1728200638, 1722192573, 381647003],
               'E8': -26090},
        'B7': 24965},
 'A3': [-109, -99, 16, -49],
 'A4': 0.9625447249120416}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xdeYNX\x15C\x00\x00\x00J\x00\x00\x00Q\x00\x00\x00\xcb[\xfd#D\xb6\x06'
 b'\xd7x\x82\xd68.\xbfm]4\xa8\xea\xbc1*4=\x17\xd2\xea\x8cO\xb0[\xad\xe0?\x02'
 b'\x00\x00\x00X\x00\x00\x00\xd6\xb2\xa5>e\x00\x00\x00\x00\xfdX\x01\xbf'
 b'\xc9\xe6\xacz\x87`?\xbb%kM\xa3"\xbeA\xf3\x00\\,\x80K\xfbY\x93G\xf8\x98\x18'
 b'\xd9\x05\x00`\x00\x00\x00\xff\xb6\x13\x04<i\xffT|.\xb7\x03O\xfa\x93g\xba'
 b'\xb4uGh\xc6\t[W\xc0NS2\xd7\xbb\x89_D\xe8h\xe5\xe3\x94)\x10\x0e\xbe\xben'
 b'\xb7\xc2X\xc68K\xee\xdd\xd7M\xbc\x8f\xe6R\x8c\xc0')

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

{'A1': 21,
 'A2': {'B1': [{'C1': 0, 'C2': -0.5052641034126282, 'C3': -6455},
               {'C1': -84, 'C2': 0.8770672082901001, 'C3': 9659},
               {'C1': 107, 'C2': -0.1588260680437088, 'C3': -3263}],
        'B2': {'D1': -53, 'D2': 1143209307, 'D3': 3330647780301932214},
        'B3': -65,
        'B4': -1472963219},
 'A3': 15138635966684708074,
 'A4': 0.5211618846482484,
 'A5': [-2144576512, -1822819509],
 'A6': 0.32363003492355347,
 'A7': {'E1': [71, -8, -104, 24, -39],
        'E2': 46847,
        'E3': 3349645678815740947,
        'E4': 183,
        'E5': {'F1': [8481608952272539395,
                      5674631579004463175,
                      -1710136913327345069],
               'F2': 2497963368,
               'F3': -0.13873352110385895,
               'F4': 3266801342,
               'F5': 1262011992},
        'E6': -18,
        'E7': 221,
        'E8': -4572188371480457769}}

Пример 2

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

(b"\xdeYNX[C\x00\x00\x00J\x00\x00\x00Q\x00\x00\x00\xfc\xfb\x90\x1c\xe2\xcd'"
 b'\xf1\x99\x1f"\xd6\xa9\xfe\x07\xe8\xbf\x90\x91\x1dXL\x03\x80\xdf.\xf4'
 b'\x17\xf6?\xf5\xe4\xd5?\x03\x00\x00\x00X\x00\x00\x00\x19\x06\x1f?f'
 b'\x00\x00\x00w\xb3Sr?"E\x04t\x89\x04\xbf\x99\t\xec\xe6\xca\xe8\xbeQE'
 b'^\x89\xce\x9d\xc0\x94\x9a\xb14N\x15G\xa1\xcf\x02\x00d\x00\x00\x00'
 b'\xe7\x17&\x8f\x95\xa6i\xd7\xb5W<9Td\xa0#<\x1c4\xb8\xdfu\xff\xba'
 b'\xdd\x17\xe1\x9eB\xef?\x1dB\x92\xc4\x16 \x88Hz\xe0X?g\x0e\xa9\xadV\xf5e9x'
 b'\xf7\x17#\x1c1T\x8f\xfc\xbc')

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

{'A1': 91,
 'A2': {'B1': [{'C1': 119, 'C2': 0.9465896487236023, 'C3': 17698},
               {'C1': 4, 'C2': -0.5177223682403564, 'C3': 2457},
               {'C1': -20, 'C2': -0.45467299222946167, 'C3': 17745}],
        'B2': {'D1': -4, 'D2': 3793522939, 'D3': -6208737517161601075},
        'B3': -2,
        'B4': -1866471417},
 'A3': 3377558997205261713,
 'A4': 0.34209948774548526,
 'A5': [-1647408802, -1315269440, 1192578612],
 'A6': 0.6211867928504944,
 'A7': {'E1': [-95, -49],
        'E2': 6119,
        'E3': 6320194500850716454,
        'E4': 60,
        'E5': {'F1': [3754942313032602681,
                      -2227067695491850312,
                      -4282287602281790818],
               'F2': 1216880662,
               'F3': 0.8471752405166626,
               'F4': 2913537639,
               'F5': 962983254},
        'E6': 120,
        'E7': 247,
        'E8': -4828827108684061929}}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'DEAO\x92\xd4\xab\x04\x1c\xdc\xdc\x8b\x86\xcfP^\xb51U\x07"\xf2\xc8]'
 b'\x00\x02\x00g\x00k\x9d\x07\x00\x00\x00\x02\x00wA\xa9\x10\x04\xbf('
 b'\x1f\x1b\x83\xfb]\x00\x7f-7\x00\x06\x00\x00\x00\x88\x00\x03\x00\x94M'
 b'\xa713\xb4\xd7\xe3]O\xab\xf9B\x86@\x9e\x00?\xd6\xb0\xfbA\x82\x02 \xf5'
 b'\x16\x97\x9a4\xda-m?\xe5I\x9a\xea\xc5\xed\x9c\x00G\x00W\xcd\xc0\xdf\x05\xfc'
 b'\x8b\xbdh\xa7~z\x8d)4\xf8\xd1A\xec\x07\xa6\x93\xb6\xe6\xe3w\n\xb1\xa3\xf3'
 b'\xc13\xfcNi\x93\xab\xf5\x1don\xe72%\xd2')

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

{'A1': -27948,
 'A2': 12323006215311034063,
 'A3': 5791265394329592562,
 'A4': {'B1': 51293,
        'B2': {'C1': [{'D1': 1336670530,
                       'D2': 2252381696,
                       'D3': 0.3545520915722893},
                      {'D1': 4111898522,
                       'D2': 886713709,
                       'D3': 0.6652350030339451}],
               'C2': {'E1': -842998011, 'E2': 18197846976504953485},
               'C3': -25337,
               'C4': [691337425, 1105987494],
               'C5': 65},
        'B3': -22256,
        'B4': 342036210774178653,
        'B5': {'F1': -7802795439743651421, 'F2': -13},
        'B6': 11575,
        'B7': [49459, 64590, 27027, 44021, 7535, 28391]},
 'A5': [50, 37, 210],
 'A6': 5595495160178271069}

Пример 2

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

(b'DEAO\x8b9Jrx\xe6\x06=C \x0f\xcd>\x08\xcd\xd5\xda\xae\x18U\x00\x03\x00w'
 b'\x00}(\xeb\x00\x00\x00\x02\x00\x89\x96(\x1f\x8dk\xed\xaaTr%\xe8\x00\x91\xce'
 b'\x16\x00\x04\x00\x00\x00\x9a\x00\x05\x00\xa2\x0b\x98\xa1\xd3zSgE\x1b'
 b'S\x1a\xac\xfep>\x90\xbf\xc5\xb9\x83c\xdb\xca\xb8M\x99\x90\xd4#'
 b'\xfd\x07\xfd\xbf\xeb8UXA\x9d\xc0\xc6\xceb\xa0;\x93eE?\xdel\xeb\x17D\xa9T\x00'
 b'G\x00W\x00g\xfa\x1f\xe5\xae\xe4\x9fI\xd1\x95\xa5\x96G3BW\x8a\xb6\xcfV'
 b'\x9fl\xbf\x03\xf8\x9a\xc4\xd7\xc4Y\xe5\xb6DJ\xca\x14\x00\xf2\xad\x11'
 b'\x99\x9b&')

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

{'A1': -29895,
 'A2': 5364483035494171424,
 'A3': 1138634488328608430,
 'A4': {'B1': 6229,
        'B2': {'C1': [{'D1': 458431148,
                       'D2': 4268768912,
                       'D3': -0.16972391487032268},
                      {'D1': 1301909716,
                       'D2': 603785213,
                       'D3': -0.8506266330486412},
                      {'D1': 3335414432,
                       'D2': 999515461,
                       'D3': 0.47539784691129694}],
               'C2': {'E1': -98572882, 'E2': 16473967126452213319},
               'C3': 10475,
               'C4': [859985802, -1227925857],
               'C5': 150},
        'B3': 10271,
        'B4': -8256244176036682264,
        'B5': {'F1': 7835986242931316676, 'F2': 89},
        'B6': -12778,
        'B7': [58806, 17482, 51732, 242]},
 'A5': [173, 17, 153, 155, 38],
 'A6': 835595660539684677}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'WBRN\xc9\x00\x9f\x07\xe8\x91\n\x00\x04\x00\xa9\xad\xf3xF\nR#\xcaA4\xb3\xd7y'
 b'4P\x9cSPO3\x82\x88|\tl\xc7\xc9\xc0\xaa\xfcI\xed\x89d$\x88qBd\rJ\x134\xd8O'
 b'P\xda\xa5z\x1a\x9d\xe9o\x02~\xa0Y8\x1dj\xd6~\xd6\x0c\xc9\xfe+#_'
 b'\\\xbf\x17\xa8\x9c-h\x90\xcc\xf29V\x9b\xc5\x8cvq=tn\x87\xcfw\xf5'
 b'.\x04\x1f\xbf\x1bI\x10\x82k\x8f\xd2j-+\xd2\xe9\x91Zn\xbbZ\x123\xdf'
 b'\xa4\xf2\x99:\x18?I\xb8\xdao5\x0c\x8d!\xf8\x00\x00\x00E\x00\x00\x00_\x00'
 b'\x00\x00y\xbf\x1e\xfb\x97\x00\x03\x00\x00\x00\x93ivec')

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

{'A1': -55,
 'A2': {'B1': -0.6210264563560486,
        'B2': [{'C1': 9124390942599206526,
                'C2': [214, 12, 201, 254, 43, 35, 95],
                'C3': 92,
                'C4': -0.592416524887085,
                'C5': 761827532,
                'C6': 62009},
               {'C1': 6240798915725180276,
                'C2': [110, 135, 207, 119, 245, 46, 4],
                'C3': 31,
                'C4': -0.6065835952758789,
                'C5': 2188087250,
                'C6': 27181},
               {'C1': 3157843099236875098,
                'C2': [18, 51, 223, 164, 242, 153, 58],
                'C3': 24,
                'C4': 0.787976861000061,
                'C5': 1865747597,
                'C6': 8696}]},
 'A3': 132681994,
 'A4': 'ivec',
 'A5': {'D1': [-1376552890,
               173155274,
               1093972951,
               2033471644,
               1397772083,
               -2104984567],
        'D2': 7838455505801202157,
        'D3': -30364,
        'D4': 2632478512158427667,
        'D5': 886591312},
 'A6': -2691610947546943742}

Пример 2

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

(b'WBRN4\x00\x9f\xb6\xdd\xa4\xc5\x00\x02\x00\xa9\xe3\xee\xf2\xe0\xd1'
 b"!\xee\xc4\xa4\xd8&\xfc\xd4R'\xa1\x7f^\xfd_Gn\xabM\x8a\xb8c\x86,+^\xf0\xe3"
 b'&\xf8\x08\xcd\x06\x0e%fJo\xbcq\x18\xab\xd6\xe2"I2{zo\x97\xa1f(\xb9\t'
 b'Z\x0e\xc7\x88M\x1a\rdP<\xa8\xfb\xd2JbWxk\xb6\xe6\xcePG!\xe1\xd5\x96c'
 b'\xd2C\xb8~r\x06\x85\xbc\x8f\xcf\xd6!\x1d\xc5z\xfd\xda\x18\x80"!\xc9*\xe4'
 b'\xc3G\xbeA\xd1\xc0\x187\xd6?7\x0c\xecQ9\xc7`\xae\xaa\x00\x00\x00E\x00'
 b'\x00\x00_\x00\x00\x00y\xbe\xde;\xd5\x00\x03\x00\x00\x00\x93gv')

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

{'A1': 52,
 'A2': {'B1': -0.43405023217201233,
        'B2': [{'C1': 8041073119835261274,
                'C2': [14, 199, 136, 77, 26, 13, 100],
                'C3': 80,
                'C4': 0.020627889782190323,
                'C5': 1247958904,
                'C6': 27574},
               {'C1': -1815425333342382698,
                'C2': [99, 210, 67, 184, 126, 114, 6],
                'C3': 133,
                'C4': -0.017555158585309982,
                'C5': 555599226,
                'C6': 64986},
               {'C1': 1765448582433531075,
                'C2': [71, 190, 65, 209, 192, 24, 55],
                'C3': 214,
                'C4': 0.715040922164917,
                'C5': 1362741088,
                'C6': 44714}]},
 'A3': -1226988347,
 'A4': 'gv',
 'A5': {'D1': [-470879520,
               -786305340,
               -1529338116,
               -732813407,
               2136931679,
               1198435149],
        'D2': -8450895272842928400,
        'D3': -7386,
        'D4': 17872760547110643274,
        'D5': 1874620696},
 'A6': -6064411211322983558}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'UCCH\x04\x00\x02\x00I\x94\xc8Gt{C\xe1j\xbft$h\x07\xbb\xa5%\xb1\xcd\xbc'
 b'\xebM\x1b\xa1-\xf0_\x04\x00\x00\x03\x00M\x10y\x10b\xde\xa4I\xbb\x00\x00\x00'
 b'\x03\x00P\x00h*O\xe8S>\xa4V\xb4\xdcg\xf2\xb4\xbfp!\xe7\x009\x00Axsu'
 b'l\x1b\xcc*\xc7\x8aAi\x8a\x80q$\xce\xd6\x19\xe2\xf3\x16G\xfa\x07$+x\xf4\xddDf'
 b'\x19\x9f\x86,cc\re1\xc4\xe3\x02t\x9fm\x7f\x19\xce\xcd"\xea\x1c]F\xefC\xe8F'
 b'\x188\x13\xfa?\xe7Y\xe2\xd6\x97\xe8\x90>\xcc\t!?\xef\xf2Aa\xe7~\xc8D')

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

{'A1': 4,
 'A2': [{'B1': 10831, 'B2': -6061, 'B3': 0.3209739923477173},
        {'B1': 56423, 'B2': -3404, 'B3': -0.9380173087120056}],
 'A3': {'C1': -7725846595144261270,
        'C2': -0.9536805152893066,
        'C3': 129738021,
        'C4': -5634639839973629651,
        'C5': -262208512,
        'C6': 'xsu',
        'C7': 1186997993616984507,
        'C8': [7790044464575824233, -8466642896553633310, -930477133818221704]},
 'A4': {'D1': [17644334120414709292,
               7161582560727065346,
               8403555822357892386,
               16869460863466334278],
        'D2': 406328314,
        'D3': 0.7297224227215953,
        'D4': 0.39850714802742004,
        'D5': 0.9983221924012122,
        'D6': 68}}

Пример 2

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

(b'UCCH\x91\x00\x02\x00I\xc0)\xa1\xfc\x8c\xa8\xc1M>\x8d\xe8\xba\xe9Od'
 b"\\\x1d\xd8\x9b\xd8S'3\x8b/;\xec\x03\x00\x02\x00MPu\xd3\xfa\x0e\x98u"
 b'8\x00\x00\x00\x02\x00O\x00_3-I,= &\x04\xf3[\xe5\xfa\xbf(B\xb4\x009\x00'
 b'Ayl\xdc\x0c\x18\xea@\x82\xea\x9f4F\xa3\xdf\xe9\xe9u\x01\x90~\x96\x10\xe1'
 b'7c\xe0\x94\xdb\xeb\x8aW\xd9\xab|\xa0\xad\xa1\xb6\x1cC\x10\x98\x0c'
 b'\xf0\xc1J\xd8\x82\\\r\xc5LO\xde?\xd0\x9b\x1a\x1aR*|=\x8e`F?\xdb*\xc3LaB<-')

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

{'A1': 145,
 'A2': [{'B1': 13101, 'B2': 18732, 'B3': 0.03909875452518463},
        {'B1': 62299, 'B2': -6662, 'B3': -0.6572678089141846}],
 'A3': {'C1': -4599967438318550707,
        'C2': 0.2771661877632141,
        'C3': 3914294364,
        'C4': 2150640175479731083,
        'C5': 792456195,
        'C6': 'yl',
        'C7': 5797773166249538872,
        'C8': [-2590668291261142369, 3766878320439424257]},
 'A4': {'D1': [10411924387769312224,
               10726425916924865404,
               11578088020569690264,
               932457650069855245],
        'D2': -984854562,
        'D3': 0.2594666726151116,
        'D4': 0.06951956450939178,
        'D5': 0.42448503931976567,
        'D6': 45}}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xb1ESUC\x00\x00\x00\x02\x00o\xbe\xfd+{~\x18\xe2\x03\x8c\xb6tX[\xf6\x12\x86j'
 b'e\xbeG\x80^\xef\xfa7\xd7hudC\xcd\xcbp\xdf\x1bK\x11\x1b5\xbe\xd4'
 b'\x9e\x00\x00\x00\x03\x00w\xaev\x94\x13\x94B\xd2\xc5\xbf8\xa1\rt\xc8\x96&\xc9'
 b'\x82?\xda7\xf2@\xaaL|\xd0\xda\xf1dH\x9fkgM\x03G@\xc9\x1b\xbaUhf\xa0Is5\x86'
 b'o\rL\x00\x00\x00[\x00\x00\x00e\xf3>:\xca$N\x85\xe5\xc2Z\xda\x18')

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

{'A1': [{'B1': 'kg', 'B2': 5549357509428099669},
        {'B1': 'hf', 'B2': -6896854680615318196}],
 'A2': {'C1': {'D1': -16643,
               'D2': 3133236611102510262,
               'D3': [1951947766,
                      310798949,
                      3192356958,
                      4026152919,
                      1752523843,
                      3452661983,
                      457904411]},
        'C2': [53, -66, -44, -98],
        'C3': [4080941770, 609125861, 3260733976],
        'C4': -5875345852045536571,
        'C5': -0.7212074398994446,
        'C6': 1959302694,
        'C7': -13950,
        'C8': 0.40966469111408066},
 'A3': -790957724,
 'A4': 18591}

Пример 2

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

(b'\xb1ESUC\x00\x00\x00\x02\x00o\x89\x8bb\x8d\x17\xe0+wa\xe5,\xd1K $\xea\xa1'
 b',\xdb\xa1\xb0 t\\\xf0\x12\x17z\x95\xab\x92\xaa~\x91E\x9dC\xbe\x02\xa6\x10'
 b'\x94\x00\x00\x00\x02\x00w\x82L\xf6\xb6\xfc\x15_1\xbfb\x07\xc3\xc4\x08Fk_'
 b'}\xbf\xdd\x82\x11\x9d[V(\xd2F\xe0`\xb9\xb7is{\x0e\x10\x1b&gc8yq5\xd7\rQx'
 b'\x8e\x90G\x00\x00\x00[\x00\x00\x00e`U>\xbai\xbf\xba\xf4')

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

{'A1': [{'B1': 'is', 'B2': 8867042425133556536},
        {'B1': 'yq', 'B2': 3879584247569092679}],
 'A2': {'C1': {'D1': -30325,
               'D2': 7101358439002497509,
               'D3': [751913760,
                      619356460,
                      3684806688,
                      1952247826,
                      393909675,
                      2460647057,
                      1167934398]},
        'C2': [2, -90, 16, -108],
        'C3': [1616199354, 1774172916],
        'C4': -9057593484775170255,
        'C5': -0.8829309344291687,
        'C6': 3288876651,
        'C7': 24445,
        'C8': -0.46106376997826937},
 'A3': -767106976,
 'A4': 47543}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'OFFC\xa0\x87p\x05\x7f\xd3f\xbbwstyvklc\xe9?\x98\x19\x8b\xa2\x05\r'
 b'H\x7f\x94\x1f.\xe0k\xfb+wv\xc4B\xaf\x9cW\x00kn\xfeK\xcdko\x0b\t\xf5\xe4'
 b"j\xb6-\xa5L\xe6\xfa\x00a\xfe\x17L~\xc7\x1d^\xadi\xbd\xaa\r'\x01\xaa"
 b'\xdd\x86\x04\xc4G\xcd\x0f\xa7\x04c\xa7a\x96\x01\xd4V\x9c\x05\x1b\xc1'
 b'\t\xfc\x0b,\xb7\xe6D\x807\x98O\x84\x00z\xbfNn\xb9\xbfk\x0c\xd1?SD$>\r'
 b'\x99\xdc\xa7\xd3\xbe\xe5\x12F\x00\x02\x00\x00\x00r\xbe\xe8\xd1\xf3')

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

{'A1': {'B1': 11567337336846116539,
        'B2': 'wstyvklc',
        'B3': [{'C1': 16807319569854235917, 'C2': 1216320543},
               {'C1': 3377818447038084804, 'C2': 1118805079},
               {'C1': 30239860980542319, 'C2': 185202148},
               {'C1': 7689383601764760064, 'C2': 1644042060},
               {'C1': 9135302661617860010, 'C2': 220660138},
               {'C1': 15962451170326024103, 'C2': 73639777},
               {'C1': 10809154049115757505, 'C2': 167512876}],
        'B4': [47078, 17536]},
 'A2': 932728708,
 'A3': {'D1': [0.8252584934234619, 0.13828223943710327],
        'D2': -22573,
        'D3': -0.44740504026412964,
        'D4': [-0.8063769936561584, -0.9181643128395081],
        'D5': -0.45472678542137146}}

Пример 2

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

(b'OFFC\xdb%\xcb\x7fb\x0e\x94\x8caokfheah\xd0\xdfh}\xb7"\xbei0\xc0~l\x06\x12t('
 b's\x1d\xb9O\x18\xa6$\x84\xa9z\x94\xe7\x176p\xfc\xc0\xfb\x0b\x9dz>>\xf4'
 b'\xb2\xda\x13\xcde\xbew\x9d\xd5\xe2\xe8ST\x9ad\xed\x9c\x0b\xfaOj\xf6aC'
 b'\x9e\xd0\xbb\xf2\xe4a`*o\xb4\x83\xeb\xae\xe3;/\xbek\xe2\xbf\xe4\xc5\x9e@'
 b'\x12\xcco\xc2\x00\x82\xbf\x1f\x9c\x01=\xec\x87\xa3=\xee%\x12\xbe\r'
 b'c\xed\xbe\x9b\xe2q\xbe\xe9\xec\xbe\xa8\xf0\xbf|\x9c\xb9\x00\x04\x00\x00'
 b'\x00r\xbfV\x8d\xa2')

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

{'A1': {'B1': 15791251416410920076,
        'B2': 'aokfheah',
        'B3': [{'C1': 15050863368848195177, 'C2': 817921644},
               {'C1': 437539830887201103, 'C2': 413541508},
               {'C1': 12212237059816321276, 'C2': -1057289315},
               {'C1': 8808547141876847565, 'C2': 1706981277},
               {'C1': 15412136319414592749, 'C2': -1676936625},
               {'C1': 7707454755346365426, 'C2': -463380438},
               {'C1': 8049203482292599599, 'C2': -1100225857}],
        'B4': [58565, 40512]},
 'A2': 315387842,
 'A3': {'D1': [-0.3044619858264923, -0.45688432455062866],
        'D2': -22288,
        'D3': -0.9867663979530334,
        'D4': [-0.6234741806983948,
               0.11549308151006699,
               0.11628164350986481,
               -0.13807649910449982],
        'D5': -0.8380986452102661}}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xa1GMR?\xe9\x8a\xd9\xe3#\x97Nanilqqkt\xdc\x87\xceq\x1df\xa5\xb9\xe6\xf1Mk'
 b'8@\x8a?\xe6\xee\x1c\xef\xc5\xd78\x00\x00\x00\x02\x00\x00\x00_\x16'
 b'\xf2\xb2\xc2R\xde\xe3N\xd3\x00\x02\x00\x85l`%\xa2\xe2\xb1SP\xb8\xd6}i'
 b'J\xfb\xadw\x8a\xf4\xffF\xe7\n|\x07\xde\xf6\x1c\xf7@\x83\xa3\x8d\x88\xbe!\xe3'
 b'\x1a\x1c\xfcH\x14R\x80\x1d\xc1\x0b\xecvl\xb5\x02\xf4\xb8\x8f.y\xc5D\x9a\xf2'
 b'\x8e\xb1\xd3aNS\xf6\xfb\xa7RhKe')

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

{'A1': {'B1': {'C1': 0.7981995998677378,
               'C2': 'anilqqk',
               'C3': 8420754724006749861},
        'B2': -5051084617235808118,
        'B3': 0.7165665324271009,
        'B4': [{'D1': 2374549025,
                'D2': [227, 26, 28, 252, 72, 20, 82],
                'D3': 9231747068135369909},
               {'D1': 49592463,
                'D2': [46, 121, 197, 68, 154, 242, 142],
                'D3': 12813692353843231655}],
        'B5': 22,
        'B6': -958490109493948717,
        'B7': [21096, 19301],
        'B8': 7809283135378641744},
 'A2': 3101064553,
 'A3': 5403102906905067334,
 'A4': -25,
 'A5': 755487491684628288,
 'A6': -31837}

Пример 2

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

(b'\xa1GMR?\xd0<\xf4\xd3\xb3\xb7Tresfcvn\x0cmQKc\xd2\x8brSmj\xdc{\x15\x1d\x9a?'
 b'\xd3@e\xb91}\xd8\x00\x00\x00\x02\x00\x00\x00_\x93\x1e\xb6\xa6\xd7pd\xc6\x94'
 b'\x00\x02\x00\x85\xb0\x8b\xf3g\xbb\x9a\xa0\x83\xc6;\x0fP\\GQ\xce'
 b'\x07\xdf\xce\x16\xd0\xa3\xf9\x01\x94\xf9\xa7\x15\xa4\x1c\x99PhCF\xde'
 b'\xc8\xd3\xf53\xd2J\xcf\xf0\xf5}\x1b\x7f.t\x89#(?`e\xb8\xd3\x8aa\t0\x85d'
 b'\x7f\x95,\xbd\xd5\xeae\xfc\x07')

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

{'A1': {'B1': {'C1': 0.2537204806711675,
               'C2': 'resfcvn',
               'C3': 895461285155736434},
        'B2': 6011578572799810970,
        'B3': 0.30080550275121487,
        'B4': [{'D1': 1349010246,
                'D2': [222, 200, 211, 245, 51, 210, 74],
                'D3': 14983745877942677108},
               {'D1': 2300782655,
                'D2': [96, 101, 184, 211, 138, 97, 9],
                'D3': 3496311184849419733}],
        'B5': -109,
        'B6': 2213139711133009556,
        'B7': [60005, 64519],
        'B8': 12721529199292752003},
 'A2': 3325759312,
 'A3': 6649373320173047318,
 'A4': -48,
 'A5': 11815476836738471332,
 'A6': 7321}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"DGUT\x00\x00\x009ibfzf'\x12Q\x0b\xe9\xfb\xec\xce\xa8w=\xcc\xe27?"
 b'\xe5\x9b\xfdZm\xf6pPYX\xb4"\xbf\xc88d\n;\xfb\xd0\xe39Q\xf7|\xf0\xbbr'
 b'p\x00\x00\x00\x02\x00\x00\x007$\x8b\xba\xa7\xf2\xa8\xc2<\xbf\xe8\x8a'
 b'2_\xa4\xdeZ\x14.\xd8b\xe7\xa9(hS\x1d\xd4/\x07\xf2\xb0J\x12\xab\r\x18r\r\x1b'
 b'\xcb\xd0Zsv.\xf1Ub\xfd\xde\xa5\x1a/\xe7\x05\x9da=\xa3)_1\xbd)9\xe3\x98'
 b'm\xae\xe5\x81\xb4\n\x0f\x15\xdcr\x90')

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

{'A1': {'B1': 'rp',
        'B2': 613137063,
        'B3': 4071146044,
        'B4': -0.766869723133776,
        'B5': [{'C1': 20, 'C2': 785933031, 'C3': -1456969645},
               {'C1': 29, 'C2': 3559852018, 'C3': -1337322837},
               {'C1': 13, 'C2': 410127643, 'C3': -875537805},
               {'C1': 118, 'C2': 787567970, 'C3': -35740390},
               {'C1': 47, 'C2': 3875904865, 'C3': 1034103135},
               {'C1': 49, 'C2': 3173595619, 'C3': -1737642267}],
        'B6': -9100637887101373808},
 'A2': 'ibfz',
 'A3': {'D1': 26151,
        'D2': 1319849265378152104,
        'D3': 119,
        'D4': 0.10004084557294846,
        'D5': 0.6752917066766724},
 'A4': {'E1': 1348032692, 'E2': 34, 'E3': -0.18922091006967756},
 'A5': [227, 57, 81, 247, 124, 240],
 'A6': 187}

Пример 2

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

(b'DGUT\x00\x00\x009cuwk\xda{\xa4t~e\xfc\xdcjF\xa5=\x83\xbb\xd5\xbf\xecoTB'
 b'e\x014.\xca\x0f\xa9\x83\xbf\xeb_\x882\r^b\xf4\xf5\x8dafN)ho\x00\x00\x00'
 b'\x02\x00\x00\x007/J\xa7..\xa0C\x81?\xc8\x03\xeb.\xbb\xc8h\x0f\xb9[|n\x1d\xc3'
 b'\xa3M\x18\xad\\ qk\r\t\xec\x00\xbed\xb3\xb0v\x16z\xd9q\x85\x83\xc6\x15\xe4np'
 b'\xc4(\xc5\xcb\x8ad\xcfBE\xb3\xfc\xfdpo\xe3\xb7c\xda\x1f_\xa0Ho\xe48\xb4z')

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

{'A1': {'B1': 'ho',
        'B2': 793421614,
        'B3': 782254977,
        'B4': 0.18761958867941364,
        'B5': [{'C1': 15, 'C2': 3109780590, 'C3': 499360589},
               {'C1': 24, 'C2': 2908495985, 'C3': 1796016620},
               {'C1': 0, 'C2': 3194270640, 'C3': 1981184729},
               {'C1': 113, 'C2': 2240005653, 'C3': -462524220},
               {'C1': 40, 'C2': 3318450788, 'C3': -817740365},
               {'C1': -4, 'C2': 4252004323, 'C3': -1218192865}],
        'B6': 6890587075284350074},
 'A2': 'cuwk',
 'A3': {'D1': 55931,
        'D2': -6596508577691833786,
        'D3': -91,
        'D4': 0.06432310491800308,
        'D5': -0.8885899826782748},
 'A4': {'E1': 784994217, 'E2': 131, 'E3': -0.8554116227705431},
 'A5': [244, 245, 141, 97, 102, 78],
 'A6': 41}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'\xd3NKYEn\x02\x00Q\x00\x00\x00\x9f+\n\xf7I.f\x189oH\x9bR>;KF\xae\xd1\xef'
 b'\t1\x177\x0b\x96T\x9avQ\x0er!0bl\xb5\x86\xdag\x00r\xfb\xb0%4\x18^'
 b'\xa9\xd81\x08\x00\x00\x00i\x00\x00\x00\xa9\x00rhqrxkwb\x05\x00I'
 b'\x00\x00\x00\x12\x94nq\xc9\x03\x00N\x00\x00\x00_\xfe\xe5b@\xe2\tG\xa0}'
 b'cV\xf6T\x11q\x1a\x1d\xc2\xed\xd0\xd3\xe9\x06dR\t\x95u\x8f)\xea\xfe^L7F\x9c'
 b'\xb5\\\x95\xdb\xb9\x0eg\x811(\x84\x0c|\xa8\xf8\xbb2\xd1\xa1\xfe\xea\xbe%('
 b'\xa63\xe2\x0b*[\xd3\x06\xf3\x7f\x14\xe2<3')

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

{'A1': 110,
 'A2': [{'B1': 'rhqrx', 'B2': 18, 'B3': 3379654292},
        {'B1': 'kwb', 'B2': 95, 'B3': 1080223230}],
 'A3': {'C1': {'D1': -97, 'D2': 1240926763, 'D3': 26158},
        'C2': 24,
        'C3': 5420995100983979833,
        'C4': {'E1': 44614,
               'E2': 209,
               'E3': 239,
               'E4': 9,
               'E5': 5937,
               'E6': [1031736194860714807, -2700271449453616782]}},
 'A4': {'F1': -30, 'F2': 9},
 'A5': [64370, 9648, 6196],
 'A6': 836282718,
 'A7': [1248893847585267783,
        16849040350505671281,
        2994741560191640582,
        13086411820550258410,
        3567245692799522140,
        3655788925060678696,
        11972861111281033681,
        17511916589577658931],
 'A8': {'G1': 0.027597663924098015, 'G2': 51}}

Пример 2

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

(b"\xd3NKYE\xfa\x02\x00T\x00\x00\x00j\x02\x0f\x9f\xa3pM'\xf9\x0c\xe7\n\x0f;Ky"
 b"\x9cG\x1br\xb5D7Y*=\x1e\x06h\xb9\x18'\xf9r*\x8b\x0e'<j\x00\xfe\x03\xe9"
 b'=\x8b\x08\x19T\xeb\x0b\x05\x00\x00\x00l\x00\x00\x00\x94\x00rbgjiobewpl'
 b'\x04\x00I\x00\x00\x00\x99b\xe4\xaeo\x07\x00M\x00\x00\x00\xed\x02\x93'
 b'.\xe8R\x96\x98\xdd\x8fc\xd3\x80i\nk\xe3m\xc0\x03\xde,\x98\x82\xa5\xb0M'
 b'\xb0l\xa5\xef\x08H\x88Vq\x17\xef\xb7\xf1\x19\x87\x17R\xb1h\x12\n"\x1a\xbf'
 b'\xb4')

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

{'A1': -6,
 'A2': [{'B1': 'rbgj', 'B2': -103, 'B3': 1873732706},
        {'B1': 'iobewpl', 'B2': -19, 'B3': 3895366402}],
 'A3': {'C1': {'D1': 106, 'D2': 2745110274, 'D3': 19824},
        'C2': 39,
        'C3': 8740144437636041977,
        'C4': {'E1': 18332,
               'E2': 27,
               'E3': 114,
               'E4': -75,
               'E5': 14148,
               'E6': [1781569503088159321, 4334449157242812711]}},
 'A4': {'F1': 82, 'F2': -106},
 'A5': [1022, 15849, 2187],
 'A6': 199971865,
 'A7': [750272458330725784,
        10965383300435010411,
        17268327850695501186,
        13253838003925174280,
        1326505056400775665],
 'A8': {'G1': -0.6020818948745728, 'G2': -76}}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'QMP\x03\x00C\x00\xab\x1a\x92\xdeR\x95]qF\x00P\x00Z\x00d\x00n\x00x\x00\x82'
 b'\x00\x8c\x00\xda\xad\x03\x00\x00\x00\x96\x00\xa7b\xaa\xcc\xa2\xbe\xe0V<'
 b'\x0c}\xcc\x9bP\xee\xbf\x9c\x00\xd1\xd8R\xe6V\xc6\xa4\x00\x00\x00dtf#\x1a'
 b'P\xdf\xedu\x886w?5\x8b\xa7/~\xd0\xb1\xfe\t\xbf?T!\x8c\xe9\xdcIg\\='
 b'2\x07\xf7\x00\xc1\x01\x1bp3?\x0epA\xef\x9a\xb9\xcd \xc7\xbd\xce\xbe\xf0I+P(F'
 b'\xdd\xbe\xac\xc5\x8a\xf1\xd2\xdahB\x13\xbf~0\xf5Z\xa6O\xe01\x84\xbc\x92\xff'
 b'K\xbc\xe0[\x0f10?\xdc\xe8\xf7\nL\xf3+\xdf\x1f\xe7#.\x13?')

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

{'A1': {'B1': 'dtf',
        'B2': 8168849482273921707,
        'B3': [{'C1': 6691, 'C2': -8368, 'C3': 30189, 'C4': 0.9656758308410645},
               {'C1': 35637,
                'C2': 12199,
                'C3': -12162,
                'C4': -0.5390425324440002},
               {'C1': 21567,
                'C2': -29663,
                'C3': -8983,
                'C4': 0.05380943790078163},
               {'C1': 1842, 'C2': 247, 'C3': 449, 'C4': 0.7009293437004089},
               {'C1': 28686,
                'C2': -4287,
                'C3': -18022,
                'C4': -0.09723053127527237},
               {'C1': 48846,
                'C2': 18928,
                'C3': 20523,
                'C4': -0.432175874710083},
               {'C1': 50604,
                'C2': -3702,
                'C3': -9518,
                'C4': -0.5752320289611816},
               {'C1': 12414,
                'C2': 23285,
                'C3': 20390,
                'C4': -0.01613706350326538}],
        'B4': -38,
        'B5': 173,
        'B6': [65426, 48203, 23520]},
 'A2': 6260213088472687271,
 'A3': -0.9473399156489744,
 'A4': {'D1': 0.6882485747337341, 'D2': -5924, 'D3': 2807},
 'A5': -430778159,
 'A6': 50774,
 'A7': {'E1': [76, -13, 43, -33, 31, -25], 'E2': 0.5749227404594421}}

Пример 2

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

(b'QMP\x04\x00C\x00Ny4p\xd2\x96\x15ZG\x00Q\x00[\x00e\x00o\x00y\x00\x83'
 b'\x00\x8d\x00\x9c\x7f\x02\x00\x00\x00\x97\x00\xf3\x1d\x8f\x95\xe4'
 b'\x0f\xa5\xdc\xbc\x00#\xd3\xd2\x10\xd2\xbf\x9b\x00\xa3}d\x8c\xeat\xa3'
 b"\x00\x00\x00vdzz'\xe5\xd9\xfeA.A+Y\xbey\xed\xe7\xa1\xe3\x014\x0e<\xbf\xd3"
 b'\x1b\x1c16{b\x17\x18?hPs\x12 \xaf\x9c\xfew\xbf\xfe6hk\xfa\xd0\xfb\xe7('
 b"?\xb2L\xf1\xdb\xad\x90L0\xf2>\xf8q}\xf6U\x917\xf8\xd3>'+\x96\xcf\xd5h\xee"
 b'd\xcf\xbelr\x89\xcb\x96\xa3\xe8>\xdd\xf1B\x9c%\x00\x1dn\xaf/Q\x9b\xcc>')

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

{'A1': {'B1': 'vdzz',
        'B2': 6491260268494223694,
        'B3': [{'C1': 58663,
                'C2': -295,
                'C3': 11841,
                'C4': -0.21207906305789948},
               {'C1': 60793,
                'C2': -24089,
                'C3': 483,
                'C4': -0.7345917224884033},
               {'C1': 7123, 'C2': 12572, 'C3': 31542, 'C4': 0.5941067934036255},
               {'C1': 20584, 'C2': 4723, 'C3': -20704, 'C4': -0.96872878074646},
               {'C1': 14078,
                'C2': 27496,
                'C3': -12038,
                'C4': 0.6597897410392761},
               {'C1': 19634,
                'C2': -9231,
                'C3': -28499,
                'C4': 0.47302472591400146},
               {'C1': 29176,
                'C2': -2435,
                'C3': -28331,
                'C4': 0.4140031039714813},
               {'C1': 11047,
                'C2': -12394,
                'C3': 26837,
                'C4': -0.40506690740585327}],
        'B4': -100,
        'B5': 127,
        'B6': [29292, 52105]},
 'A2': -2547612539772002829,
 'A3': -0.28227682703801427,
 'A4': {'D1': 0.4543730616569519, 'D2': -3619, 'D3': -25534},
 'A5': -1939571293,
 'A6': 29930,
 'A7': {'E1': [37, 0, 29, 110, -81, 47], 'E2': 0.39962247014045715}}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xc6HAS\x00\x02\x00&c:sb\x00J\xfbx\xbfF\x85\xe1E/?\xe1\x05\x15\xfew'
 b'\xf4V\x00\x00\x00c\x00\x00\x00\x85\xc2\xc9\xbf\xc7r\xbb\x87nJ\x18\x0b\xd1Qz'
 b'*P\xa6\xd3\x80\xa0\xbf\xe4I\xa7\x0e\xb2\x06\xe0\xab\xe5a\xea\xffs\xb8\xe5>s'
 b'V\xbc\xd0\xdc \xa6\xc6\x11\x9f}\x81\xf8\xe8C?\xef\t\x05\x97\xa2G\x06\x8c\x0f'
 b"\xda\x00\x04\x00\x00\x00Vl\x00Z%\x0f'\xbe\xf0\x16\xd4\xbf?\xd9nen\xfe"
 b'\xbf\xec\x87|\x92\xd2\xfe\xaa\xa7\xa2\xd0\x00\x03\x00\x00\x00yl\x00|RTz>'
 b"\x87E\x89?'\x0cj")

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

{'A1': [{'B1': -15671, 'B2': -0.18318885910828508, 'B3': 851551389687523027},
        {'B1': -32608, 'B2': -0.6339907919902679, 'B3': -6060330061621118747}],
 'A2': 1664775010,
 'A3': {'C1': 0.2376355528831482, 'C2': 15049939955425058685},
 'A4': 64376,
 'A5': -0.775480329990387,
 'A6': 17711,
 'A7': 0.5318708391274736,
 'A8': [{'D1': 4058,
         'D2': [129, 248, 232, 67],
         'D3': 108,
         'D4': {'E1': 0.9698512994384323, 'E2': 140},
         'D5': [37, 15, 39],
         'D6': -0.4689241647720337,
         'D7': -0.7494114637374878},
        {'D1': -23856,
         'D2': [101, 110, 254],
         'D3': 108,
         'D4': {'E1': -0.8915388934764981, 'E2': 167},
         'D5': [82, 84, 122],
         'D6': 0.26420238614082336,
         'D7': 0.6525331735610962}]}

Пример 2

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

(b'\xc6HAS\x00\x02\x00&q\xaa\x81\x00\x00J\xa30\xbd\xcd"\x97t\xd7\xbf\xde'
 b'\xe5\xf8\x96`(\xa4\x00\x00\x00d\x00\x00\x00\x86\xba\xd2?\xe0\xaf \xcf@\xb04'
 b'\x80\x0c\xbd7W\\~\xa96\x1a?\xdd!\xb4P\xfc\x16\xb012=9)\t^p\xbf\x13'
 b'Y\xa3\xc0\\P\x88i4\xfc\x18K}\xc5\xea\xa2?\xeeR2\x8a\x7fU~C\xb5w\x00\x05'
 b'\x00\x00\x00V\xf0\x00[h\xbfv\xbf<\x9cb?\x02\xa4G\xba\x15\xf9?\xcf\x1d\xd5*dm'
 b'\x18V\x0c\xb7\x00\x03\x00\x00\x00z\x8d\x00}\x12\xb3\xc9\xbf\x0f\x8d/'
 b'?m\xdd\x8e')

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

{'A1': [{'B1': -17710, 'B2': 0.5213779495147777, 'B3': -9219786291747717463},
        {'B1': 13850, 'B2': 0.4551821509233873, 'B3': 3544963172404911728}],
 'A2': 1906999552,
 'A3': {'C1': -0.5755864977836609, 'C2': 13861042299950398488},
 'A4': 41776,
 'A5': -0.10016363114118576,
 'A6': 29911,
 'A7': -0.4827863186370769,
 'A8': [{'D1': -19081,
         'D2': [75, 125, 197, 234, 162],
         'D3': -16,
         'D4': {'E1': 0.9475338654544172, 'E2': 67},
         'D5': [104, -65, 118],
         'D6': -0.736761212348938,
         'D7': 0.510319173336029},
        {'D1': 3255,
         'D2': [186, 21, 249],
         'D3': -115,
         'D4': {'E1': 0.24309792108474748, 'E2': 86},
         'D5': [18, -77, -55],
         'D6': -0.5607480406761169,
         'D7': 0.9291619062423706}]}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b"XRBI\x00\x00\x00\x02\x00\xb2NC>\x85'\xabe\x8d\xc64!\xe4\xc1\xcf"
 b'\xd9\x1c\xab\x87E\x00\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00'
 b'\x12\xbf\xe5\xfc\n\x82\x98\x87\x80\xbf\xec\x11\xd5\xe1\x04\xbd\xe4?\xeb\xe2'
 b'\ti!\'T\xbfN\xff\x82?Aq=>:`\x90n\xb7"\x9c\\-\xdd\xf0\xbe\xfcV\xc3\xbfU\xcf'
 b"'\x00\x00\x00\x14\x9d9,\xc3/\xcdUj\xf8\x82\t%\x00\x00\x00\x00\x02\x00a"
 b'\x00\x02\x00\x00\x00c\xbf\xbb4\x80\xf3\x11\xea \xbf\xd4\xcc\xe98&. ?\xee'
 b'Z\x1a\xa9;\xbc\x8c?O\x1a\xcf\xbe\xcb~\xefB`\x9f\\`\xf5_\xc9R\x17'
 b'\xa1\xad\xbf{\xbc\xfd\xbd\xbd\xce\xee\x00\x00\x00e\x00A\x00\x92')

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

{'A1': {'B1': [{'C1': -0.8085862398147583,
                'C2': 0.7556341290473938,
                'C3': {'D1': 15930, 'D2': [24720, 28343, 8860, 23597]},
                'C4': 56816,
                'C5': -0.4928494393825531,
                'C6': -0.8351921439170837,
                'C7': {'E1': 33,
                       'E2': 16483684642548582213,
                       'E3': [101, 141],
                       'E4': [-58, 52],
                       'E5': [-0.6870167303752481,
                              -0.8771771807568567,
                              0.8713423779783889]}},
               {'C1': 0.8090028166770935,
                'C2': -0.39745280146598816,
                'C3': {'D1': 16992, 'D2': [-24740, 24821, 24521, 21015]},
                'C4': 41389,
                'C5': -0.9833524823188782,
                'C6': -0.09267984330654144,
                'C7': {'E1': 47,
                       'E2': 14795849766361703680,
                       'E3': [157, 57],
                       'E4': [44, -61],
                       'E5': [-0.10626989301992085,
                              -0.3250067756968935,
                              0.9484990411127838]}}],
        'B2': 20035},
 'A2': 0.26006826758384705}

Пример 2

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

(b'XRBI\x00\x00\x00\x02\x00\xb2\xccx\xbeF\xea\xc9\x1aV"O\xfd\x0e\x9d4`F,c'
 b'\x02\x00\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x12\xbf\xe0\xb9\x85zod'
 b'v\xbf\xc3(\x83\xabiB`?\xc8\x12 \x97\xa9\xed\xb8>~\xb8n>\xc7A\xb4\x81r\x10'
 b'\x80\x87\xfe\x87\xbe!s\xd9\xce?tD\xdd>\xe4\x80?\x00\x00\x00\x14\xbc\xe7\x13'
 b'\xb5\xe5\xa0\xa6\xad\xb0\x11\xb5\xfa\xe8\x00\x00\x00\x02\x00a'
 b'\x00\x02\x00\x00\x00c\xbf\xedG\xaab\xc9\x80\xb4\xbf\xa8\xcf\x8b\xff\xfb'
 b'K\x00\xbf\xeb\xde\x7f\tG!\x82\xbf4\xf0\x8f>\xd6t\x11>J\x8cc\xce\xec'
 b'\xe9\t[\x84\xac,?X/\x8a\xbfR\xaa\x9a\x00\x00\x00e\x00A\x00\x92')

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

{'A1': {'B1': [{'C1': 0.24875041842460632,
                'C2': 0.38917315006256104,
                'C3': {'D1': -32398, 'D2': [4224, -30722, -30786, 8563]},
                'C4': 55758,
                'C5': 0.9541757702827454,
                'C6': 0.4462909400463104,
                'C7': {'E1': -3,
                       'E2': 1053055475973382914,
                       'E3': [26, 86],
                       'E4': [34, 79],
                       'E5': [-0.5226466552077358,
                              -0.1496738993614768,
                              0.1880532017274683]}},
               {'C1': -0.7067956328392029,
                'C2': 0.4188542664051056,
                'C3': {'D1': 15946, 'D2': [-29597, -12564, -5879, 23428]},
                'C4': 44076,
                'C5': 0.8444753885269165,
                'C6': -0.8229156732559204,
                'C7': {'E1': -27,
                       'E2': 11576130863925426920,
                       'E3': [188, 231],
                       'E4': [19, -75],
                       'E5': [-0.9149982385097446,
                              -0.04845845699096252,
                              -0.8709101849754435]}}],
        'B2': -13192},
 'A2': -0.1942550092935562}