ИНБО-06-22

Вариант №1

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FCNH\x04\xbf\xcaH1\x0c\x9d<0\xc5\x96\xc6\xd6\xa7\x00\x00\x00\x03\x001'
 b'\x00\x00\x004\x00\x00\x00I\x00\x00\x00^\x00\x00\x00s\x00\x00\x00\x88'
 b'\x00\x00\x00\x9d@wib.>v\xc9\xde\xbb`\xc7u\xbf\x14\xc9\xee\xaa\xf8\xb5\xb6Xj;'
 b'\x12s\xbe\xfcC\x9c>\xc4\xe3\x8f=\x83\xdf\xe1\x82\x9e\xadh4\xbd\xd8\xc8\\\xbc'
 b'*\xc6L>\xddi\x0e>\xd9M{f\x14\xfas<nDTL>*9\xfb=\xdfm\x9c\xbfG\xd4r'
 b'\xaa\x06\x15c\x86?\xdd\xcav\xbfza?>!\xf3e>\x11\xa1\x87B\xcfZ\x81\xb1\xddU'
 b'\xba\x88?6\xa4A\xbdj\xb2\x86?2\xd5\xde(\x87\x14\x8b\x9dw\xfc~')

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

{'A1': {'B1': -0.20532811275413243, 'B2': 197, 'B3': -1765353817, 'B4': 'wib'},
 'A2': {'C1': [{'D1': 46,
                'D2': [0.24100443720817566,
                       -0.0034298573154956102,
                       -0.581206202507019],
                'D3': [2868426166, 1483356946]},
               {'D1': 115,
                'D2': [-0.49270331859588623,
                       0.3845486342906952,
                       0.0643918588757515],
                'D3': [2191437160, 884857032]},
               {'D1': 92,
                'D2': [-0.01042325422167778,
                       0.4324421286582947,
                       0.42441925406455994],
                'D3': [1712650867, 1013859412]},
               {'D1': 76,
                'D2': [0.16623680293560028,
                       0.10909578204154968,
                       -0.7805854082107544],
                'D3': [2852525411, 2252332490]},
               {'D1': 118,
                'D2': [-0.9780463576316833,
                       0.15815503895282745,
                       0.1422177404165268],
                'D3': [1120885377, 2984072634]},
               {'D1': 136,
                'D2': [0.7134438157081604,
                       -0.057299159467220306,
                       0.6985758543014526],
                'D3': [679941259, 2641886334]}],
        'C2': 64}}

Пример 2

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

(b'FCNH\x04\xbf\xed\x91\x17\xa2\xa4\xe2\xf8H\xc5\x8f\xc5\xa7\x00\x00'
 b'\x00\x02\x001\x00\x00\x003\x00\x00\x00H\x00\x00\x00]\x00\x00\x00r'
 b'\x00\x00\x00\x87\x00\x00\x00\x9c\x94ol\x0f\xbfsCP\xbe\xb3}\xfc'
 b'\xbf\x1e\x84\xccr\xf7\xe7\x11o\xe4*ie?0\xd0\x8a?Ty\xa8>M\x10d\xf0\x1d\xb0'
 b'.X\x191{}?2\xecF\xbf\x0c\x1aE\xbe\xa6\xae\xde!hhEN\xe9\xe8*\x0e\xbf'
 b'8\x13)\xbd\xc9\xae\x1e\xbf\\\x1c@\x899\xa8\x0c\xfd\x15\x8a\x8aD>\xb5cj'
 b'>\x9d\xce\xe6\xbf\n\x03\x18Z\xef\x98\xef\xf1av\xad\xb5>]\xd8\xe1?\x19V'
 b'\x9d?\x12\\\xfcY\xaa\x9b:\x91\x146\xac')

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

{'A1': {'B1': -0.9239614655153607, 'B2': 72, 'B3': -980433497, 'B4': 'ol'},
 'A2': {'C1': [{'D1': 15,
                'D2': [-0.9502458572387695,
                       -0.35057055950164795,
                       -0.6192138195037842],
                'D3': [1928849169, 1877224041]},
               {'D1': 101,
                'D2': [0.690682053565979,
                       0.8299813270568848,
                       0.20025783777236938],
                'D3': [4028477486, 1478046075]},
               {'D1': 125,
                'D2': [0.6989177465438843,
                       -0.5472758412361145,
                       -0.32555288076400757],
                'D3': [560490565, 1323952170]},
               {'D1': 14,
                'D2': [-0.7190423607826233,
                       -0.09847663342952728,
                       -0.8598060607910156],
                'D3': [2302257164, 4246047370]},
               {'D1': 68,
                'D2': [0.35427409410476685,
                       0.30821913480758667,
                       -0.5391097068786621],
                'D3': [1525651695, 4049696429]},
               {'D1': 181,
                'D2': [0.21664763987064362,
                       0.5989778637886047,
                       0.5717313289642334],
                'D3': [1504353082, 2434021036]}],
        'C2': -108}}

Вариант №2

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'IRDV9W\x00\x00\x00^\xd7\xa7K\xde\x19\xe8?\xb0\xb6,?\x0eamhjk\xca'
 b'\xcb]\x91\x9c\x9e\x02\x00\x00\x00\x7f\x00=\xf1tv\x19g\xdd\xaf\xb1'
 b'\xc2\x88\xeb)W\xcf\xec{\x80,\x9a\x97\xaaO\x94e\x82\xfc>ZD\xc3\xe2\xf3c\x8f6y'
 b"\x9e\xc4\xbc4]q\xe83\x00C\x00A\xb9r\xe9s2l\x185\x03\x00\x00\x00'\x00\x00\x00"
 b',\xafgu\xcc{\xa9\x90\x0c\xe0\x99J"\xba?\x02\x00\x00\x00S\x00\x00\x00\xbc'
 b'?\x94\x9a<\x17\xd0\xbf\x14\x0c}\x9e\x9c\\\xe3?')

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

{'A1': {'B1': {'C1': {'D1': 65,
                      'D2': 3825926847400080057,
                      'D3': [1987375421, -1344444647, -343358799],
                      'D4': 44},
               'C2': 3430246319,
               'C3': 43387},
        'B2': 0.1020857453986983,
        'B3': [{'E1': -7337348423151036631,
                'E2': -1806718313,
                'E3': 33381,
                'E4': -4,
                'E5': 62},
               {'E1': 3931470898850382938,
                'E2': -1127965063,
                'E3': 23860,
                'E4': 113,
                'E5': 232}]},
 'A2': 0.7531577565812133,
 'A3': 0.6746625900268555,
 'A4': 14,
 'A5': 'amhjk',
 'A6': 2438843338,
 'A7': -24932,
 'A8': [-0.25141825767149917, 0.6050551505544512]}

Пример 2

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

(b'IRDV9[\x00\x00\x00F\x98KY\x06\xe6\xed\xbf\xcc\x7f5?\xeewtpgn\r|\xfb\xf6\xf4'
 b'>\x02\x00\x00\x00\x83\x00v\x95\xbc\xcf\x1e-\xa8\xcb\x83-\xca\xbf\xe7'
 b'\x11\x87\xffz\xf1\xf6\xc6\xd8\x0b~-U\x10\xf4\xb6\xe8\x82\x17\t|\r\xf4\xdf0'
 b'\x1d\xe0\xe1\xdf\xac \x08\xa69\xa1\x087\x00G\x00\xf4\x000\x86\x96'
 b"\xb1\xb0\xfc\xb1\x04\x00\x00\x00'\x00\x00\x00N\x082\x1e\xe3\x97\xb8\\/t^%"
 b'\xa6\xd1?\x02\x00\x00\x00W\x00\x00\x00\x80\x0e\xce\x0f`\xf9\xef\xbf\xb4'
 b'\xc8\xad\xe1Nn\xdc\xbf')

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

{'A1': {'B1': {'C1': {'D1': 244,
                      'D2': -5621423958084145152,
                      'D3': [-809724554, -878170850, -1077269117, -7925273],
                      'D4': 78},
               'C2': 3810406920,
               'C3': 47255},
        'B2': 0.27576574539192733,
        'B3': [{'E1': 3278070604451213690,
                'E2': -1225519019,
                'E3': 33512,
                'E4': 23,
                'E5': 9},
               {'E1': -2170702924639629956,
                'E2': 136359135,
                'E3': 14758,
                'E4': -95,
                'E5': 8}]},
 'A2': -0.9343291992233922,
 'A3': 0.7089812755584717,
 'A4': 238,
 'A5': 'wtpgn',
 'A6': 4143676429,
 'A7': 16116,
 'A8': [-0.9991913136186241, -0.4442326740164717]}

Вариант №3

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\xedFFQU\xf9\x17\x1c\x04\x85\x02\x00\x00\x00Y\x00\x00\x00\xe0\x96'
 b'\x02\x00\x00\x00a\x00\x00\x00\x892\x02\x00\x00\x00i\x00\x00\x00@\xe3'
 b'\x02\x00\x00\x00q\x00\x00\x00\x81\x00A4U\xc6N\x9b\x06d\xf0h\x8d\xe8\xc7\x9f'
 b'Q\x8c\xd3\n>J\xbc\xbcr\xaf\x18)s\x85\xbe\xa2\xe1`19#\xdaT\xed\xbfPHq'
 b'\xbf\xfdf\xd9>H\x07H=\xc2;\x1e\xbfd\xa3e>B\xf77\xbdKt\x9e>\x80\xed\xa1'
 b'>x\xa2\xc1=@\x10yu\x02\x00\x00\x00y\x00\x00\x00\xff\x96\xcbd\xd2\xd1\xba'
 b"X\xc6\x0b\xd4\x11\x9d!5MM\xf0\xea\x04'u\xcaH\xf9")

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

{'A1': 249,
 'A2': 7191,
 'A3': {'B1': [{'C1': -31484, 'C2': [-0.942509651184082, 0.4246138632297516]},
               {'C1': -26912, 'C2': [0.04883506894111633, -0.6180993318557739]},
               {'C1': 12937, 'C2': [0.22425609827041626, -0.04491353780031204]},
               {'C1': -7360, 'C2': [0.3094809949398041, 0.3162651062011719]}],
        'B2': {'D1': [1036100216, 1970868288],
               'D2': -26881,
               'D3': 848463139213305035,
               'D4': -44,
               'D5': -25327,
               'D6': 1296905505,
               'D7': 17962829718281841392},
        'B3': 13377,
        'B4': 2605631061},
 'A4': {'E1': 6, 'E2': [61540, 36200, 51176, 20895], 'E3': 8267690042999886732},
 'A5': 16258767085132912815,
 'A6': -0.9166079223592014}

Пример 2

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

(b'\xedFFQUb\xd6\x7f\xff\xd7\x04\x00\x00\x00Y\x00\x00\x00\x1a\x93'
 b'\x03\x00\x00\x00i\x00\x00\x00>\xb4\x04\x00\x00\x00u\x00\x00\x00\x80\x04'
 b'\x02\x00\x00\x00\x85\x00\x00\x00\x95\x00[\xf5i\xa2x\xd9\x9bTwI\\\x1d\x94\xad'
 b'\x86m/\xcb\x97vcn\xca\\\x9bGF\x0c\x0eZ.\x94\x9e\xa0\xfb\xb5\xa7\xd9'
 b'?\xd0_\xfd\xbd\x15p\xbd>\xdb\xa9\x07\xbfU\x85:?_c\xa9=\xab\xe1^\xbfD\x8a\x11'
 b'>pu&\xbf\xb8\xd8&?J\xf15?\xd4T\xdd>S\x8b\xf6>\xa1\xf7:?\x16a])\xbawi'
 b'\x85\x02\x00\x00\x00\x8d\x00\x00\x00\xea\xa7\xa0\x91"\x94H\x8a\xc6/\x8e'
 b'$:\t\x9d\xbe.\xc5\xc3Z\x07\xf4\x8b\x07\x10')

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

{'A1': 98,
 'A2': 32726,
 'A3': {'B1': [{'C1': -10241,
                'C2': [-0.12371790409088135,
                       0.36999574303627014,
                       -0.5299355387687683,
                       0.7285969853401184]},
               {'C1': -27878,
                'C2': [0.08270906656980515,
                       -0.8706309199333191,
                       0.14212900400161743]},
               {'C1': -19394,
                'C2': [-0.6502294540405273,
                       0.6517443656921387,
                       0.7107130289077759,
                       0.4322878122329712]},
               {'C1': 1152, 'C2': [0.48153170943260193, 0.7303410172462463]}],
        'B2': {'D1': [693985558, 2238281658],
               'D2': -22550,
               'D3': 3442591009498894752,
               'D4': -114,
               'D5': 14884,
               'D6': 784243977,
               'D7': 1155045709655491525},
        'B3': -2725,
        'B4': 3648561769},
 'A4': {'E1': 155,
        'E2': [30548, 23625, 37917, 34477],
        'E3': 14586705604103581549},
 'A5': 3339997519530138460,
 'A6': 0.40086125920286375}

Вариант №4

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'MQZ"\x03\x00\n\x00;\x00hhv\xd2\xa3z@\x04`WL\x0bB\xbf\x02\x0e\xab\xb4'
 b"\x90'\xe4\xc8]\xa6\xc1?0\xcd\xc9\xc0\xb2\x8a\x92k\xa9r\xbf\xdb\xd7M\xbb\x90"
 b'\xd2V\xc0\x17\x81\xcf\xbf5\xd9\x83\xb1F}\x85\xed\xfe\xb3C\x05\xe8n\r\x00\x00'
 b'\x00$\x00\x00\x00\xa8\xe5l\x15F\xa9\xea?(\x89\x7f\xa6X\xb7\xc0\xbfTl\x9a'
 b'z\x01\xf4\xe0\xbf\x08\x13p+\xc1\xcc\xe1\xbf\xb8\xa7V\x97r\xaa\xc7?\xac\xdd>'
 b'\xbb\x19\xab\xde\xbf,J(\x16\xd0\x89\xd3\xbf\xb6\xa6g?"\xf2\xfb>\xaa\x19\n'
 b'?\x0f.\xb6>Q$C?4\xdb\x9b>h\x18Y>\xb5\xd0\xba&')

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

{'A1': 'hhv',
 'A2': {'B1': -1316759243,
        'B2': 379344701117267270,
        'B3': 28392,
        'B4': [{'C1': [210, 163, 122, 64, 4, 96, 87],
                'C2': -0.7579848766326904,
                'C3': 3031109122,
                'C4': 0.13788959797994638},
               {'C1': [48, 205, 201, 192, 178, 138, 146],
                'C2': -0.9478976130485535,
                'C3': 3142440923,
                'C4': -0.24612709895668106}],
        'B5': [0.833163301321453,
               -0.13059528474611537,
               -0.5297858614534428,
               -0.5562444542307228,
               0.18488914861273797,
               -0.4791931465692538,
               -0.30528642810637296],
        'B6': 0.9048875570297241,
        'B7': {'D1': [0.4920817017555237,
                      0.5394541025161743,
                      0.3558201491832733,
                      0.7622728943824768,
                      0.3044067621231079,
                      0.21200716495513916],
               'D2': 649777333}}}

Пример 2

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

(b'MQZ"\x04\x00\n\x00<\x00lusz\xd5&5\xb1wz)\x0f\xdc,\xbf\xa8\xbeQ>\x02*:'
 b'\xe2\xabI\xef?\xf4\xb7\x04\xd3\x12\x04\x1a\xd2\x191\xbe)\x10\x12H2\x96\xb2g'
 b'\xb0Z\xe4\xbf\xbeN\x08\xa5\x13\xde\xf9\x91\x8fe\x1e5\xeew\x0e\x00'
 b'\x00\x00%\x00\x00\x00\x00\xc4\xa3X\xc4\r\xd0\xbf\xe0\x9c\x05\xc9\xa9t'
 b'\xb9\xbf\xc0\xd6\x96t\xc1\x81\x90?\xd8,\xcaBjP\xd6?\xce\xb1\xdf\x9fQ\xae'
 b'\xe8?,\xabq\xf8aB\xed?\x14F\xdeP\x85\x91\xdb\xbf\xdf\x0cM?\xe6\xfe&?\xdaX'
 b'I?\x0f\xd1{\xbd\x9c\xf7\x01\xbed8q?\xf1\x05\x95\xbe:\xd7\x19c')

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

{'A1': 'lusz',
 'A2': {'B1': -1526182210,
        'B2': 3827608400615300627,
        'B3': 30702,
        'B4': [{'C1': [213, 38, 53, 177, 119, 122, 41],
                'C2': -0.6752328276634216,
                'C3': 1045544616,
                'C4': 0.9777430933475559},
               {'C1': [244, 183, 4, 211, 18, 4, 26],
                'C2': -0.17295005917549133,
                'C3': 1209143337,
                'C4': -0.6360704446166834}],
        'B5': [-0.25084026962491635,
               -0.09943638952028122,
               0.01611997865776149,
               0.3486581470721837,
               0.7712791559729852,
               0.9143533565923909,
               -0.43075688264170364],
        'B6': 0.8009776473045349,
        'B7': {'D1': [0.6523269414901733,
                      0.786512017250061,
                      -0.06147867068648338,
                      -0.12692111730575562,
                      0.9422667026519775,
                      -0.2910609543323517],
               'D2': 1662637882}}}

Вариант №5

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ANF\xd9Be}!T\xd2/\xfcmx\xe6\xbf\xe2{\x00\x8fi,L\x0e_\xa8\xa5\xde'
 b'\x8dX\xcf\xe5?\x14\x16\x91^\xe5@\x80s\xb23`\x01\xc0j@\x00\xfdz\xecd\x16\x94?'
 b"'\xa9\xa3)g\xa1\x17~\x16U\r\x15\x00,\x00\x85[\x14\xbf\x99\xf6+?\x94"
 b'\xe0\x15\xbf\x9a\xbai?\x9f\x85<\xbe\x03\x00G\x00\xa2\xb53?\x18c\xdb?\x02'
 b'\x00\x00\x00S\x00UrD\xe6\xdc\x84*\xf6\xed\xbb\xe6?D_\xd1\x9f\x89A]\xa2gei'
 b'\x02\x00\x00\x00C\x00\x00\x00\x88/[\x00\x00\x00')

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

{'A1': 561866050,
 'A2': -0.7022008824847696,
 'A3': 226,
 'A4': {'B1': 1099538385,
        'B2': 41565,
        'B3': 'gei',
        'B4': [{'C1': 19500,
                'C2': 24334,
                'C3': 0.6815607806103587,
                'C4': 20,
                'C5': -5587981696422211306,
                'C6': 51,
                'C7': 96},
               {'C1': 49153,
                'C2': 16490,
                'C3': 0.019616677220935408,
                'C4': 39,
                'C5': 1620758897887912873,
                'C6': 85,
                'C7': 13}],
        'B5': 12168,
        'B6': {'D1': [-0.5795214772224426,
                      0.6717315316200256,
                      -0.5854580402374268],
               'D2': 0.7019902467727661,
               'D3': 1071342360,
               'D4': [0.9130035638809204, -0.18410347402095795],
               'D5': 3863245397,
               'D6': 0.7104406173640672,
               'D7': 24388}},
 'A5': 27023}

Пример 2

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

(b'ANF\xd9\xfe*\x85\x88`\xb0n\x03\xb8\xf5\xea\xbf\xbcw\x00\x89802{l\x00\xa5\xc2'
 b'\xae9y\xc6?+H\x14\xc0m\x19\xa9\x93]\x03D\xda=\xf5_\x9e\x97n\n=%\xea?'
 b'\xd2\xf8\xf6\xb2GK\xb5:\xb2)\x94\x15\x00,\x00\xbe\xb0y\xbd\xf5;\x0b?\x8b'
 b'\x00X?\x84! ?\x02\x00G\x00^\xf9\x80>,\x8f8\xb5\x02\x00\x00\x00O'
 b'\x00\x1e\x11\x81k\x8cR\x88\x1a\x10j\xd1?&+1\xa3\xc1\x80D_obr\x02\x00\x00\x00'
 b'C\x00\x00\x00\x0f\x88W\x00\x00\x00')

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

{'A1': 2290428670,
 'A2': -0.842494970992913,
 'A3': 188,
 'A4': {'B1': -2134793423,
        'B2': 24388,
        'B3': 'obr',
        'B4': [{'C1': 12848,
                'C2': 27771,
                'C3': 0.17557450326174973,
                'C4': 43,
                'C5': 6742918993784345672,
                'C6': 3,
                'C7': 68},
               {'C1': 15834,
                'C2': 24565,
                'C3': 0.8170457080602664,
                'C4': 210,
                'C5': -5603967451379075336,
                'C6': 41,
                'C7': 148}],
        'B5': -30705,
        'B6': {'D1': [-0.06095957010984421, 0.5438836216926575],
               'D2': 0.2519025206565857,
               'D3': 3040382764,
               'D4': [0.8437582850456238, 0.6255114078521729],
               'D5': 1803620638,
               'D6': 0.27209856597009074,
               'D7': 11046}},
 'A5': 14473}

Вариант №6

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'XRJWK\x00\x05\x00\x00\x00Yw;\xea~\xc1l47\x16\x00\x00\x00\x05\x00^\xad\xde'
 b'\xf9[\xc9rD\t\\C\xe6-\xf1>z\x96x\xaf\xad\xbe\x99\xe4o1\xebI\x92\xce~\x04'
 b'\x10e\xa3\x1c$\r\xfd\x08\xf2\x0e\xee\x85\xbe\x1e\xa1T\xe6w\xd7e\xc1\x84\xf6<'
 b'\xf4\xbfB\xb6\x0b1o\x15\x93yrsyy\x9d~\x07j\xdd\x07\x9c\x95\x9d\xfd'
 b'\xa7~\xdc\xc4\tSQuq\x01\xf6\n\x81\x91\xd8\x18\xd7C\x87Go\x9b:\x8d'
 b'\x1e\xe94\xd9h\x89\xa4\xd8\xd9\x12\xf5\xbb\x06\xeah~;\xc2\xb8~7\x98w\xa1'
 b'7V\x19\x8dO\x87/m\xf7\xd8\x00\x99')

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

{'A1': {'B1': 'yrsyy',
        'B2': 119,
        'B3': 4317402561997190934,
        'B4': [{'C1': 11348516266576419989, 'C2': 40445, 'C3': -1484858172},
               {'C1': 671970334257313290, 'C2': 33169, 'C3': -669460669},
               {'C1': 9747882630959668969, 'C2': 13529, 'C3': 1753851096},
               {'C1': 15641834639434868862, 'C2': 15298, 'C3': -1199687784},
               {'C1': 8620232004699246471, 'C2': 12141, 'C3': -136839015}],
        'B5': [44510, 63835],
        'B6': -55},
 'A2': 114,
 'A3': 17417,
 'A4': {'D1': [6648410559924304534,
               8696360439612993329,
               -1492500385921494939,
               -6693435303681002994,
               -1259391482015193481],
        'D2': -41,
        'D3': 1707181302,
        'D4': 60,
        'D5': -12,
        'D6': -0.7605902552604675,
        'D7': 12655,
        'D8': 5523}}

Пример 2

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

(b'XRJWK\x00\x02\x00\x00\x00Y\xa3\xcbw\xac\x120\xbfF\xd6\x00\x00\x00\x02'
 b'\x00[\xbfGX\x01\x03\x99\x12\xfe\x8b\xa0\r<\x14\x9e\xeb\x80\x91\x0c\x86ty\x03'
 b'J\x9cH\xf3\xe23hI\x15o\xf7P\xd6\xefXpf\xe8\x9bWF\x83\xfc\x07k\x8f\xbf\xa1'
 b'\xd3\x9d\xfe\xaej\xbf")\x9egSO\xa4iv\x18S\x93\xeb\xb401\x15@Q\xd5\xc59'
 b'\xc1\xc0\xa1\n\x83\xad\x9d\xbaK\x1f\x1c:\xad\x00\x17')

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

{'A1': {'B1': 'iv',
        'B2': -93,
        'B3': 14661376306055169750,
        'B4': [{'C1': 1752907320526909717, 'C2': 16465, 'C3': -708494911},
               {'C1': 13880387087202368075, 'C2': 7964, 'C3': 984416279}],
        'B5': [48967, 22529],
        'B6': 3},
 'A2': -103,
 'A3': 4862,
 'A4': {'D1': [-8385687954468705408,
               -7994867403684885860,
               5256793900492330351,
               -625764024735209752,
               -7253251142173889649],
        'D2': -65,
        'D3': 2715000318,
        'D4': 174,
        'D5': 106,
        'D6': -0.633447527885437,
        'D7': 26451,
        'D8': 20388}}

Вариант №7

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'IRS>\xc4W\x9c\xfe\xf1\xa7\xf6]x\xc4\xe4W\xbf\x00\x00\x00\x04\x00in'
 b'k\xbf\xda\x02:\xbf6\x8fT\x16\x852\x1e\x98\xaf\r\x01\x91\xecA\xc3D0\xe0'
 b'\xc6\xe8\xff\xdc\xdc\xc9\xd7\x8bD\xaf\nA\x95I\xbc\xb8\xdd\xd1\x16~'
 b'?\x8b\x06\x0e\xf14\xdf\x0c\x88\xa1$\x00\x02\x00\x00\x00y\xca\x94\xe8'
 b'\xd2r\x12\xc2\x83G\xfc\xc79;Q\xd52%\xa1&\xc5\xc1~\x82\xf2\x83*\xa1\xf1=/*'
 b'\xf7\xd3\x14\xb3\nq\x05\xe8\x0b\x01\xc8\x8b\xddO\x85\xeax\x9d\x7f\xa3\x01')

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

{'A1': 0.38348090648651123,
 'A2': -17717258,
 'A3': 23928,
 'A4': -991668289,
 'A5': {'B1': [{'C1': -16002, 'C2': -32014},
               {'C1': -31958, 'C2': -24079},
               {'C1': 15663, 'C2': 10999},
               {'C1': -11500, 'C2': -19702}],
        'B2': 'nk',
        'B3': -0.4063860766711873,
        'B4': 22},
 'A6': {'D1': {'E1': [-2060312936,
                      -1358102127,
                      -331234492,
                      820037352,
                      -2302775,
                      -678738769,
                      172070217],
               'E2': 3166232017,
               'E3': 377372555,
               'E4': 1550,
               'E5': 61748,
               'E6': -552826719,
               'E7': 36,
               'E8': [8144170635141614557, 5730243904658187009]},
        'D2': 14597548282769228419,
        'D3': 5187239919446250802,
        'D4': 631318213}}

Пример 2

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

(b'IRS>\xff\x9dY\xfa\x83\x1cv:\x95\x06+z\x87\x00\x00\x00\x03\x00ion?\xca\x85'
 b'\xdcs\xd9\xf0p\x96\xce\x8b\xa4\xafd\x8e\x82\xbe!\xb1\xd3\x00\x9c\xbd'
 b'\xbd\x9f\x05\x9f,\x02\xba\xf3\x1e\x18\x88+N^m_:\xba\x032\xe4\xfd\xc6\x91'
 b'\xbbPV]\xf6\xd1\x97\x00\x04\x00\x00\x00u~A\x9e\xd8}\x03M\xa3\xfa\x85\xd7'
 b'\xec\x03\xe3\xf9\xa0\xdc\xc8;\x08.>\x87\xbe\x95\xbd4\xb9O\xcb\x0e6\xae@}'
 b'\xe8h/\xc3\xad\xa3\x05+!.n\n\x13N\xa7\x06\xff\x18\x1b\x07\xbcg\x07\x06'
 b'6\xa87@\xee')

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

{'A1': 0.49924734234809875,
 'A2': -92070794,
 'A3': 14997,
 'A4': 103512711,
 'A5': {'B1': [{'C1': 11838, 'C2': -30786},
               {'C1': -27203, 'C2': 13497},
               {'C1': 20427, 'C2': 3638}],
        'B2': 'on',
        'B3': 0.20721011788180332,
        'B4': -106},
 'A6': {'D1': {'E1': [-829709137,
                      1687061182,
                      565302016,
                      -1665286753,
                      94317570,
                      -1158472168,
                      -2010427810],
               'E2': 1834957498,
               'E3': 53667069,
               'E4': 50833,
               'E5': 47952,
               'E6': 1448998609,
               'E7': 151,
               'E8': [12556174198242788269,
                      11746842624578685459,
                      5667506348759910332,
                      7423909342563746030]},
        'D2': 9097727374912605603,
        'D3': -394671983647524448,
        'D4': -590857464}}

Вариант №8

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\x01UHK\x0b\xb1f;\xbf\x02\x00\x15\x00\x00\x00H\xff\xab\xbeu\x00na\xb1'
 b'\xd6{!\xa0\xc3\x14\xa8\x9e\xe6&e\xd5\x17\xddl\x9b9L\xfb\xd0h/B\xed'
 b'\xd8\xbeL\xbfK\xac\xbf\xdb}\xff\x03\xe8Q\xdb\x92\x85\x8e\xa6\xbc\xfd'
 b'\xea\x84\xe8\x88\x8b\x11T"N\xa9 %\x82z\x1e\xfd_\xedjh\xc5_\x19\x84\x0esS\xda'
 b'\xd5e2b\xe3\xf2\x1b\x97\xb8\x1c\xb3k\xdd\xd3\xee?\xd0\x98d<\x96\x03\x00\x17'
 b'\x00\x00\x00\x88\xc2\x86\xa3\xd3\x8b\xdb?h\x00')

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

{'A1': 11,
 'A2': -0.7320356965065002,
 'A3': 'na',
 'A4': -0.33593201637268066,
 'A5': {'B1': [{'C1': [177, 214, 123, 33],
                'C2': -15456,
                'C3': [-22508, -6498, 25894, 6101, 27869, 14747],
                'C4': 76,
                'C5': 13752002330694832379},
               {'C1': [76, 191, 75, 172],
                'C2': -9281,
                'C3': [-131, -6141, -9391, -31342, -22898, -580],
                'C4': -22,
                'C5': 5630154918498723972},
               {'C1': [169, 32, 37, 130],
                'C2': 7802,
                'C3': [24573, 27373, -15000, 6495, 3716, 21363],
                'C4': -38,
                'C5': 10888563582517274069}],
        'B2': 0.4304093453347737,
        'B3': {'D1': 0.9633624175557065,
               'D2': 0.013952448964118958,
               'D3': -106}}}

Пример 2

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

(b'\x01UHK\x89\xbc\xfc_\xbf\x02\x00\x15\x00\x00\x00\xe9\xdf\xe3\xbeu\x00en\x8f'
 b'\x17\xf9 \xbf\xe4\xaf\xb3[\x8d\xdf6\x1f\xc9|M\x07\xc0\xb0\xf7\xe1\x98OOb'
 b'N\x80ti3\xbf6\xec\xbes1\xc2c8\xa6>\xb7r\xa0\x9d?\x9e\x88\x16\xfb\xac\xdf\x10'
 b'{\xc5\x80&\tl\xb7\xa1_R\x17\\\x15L\x03[{k\xa8\xb6\xc5\x02\xb3\xd2'
 b'\xe6\x9d\xb6\x07\xb4\x9a\xe9\xe2\xfb\xd5\xd3?\xe0\xb7\xc0>v\x03\x00\x17'
 b'\x00\x00\x00(o2(\x19\xb4\xeb\xbfh\x00')

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

{'A1': 137,
 'A2': -0.8749501705169678,
 'A3': 'en',
 'A4': -0.4450676739215851,
 'A5': {'B1': [{'C1': [143, 23, 249, 32],
                'C2': -6977,
                'C3': [-19537, -29349, 14047, -14049, 19836, -16377],
                'C4': -80,
                'C5': 9245435177815564791},
               {'C1': [116, 105, 51, 191],
                'C2': -5066,
                'C3': [29630, -15823, 14435, 16038, 29367, -25184],
                'C4': 63,
                'C5': 8867833600332433566},
               {'C1': [197, 128, 38, 9],
                'C2': -18580,
                'C3': [24481, 5970, 5468, 844, 31579, -22421],
                'C4': -74,
                'C5': 555805218729820869}],
        'B2': -0.8657346520517182,
        'B3': {'D1': 0.3099355426733539, 'D2': 0.3764028549194336, 'D3': 118}}}

Вариант №9

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'TTKX\x1f\x00\x86\x00\x00\x00\x02\x00\x00\x00\xa5\xacZx\xae4\xbcQ_\x1b'
 b'\xfct\x03\xa47\x91\xdc\x15\x0e\x9e\xdbw\x12[\xae\xb6\x8f?--\xbf\xbf\xbb\xa3'
 b'\xbe)9\\p|\r?"\x05\xe9>\xfa\x07\xdd\xbf\xe6l\xb5\xf7\x8b\x7f$\x1e\xd9?\x02F'
 b'\xa6\xbe\x8e>\r\xbf\xd9\xfb\xaf\x85\xcf\x0f\xc0\xc3\xdb<\xb3\xe6\xfb\xbe'
 b'\xfd\x9e\xc6\xbf\xe1\xb3YQB/\xe4\xe0.\xbf=J\xd6\xbeHXn?\xe0D"g\x95\x10'
 b'\xaa>\x9c?F\x89Cwhh\xebn\x00\x00\x00)\x00\x00\x00;\x00\x00\x00M\x00\x00\x00_'
 b'\x00\x00\x00q\xc3\x00\x03\x00\x83M\xf8\x17\xa6\x83\xc8 \xd1\xf0h\xc1\x08!r('
 b',\x8f[\xd1\xb2')

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

{'A1': {'B1': 60270,
        'B2': [{'C1': 0.6764792799949646,
                'C2': -0.10796726709792082,
                'C3': 31757,
                'C4': 0.6329026818275452},
               {'C1': 0.48834124207496643,
                'C2': -0.7007703623639583,
                'C3': 7897,
                'C4': 0.5088905096054077},
               {'C1': -0.27781715989112854,
                'C2': -0.40598667208928063,
                'C3': -15397,
                'C4': 0.021960726007819176},
               {'C1': -0.49535197019577026,
                'C2': -0.5531431758004115,
                'C3': -8146,
                'C4': -0.7394231557846069},
               {'C1': -0.19564983248710632,
                'C2': 0.5083171866504206,
                'C3': 16028,
                'C4': 0.7755319476127625}],
        'B3': -61,
        'B4': 'whh',
        'B5': 1308104614},
 'A2': {'D1': [9495875900364341512, 2410032922445468082],
        'D2': -6027372461677588129,
        'D3': 2016614292143968732,
        'D4': 5390,
        'D5': -98},
 'A3': -9353,
 'A4': [18, 91, 174, 182, 143]}

Пример 2

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

(b'TTKX\x1f\x00\x86\x00\x00\x00\x02\x00\x00\x00\xa5\xe04\xd9\xbb\xa1U\x0f`\xdd'
 b'\x9ap\x0e\x10\xb55\xd6\xfbYV\xcaakf\x19\x9f\xf3?>mF?\xe6\x82\xa0HC\xfc'
 b'\xaa_`?ev\x82\xbf@\xea\x81?\xe9l\xf6\xb5\xf3\xe9\xe0iW?\x02a\xa4?t\x19'
 b'v\xbf\xd4x\xf2\x8b}\x13\xb4\xa9\xb2?\x1e\x98{\xbe0\xd3\xc6?\xcf\x0c\xf10'
 b'!\x8c\xa8\x03\x08?i\xfdj?M\xeb\xca\xbf\xdf\xd0\x00\x00\xc1\x19\xa4FD\xbe'
 b'\x1bu dvc\x81\x05\x00\x00\x00)\x00\x00\x00;\x00\x00\x00M\x00\x00\x00_'
 b'\x00\x00\x00q.\x00\x03\x00\x83\x8a\xce\x1e\xe4\xe4\x90\xc4\xf5\x9bL\xa7'
 b'\xdd\xc2\xd8\xb8 \xcd\xc8%\xe4')

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

{'A1': {'B1': 33029,
        'B2': [{'C1': 0.7438548803329468,
                'C2': 0.7034455691754335,
                'C3': 24416,
                'C4': 0.8963395357131958},
               {'C1': -0.753578245639801,
                'C2': 0.7945512346043948,
                'C3': 26967,
                'C4': 0.5093023777008057},
               {'C1': 0.953513503074646,
                'C2': -0.3198820459550078,
                'C3': -22094,
                'C4': 0.6195141673088074},
               {'C1': -0.17268285155296326,
                'C2': 0.2425824627890496,
                'C3': 776,
                'C4': 0.9140230417251587},
               {'C1': 0.8043791055679321,
                'C2': -0.4970703132024943,
                'C3': 17988,
                'C4': -0.15181398391723633}],
        'B3': 46,
        'B4': 'dvc',
        'B5': 2328764132},
 'A2': {'D1': [16469880396445427677, 14040174289358431716],
        'D2': -2290966910535921824,
        'D3': -2478545439201872426,
        'D4': 64345,
        'D5': 86},
 'A3': -13727,
 'A4': [107, 102, 25, 159, 243]}

Вариант №10

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'\x02BBOJV\n\x8byoA3\xe4\xf5PN\x95\x00\x00\x00Y\xb1\x9b|K\xe7\x80\x89'
 b'}\x00\x04\x00\x00\x00p\xc8\x86\x00x?\xd1\xd6%\x00\xec\xbb\x90N\x8di\x83\xbf'
 b'\xe7\x19\x16\x9a\xe9k^\xa6\xa3\xc4\x17\xbf\xdbLtq\xa2\xb4\xa8Jsn\x9f?'
 b'\xb7"\xc9\x10\xec4\xe0\x90\xbcE\x1bue\xbf\xe0\x15\xde\x9b~\x94\n\xc4\x00\x00'
 b"\x00\x04\x00\x00\x00'\x00\x02\x00\x00\x00W\xb3\x14Ez\x8e\xf4*\x98"
 b"\r\xfb\xf1\xa9\xd7n\xf9\x91\xf2'\xd936!")

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

{'A1': 6199921190702756836,
 'A2': -179286379,
 'A3': {'B1': -0.5026696240425974,
        'B2': 196,
        'B3': [{'C1': 0.2786953457861552, 'C2': 1317890435},
               {'C1': -0.7218125367756831, 'C2': 2795750423},
               {'C1': -0.42654143426154656, 'C2': 1249078943},
               {'C1': 0.09037453330184375, 'C2': 2428257563}],
        'B4': 'ue'},
 'A4': 12797959431551748477,
 'A5': [{'D1': 179, 'D2': 20},
        {'D1': 69, 'D2': 122},
        {'D1': 142, 'D2': -12},
        {'D1': 42, 'D2': -104}],
 'A6': 200,
 'A7': 134,
 'A8': {'E1': 234615209, 'E2': [215, 110], 'E3': -463323033680792031}}

Пример 2

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

(b'\x02BBOJo`\xbeD\xcb\xb0\xaedd\xc2\xbe!\x00\x00\x00N\no\x9f\xb4sB+'
 b'F\x00\x04\x00\x00\x00e1"\x00m?\xdb\xba\xf3M\x9b4\xec\xe0a\xa5\x1e?'
 b"\xcf\xe5l\xb5{\xf6\x80\x91Y\xd4\xfc?\xb4\xf0IbOL\x10'\xfb\x15=ste?\xe7"
 b">\x90\xf4\x98^p\xc1\x00\x00\x00\x03\x00\x00\x00'\x00\x03\x00\x00\x00"
 b'K\xac\xf3\xe8\xe8\xd2\xb3l\xa5\xd3\x027\xbd,~A\xdbhx\xb04\xff\x1c')

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

{'A1': 8025623738658631268,
 'A2': 1690484257,
 'A3': {'B1': 0.7263874795198273,
        'B2': 193,
        'B3': [{'C1': 0.4332855470536987, 'C2': 3764495646},
               {'C1': 0.24918898450407667, 'C2': 2438583548},
               {'C1': 0.08179148340359199, 'C2': 670766397}],
        'B4': 'ste'},
 'A4': 751995260170808134,
 'A5': [{'D1': 172, 'D2': -13},
        {'D1': 232, 'D2': -24},
        {'D1': 210, 'D2': -77},
        {'D1': 108, 'D2': -91}],
 'A6': 49,
 'A7': 34,
 'A8': {'E1': 3540137917, 'E2': [44, 126], 'E3': 4745501499926576924}}

Вариант №11

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'QEHL\x02\x00\xbb\x00\x00\x00utan>-Wh7\x9c+\x12K\x03\xd8\x1c\xa8\x95'
 b'\xf4\xc6z\xe7\t\x1b\x8a\xda\x00"\xcf\x97Q8TD\x10N\xdab\xc3\xc7B\x9e'
 b'}\xf1\xcco\xdf\xad\xa3\x06\x005\x00\x00\x00K\xa7"n\xb9\x11\xcc\x01\t\x02\xb2'
 b"\xbb\x90\xf2\x16\xaca\xebv\xe2x)?1_%6m'=\xfb\xe8T-\x02\xcd\x0b\xab\xff|tHz"
 b'\xf1\xf9D\x88P\xf0l\xc6\xe4;\x00J\x00\x1a\xf9g\r\x04\x00y\x00\x00\x00\xae'
 b'\xa3m\xb6\x90=v<\xc5\xbat\xd0?\xb4\x13\x9d9\xbb\x9cv\x83\xba=\x99\x9c'
 b'\x0f`\x05\x12u\xb8\x9b\x90\xbf\xd3\x02\xc3F\x19\\\xb4\x89\xfb\xb6['
 b'\xe6\x86\x88e\xf7\x89\xff}\x00\x8c\x00T\x00\x96\x00')

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

{'A1': [{'B1': 0.6620007753372192,
         'B2': {'C1': 908418865,
                'C2': 156874921652070253,
                'C3': 8811420751164541901,
                'C4': -2008745487,
                'C5': -965939120,
                'C6': -28},
         'B3': {'D1': [-15, -52, 111, -33, -83, -93],
                'D2': 129497977401288523,
                'D3': 9},
         'B4': {'E1': 45570, 'E2': 8569050107749765307}},
        {'B1': 0.09107105433940887,
         'B2': {'C1': 1611635865,
                'C2': 15258073061043540485,
                'C3': 18125216482983330562,
                'C4': -2031723594,
                'C5': -1980275320,
                'C6': -1},
         'B3': {'D1': [26, -7, 103, 13], 'D2': 4356737381272757166, 'D3': 197},
         'B4': {'E1': 29882, 'E2': 11293683837364879312}}],
 'A2': 'utan',
 'A3': 62,
 'A4': 45,
 'A5': [2620876887, 55251499, 2510822616, 3883583220, 3666483977],
 'A6': 0,
 'A7': 1368903458,
 'A8': [21560, 4164, -9650, -15518, 17095, 32158]}

Пример 2

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

(b"QEHL\x02\x00\xba\x00\x00\x00lkzn\xe6\xdc\x9eXj\x89'\x9c\xc94\xbb+F<"
 b"s\xd0l\x1a.\xc0\xfd\x01\x8e\xee\xe2K\xa3\x87\x0bsnw\xc3X\xa1'!\x91"
 b'\xc9\x19\xb8QA\x04\x005\x00\x00\x00d!\x952\xe9O6V\xf6W\t8%X\x01lIb[qY'
 b'q?\xc9\xd8\xc3\xb9X]IUg\xdd"%\x95\xe5\x0bH\xef2\xb5\'\xee\xe2\x8a\x87gg'
 b'\xde\xc2\xdb9\x00H\x00,|u\x12\xd2\x05\x00w\x00\x00\x00\x08\xe8\x922\xea@'
 b'\x01i\xf8l\x03H\xc6"\x1d\xd5\xfaK\x1a>\xcc<\xbfk9\x17\xd4\x7f\xb6\x9b'
 b'\x1f\x9dL@?e\xaamD\xe9\x96\x83\xcb\x9aOm\xa6\xd5v\xb0\x01\xbc|\x00'
 b'\x8b\x00R\x00\x95\x00')

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

{'A1': [{'B1': 0.9427710175514221,
         'B2': {'C1': -1178347319,
                'C2': 2675944564493737304,
                'C3': 2861249141551130005,
                'C4': -2020941074,
                'C5': -1025611929,
                'C6': -37},
         'B3': {'D1': [25, -72, 81, 65], 'D2': 6212240598998786404, 'D3': 246},
         'B4': {'E1': 2391, 'E2': 6584906333396935992}},
        {'B1': -0.7374914884567261,
         'B2': {'C1': -736675477,
                'C2': 4557727060622816895,
                'C3': 14664730740268051045,
                'C4': -1502785638,
                'C5': 28341973,
                'C6': -68},
         'B3': {'D1': [44, 124, 117, 18, -46],
                'D2': 7566400223574157320,
                'D3': 248},
         'B4': {'E1': 876, 'E2': 1894883861463221832}}],
 'A2': 'lkzn',
 'A3': 230,
 'A4': -36,
 'A5': [2305448094, 885627943, 1011231675, 443338867, 33407022],
 'A6': 142,
 'A7': -1555307794,
 'A8': [2951, 28275, -15497, -24232, 8487, -13935]}

Вариант №12

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'\xefQYBJ\x8f"*L~\xbd}\x10\x9d\xabP%vczj\xd1\xff\xa6\x0c\xc4\xed\xf6'
 b"_\x9a\xa5\x00\x02\x00\x00\x00-\x00i1\x8arr;k\x00\x00\x00'?\xec\xea"
 b'\xd3\x08%\xced\xbf\xe3\xb3\xfd\xf4\xd6\xa8\x00U\xeeO;\\\x80\xde\xa7)g\x00'
 b'\x00\x00*?\xb6\xbf\x93}36\xa0\xbf\xd4;\xa3|<\x06\x00\xe7\xde\xbf\x12\x1f'
 b'Q\xff\xbe\xbf\xcf\xb1\xb47F\xaf\x0c\xb8\xfe\xed\x07K\xbe')

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

{'A1': 2401380940,
 'A2': 9132593129695432741,
 'A3': 'vczj',
 'A4': 15131995846761903711,
 'A5': 39589,
 'A6': [{'B1': {'C1': 49, 'C2': 35442},
         'B2': [0.9036650809416185, -0.6157216817857716],
         'B3': 6191973654054624935,
         'B4': 10599},
        {'B1': {'C1': 114, 'C2': 15211},
         'B2': [0.08886071974412824, -0.3161400521495068],
         'B3': -1738742321562648642,
         'B4': -16433}],
 'A7': {'D1': 12804920417245247742, 'D2': [237, 7, 75, 190]}}

Пример 2

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

(b'\xefQYBJ\x7ft`\x91\x01\xee=\x08k\xf3.ymwut\t\x8fg$=\x1e\xc6\x80\x04H\x00'
 b"\x02\x00\x00\x00-\x00i%j\xb9\x8d\x9b1\x00\x00\x00'\xbf\xe2\x99\xe5\t6+"
 b'\xee?\xc0\xeb\xc9\x00\xbb\x9a\xb0\xe8\x15\x1c\x1c\x9dk\x11\x8cY\x04\x00'
 b'\x00\x00*\xbf\xba\xad\xc0\xcc\x0c\x0b\xc0?IW)B<\xc0\x00\x98\xc7\x8b\x01\t'
 b'\xa7\xa4\xafO\xf4\r\x17E\xcc\x1f\x0c>\x11\xdaG\x95\xe7')

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

{'A1': 2138333329,
 'A2': 139115744875196025,
 'A3': 'mwut',
 'A4': 688882673352885888,
 'A5': 1096,
 'A6': [{'B1': {'C1': 37, 'C2': 27321},
         'B2': [-0.5812859706796851, 0.13219559226782485],
         'B3': -1723440373173644916,
         'B4': 22788},
        {'B1': {'C1': -115, 'C2': 39729},
         'B2': [-0.10421376210801636, 0.0007733298739136529],
         'B3': -7437823423005875025,
         'B4': 20468}],
 'A7': {'D1': 943299389953949201, 'D2': [218, 71, 149, 231]}}

Вариант №13

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'ZGZF\xd9\x99\xaa2\xa8EV\xfb+.\xfa\xae\xc6\n\xf78\xe1b\x16\xc9\xe3z\xa8@'
 b'\xe0\x10\xf7\xb4\xfb\t\x0e\xcf{\xe5A\xc58\x17U\xa7CO\xac\xdb\xa4\x19\xba\xb4'
 b"\xb5\x8d\x02\xf3\xd4I\x11\xa8}GN\x90QK'\x1bv\r\x0c\x17Z\x8eJ\x02d\x85\xc6,"
 b"\xe3W\x7f\xdf\xa6\xa7\x16\xec\x92\xe8|\x1fj:\xe5\x19\x0c'9sF\x8a\xeb\xdd"
 b'BC\x96f\xa2\x8c\x04\x00\x84\x00\x00\x00S8\x88\x00\x00\x00\x9f\x00r\xbb\xbfU'
 b'\x03\x92)\xb4ryvf\xa3 Q\xb2u\x90%\xcd\x84#\x8d\xb9sHV\x84\x05&cI,\xe3>f'
 b'\x0c\x97\xb7\xf5\xce\x1b\xee\xd5\xebw\xbf\x0f')

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

{'A1': 850041305,
 'A2': 4216735144,
 'A3': [{'B1': 43,
         'B2': 64046,
         'B3': 4144678574,
         'B4': 375578936,
         'B5': -55,
         'B6': 31459},
        {'B1': -88,
         'B2': 57408,
         'B3': 4222940944,
         'B4': 2077167113,
         'B5': -27,
         'B6': 50497},
        {'B1': 56,
         'B2': 21783,
         'B3': 2890875815,
         'B4': 3122242779,
         'B5': -76,
         'B6': 36277},
        {'B1': 2,
         'B2': 54515,
         'B3': 2108166473,
         'B4': 1368411719,
         'B5': 75,
         'B6': 6951},
        {'B1': 118,
         'B2': 3085,
         'B3': 1250843159,
         'B4': 3330630658,
         'B5': 44,
         'B6': 22499},
        {'B1': 127,
         'B2': 42719,
         'B3': 2464945831,
         'B4': 1780448488,
         'B5': 58,
         'B6': 6629},
        {'B1': 12,
         'B2': 14631,
         'B3': 3951707763,
         'B4': 2520990429,
         'B5': 102,
         'B6': 36002}],
 'A4': 'ryvf',
 'A5': 14419,
 'A6': {'C1': [8355, -19887, -28555, -13019],
        'C2': [132, 35],
        'C3': 2739741454442412429,
        'C4': 99,
        'C5': 0.4436972439289093},
 'A7': {'D1': 17157534760140475494, 'D2': -0.9684422612190247, 'D3': 15},
 'A8': [-17550, 21951, -28157, -19415]}

Пример 2

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

(b'ZGZF\x82\xf0\xdd\xbad4\x89\xecv\xc3y\xd3\x07\x83\x94n\t\xd0\x08c\x06\xb6<w'
 b"\xc5\x1b\x87\x1c\xc6Y\x1cr\x133P\xc1\xb59v~\xc9T\x88\x18\xad\xfat'"
 b'\xff\xcb\xb9\xaf\xc3\x0e6\x10h]\xeeZ\xe6\xe3\xbe\xd8\x19\xc1\x15\x91'
 b'\x99m\x94\xe2fQ\x07\xf7\x84V\x9d\xa9\xc0\xe9\xa0\x12\x19\x90\x85&=y\xe0\xa2'
 b'\x97\x13\xdf\xcesO\x9a\xa7\xda\xccW\xb8\xe15\x03\x00\x84\x00\x00\x00'
 b'\x13\xa4\x87\x00\x00\x00\x9e\x00\xf6\x91\x1a\x16\x8eOv\xa6twe\x04\xdfs\xa7N'
 b"\xfd\x05\x12\xe2\x92\xc1\x1a\x02L\x1e'\xf2W\xff\xae\xb5i?(\xe3O\xa7\x95\xe7"
 b'\xa59qHq?q')

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

{'A1': -1159860094,
 'A2': 3968414820,
 'A3': [{'B1': 118,
         'B2': 31171,
         'B3': 2491615187,
         'B4': 147851630,
         'B5': 99,
         'B6': 46598},
        {'B1': 60,
         'B2': 50551,
         'B3': 3323758363,
         'B4': 326245465,
         'B5': 51,
         'B6': 49488},
        {'B1': -75,
         'B2': 30265,
         'B3': 2287257982,
         'B4': 1962585368,
         'B5': 39,
         'B6': 52223},
        {'B1': -71,
         'B2': 50095,
         'B3': 1745892878,
         'B4': 3864718941,
         'B5': -29,
         'B6': 55486},
        {'B1': 25,
         'B2': 5569,
         'B3': 2490210705,
         'B4': 122775266,
         'B5': -9,
         'B6': 22148},
        {'B1': -99,
         'B2': 49321,
         'B3': 420651241,
         'B4': 1025934736,
         'B5': 121,
         'B6': 41696},
        {'B1': -105,
         'B2': 57107,
         'B3': 2588898254,
         'B4': 1473043111,
         'B5': -72,
         'B6': 13793}],
 'A4': 'twe',
 'A5': 42003,
 'A6': {'C1': [-8444, -22669, -690, 4613],
        'C2': [226, 146],
        'C3': 6337170636741417665,
        'C4': 255,
        'C5': 0.9129284620285034},
 'A7': {'D1': 4153980861262324520, 'D2': 0.9425116181373596, 'D3': 113},
 'A8': [-28170, 5658, 20366, -22922]}

Вариант №14

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YTD\xf7\\@\xa0`\xa4^D\xacM\xbc_\x95\x82\xf1\xca\xd1\xbfuaohjuyy\xa2\xac\xfb'
 b'\x84\xfc\x87y\xeb\xd9\xad\x1d\xb4<\x94\xf8\xeb\xe9f!\x9a\x03\x00]'
 b'\x00\x00\x00m\x10\xd0=S\x13`\xd6\x97]\xb1\xef=>\xc6e\xbb>\xa7Cw?\xc7\x92\x00'
 b'\xbf9\xb1R?\xca\xb8R?\xa23\x10\xbfw@\x8b\x16\xbf\xa2\x11ID\xaa\xaf'
 b'\xf5\x01?\x03\x00A\x00\xb1\xe4\xe9p\xbf<\xb5\xf8H\x95\x82\x1a\xfb'
 b'\x9e\x02\x00M\x00\x11)\x05\x7f\xbdR|{l\xef\x8e\xfd\x1d\xde\x02\x00U\x00')

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

{'A1': 23799,
 'A2': 5596923610190094400,
 'A3': -0.2780116820554175,
 'A4': 'uaohjuyy',
 'A5': {'B1': -1479001483981902686, 'B2': 44505},
 'A6': -19427,
 'A7': {'C1': 11106271310944703548,
        'C2': [{'D1': 119,
                'D2': -0.5880622863769531,
                'D3': 141212109156979106,
                'D4': 63,
                'D5': [0.18548466265201569,
                       0.366010844707489,
                       0.965876042842865]},
               {'D1': -79,
                'D2': -0.9410688877105713,
                'D3': 18093918030600385852,
                'D4': 158,
                'D5': [-0.5022396445274353, 0.8230167031288147]},
               {'D1': 17,
                'D2': -0.06226078048348427,
                'D3': 2161040555176066130,
                'D4': 222,
                'D5': [0.8231321573257446, -0.5632878541946411]}],
        'C3': 0.10159382969141006,
        'C4': [83, 19, 96, 214, 151, 93]}}

Пример 2

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

(b'YTD\x92\xd4\x1e@\xdf}\x93\xea1\x91\x84\x1a\xaa\x84\xf9K\xd5?ydjvcnk'
 b'tF\xeb\xea\xddF\x01H\xa3\x86\xde\xb4\xe0S\x94\x88?"\x8al\xfd\x03\x00Y'
 b'\x00\x00\x00\xbf9\x8e\xbek\x96\x0c[\x80\xa8\x17g\xbb=AN\x1f>#\xa1\xc8'
 b'=\x92\\\xb7\xbe(\xa5\x95>\xa8\xfaD\xbf\x8a\xa8\x9e\xf8>N\xcb\x91p\x1d\x1f'
 b'\xcb\xe0\xda\x02\x00A\x00\x17\x18\xfc\x13\xbf\x84\xba\x92\xab7\xed\xe7 '
 b'A\x02\x00I\x00\xf9\xa7\x0e\x14\xbe\xad\t\xad\xc0\x1f\xc6\xa7=d\x02\x00Q\x00')

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

{'A1': 54418,
 'A2': 10462401328551247902,
 'A3': 0.33276212649835935,
 'A4': 'ydjvcnkt',
 'A5': {'B1': -6681088643321631930, 'B2': 56966},
 'A6': -8012,
 'A7': {'C1': 18261122468779955283,
        'C2': [{'D1': -118,
                'D2': 0.48558545112609863,
                'D3': 16198074696071236430,
                'D4': 218,
                'D5': [0.09150522202253342, 0.15557195246219635]},
               {'D1': 23,
                'D2': -0.5780653953552246,
                'D3': 2371124552191359620,
                'D4': 65,
                'D5': [0.0979635939002037, -0.3581281304359436]},
               {'D1': -7,
                'D2': -0.14458714425563812,
                'D3': 4442737397103135149,
                'D4': 100,
                'D5': [0.29227566719055176, -0.7694497108459473]}],
        'C3': -0.2777843177318573,
        'C4': [107, 150, 12, 91, 128, 168]}}

Вариант №15

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'RBPL\xef\x1e\xbeW\x1ep\xa2\x1d(A\x00\x00\x00-\xec\x07\x0f\xaf\xe8\xf0'
 b'\x04C\xffC\xc2\xcby\xed\xff\x8e9v\xc6}"s\xeeZ3\xa3(rr\xbf-\xb3U\xea'
 b'\x15\x85?\x0e\xb0\xcck\x89\xaa\xb0\x95\xbdW\xce\x00\x00\x00\x02\x00!'
 b'\xbdO\xb8\xd4\x81\xe3Y5I)A\xbc\xd3\xcd\x06I\xaa\xd3\xbe.\xca\x7f\xfd\x99'
 b'?%\x81\xe0\x1f|\x00\x00\x00\x02\x00#E\x01\x1dc\xae\xc0k\x89\xca\xc4\x1f\x8c'
 b'\xe0\xe1\t&\xa97A\xf6\xb8|\x15>\x00\x02\x00%\t\xe9e=')

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

{'A1': 30,
 'A2': -0.21007704734802246,
 'A3': -1575147455,
 'A4': {'B1': 29298,
        'B2': [{'C1': -0.6785176396369934,
                'C2': {'D1': 59925,
                       'D2': -123,
                       'D3': 0.5573852062225342,
                       'D4': 7748912309270829006,
                       'D5': [-114, 57],
                       'D6': 189,
                       'D7': 5744574979041211721},
                'C3': 10561},
               {'C1': -0.025854598730802536,
                'C2': {'D1': 18858,
                       'D2': -45,
                       'D3': -0.17069433629512787,
                       'D4': -173037680351764612,
                       'D5': [118, -58],
                       'D6': 69,
                       'D7': 80329970566269386},
                'C3': 50207}],
        'B3': 10151360989512677185,
        'B4': {'E1': -10, 'E2': -1199827650, 'E3': [2099409902, 1513333544]},
        'B5': 2537,
        'B6': 25917},
 'A5': 60423,
 'A6': 263186672,
 'A7': 4,
 'A8': [1140802498, -881201665]}

Пример 2

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

(b'RBPL\xef\xac\xbfu\x93\xb66\xe6\x99A\x00\x00\x00-\xa9K\x89)\xc1\xd4'
 b'\xd1y\xa9\xa8p\xba@\x99\x93`\x0b\xa1V\x13q\x11/+<,\xea\xf9\xa6>\x87\xa3\x96A'
 b'\xe4O\xbf\x0b\xfb\xf1\xa6\xbe\xe3\x9c\x9d\xd5wv\x00\x00\x00\x02\x00!RN!O'
 b'\x06\xack\x93bS\xfb\xbd\x1a\xf2\xaa\xe9:|\xbe\xa5\x06\xc2e\xc9^\xe2fF'
 b'\xd6\xb2\x00\x00\x00\x02\x00#\xfb\\\x1c\x16\xaaC\xf0kz^_\xfc+\xee\xa6X'
 b'\xad)>\xd6\xd9,\x0e\xac\x00\x02\x00%c\x1c\x9b\xe3')

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

{'A1': 172,
 'A2': -0.9592851400375366,
 'A3': 921082177,
 'A4': {'B1': -1626,
        'B2': [{'C1': 0.2649199366569519,
                'C2': {'D1': 16868,
                       'D2': 79,
                       'D3': -0.5468130707740784,
                       'D4': -6431452956036073610,
                       'D5': [96, 11],
                       'D6': 82,
                       'D7': 5629867899270959970},
                'C3': 21499},
               {'C1': -0.03782907873392105,
                'C2': {'D1': 59706,
                       'D2': 124,
                       'D3': -0.3223171830177307,
                       'D4': 7334497794621101746,
                       'D5': [-95, 86],
                       'D6': 251,
                       'D7': 6637204871377349498},
                'C3': 24159}],
        'B3': 18170879519776123198,
        'B4': {'E1': -42, 'E2': -651424084, 'E3': [326177071, 725363946]},
        'B5': 25372,
        'B6': 39907},
 'A5': 43339,
 'A6': -1993752108,
 'A7': -47,
 'A8': [2041161840, -1170171501]}

Вариант №16

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'|KVH\x05\x00\x10\x00m\x00\xfea\x94K7!\x1c:\x92\xc9\x17\xbby.\xe96\xc5!%\r0~'
 b'%\xb3-\x13\xd0\xdc\n\xde\x9e\xc1\xc1\x05#\xec\ng\niBfa\xcd\xca\xe3'
 b'\xb7\x89\xabg\xbe~LR\xb3\xca\x15\x9e\xf1\x8c\x11\xaa\xb4\xa9g!\x06/\xb6p'
 b'sW2\x92N\x1f\x81\x08\xd59AO?\x13\x89\xa9\xf9\x8e\x81C\xb3x\xa4\xee'
 b'\xbfo\x9e\x01;\xc0/\x9e\xbb\xff\xeb\xd4?.\x00\x00\x000\x00\x00\x002\x00\x00'
 b'\x004\x00\x00\x006\x00\x00\x008\x00\x00\x00:\x00\x00\x00\x03\x00<'
 b'\x00E\x1f\xd4\xf5t\xdeT\x00\x00\x00')

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

{'A1': [{'B1': -913163748, 'B2': 23, 'B3': 187},
        {'B1': 921251449, 'B2': -59, 'B3': 33},
        {'B1': 2117078309, 'B2': 37, 'B3': 179},
        {'B1': -590343379, 'B2': 10, 'B3': 222},
        {'B1': 96584094, 'B2': 35, 'B3': 236}],
 'A2': {'C1': 0.32690423318922157,
        'C2': [{'D1': 10, 'D2': 103},
               {'D1': 10, 'D2': 105},
               {'D1': 66, 'D2': 102},
               {'D1': 97, 'D2': -51},
               {'D1': -54, 'D2': -29},
               {'D1': -73, 'D2': -119},
               {'D1': -85, 'D2': 103}],
        'C3': [11391233704032239294, 2407079119265303793, 10534578631696854790],
        'C4': 69,
        'C5': 1962267679,
        'C6': -34,
        'C7': {'E1': 78,
               'E2': 33055,
               'E3': 54536,
               'E4': 0.8095889687538147,
               'E5': 35091,
               'E6': 63913,
               'E7': -0.9575770856136374,
               'E8': 0.0019778271671384573}},
 'A3': [-2, 97, -108, 75, 55, 33]}

Пример 2

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

(b'|KVH\x04\x00\x10\x00_\x00T\xae\xe19\x91}\xcaB?\x02\xb9\xe4\xbeg\xa5\xd7sJ'
 b'/"\xd7\x8d\xc1\xed\xef\xfd\xc91\xb9<Xs\x114P\xa6}\xdb\n\xc6\x02t'
 b'\x91\xb6\x0f\x80\x1aY\xec!5a\xca\x15lp\x1e#\x98\xc3\xc0\xa8\xac\x9d\xdb6'
 b'h\x15?\xeb\x81m\x9b\x18)\x9c\xf6Md\xea\xbf\x88\xaa\xc6=8\x08;w\x92\x9c\xef?('
 b'\x00\x00\x00*\x00\x00\x00,\x00\x00\x00.\x00\x00\x000\x00\x00\x002'
 b'\x00\x00\x004\x00\x00\x00\x02\x006\x00\x94\xdc\xb5\x98]\x1fF\x00\x00\x00')

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

{'A1': [{'B1': 37700298, 'B2': -71, 'B3': 228},
        {'B1': -677025858, 'B2': 115, 'B3': 74},
        {'B1': -1915280849, 'B2': -63, 'B3': 237},
        {'B1': 835321327, 'B2': -71, 'B3': 60}],
 'A2': {'C1': 0.9878628090593855,
        'C2': [{'D1': 88, 'D2': 115},
               {'D1': 17, 'D2': 52},
               {'D1': 80, 'D2': -90},
               {'D1': 125, 'D2': -37},
               {'D1': 10, 'D2': -58},
               {'D1': 2, 'D2': 116},
               {'D1': -111, 'D2': -74}],
        'C3': [7004542094435581967, 14094053647498089930],
        'C4': -108,
        'C5': 1570289116,
        'C6': 31,
        'C7': {'E1': 192,
               'E2': 44200,
               'E3': 56221,
               'E4': 0.5836213827133179,
               'E5': 33259,
               'E6': 39789,
               'E7': -0.8247442070581057,
               'E8': 0.0970049500465393}},
 'A3': [84, -82, -31, 57, -111, 125]}

Вариант №17

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'BAJSU2\xef$J\xf3V\x00\x00\x00D?\xceHQ\x9bc\xe8\xc0\x10*\xe3\x07Z'
 b'z\xe9\xab\x00\x00\x00M\x00\x00\x00W\x00\x00\x00a\x00\x00\x00k\x00'
 b"\x00\x00u\x00\x00\x00\x7f\x00\x06\x00\x89\x9d\xbc=\xe7aiu'\xda\x00\x00\x00;"
 b'$Mfzt\xbf\xe4\x81\xa0\xa3a-^\xf5A?\xe9\x12x\xac\x9b\xd7\xa6\x12G?\xda\x00'
 b'\xd8\x1e*\x9d\x18\xf3\xb7\xbf\xd9la\xce\xf0\xfe\xac\x1fA?\xcc\tG"\xf1\x8a'
 b'\x18\xfb\x13\xbf\xe9\x9e\xfc:\xd2P\x0e\x9a6\xd1T\xf2}\xc3<\x15'
 b"\xa8\xce\xb3\xe2\xa7&\xb7D\xf9\x82\x18G\xb49\x08\xb2\xebM'\x1e'G\x9b<c\x08{'"
 b'\xf9\xb8\xd2\xce\x08Z\xe5\x0cdw\xcdP\x98')

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

{'A1': 13039,
 'A2': 608891734,
 'A3': {'B1': {'C1': 2646359527, 'C2': 'aiu', 'C3': 10202},
        'B2': 9293,
        'B3': 'fzt'},
 'A4': 0.23658199393668689,
 'A5': 1164993074350975403,
 'A6': [{'D1': -0.6408236685760291, 'D2': -2751},
        {'D1': 0.7835048075928526, 'D2': 4679},
        {'D1': 0.4063015265077907, 'D2': -3145},
        {'D1': -0.39724011620635724, 'D2': 8001},
        {'D1': 0.21903313833452454, 'D2': -1261},
        {'D1': -0.8006573819025122, 'D2': -26058}],
 'A7': [-3362796399778589272,
        -3552246473528228615,
        -9072422609961307413,
        5559445419066080355,
        611126127939997192,
        6549654858726461592]}

Пример 2

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

(b'BAJSU9\xd5\x98\xd41<\x00\x00\x00D?\xe5\x1b\xd8g\xae (=\xc9\xb9\x1d\x93'
 b'\x95\xc5\xc0\x00\x00\x00M\x00\x00\x00W\x00\x00\x00a\x00\x00\x00k\x00'
 b'\x00\x00u\x00\x00\x00\x7f\x00\x04\x00\x89\xfa\x99(\x0fgyqOI\x00\x00\x00;1#lp'
 b't?\xe3\xc2\xf4]O\xc3\\r\x9c\xbf\xe7-\xad\x9c\x9a\x1a\x9e\xee\xb9\xbf\xed@'
 b'\x1e\xc1\x17\x16X\xb5\xfe?\xc1\x8d-(\x7f\x1bp\x99\x15\xbf\xba2^\x9a\xf9\n'
 b'\x10*\xcf\xbf\xee\xcd>\x81V\xcar\xb7\xf6\x08}/\xb0\x0f\xe0fBK\xbe\xbb'
 b'\x1e\xb1\xcf\xcc"\xec\x8d&+\xd6\x10\x19\xf0|\xf4\x9bE\xff\xff\xe4n')

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

{'A1': 14805,
 'A2': -1730924228,
 'A3': {'B1': {'C1': 4204341263, 'C2': 'gyq', 'C3': 20297},
        'B2': 12579,
        'B3': 'lpt'},
 'A4': 0.6596490883830528,
 'A5': 4452293243313702336,
 'A6': [{'D1': 0.6175481626979535, 'D2': 29340},
        {'D1': -0.7243259485847664, 'D2': -4423},
        {'D1': -0.914077164773242, 'D2': -18946},
        {'D1': 0.1371208617913129, 'D2': -26347},
        {'D1': -0.10233107837215294, 'D2': 10959},
        {'D1': -0.962554218879019, 'D2': -18442}],
 'A7': [611697557619369538,
        5458005538926218274,
        -1401421939325527568,
        9003992279970473070]}

Вариант №18

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'EJCV\x8a+\xc3\x16\xa8Q0i\x9eY\xce\xa3L\xfd$\x82Q\xc1e\xcds\xbd\x1da'
 b'\xda\xb1\x12\xc6B\xe9\xda1\x91\xb9\xaf8\n\xb8\xc6N\xa6\xad\x00\xa5'
 b'\x8a\x02\x1d\xed\xce\xea\xea\xb4y\x8a\x87\x14\xc9\xb6\xd8(\xb3\x94\xcbG'
 b'\x06\xab}\x00\xb7\xa6\xfb\x83\x83\x9f\x9d\x98\xe4\tn\xd1\x94\rM2'
 b'\x17\xc8\\\xc7\xdd\xad\xac4e\xdb\x16xZ\t\xa4\x1f\x16\xa0\xa2\xcb\xc9}H\x8c'
 b'\xe8?\x91\x02\x00\x8f\x00\x00\x00\\Muz\x02\x00\x00\x00{\x00?`B\x17\xb0'
 b'\xa4\xac\\#F\xe5?Y\xfc')

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

{'A1': [{'B1': 2820064043, 'B2': 2657693777, 'B3': 52825},
        {'B1': 620580003, 'B2': 1707168130, 'B3': 29645},
        {'B1': 3663797693, 'B2': 1120277169, 'B3': 56041},
        {'B1': 2948174129, 'B2': 3333950008, 'B3': 42574},
        {'B1': 2326069421, 'B2': 3471645954, 'B3': 60138},
        {'B1': 2273999284, 'B2': 3635857684, 'B3': 45864}],
 'A2': 105368468,
 'A3': 171,
 'A4': {'C1': 'uz', 'C2': 390225983, 'C3': 0.6648117837950362},
 'A5': 10997121252312458935,
 'A6': {'D1': 3513649636,
        'D2': [3476, 12877, -14313, -14500, -21027, 13484],
        'D3': 2279957595522784101,
        'D4': 40982,
        'D5': 0.7671244103242894,
        'D6': {'E1': -111, 'E2': [89, -4]}},
 'A7': 19804}

Пример 2

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

(b'EJCV\x8a\x95\ts\x0c\x0c\xfa\xbb\nD\xd8\x06\xaf>\xdc\xcc\r*,\xa8'
 b'\xa7\x86\x8f\xbbig\x84\xb0\x16\x83\x90}H\xa6\x11\x88\xee\x03\x08H'
 b'\xca\xf6\x07\t\x9a\xba\xca)\x06fFn[\x123C\x8a\tR\x00+\xb15\xd9\xf1\xb2}\x00'
 b'\xee\xe2\xe3\xd3_I\xf6\x15Nz\x88\xcbVV\xc8\xa7\x86\x8c\x1ek9n{\xa7\xe9\xd8lG'
 b'eN\xba\x88 \xa0\xf8u\xab\xea\x91\x85\xda\xbf\xa2\x05\x00\x8f\x00\x00'
 b'\x00s\x86jo\x02\x00\x00\x00{\x00;\xf5\xac\xdaR\x8f\xd8\xa1U\x84\xe6?\xaa'
 b'\xd5\xe5R6')

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

{'A1': [{'B1': 208865685, 'B2': 180091404, 'B3': 55364},
        {'B1': 3695095558, 'B2': 740953548, 'B3': 42920},
        {'B1': 1773899654, 'B2': 380666983, 'B3': 36995},
        {'B1': 296110205, 'B2': 134475400, 'B3': 51784},
        {'B1': 2584283126, 'B2': 103402170, 'B3': 18022},
        {'B1': 856841070, 'B2': 1376356931, 'B3': 11008}],
 'A2': -237423183,
 'A3': 178,
 'A4': {'C1': 'jo', 'C2': -626199237, 'C3': 0.7036541138699965},
 'A5': 1582532994992956142,
 'A6': {'D1': 3414719054,
        'D2': [22102, -22584, -29562, 27422, 28217, -22661],
        'D3': 9852273331723360489,
        'D4': 40992,
        'D5': -0.414402465028473,
        'D6': {'E1': -94, 'E2': [-86, -43, -27, 82, 54]}},
 'A7': -31117}

Вариант №19

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'FIS\xf2\x92\xb3\t\xfe;TN\xba\x07\xb4\x00\x00\x00?a\xf7s\xd9cancu~XP\x1e?'
 b'^(x\x00\x00\x00G\x86s\x10\x9d\xda\x91\x9c]\xb0\xab\x00\x00\x00\x04\x00\x8d~'
 b'oyqvxjo\x00\x07\x0089\x17`\x11\xc6K^\x17;>x\xf5\xed\x0f9\x83_\x15/\xe7\xeb'
 b'\x92\xe0\xc1m\x00\x05\x00Si@~\xa0\xa2w`A`\xf8/e\x00\x08\x00`&\xf1\xc7\xef'
 b'L-N\xd5\xddl\xdd\x00\x07\x00p\x0b5\x18\xd3\xd0\xb1\xb0?\xd92\x00\x06\x00'
 b'\x7f\x00\x00\x00X\x00\x00\x00h\x00\x00\x00w\x00\x00\x00\x85')

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

{'A1': 10570803737890410170,
 'A2': 1972,
 'A3': {'B1': 'oyqvxjo', 'B2': 57, 'B3': 5984, 'B4': 17},
 'A4': 1643607001,
 'A5': 'cancu',
 'A6': {'C1': 2119716894,
        'C2': 0.867805004119873,
        'C3': {'D1': 3326828055, 'D2': 4268982494433327491},
        'C4': 9688105493566954589,
        'C5': 45227},
 'A7': [{'E1': -1830764179, 'E2': [95, 21, 47, -25, -21]},
        {'E1': 1626877797, 'E2': [105, 64, 126, -96, -94, 119, 96, 65]},
        {'E1': -706908963, 'E2': [38, -15, -57, -17, 76, 45, 78]},
        {'E1': -1337992910, 'E2': [11, 53, 24, -45, -48, -79]}],
 'A8': 126}

Пример 2

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

(b'FIS\xf2\x97\xf1\xa4_n\xce\x19D\x8d\xad\x00\x00\x00:g[_\xa6rbyss\xe6'
 b'h\xa9\xcc\xbe\xfc\x06\xd2\x00\x00\x00B\x03\x81\xc9\xf0\x92\x88"\xed"'
 b'\x92\x00\x00\x00\x03\x00u\x0bqo\x00\x02\x008\xf4SiV\xea\xae\xcb\xe57\xae'
 b'\x04\xdf\xbe\xdd\xcc\x9bV\xaeC\x11\xf0\x06ebK\x00\x05\x00N\xe3\x98\t\x10\xc9'
 b'\x1c\x00\x02\x00[\xda=\x14\x11I\x87x\x9ag\x94\x87`\x00\x08\x00e\x00\x00\x00'
 b'S\x00\x00\x00]\x00\x00\x00m')

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

{'A1': 10948712898902235460,
 'A2': 36269,
 'A3': {'B1': 'qo', 'B2': 244, 'B3': 21353, 'B4': 86},
 'A4': 1734041510,
 'A5': 'rbyss',
 'A6': {'C1': -429348404,
        'C2': -0.4922395348548889,
        'C3': {'D1': 3937324005, 'D2': 4012149677060115611},
        'C4': 252705089197187821,
        'C5': 8850},
 'A7': [{'E1': 107307595, 'E2': [86, -82, 67, 17, -16]},
        {'E1': 152095004, 'E2': [-29, -104]},
        {'E1': 1737787232, 'E2': [-38, 61, 20, 17, 73, -121, 120, -102]}],
 'A8': 11}

Вариант №20

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"\xbdIPA\x97u\x94pM\xa2\x03\xa9\r'\xbf\xe4q\xbf\x06o+`\x83\x84"
 b'\x00\x00\x00\x07\x00\xa1\x95\xf9\x90\xa0\xf7\x13\x14\xa7\xbfF'
 b'\xb6\x8e\xe2\x8aP.\xd7\x01x\x00\x02\x00\x00\x00*?]\xa1\x87\xd5\x91\xa7C8'
 b'\x143\x00\x02\x00\x00\x00;\xbc\xd4\xa1\xae\xf5uFa\x1d\x8e\xfe\x00'
 b'\x02\x00\x00\x00L\xbe\xb0^\x11_\xe2i\x8a\x95~f\x00\x02\x00\x00\x00]\xbfx'
 b'\xea\xfe\xcf\xb1r\x9dZ\xf9G\x00\x02\x00\x00\x00n?~\x93\xcf\x89\xbeXP\x01'
 b"\x10\x9f\x00\x02\x00\x00\x00\x7f\xbd\xa8R \xe4\xd5'Z\x8d\xf5_\x00"
 b'\x02\x00\x00\x00\x90\xbe\xed\xafm\x00\x00\x00.\x00\x00\x00?\x00\x00\x00'
 b'P\x00\x00\x00a\x00\x00\x00r\x00\x00\x00\x83\x00\x00\x00\x94')

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

{'A1': 38773,
 'A2': {'B1': 10696134473246379303,
        'B2': -0.6388850331944518,
        'B3': {'C1': -31868,
               'C2': [{'D1': 215,
                       'D2': [1, 120],
                       'D3': [-7542, 20526],
                       'D4': 0.8657459616661072},
                      {'D1': 56,
                       'D2': [20, 51],
                       'D3': [-10863, -22717],
                       'D4': -0.02595600113272667},
                      {'D1': 29,
                       'D2': [142, 254],
                       'D3': [-2699, 18017],
                       'D4': -0.3444676697254181},
                      {'D1': 149,
                       'D2': [126, 102],
                       'D3': [24546, 27018],
                       'D4': -0.972335696220398},
                      {'D1': 90,
                       'D2': [249, 71],
                       'D3': [-12367, 29341],
                       'D4': 0.994442880153656},
                      {'D1': 1,
                       'D2': [16, 159],
                       'D3': [-30274, 22608],
                       'D4': -0.08218789100646973},
                      {'D1': 141,
                       'D2': [245, 95],
                       'D3': [-6955, 10074],
                       'D4': -0.464229017496109}]},
        'B4': -27143,
        'B5': [37024, 63251, 5287]},
 'A3': -0.7762230634689331}

Пример 2

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

(b'\xbdIPA\x1d\x93)\xc0\xc6?\xca\xa7\x10#?\xc1\x8e\xb7*\xba\x15\xe8\n!'
 b'\x00\x00\x00\x07\x00\xa1\x94\xd6\xbd\x12\xc8\xd9\xf7+\xbf\x1d\xa3\xc3\x17d'
 b'0U@\\\xbe\x00\x02\x00\x00\x00*?\x10\xdd\x81\xd0\xbd=N9\x1b\x1c\x00\x02'
 b'\x00\x00\x00;\xbe\x01x\xa1\xc4\xee9\xdf\x1e\x15s\x00\x02\x00\x00\x00L\xbfNF'
 b'\xe0\x0c\x01m<\x10\xc8\x9a\x00\x02\x00\x00\x00]\xbf<\x86\x83\xba\xb8'
 b'g\x0fW\xa8[\x00\x02\x00\x00\x00n\xbe\x0c\xdb\xf9\x19!\xae\xbe^ds\x00\x02'
 b'\x00\x00\x00\x7f\xbf&op\x13_\xadj\xb0\xe3\x10\x00\x02\x00\x00\x00'
 b'\x90>\xb1\xf3G\x00\x00\x00.\x00\x00\x00?\x00\x00\x00P\x00\x00\x00'
 b'a\x00\x00\x00r\x00\x00\x00\x83\x00\x00\x00\x94')

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

{'A1': 7571,
 'A2': {'B1': 3008622528368676899,
        'B2': 0.13716783128999954,
        'B3': {'C1': 2593,
               'C2': [{'D1': 64,
                       'D2': [92, 190],
                       'D3': [5988, 12373],
                       'D4': 0.5658798813819885},
                      {'D1': 57,
                       'D2': [27, 28],
                       'D3': [-12099, 15694],
                       'D4': -0.1264367252588272},
                      {'D1': 30,
                       'D2': [21, 115],
                       'D3': [-15122, 14815],
                       'D4': -0.8057689666748047},
                      {'D1': 16,
                       'D2': [200, 154],
                       'D3': [3073, 27964],
                       'D4': -0.7364274859428406},
                      {'D1': 87,
                       'D2': [168, 91],
                       'D3': [-17736, 26383],
                       'D4': -0.13755787909030914},
                      {'D1': 94,
                       'D2': [100, 115],
                       'D3': [6433, -20802],
                       'D4': -0.6501379013061523},
                      {'D1': 176,
                       'D2': [227, 16],
                       'D3': [4959, -21142],
                       'D4': 0.3475591838359833}]},
        'B4': -27434,
        'B5': [48402, 51417, 63275]},
 'A3': -0.6157800555229187}

Вариант №21

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'WVR\x8c\x01\xdb\xe2\xb7\x00\x00\x00F~i\xbf\xe7\xf6\xb4-\xeb\xcb\xf2\xed>'
 b'\xf7Zy\xcf\x86\xc0\x00\x03x5\xa4z(\x18\xca\x16:\x02\xfb)\x00\\I\xce'
 b'cc\xeb\xb9Y)\xc5\xa0\x84\xf5\x00\x00\x00\x1f\x00\x00\x00(\x00\x00\x001?\xd8'
 b'\xa3\x99\xd5\xa6\xe2T\xbfL\xf0L\x00\x03\x00\x00\x00:\xec\xc6\xafz\xeaS\xbe}'
 b'?\xcc\x0f\xb0\xee[\r@m\xedQb\xfa\x8d\xac\x0fI\\\x85]\x0c\x89FN#\x15\x83+'
 b'J\x82\x07')

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

{'A1': 31187639,
 'A2': {'B1': 0.38498540749018173,
        'B2': -0.8005416393280029,
        'B3': [{'C1': 888, 'C2': 53, 'C3': 164, 'C4': [122, 40, 24, -54, 22]},
               {'C1': 14850, 'C2': -5, 'C3': 41, 'C4': [0, 92, 73, -50, 99]},
               {'C1': 25579,
                'C2': -71,
                'C3': 89,
                'C4': [41, -59, -96, -124, -11]}],
        'B4': 17061517180791930493,
        'B5': {'D1': 0.2192288554998445, 'D2': 109},
        'B6': {'E1': -313433350, 'E2': [2376863561, 1552243980, 2303086115]},
        'B7': 360917834,
        'B8': 33287},
 'A3': {'F1': 32361, 'F2': -0.7488652130981548, 'F3': 60734, 'F4': -9},
 'A4': [23161, 53126],
 'A5': 49152}

Пример 2

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

(b'WVR\x8c4\xc1\x0b\xf2\x00\x00\x00S\x00\xec\xbf\xde\x9c*\x16\xbe'
 b'\xab\xe0\x9c\xfb:81\x95\xd7\xba\xcca\xa6\xd2\xbb0\xb5\xb4\x98\xfb=\xe6f*'
 b'\t\xb7\x8b^6\x13\xaaR|\xc1\x83H\xb3\xa2\xee\xe1\\(r\\\x88z\x88\x00'
 b'\x00\x00\x1f\x00\x00\x00(\x00\x00\x001\x00\x00\x00:?\xe7\x05\xdf\xe6'
 b'm\x1b\x0e=\x8d\xc1e\x00\x04\x00\x00\x00C,\x1b\xeepgR\xcd\xfe?\xef\xf7'
 b'2\xf6\x07\xfa\xd6k\x8bV\xeb\xe8\xab8GU>A\xb8\xcac\x17\xa5\xaa\xdf\xa9'
 b'$\x1d\x88\x82')

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

{'A1': 885066738,
 'A2': {'B1': 0.7194671154510119,
        'B2': 0.0692165270447731,
        'B3': [{'C1': 24998,
                'C2': -46,
                'C3': 187,
                'C4': [48, -75, -76, -104, -5]},
               {'C1': 15846, 'C2': 102, 'C3': 42, 'C4': [9, -73, -117, 94, 54]},
               {'C1': 5034,
                'C2': 82,
                'C3': 124,
                'C4': [-63, -125, 72, -77, -94]},
               {'C1': 61153,
                'C2': 92,
                'C3': 40,
                'C4': [114, 92, -120, 122, -120]}],
        'B4': 3178396128577244670,
        'B5': {'D1': 0.9989256673141778, 'D2': 107},
        'B6': {'E1': -1957237784, 'E2': [2872592213, 1044494538, 1662494122]},
        'B7': -542563299,
        'B8': 34946},
 'A3': {'F1': 236, 'F2': -0.47828151913807737, 'F3': 40187, 'F4': 58},
 'A4': [14385, 38359],
 'A5': 47820}

Вариант №22

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LMF$\x8cs\xd1\x00:\x00R\x00j(\x16ifpw\xd3\rQ\x821\x1d\xc6\xb9?\xe4q\x85@'
 b']\xfc\xd6pgkxuy\xb8\x00\x02\x00v\xdc-K\xe15)g\xc6\x18\x90\xe7K\x12\x10'
 b'i\xb9\xfd\xf0*\xd6\x00.\xa1\x01\xb5\x8e\x88\xb8\xe9\x93\x14"\x06\x86r[\xe4('
 b"&i\xe0\xcc\x9e\xcd\x00F'\xa2\x81U`xl\xf1bB\xc4hx\xb4\x9b1\x9e>\xed\xd0"
 b'\x04\xd4\x00^\xb8F\x08\xd1\x85\xc8c4^p\xe3\x1a\xab\xe5T\x0f\x01\xbd')

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

{'A1': {'B1': 613184465,
        'B2': [{'C1': 1301656539860314838,
                'C2': {'D1': -601011231, 'D2': 3830707058568652619},
                'C3': -24319},
               {'C1': 16440432675900923597,
                'C2': {'D1': -1248950088, 'D2': 16830818368784593499},
                'C3': 10146},
               {'C1': 11182893342852646100,
                'C2': {'D1': -2125111176, 'D2': 7850163664386029748},
                'C3': -18362}],
        'B3': 10262,
        'B4': 'ifpw',
        'B5': 15207901136311666361,
        'B6': 0.6388574845476807},
 'A2': 'pgkxuy',
 'A3': -72,
 'A4': [635436118140280432, 16364581197450248637]}

Пример 2

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

(b'LMFB4\x83\xc5\x00:\x00R\x00j\x12\x14pliw\n\x81J=\xdf\xc5\x17\x1b?'
 b'\xea\x167\xe7/\x8b\ntjkhwc\x9c\x00\x02\x00v(\xc9] I\xce\x18\xc4L\xb5B5\x84E'
 b'\x9b\xe9\xac"\xc6[\x00.\xe0n\x85\xb7a\xa4\xc2.\xb2\xcb\xf5\x89S7u\x02'
 b"|\xee\x1f,\xd9'\x00F\x08\x0b\xf4_2}.s\x9a1\xa9\xc7\x98\\\xc6\x85"
 b'\xdc,\x0f\xe4\xeb+\x00^M\xe4\xa6\x98\xcc\xc9t*v\x8dj{\x8b\xf6\xabvu\x9f')

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

{'A1': {'B1': 1110737861,
        'B2': [{'C1': 9531195614317168219,
                'C2': {'D1': 684285216, 'D2': 5318215441350738485},
                'C3': -8082},
               {'C1': 8431438814558083367,
                'C2': {'D1': -2051579484, 'D2': 13992317681354232631},
                'C3': 2059},
               {'C1': 14305081873215580971,
                'C2': {'D1': -195087747, 'D2': 3347188486158915676},
                'C3': 19940}],
        'B3': 4628,
        'B4': 'pliw',
        'B5': 756967841982650139,
        'B6': 0.8152122035356524},
 'A2': 'tjkhwc',
 'A3': -100,
 'A4': [12004569972365489805, 7672880281710654879]}

Вариант №23

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'3CQCSwejzju\x9e/\x8f\xcb\xbe\x84\xc1\x81\xbf\xb9\xe8d\xb3\xd3\xc3\x00\x92'
 b'L\xab\xc0?\x1c9\xf4\xbf\x9a\xa5\xa7\x83\xeav\xc0\x05\x91\xa1\\?]& ?'
 b"\xec'z\xe9:\x15<tj\xcf\xff\x98\xd1\x14\x80 P\xd0\x1d\xf5e\xf5|\x00"
 b'\x03\x00f\x00\x00\x00\x05\x00iDw\xa7c\xb8\xc0\tX\xbc\xfci*\xb3\xa5\xaf'
 b'\x97\xe0\xbd%\x8b\xf5\x9a5\x91\x909\x1f\x18bcc\xb1J\xb7\n\xc8\\\xa9\xe4'
 b't\xee\x7f\x9d\xb1\xe03\x1c\xa5\xe5\xads\xf1\xe8r_\x96\x85\x05<U')

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

{'A1': {'B1': 'wejzju',
        'B2': [{'C1': -1641050165,
                'C2': -0.25928881764411926,
                'C3': -0.10120229139625891},
               {'C1': -1840469056,
                'C2': 0.6102592945098877,
                'C3': -0.02602254622126199},
               {'C1': 93430108,
                'C2': 0.8638629913330078,
                'C3': 0.8798193507397296}],
        'B3': 1953157119,
        'B4': -1731128192,
        'B5': 32,
        'B6': [80, 208, 29],
        'B7': {'D1': 4117099900,
               'D2': [-67, 37, -117],
               'D3': [17697516585011978008,
                      7089619851525163720,
                      6677119113422151089,
                      16155287787156632561,
                      16749555064225741909]}},
 'A2': 4933595963550861656,
 'A3': 188,
 'A4': 4234750643,
 'A5': 2779748320}

Пример 2

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

(b'3CQCSpewzhz\x9d\x9b\xb2g\xbeB\x86\x85\xbf\xe3a\x05\xea`\x0e\xa4\xe6'
 b'&\xd7\x1c?_\xb9*?\xddV\x9a\x1cW!\xf8\xdch\x04\xa8>\xa0\xca\x87\xbf'
 b'\xd3\xc5\x13\xd4\xcd\xc4l\xde,\xbeg\x1di;\xdd\xfb\xcaa\xb3\x9a\xf3s\xc3\x00'
 b'\x08\x00f\x00\x00\x00\x07\x00n\xa2\xa9U\xf7\xf3\xf9_Zd_\xfe\xebZM.\xad\x9e?x'
 b'\xc0I\xfe\xdc>\xd2\x90N\xc0\xb8\xe4\xacW\x1a\xd4\x1c\xb3d\x18u\xe1*[pSK\x99i'
 b'\x80r\xf1\xb2\x87\x91X\xa72 U\xc2\x98g\xdd\x82\x82\x92\xf7\xcc'
 b"\xf4\x1a\x19\x10%'T9!\x8f\xee\x1d\x03.")

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

{'A1': {'B1': 'pewzhz',
        'B2': [{'C1': -1650740633,
                'C2': -0.18996627628803253,
                'C3': -0.605593641056164},
               {'C1': -433662180,
                'C2': 0.8739191293716431,
                'C3': 0.4584107662927006},
               {'C1': -597162840,
                'C2': 0.31404516100883484,
                'C3': -0.3089036539232157}],
        'B3': -567493017,
        'B4': 493435869,
        'B5': -5,
        'B6': [202, 97, 179],
        'B7': {'D1': 2599646147,
               'D2': [63, 120, -64, 73, -2, -36, 62, -46],
               'D3': [10398460489988069146,
                      15284288477877100842,
                      6588857839004516466,
                      17416131767322489376,
                      6179669210571113106,
                      17855915015543989543,
                      6068918874917372718]}},
 'A2': 11720994028646915930,
 'A3': 100,
 'A4': 1610541914,
 'A5': 1294904734}

Вариант №24

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'RUHC\xe9t\xfbKsdo\xc8|\xb7c\xe6\xb5\xbe\x02\x00<\x00\x00\x00P\x00\x00\x00'
 b'\x05\x00\x00\x00\x8f\x00\xa0\x00\x00\x00B\xe8\x8e\x834s\x14a8i~.\xe8\xad'
 b'\xbf8\x97\x1c\xeca\xb8\xa1B@\x00N\xb1\xf7\x1d\xdf?\xdd\xc8F:X\x14}'
 b"\xea\xbfA\xbf\x02\x00\x00\x00N\x00:t\xcc\xc9'\x12\x13\xe7?\xc7\xbdk\xdcr"
 b'E\xfb\x12\xb7`d\x02\xdf\xbe\xeeu\x1c>;\x8am\xbf\xddj\x8f\xbc;\x8ey>=\x8d@'
 b'>\x87-\xb3]\xe6\x9f\xe2O\xb9\xf0\xa7Z\xc5\x8e\xe9\xcf\xd5\xd6\x0f'
 b'\xa7\x9c\xb5\x81\xaf{n\xaa\x87\xed\xf8\r7\x90pD>\x90\x81u\xfa\x06\x00\x00'
 b'\x00\x94\x00\x00\x00')

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

{'A1': {'B1': {'C1': 14442872976359257321, 'C2': 124},
        'B2': -73,
        'B3': -0.3552733361721039,
        'B4': [{'D1': 66, 'D2': 0.4862040740481497},
               {'D1': -35, 'D2': -0.8277684901424545}],
        'B5': {'E1': [65, 191],
               'E2': 58,
               'E3': 0.7210779931177869,
               'E4': -596918841,
               'E5': {'F1': 172369025160660338,
                      'F2': -16673,
                      'F3': [0.15279361605644226,
                             -0.9278904795646667,
                             -0.01750701107084751,
                             0.2437066286802292,
                             0.18803878128528595],
                      'F4': 11655,
                      'F5': 23987,
                      'F6': 230,
                      'F7': 14220863425718772383,
                      'F8': 142}},
        'B6': [-23, -49, -43, -42, 15],
        'B7': {'G1': 55,
               'G2': 0.19183564186096191,
               'G3': -92962416,
               'G4': [40103, 33205, 31663, 43630, 60807, 3576]}},
 'A2': -2087786430,
 'A3': 29492,
 'A4': 1765302548,
 'A5': 2917674622,
 'A6': 11653171702541007039}

Пример 2

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

(b'RUHCu\xec\xcb\xce\xf3p\x94\xc5\x1c4P\x1cp?\x02\x00<\x00\x00\x00T\x00\x00\x00'
 b'\x06\x00\x00\x00\x93\x00\xa7\x00\x00\x00\x0c\x0bL\xb3\xbf\x96\xf8\x15\xfb2'
 b'R\xe1]\n_\xbc\xd3\xfaryfT\x90\xc8\xfbZ\xdc\xe1\xf8\xca\xbf\n\x0e\xf1'
 b'c\x1b\x7fT\xee?\xf8\xd2\xea\xd2!\xd6\x06\x00\x00\x00N\x00f\xdc'
 b'\xbf\xb3\xfe\xcaq\xd8\xbf\xe9\xdd\x9b\x9f\x80\xae\xc3\xbd\xc0m\xe1\xa5b'
 b'\xde,N\x01?\xef\xa7\x1e\xbf\xff\xbf\xd0\xber\x9c:<7\x1eq\xbf8ag\xcdJ,\xc7'
 b'B5\x18\t\xc1\xb5\xdds\xf9\xd2\x10\x1e\x81\x95}\xf2\xa8e:k\x05)7\x10V\xf36C'
 b'\xf8qI=\xcd\x8e\xb8/\x07\x00\x00\x00\x99\x00\x00\x00')

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

{'A1': {'B1': {'C1': 14237128514473815157, 'C2': 28},
        'B2': 52,
        'B3': 0.937932014465332,
        'B4': [{'D1': -112, 'D2': -0.2107202840761302},
               {'D1': 10, 'D2': 0.9478145155876818}],
        'B5': {'E1': [248, 210, 234, 210, 33, 214],
               'E2': 102,
               'E3': -0.38194537041908716,
               'E4': -1617175063,
               'E5': {'F1': 11952955560602873472,
                      'F2': -8606,
                      'F3': [0.5050990581512451,
                             -0.6197499632835388,
                             -0.4077148139476776,
                             0.01138983853161335,
                             -0.9418672919273376],
                      'F4': 24888,
                      'F5': 52583,
                      'F6': 74,
                      'F7': 13096759190947546924,
                      'F8': 221}},
        'B6': [115, -7, -46, 16, 30, -127],
        'B7': {'G1': 67,
               'G2': 0.049180954694747925,
               'G3': 800624333,
               'G4': [32149, 43250, 14949, 1387, 14121, 22032, 14067]}},
 'A2': -1286862068,
 'A3': -26945,
 'A4': 855315960,
 'A5': 173924690,
 'A6': 6081681881551846495}

Вариант №25

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

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

Пример 1

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

(b'LZZ^hhuzlgeos\x05\x00\x00\x00I\x00\xa7]L\xa2\xfbxz\xcb\xc0jH?\xf8]{\x1e\x12'
 b':y\xa5n\x80\x0b\x03\x00\xb2\x00\x06\xf3/\xa8h\xd3\x89\x12\xff7'
 b'\x0f\x81\xf1\x16\x1e\xba\xff\xd3\x0e\xda\xf0^\x90\x01&N\xf9]\x9ck'
 b'"\x82\xf4\xfb\x8c\xf3_\x14Lb\xfa\xfd#\x04\x006\x009\xa7O\xbf\x06\x97\xdf'
 b'\xd9\xae =\x9f\xb7\x96P\xea~\x02\x00:\x00\xa2@\xd8\xb2\x11\xd4\xc1|\x16?'
 b'o\xa7\xac\xf7t\xc4\x87\x05\x00<\x00\xcfa^4\x94\xb68N\x87d\x8c$\t'
 b'\xefO\x10\xbc\x05\x00A\x00\x04\xc2*\x8c\x88\xdc\x0e\x1e\xe8vL\x9eUK\xd9\xcc'
 b'\xcb\x03\x00F\x00\x0b\xf7yr')

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

{'A1': 26718,
 'A2': 'huzlgeos',
 'A3': [{'B1': 10158982224224689245,
         'B2': 2593504260525416435,
         'B3': {'C1': [255, 55, 15, 129], 'C2': 57}},
        {'B1': 12599347272291930023,
         'B2': 9145210601585196320,
         'B3': {'C1': [241, 22], 'C2': 162}},
        {'B1': 1620383082520696896,
         'B2': 9783072897657958207,
         'B3': {'C1': [30, 186, 255, 211, 14], 'C2': 207}},
        {'B1': 9749792600125365857,
         'B2': 13551419166826990692,
         'B3': {'C1': [218, 240, 94, 144, 1], 'C2': 4}},
        {'B1': 16725822406447082178,
         'B2': 14685351402530557046,
         'B3': {'C1': [38, 78, 249], 'C2': 11}}],
 'A4': {'D1': 2722913703,
        'D2': -881166085,
        'D3': 0.7828788757324219,
        'D4': 511401464},
 'A5': 2776185362,
 'A6': {'E1': [110, 128, 11], 'E2': [-9, 121, 114]},
 'A7': 1335831210943836934}

Пример 2

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

(b'LZZ\x9eMmislchpw\x04\x00\x00\x00E\x00\xff\xecl\xff&_[\xe2\xa8\x86J>E'
 b'2\xc7B\x12"\x06f}\x02\xca\x03\x00\x99\x00\xd4\n\x83\xc2\xd5X\xf5\xaam$'
 b'~m\\\xcb\xf2\xf27l\xf2\x05K\xccE\x1e?\xbe B\x1b\xda(\xd4\x16\x01CN\x99\xfe'
 b']\x05\x006\x00\xff\x8b\xf5\xfd\xbf\xfa\x98yG\x1a\xdd\x0c \x1b\x9bx"\x03\x00'
 b';\x00^U\xd8b\n\xe3J\xca\xfe|]\x89\x98`\xb3\xdd\xe2\x05\x00>\x00\xee'
 b'Wi\xc5\xe9\xf4\x9b\xe3\x82A\x08\xb2\x84\x07\xd5[i\x02\x00C\x00edtg')

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

{'A1': 19870,
 'A2': 'mislchpw',
 'A3': [{'B1': 2943695277271170846,
         'B2': 6773019451022448340,
         'B3': {'C1': [109, 36, 126, 109, 92], 'C2': 255}},
        {'B1': 5150315851605210507,
         'B2': 2483905735298964762,
         'B3': {'C1': [203, 242, 242], 'C2': 94}},
        {'B1': 18359569169921529941,
         'B2': 16347419449882140028,
         'B3': {'C1': [55, 108, 242, 5, 75], 'C2': 238}},
        {'B1': 9431553520840304983,
         'B2': 7591895825130850369,
         'B3': {'C1': [204, 69], 'C2': 101}}],
 'A4': {'D1': 4285328639,
        'D2': -497328346,
        'D3': 0.19777929782867432,
        'D4': 1120350789},
 'A5': 1711677970,
 'A6': {'E1': [125, 2, 202], 'E2': [100, 116, 103]},
 'A7': -6127894042853045548}

Вариант №26

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LJC\xfcx\xd7H\xdb?\xe2v\xc4\xa6\x82\xb5H\x00\x02\x00"\x00\x00\x00\x03'
 b'\x00L\x00S\x00\x00\x00\x02\x00a\x8e\x9ecQ\x8d\x80\x9cB\x13\xbc'
 b'\x97\x90\x0e\xbb\x01\x07l\xe5\xd1\xd6I]\xf2n\x1ft\xa0\xbd\xa8\x1a'
 b'c\xf8\xec\x07\xc1\xfb\x9e\xad\xaa\x11O#\xea:\xe8\xac:\xcc\x99\x00'
 b'\x00\x00\x04\x00O%\xf3\x8b\x99\xa5\x00\xd5\x92\xbc\x15')

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

{'A1': 2027374811,
 'A2': {'B1': 0.5769980671081294,
        'B2': [{'C1': [-1902222511,
                       -1920951230,
                       331126672,
                       247136519,
                       1827000790],
                'C2': 73},
               {'C1': [1576168991,
                       1956691368,
                       442759404,
                       130153374,
                       -1381363377],
                'C2': 35}],
        'B3': [234, 58, 232],
        'B4': {'D1': [-84, 58, -52, -103], 'D2': 2734682890758575506}},
 'A3': [188, 21]}

Пример 2

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

(b'LJC\xfc\n\xc2\x95\x12\xbf\xd1\x8e\xff\xbfb\xff`\x00\x02\x00"\x00\x00\x00\x03'
 b'\x00L\x00U\x00\x00\x00\x02\x00c\xaalw\x1f/\x14\x87d\xc4\xfcq[@\xd4'
 b"\xc0\xcc\x80}\xe8|\x1b\xc8\x8d\x80e\x95\x93\x12`\x84\xb4\xa91q\xa0\xf1U'"
 b'>\xe3L\x97j\x0b@\x977\x91T\x11\x10\x00\x00\x00\x06\x00O\xb0u\x1f\x90\xdb'
 b'12\x93\xa6K')

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

{'A1': 180524306,
 'A2': {'B1': -0.27435296716793367,
        'B2': [{'C1': [-1435732193,
                       789874532,
                       -990088869,
                       1087684812,
                       -2139232132],
                'C2': 27},
               {'C1': [-930250651,
                       -1785523616,
                       -2068534991,
                       1906372949,
                       658432844],
                'C2': -105}],
        'B3': [106, 11, 64],
        'B4': {'D1': [-105, 55, -111, 84, 17, 16], 'D2': 12715103829963649683}},
 'A3': [166, 75]}

Вариант №27

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b"KXT\xef\xdc5\xd8A2\xde\x0b\xa5?\xe9\xbaF'\xe6\xb6\xea\xbb\xeas\x19"
 b'\x0cM\x9d\x84c\x05\xbfh/\xdf\xa0\x9e.\x85\xaf>\xaa\x0f#\x00\x03\x00\x00\x00'
 b'q?\xe0\x1f:\\\xff=\x8a?\x00\x19e\x00\x03\x00\x00\x00w[\xc0\xa1\xa8\xf5'
 b'\xbe\xb0\x97b\x00\x04\x00\x00\x00\x83?\xe7\x18\xa1L\xdbg\xd0?{~\x97\x00\x02'
 b'\x00\x00\x00\x8bUXdH\x90g\x99!C?F\xed}\x14\xd1\xd2s\xf9\xe3\xfe/=\x7f6'
 b'\x88\x01\x05Fh>m\xb6\xd7E4\n\x99\xcf}\x9d\xf7?\n56\x15\x0e')

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

{'A1': {'B1': -17,
        'B2': -2578917437061854299,
        'B3': 0.803988531047904,
        'B4': {'C1': -17430,
               'C2': 1931021389,
               'C3': -1652268283,
               'C4': -0.9069804549217224,
               'C5': [{'D1': [-96, -98, 46, -123, -81],
                       'D2': 0.3321467339992523,
                       'D3': [5329, 53875, 63971],
                       'D4': 0.5038120094631477,
                       'D5': 0.5003874897956848,
                       'D6': [-30458497, 914882821, 1181236845]},
                      {'D1': [91, -64, -95, -88, -11],
                       'D2': -0.34490495920181274,
                       'D3': [46807, 17716, 2713, 53117],
                       'D4': 0.7217566014398873,
                       'D5': 0.9824003577232361,
                       'D6': [-1644740854, 892736782]}],
               'C6': 6149775553997543713}},
 'A2': 67,
 'A3': 0.7770612835884094}

Пример 2

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

(b"KXT'\xa0<\xfcD\x94\x84\xcd\xb8\xbf\xe6+\x8e\x90-\x83\x88\xa50\x7f\xb5"
 b'5\x88\x8e\x9b\xa6.?S\x19`\xcdE\x84$\xb5?:\xd4<\x00\x03\x00\x00\x00'
 b'q\xbf\xd8\x14"]~\xa0\x0c\xbf\t\xc4\xbe\x00\x03\x00\x00\x00w\xc32\xea\xcb\xdb'
 b'?su\xbb\x00\x02\x00\x00\x00\x83?\xe2\xd1g&}\xb1\xa6>\xa4\x99\xf6\x00\x02'
 b'\x00\x00\x00\x874\x96]\x17\x1f%\xed?5\xbe\x8f\x9d\x0c8\t1\xf32\xd0\x8d'
 b'\ti\x9c\xefj\x04\xd3\xbaF\x00\xab\r\xfcE-el_a\x95M]\x9c')

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

{'A1': {'B1': 39,
        'B2': -6900363157558735432,
        'B3': -0.6928170028660228,
        'B4': {'C1': -23248,
               'C2': 2142582152,
               'C3': -1902402002,
               'C4': 0.8246059417724609,
               'C5': [{'D1': [-51, 69, -124, 36, -75],
                       'D2': 0.7298009395599365,
                       'D3': [14345, 12787, 13008],
                       'D4': -0.3762288964303486,
                       'D5': -0.5381582975387573,
                       'D6': [-1928762980, -278264621, -1169817429]},
                      {'D1': [-61, 50, -22, -53, -37],
                       'D2': 0.9510151743888855,
                       'D3': [3580, 17709],
                       'D4': 0.5880618812348544,
                       'D5': 0.3214871287345886,
                       'D6': [1701601121, -1790091876]}],
               'C6': 3789318490367061311}},
 'A2': 53,
 'A3': -0.2804950475692749}

Вариант №28

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'\xd9XVWM\xc1\xe9T\x977\x004\nL\x00\x02\x00\x82\xdd\x8e>\xbc[\xb5'
 b"\x14\x00\x00\x00\x86+\xd1?\xec\xa6\x92'L5\xa8\xbe\x94*g\x00\x99]\xbf\xd8"
 b'\x7f\x05^\x9c\x99l[xG\x98\x8bn\x9d\x9c\x8b\xa6\xaf#\xbd\xd9\x00!\x1f\x9f'
 b'\xad\xd6p\xf5\xfb\xa0<\x87\xf72\x19{Y\xd0\x84\xe4\xb6u5\xecW\tAaTO\x00\x03'
 b'\x00J#rN\xa2\xd0\xbd\x08D]\x1a\xd9B\xd5\xf3]\xb4\x97\x9cM\x13b\x15'
 b'\x04h\x00\x03\x00f\x00P\x00lQ\x93\xc4\x02U\x7f\x8d\x94ZN~A\xfd\x83'
 b'\xce\x17$\x85,\x00\x00\x00\x07\x00\x92\xa20\x14Dh\x18\x94p')

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

{'A1': 13972792327333229578,
 'A2': 76,
 'A3': {'B1': [{'C1': 17812327493782242532,
                'C2': 13147473976366809441,
                'C3': [84, 79],
                'C4': [28917, -1120, 15495]},
               {'C1': 595703420615316979,
                'C2': 6752188438899024405,
                'C3': [4, 104],
                'C4': [9074, 20130, -12099]}],
        'B2': -35,
        'B3': 2386476123,
        'B4': 46356,
        'B5': {'D1': 1368638466, 'D2': 6160798483575897665},
        'B6': 11217,
        'B7': 0.8953333632977563,
        'B8': -0.28938600420951843},
 'A4': {'E1': [253, 131, 206, 23, 36, 133, 44],
        'E2': 162,
        'E3': 12308,
        'E4': 68,
        'E5': 1746441328},
 'A5': 93,
 'A6': -0.38275274505067247,
 'A7': {'F1': 23416,
        'F2': 18328,
        'F3': [2339282332, 2342956835, 3185115169, 530558422]}}

Пример 2

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

(b'\xd9XVWM\x8e\xcf\xd2\x81n\t\xf2\xdf%\x00\x02\x00~\x9f\xbb\x80\x8e\xbbT'
 b'8\x00\x00\x00\x82\x0b\xff?\xd2\x94`\xf48F\x9c>oZ\x17\x00\x93D\xbf\xbb'
 b'\xc1\xa1\xb4Z\t\xd0\xcer\xa6\x16x\x11K]I\x02\xad\xcd\xd1\xc0\xa9\xc2\xae\x19'
 b'\x95\xean\xf9\xd3\xdf\xb9\x1c\xe3"s\xf6\\pp\x11\x07m\x97r\x03\xdfXU'
 b"\x00\x02\x00J\x88=\x89s\x1e\xe7V$\xa6\xdb\xe6=R\xba8\r'\xab%e5=\x00\x02"
 b'\x00d\x00N\x00h\x10G\xdd|\xb2\xecpt9 \x95\x1e\xa9{\xa7z\x1e\x00'
 b'\x00\x00\x05\x00\x8e\x1f*\x1b~\x0b\x94"\xe4')

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

{'A1': 10290675126903632607,
 'A2': 37,
 'A3': {'B1': [{'C1': 13338785933478485104,
                'C2': 8075243774125671391,
                'C3': [88, 85],
                'C4': [28409, -11297]},
               {'C1': 2226843256176240189,
                'C2': 5961138685929530725,
                'C3': [53, 61],
                'C4': [-30659, -30349]}],
        'B2': -97,
        'B3': 3145764539,
        'B4': 21560,
        'B5': {'D1': 273145212, 'D2': 12892803477731841310},
        'B6': 3071,
        'B7': 0.2903063187560322,
        'B8': 0.2337421029806137},
 'A4': {'E1': [169, 123, 167, 122, 30],
        'E2': 31,
        'E3': 10779,
        'E4': 126,
        'E5': 194257636},
 'A5': 68,
 'A6': -0.10842333462827658,
 'A7': {'F1': 52850,
        'F2': -23018,
        'F3': [2014399325, 1224912333, 3519064514, 2920912362]}}

Вариант №29

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'CUW_\x00\x00\x00\xb5\xacSU\x17\xf2\xeeR\xd5-\x1d\xbe\x90=\xb7z+{\xc8\x1f\x02'
 b'\x00\x00\x00~\x00\x00\x00\x8b\n\xd2\xc4i:\xa6\xdda\x83\xf9\xfb\x03ch\xf4\x99'
 b'\xe0\xa6\xfb\x03\x00\x00\x00\x82\x00\x00\x00\x05\x16s\x97\xaf.b\xaa\xf6'
 b'\x8d\x7f\xd1n\x9b\x1c\x82\xdf\x80\x07\xf3?,\xca\xde\xc7\xf9\xc2\xaco\xff5?N'
 b"sVj\xed6J3ixolapqmk7\x08=}\x96!\x94'XG\xaa\xa8\xeb\xbf\x00\xbe;\xf2O\xdb"
 b'\xf9\x85\xd2\x9f')

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

{'A1': {'B1': 3695826837530112846,
        'B2': 'ix',
        'B3': 'olapqmk',
        'B4': {'C1': 2101151799, 'C2': 8598},
        'B5': -0.8643390077061093},
 'A2': 5975979937596943541,
 'A3': 8842604085239426517,
 'A4': 533232427,
 'A5': [{'D1': [48640, 62011],
         'D2': 2699,
         'D3': 980010194,
         'D4': 7134823283754655142,
         'D5': [104, 244, 153, 224, 166, 251]},
        {'D1': [56143, 34297, 40914],
         'D2': 5637,
         'D3': 783259507,
         'D4': 11200119669089806946,
         'D5': [28, 130, 223, 128, 7, 243]}],
 'A6': -5997957116872479681,
 'A7': 0.7109288573265076}

Пример 2

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

(b'CUW_\x00\x00\x00g\x11F\x03\x97\xe8\x12<\x84\xcb,\x96\x86\xb40Q\xf2'
 b'\xfd\xfb#\x02\x00\x00\x00~\x00\x00\x00\xd9\xfe9KC\xbe\x02\x9b\x04'
 b'l\xa9\x86\x03}\x06(\xec\x02\xfa\x1a\x03\x00\x00\x00\x82\x00\x00\x00\x84'
 b'\x9f\xfd\xee\x9f\xd6\t\xc2\xac\x15\xdb\x88\x99\xf6\xee\xc9\x87\xeb\xc0\xcf;'
 b'\x19(\xe9h`a\xaf\x0b\xb4/\xbf8\x87\x1a\xcf{\xbe\x9dikpifvseoz\xe8\xf5aQ'
 b'X\x9e\xde?\x9e\x06l\xdd\xe2\xbf\x8b.\xf2u\x8d\x90\xff{\xe9\x08')

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

{'A1': {'B1': 7610448384290883384,
        'B2': 'kp',
        'B3': 'ifvseoz',
        'B4': {'C1': 1365374440, 'C2': -25000},
        'B5': -0.5895290498028734},
 'A2': 4328777927149097319,
 'A3': 5850374406092409732,
 'A4': 603717106,
 'A5': [{'D1': [11915, 30194],
         'D2': 65241,
         'D3': -1102886087,
         'D4': 9008191741890960130,
         'D5': [6, 40, 236, 2, 250, 26]},
        {'D1': [37005, 31743, 2281],
         'D2': 40836,
         'D3': -694161667,
         'D4': 17769384279309861385,
         'D5': [238, 201, 135, 235, 192, 207]}],
 'A6': -5809256040626644677,
 'A7': -0.6863409876823425}

Вариант №30

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'WMDNP?\xb5"\x04\xee\xe1\x9c`\xbf\xee\x19\x08\xc1\x80\xfb\x88>\x95p'
 b'\x1b\xbf\xeaTTb\xe4\x12\xde\x12\x8eh\x08\x00\x00\x00R\x00\x00\x00'
 b'a\x00\x00\x00r\x00\x00\x00\x81\x00\x00\x00\x91\x00\x00\x00\x9e\x00\x00\x00'
 b'\xa7\xe2\xfb\xf9%K\xb6K;\x00\x03\x00\x00\x00\xd4gmw\x00\x00\x00\x03\x00\x00'
 b'\x00O\xe5xeiiuw\x00\x00\x00\x06\x00\x00\x00[cnhtcamno\x00\x00'
 b'\x00\x08\x00\x00\x00j\xf8gdhojk\x00\x00\x00\x06\x00\x00\x00{vlfalgf'
 b'l\x00\x00\x00\x07\x00\x00\x00\x8a\xe6qxdy\x00\x00\x00\x04\x00\x00'
 b'\x00\x9a\x81?\xa5\xf3\xaffF\xe9`+)\x05\x9f\xddC\xd3\xfa\xd6\xcdQ\x1e\xd6'
 b'\x8f\x00H\x1a5!\x92\xc7\x80\xd5\xea\\\xeb*Q\x16j\x92B\xd1\xc6\xf05\x17'
 b'\xcd\xa3H\xc7\xf1\x96*\x86\x05y\x86\x17')

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

{'A1': 0.08255034286558915,
 'A2': -0.940555932938751,
 'A3': 0.29187092185020447,
 'A4': -0.8227941447699683,
 'A5': 311322632,
 'A6': [{'B1': 'gmw', 'B2': -27},
        {'B1': 'xeiiuw', 'B2': 99},
        {'B1': 'nhtcamno', 'B2': -8},
        {'B1': 'gdhojk', 'B2': 118},
        {'B1': 'lfalgfl', 'B2': -26},
        {'B1': 'qxdy', 'B2': -127}],
 'A7': {'C1': {'D1': 0.042874795184121295,
               'D2': 3110023201846187002,
               'D3': [214, 205, 81, 30, 214, 143, 0],
               'D4': 1209677089,
               'D5': -27961,
               'D6': 9283583891697455382,
               'D7': 7679273783373346071},
        'C2': -2090803663404119237},
 'A8': [3450030279, 4053150342, 91850263]}

Пример 2

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

(b'WMDNP\xbf\xd0:\x07\x1b\xd8\x8a\xf8\xbf\xe8n\xb3\xbbg\x80\x14>q@\xf8?\xe6\xfd'
 b'\xee\xcb\x99\x94\x8a\xcb\xf1[*\x00\x00\x00V\x00\x00\x00f\x00\x00\x00'
 b'r\x00\x00\x00\x7f\x00\x00\x00\x8d\x00\x00\x00\x9d\x00\x00\x00\xa6\x1c\x0cf'
 b'\xa0\x18\xe6\xf1f\x00\x03\x00\x00\x00\xd3ufqjyza\x00\x00\x00\x07\x00\x00'
 b'\x00O\x8bpwzcuot\x00\x00\x00\x07\x00\x00\x00_9raf\x00\x00\x00\x03\x00\x00'
 b'\x00o\xe9ccwy\x00\x00\x00\x04\x00\x00\x00{Vuitko\x00\x00\x00\x05\x00\x00\x00'
 b'\x88\xebgroifxi\x00\x00\x00\x07\x00\x00\x00\x96\xc4?\xc4\xcc\x80\x18\xca'
 b'\xda\xc80\r\xba\x81\x93uvF\xb9\x12,\xa4\xc4\xaf \x12\xde\x9a\xec\xce\xf3\xaa'
 b"\x06ffe\t\xecu\xf5\xf9\x97\x11\xb9\xc2\xc0\xe1\xf6\xb2\xabS#'\x14\x86\x06"
 b'\x1d\x1c\xe2')

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

{'A1': -0.2535417339260415,
 'A2': -0.7635134372940251,
 'A3': 0.23559939861297607,
 'A4': 0.7184976555405609,
 'A5': 3421592362,
 'A6': [{'B1': 'ufqjyza', 'B2': -117},
        {'B1': 'pwzcuot', 'B2': 57},
        {'B1': 'raf', 'B2': -23},
        {'B1': 'ccwy', 'B2': 86},
        {'B1': 'uitko', 'B2': -21},
        {'B1': 'groifxi', 'B2': -60}],
 'A7': {'C1': {'D1': 0.1624908562714238,
               'D2': 3462628754205275718,
               'D3': [185, 18, 44, 164, 196, 175, 32],
               'D4': 316578540,
               'D5': -12557,
               'D6': 12251592426275859573,
               'D7': 17724363910880084193},
        'C2': 2021103170581098854},
 'A8': [4138904403, 589763718, 102571234]}

Вариант №31

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'?ORRBdo\x00\x00\x00q\x0c\x9e\x87\xdaat\x00\x06\x00\x00\x00\x89\x84'
 b'\x89\xb4E\xce\xfd\x00\x06\x00\x00\x00\x95\xce\xa3\xf3\x85\xd4'
 b'\x15\x00\x02\x00\x00\x00\xa1/\xd8\x89\x08\x9a\xd7\x00\x03\x00'
 b"\x00\x00\xa5\x13 \x11\xd8\xcd\xfb\x00\x02\x00\x00\x00\xab?\xdd\xd0A'"
 b'\xd4\x98\xec?\xc6\xa1\x91\xa2 \xf9\xb0\xf6\xbf&\xe3\xf4\xbe\xfd"\x9b\xcdb\tu'
 b'?\xee\x9d\x9cO\x94zvtjlaf\x9f\x18%\xa5\xad\xe6?\xa2n\x18\xeb\xf1q\xa0\x00'
 b'\x00\x00G\x00\x05\x00\x00\x00l:\xdb\xa9c\x17\xe2\xc7\xa6\xc5\xfa`\xd8\x15$R'
 b'\xff\x97\x1d\x93\xa6\x01\x80\xd3z\xc2$\xea\xb6w:]\xf1\xd1L\xd3\xa4E\x88')

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

{'A1': 'do',
 'A2': {'B1': -24808,
        'B2': 631614950,
        'B3': 0.035996226121571384,
        'B4': {'C1': 0.46583584680264667,
               'C2': 0.1768056909222202,
               'C3': 246,
               'C4': -0.6519157886505127,
               'C5': -0.4944046437740326,
               'C6': -849213067,
               'C7': 0.9567395738884688},
        'B5': 'tjlaf'},
 'A3': [{'D1': 211716058,
         'D2': 24948,
         'D3': [15067, -22173, 6114, -14426, -14854, 24792]},
        {'D1': 2223617093,
         'D2': 52989,
         'D3': [5412, 21247, -26851, -27738, 384, -11398]},
        {'D1': 3466851205, 'D2': 54293, 'D3': [-15836, -5450]},
        {'D1': 802720008, 'D2': 39639, 'D3': [30522, 24049, -11956]},
        {'D1': 320868824, 'D2': 52731, 'D3': [-11356, 17800]}]}

Пример 2

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

(b'?ORRBoc\x00\x00\x00q\x87\x94\\t\x17\xb7\x00\x05\x00\x00\x00\x89\xa5'
 b'\x89\xbf\xc3C\xf8\x00\x05\x00\x00\x00\x93s\x1d\x97\x0e\xa9\xfc\x00\x06\x00'
 b'\x00\x00\x9d*\xa5\x80\xf2\xbf-\x00\x03\x00\x00\x00\xa9E\x05\xf3\x0e\x8b'
 b'0\x00\x03\x00\x00\x00\xaf?\xc0b\x88\xc1\x0c\xa6\xb0\xbf\xd4\x89I\xe5\x05kDu'
 b'>\xc7q\xd3?\x11\xf7\x8f\xdf\xf2`\xc3\xbf\xd8q\xb1\xac\xa6\x1d\x8clapo'
 b'u\x91\x8d\xb4MJ\xe2\xbf\xef\xc7\xf1\xbb\x89\xe3\xee\x00\x00\x00G\x00'
 b'\x05\x00\x00\x00l\xbfM\x8b\xd0\x9a\xfd\xb2\x8e\xabZA\x88\xdc9\x19\xcaP:g'
 b"\x18\xb5\xd4\xc1\xa2\xb5r\xa4\x18M\x95\xc4\x1e\xa6\x0b'\xf2\xd2\xf1\x0f"
 b'\xac\x8d\xec\x7f\\')

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

{'A1': 'oc',
 'A2': {'B1': -28275,
        'B2': -1270002974,
        'B3': -0.9931572592605542,
        'B4': {'C1': 0.12800702501526962,
               'C2': -0.32087943425510823,
               'C3': 117,
               'C4': 0.38954028487205505,
               'C5': 0.5701836943626404,
               'C6': -537763645,
               'C7': -0.3819393335365582},
        'B5': 'lapou'},
 'A3': [{'D1': 2274647156,
         'D2': 6071,
         'D3': [-16563, -29744, -25859, -19826, -21670]},
        {'D1': 2777268163,
         'D2': 17400,
         'D3': [16776, -9159, 6602, 20538, 26392]},
        {'D1': 1931319054,
         'D2': 43516,
         'D3': [-18988, -15966, -19086, -23528, 19861, -15330]},
        {'D1': 715489522, 'D2': 48941, 'D3': [-23029, 10226, -11535]},
        {'D1': 1158017806, 'D2': 35632, 'D3': [4012, -29204, 32604]}]}

Вариант №32

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

Структура G:

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

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

Пример 1

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

(b'ASL\xe2`\xd7E\xef2\x00\x00\x00\x02\x00\x00\x00N\x00\x02\x00\x00\x00P\x00'
 b"\x03\x00`\x00e\x00\xaaE\x7f\xe5\x9d]r\xdb\xc7\x80\x1b\xbfP\x98*L\x0c'"
 b'\xcf?\x8a\xd8\xf1\xae\x80J\xe1}\x8e\x18\xe9?\x02\xab\x17?x\xcb'
 b'\x06\x19\xb0\xce\x90\x1e\x00\x00\x00\x19ad\xe3\x1d\x1c\x18\xfbG.\xbf'
 b'\x01\xbehBA\xe8\xad\xbalqy\xeb\xde{\x02\x00\x00\x00c\x00')

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

{'A1': {'B1': -280635552,
        'B2': {'C1': -1359882102,
               'C2': 0.7842476328463164,
               'C3': -21758,
               'C4': 14893431484688383767,
               'C5': -112,
               'C6': {'D1': {'E1': -2633939899316746838,
                             'E2': -0.6074337363243103,
                             'E3': 0.24337915152608725},
                      'D2': 25}}},
 'A2': 'ad',
 'A3': [{'F1': 404495843, 'F2': -0.6807858347892761},
        {'F1': 1114160641, 'F2': -0.001326806959696114}],
 'A4': 'lqy',
 'A5': {'G1': 123, 'G2': [-21, -34]}}

Пример 2

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

(b'ASL\xe2\xfeM\\\x062\x00\x00\x00\x03\x00\x00\x00N\x00\x02\x00\x00\x00Q\x00'
 b'\x03\x00a\x00g\x00r(wXx\xd1\xf7I`\x10\x8b\xbep&\xb0\xe6\xbf\x85\xbc?\x8e\xd7'
 b')\xd4r\x90Q^T]\xed\xbf\xca\xed\xd1\x94t"\xc2\xde%\xbcW\x1e\x00\x00\x00\ner'
 b'kY\xc8\x10\x065\xa3~>\xc2H\xb5\xc4\t\xa7D?ykd\t\x7f\x18\xfc\x03\x00\x00\x00'
 b'd\x00')

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

{'A1': {'B1': 106712574,
        'B2': {'C1': -735455346,
               'C2': -0.917642769065891,
               'C3': -4662,
               'C4': 13557487178651833553,
               'C5': 87,
               'C6': {'D1': {'E1': 5329958998826756210,
                             'E2': -0.2716093063354492,
                             'E3': 0.11141585714372026},
                      'D2': 10}}},
 'A2': 'erk',
 'A3': [{'F1': 101763161, 'F2': 0.24866946041584015},
        {'F1': 3300214978, 'F2': 0.7681737542152405}],
 'A4': 'ykd',
 'A5': {'G1': -4, 'G2': [9, 127, 24]}}

Вариант №33

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'KIV0\xb8\x1bz\xff\x00\x00\x00\x02\x00\x19\xe3\x8f\xc3\x99??\xd3\x15\x00a'
 b"\x03jrw\xf1\xdf\xe2\xfb\x95\xad!]\x1a\xc5\xf4\x9e\xb1\x06J\x96N\x93A'"
 b'\xc0,\x1e\xfaP\xe1\xc1\xc3\x95\x1cOu5\xdc\x9d\xed\xa1~\xe0CfC~\x01k\x0eA\x85'
 b'U\x98\xbf\x92\xa0\xa8\x07\xe4\xe8f|\xeeQXz;I\xe5\x07\xc7\xb9\x00\x1b\x00'
 b'+\x00;\x00K\x1c\xbd\xca\xf6\x0f\x8a\xca\xaf\x00\x03\x00\x00\x00[\xb1'
 b'\xf1z\xe2?t\xbc\x97\xbeY\r\xad\x05')

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

{'A1': 3088808703,
 'A2': 'jr',
 'A3': 58255,
 'A4': -15463,
 'A5': 0.7493146061897278,
 'A6': {'B1': [{'C1': 8642935325877185825, 'C2': [1562035700, -1632565686]},
               {'C1': -7615988011787867106, 'C2': [-95362623, -1013638065]},
               {'C1': 8445899247057993440, 'C2': [1130775422, 23793217]},
               {'C1': -8838990745078552569, 'C2': [-454531460, -296658822]}],
        'B2': 2071034561831815855,
        'B3': [15177, -6905, -14407],
        'B4': {'D1': 2985392866,
               'D2': 0.9560026526451111,
               'D3': -0.21196623146533966,
               'D4': 5}},
 'A7': 3}

Пример 2

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

(b'KIV0]\x07\x9b8\x00\x00\x00\x02\x00\x195U\xad=\xbeM]\xf3\x00c\x13cj{'
 b"Rv\xe2\x8d\x8bI\x08W#\xf4\xf27\xd2'\xc4\x88j\xd3V\xa7\xea\x1c6 \xe5\xc9C5"
 b'\x8d\xbccZH\xf4\xdf\xce\x86\xfc\x97\x8d\x83\x81\x90F\x95\x94z\xe6%\xae7Y'
 b"'\xd6\xd4\xa3e\xa8\xa2\x18.\x97e-4\x8d\xc8j\xd5\xf4>\x00\x1b\x00+\x00"
 b';\x00K\xf8\xb9\xcf\xd6\x82\xe6\x19\xb6\x00\x04\x00\x00\x00[\x9edZ'
 b'\xcf>\xed\xcf\x14?*\x0f\x13\xd1')

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

{'A1': 1560779576,
 'A2': 'cj',
 'A3': 13653,
 'A4': -21187,
 'A5': -0.20055370032787323,
 'A6': {'B1': [{'C1': 8886295730164812040, 'C2': [1461974258, 936519620]},
               {'C1': -8616842567882236874, 'C2': [551930179, 898481251]},
               {'C1': 6505718903816518807, 'C2': [-1920761456, 1184207994]},
               {'C1': -1862891318105614636, 'C2': [-1553618782, 405706597]}],
        'B2': 17922584712323668406,
        'B3': [11572, -29240, 27349, -3010],
        'B4': {'D1': 2657376975,
               'D2': 0.4644705057144165,
               'D3': 0.6642925143241882,
               'D4': -47}},
 'A7': 19}

Вариант №34

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'YCDU6e\xcc\x0f\x96\xd0\x1c\xb3\x06\x1a)>\xcf\x17\xdf\x1f\x9f\x00\x00\x00'
 b'\x02\x00\x00\x00{\x00\x00\x00\x88=\x9d\xbe\x03^\xb3?\xc7\xd2\xce\xe7'
 b'\xca\x8d\x98\\\x16K\xe9\xaa\xbe?\xec\xb2\x8cb\x14\x11&\x00\x00\x00'
 b'!\x00\x00\x00/\x00\x02\x00\x00\x00=\xf1\xf7\xb5H|\x9a\x8b\x86\xf4'
 b'?\xc0\xa9\xfe\xe9\x80[\xc0>\xcb\xbd\x80\x13\xad?\xb1$\xfbX\x05!\x80\x00\x00'
 b'\x00N\x00\x00\x00\\\x00\x02\x00\x00\x00j\xd2o\xe2\x00\x00\x00E\x00\x00\x00r#'
 b'Q\x96\xa6\xcf&9<6\x0b\xf8*-+\xd4le\x14\x00\x05\x00\x83\x00\xe8\x97\xef')

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

{'A1': 7335255033490748166,
 'A2': 1885106978210914207,
 'A3': [{'B1': [{'C1': 61,
                 'C2': -25154,
                 'C3': [3, 94, -77],
                 'C4': 0.18612085645609677},
                {'C1': 92,
                 'C2': 5707,
                 'C3': [-23, -86, -66],
                 'C4': 0.8967954555123796}],
         'B2': 241,
         'B3': -2123},
        {'B1': [{'C1': 72,
                 'C2': 31898,
                 'C3': [-117, -122, -12],
                 'C4': 0.1301878585952334},
                {'C1': 62,
                 'C2': -13379,
                 'C3': [-128, 19, -83],
                 'C4': 0.06697054766585175}],
         'B2': 210,
         'B3': 28642}],
 'A4': {'D1': 641285174,
        'D2': 11,
        'D3': 63530,
        'D4': 757847148,
        'D5': 25876,
        'D6': [35, 81, 150, 166, 207],
        'D7': 232,
        'D8': -26641}}

Пример 2

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

(b'YCDU6\xf5s\xb3v]|\x0eR\x192W\xebc4\xa1z\x00\x00\x00\x02\x00\x00\x00'
 b'{\x00\x00\x00\x87\x7f\xf9\x0e\xcf\x0cK?\xd6\xeb\xf8\x18\xdc\xbe\x8c\x95'
 b'\xd3\xbd\x8f\xe2\x81?\xe5\xaez\xc6k\xe4f\x00\x00\x00!\x00\x00\x00'
 b'/\x00\x02\x00\x00\x00=\xb2A\xe8)\xfb\xbf\xe2A\xe1\xbf\xe0\x04.\x045\x0b>'
 b'\x90[S\x9f\x95+?\xed\x04\xa4\x12f\xfdl\x00\x00\x00N\x00\x00\x00\\\x00\x02'
 b'\x00\x00\x00j\x05f\xab\x00\x00\x00E\x00\x00\x00r\xb7ot\xda\xeb\x9ae\x9dN'
 b'5\x9e\xa9U\xa2\x04\xd0\x0c\x00\x04\x00\x83\x89\x9b\xf6\x84')

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

{'A1': 17686677482569993810,
 'A2': 1815610268277055866,
 'A3': [{'B1': [{'C1': 127,
                 'C2': -1778,
                 'C3': [-49, 12, 75],
                 'C4': 0.35815241268117215},
                {'C1': -107,
                 'C2': -11331,
                 'C3': [-113, -30, -127],
                 'C4': 0.6775487780970593}],
         'B2': 178,
         'B3': 16872},
        {'B1': [{'C1': 41,
                 'C2': -1089,
                 'C3': [-30, 65, -31],
                 'C4': -0.5005102235958032},
                {'C1': -112,
                 'C2': 23379,
                 'C3': [-97, -107, 43],
                 'C4': 0.9068165168209084}],
         'B2': 5,
         'B3': 26283}],
 'A4': {'D1': -342202979,
        'D2': 78,
        'D3': 13726,
        'D4': -1454005756,
        'D5': -12276,
        'D6': [183, 111, 116, 218],
        'D7': -30309,
        'D8': -2428}}

Вариант №35

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'NIDT(r,\xa4l\x02\x87iB\x02\x00\x00\x00)\x00\x00\x00\x02\x00+\x00\x00\x00Y'
 b'\xc6*\xbf6\xdaK\x00\x00\x00\x02\x00[\x00gj\x0b\xdc\xaarT\x10\x8dL\xf5'
 b'P(\xdc\x87s\x9cn\x10.8\xf7*Z\xf7\xb1\x903\xb5\x94\xea\xd7\x90*Eu\x02\x00G'
 b'\x00\x00\x00\xd6\xaf\x92 \xa6\xd05\xc3\xe21')

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

{'A1': 4785504523540245618,
 'A2': 'gj',
 'A3': {'B1': [{'C1': 1923800075, 'C2': 15864018701894094932, 'C3': 29575},
               {'C1': 772828828, 'C2': 3715665368508462904, 'C3': 38069}],
        'B2': -0.66708904504776,
        'B3': -9674,
        'B4': {'D1': [69, 117],
               'D2': [55274, 10896],
               'D3': 546484182,
               'D4': -1019883354},
        'B5': [-30, 49]}}

Пример 2

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

(b'NIDT(:,\xc6\x0c\x9a\xe7\x8bM\x03\x00\x00\x00)\x00\x00\x00\x05\x00,'
 b'\x00\x00\x00dj\x04\xbd#$v\x00\x00\x00\x04\x00\x86\x00rxh\x1f\xb4\x0e\x8fc;OM'
 b'O~\x9a\x8a\xa5A\xfa\xa0\xe2\xc3\xa1O\x0f\x02O\x97\x01D\x1b\x87'
 b"\x19\x07\xb9\xd7x\xe3\x1f\x17\x00u\x0b+\xa3aK\xde0o\x8c'4\xc3y\x92"
 b'\xfa\xbb|\x14\xf9\xeejy\xc6LW\xc1\xde3\x14\xe2\xf6\xf8f\x9a\x95\xa4\x14\xfc'
 b'\x02\x00r\x00\x00\x00\x18g\xe0?o$\xfe\x1e\x00\x9a\xe6\x8f')

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

{'A1': 5587814411508526138,
 'A2': 'rxh',
 'A3': {'B1': [{'C1': -1894861793, 'C2': 9987434002712050531, 'C3': 16805},
               {'C1': -1008557830, 'C2': 4900364235148578721, 'C3': 34587},
               {'C1': -675739879, 'C2': 3101701411623134072, 'C3': 24995},
               {'C1': 1865473611, 'C2': 13545299880933861260, 'C3': 5244},
               {'C1': 2037051129, 'C2': 16290702783925406918, 'C3': 63734}],
        'B2': -0.03232802450656891,
        'B3': 9251,
        'B4': {'D1': [20, -4],
               'D2': [39526, 42133],
               'D3': 1071671064,
               'D4': 519971951},
        'B5': [0, -102, -26, -113]}}

Вариант №36

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'FDLSH\x00r\x00\x04\x00\x00\x00z\x00\xbf/\x97\xff1:;\x03"~z}\xf9 \xdf}\xd5?'
 b'!:H\x1a\xec\x14xl0\xc6\x90\x19\xe0\rT\xbeu\xa3E[\xf9\xae\x05S'
 b'\x02\x00\x00\x00(\x00\x00\x00\x80\x9c\x13 \xa4\x9a\xa6?\x02\x00&\x00'
 b'\x00\x008\x00qmU\xfe\xd8\xe1P\x98\x82p\xa32\x9c\x07<u\x8e\x9d\x02\x00'
 b'\x00\x00R\x00\x00\x00\xa8\xbe3\xac\x14\xaa\xc6?\x02\x00P\x00\x00\x00'
 b'b\x00\x14\xdcz\xad')

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

{'A1': [{'B1': 'xl',
         'B2': {'C1': [13714602021402756656, 5982380066032952181],
                'C2': 0.04414856807289258}},
        {'B1': 'qm',
         'B2': {'C1': [8107209752374214229, 11353140611333763747],
                'C2': 0.1770654526549056}}],
 'A2': {'D1': [20, 220, 122, 173],
        'D2': 232843792155619263,
        'D3': 9070004430471593506,
        'D4': 975257557,
        'D5': 351017544}}

Пример 2

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

(b'FDLSH\x00z\x00\x04\x00\x00\x00\x82\x00h\x06\xef\x17\xe8P\x84s\x0fFf\x0c`A'
 b'\xd2w\x7f\xa4\x80H\x95\xc9V\xc0zz\x1d\xd7!Xt*\xd94I\xb9K\xa7\xa9\x92\xff\xae'
 b'\x02\x00\x00\x00(\x00\x00\x00H`\xed\x92y\xfe\xe3?\x02\x00&\x00\x00\x008\x00'
 b'ofH\xb9\xf4\xb1#\xaf\x11L7\xb3\x0e\xe5\xfc\x80Xg\r=w"I\x01\xa2\xd7\x03\x00'
 b'\x00\x00R\x00\x00\x00\x10\xea\xb8\x13\x14\xd5\xe0\xbf\x02\x00P\x00\x00\x00'
 b'j\x003\xb0\xa23')

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

{'A1': [{'B1': 'zz',
         'B2': {'C1': [3808121639101650717, 12609958739014564169],
                'C2': 0.6248138303444728}},
        {'B1': 'of',
         'B2': {'C1': [5481354789330925896,
                       7446843807520174903,
                       15537983078004112653],
                'C2': -0.5260105500413506}}],
 'A2': {'D1': [51, 176, 162, 51],
        'D2': 8323866969051694696,
        'D3': 8634035316403357199,
        'D4': 1216390271,
        'D5': 3226913173}}

Вариант №37

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'HKW\n\x00f\xbc6\x00\x84\xe9\xde\xcc\xdf)?vaohmvh\x02\xbe_{\xa0\x9dP\xe3\xe0'
 b'\x17\x00\x1a\x00\x1d\x00\xc2\xd6\xcb~\xb9\xc8h\xaaj\xc3s&\x03\\\xdb0\xc5\xb2'
 b'B]\xce\xcd\x19\xcf\x03\x00\x00\x00 \x00\x00\x00\x15\xd6=;\xc4S\xc3\x9d\x9a}'
 b'\x02\x00\x00\x00&\x00')

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

{'A1': {'B1': 57065, 'B2': 0.6635711193084717, 'B3': 'vaohmvh'},
 'A2': -17306,
 'A3': {'C1': 1564652229,
        'C2': -820392498,
        'C3': [{'D1': 48642, 'D2': 95},
               {'D1': 41083, 'D2': 157},
               {'D1': 58192, 'D2': 224}],
        'C4': 21,
        'C5': [-1002750506, -1700936877],
        'C6': 125,
        'C7': [-6167458990662101310, 3520508702319952746]},
 'A4': 132}

Пример 2

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

(b'HKW\n\x00\xa5\xa3C\x00o2\xe6\xb0iA\xbfoklugcwN\xaa\xad\xc0]C\xfa\xf7\xf0'
 b'T[\xdd\x17\x00\x1a\x00\x1d\x00 \x00\xcd9~\x02z.s*\xef\xd8\xb5!"'
 b'\xbd\x19\xb9\x82\xa2v#\xf8Hs\x90-lq\xec\xff\x90\xc1p\x04\x00\x00\x00#'
 b'\x00\x00\x00b\xe9\x19\x8bF\x1f\xe2\x9fl\xa9\x03\x00\x00\x00+\x00')

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

{'A1': {'B1': 58930, 'B2': -0.755518913269043, 'B3': 'oklugcw'},
 'A2': -23643,
 'A3': {'C1': -328111059,
        'C2': 1891733759,
        'C3': [{'D1': 43598, 'D2': 173},
               {'D1': 24000, 'D2': 67},
               {'D1': 63482, 'D2': 240},
               {'D1': 23380, 'D2': 221}],
        'C4': 98,
        'C5': [1183521257, 1822417439],
        'C6': -87,
        'C7': [3058839673477413325,
               -5108844347983013649,
               -8038000679342136702]},
 'A4': 111}

Вариант №38

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

Структура E:

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

Структура F:

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

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

Пример 1

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

(b'ZPWO\xc7\xae\x7f\x12\x90\x02\xbe\xab;n\x07W\xa4\xda\x9c\xae\\\xf5v\xd7'
 b'\xb9\xee\xbf\x82\x00N\xa6\xb9\x81\xd4\xc1\xe2U\x02\x00\x90\x00hM\x8d'
 b"\x1f'\xf3\x08\xec\x05\x00\x98\x00]\xbd\xcc\x10\x15\x90\xa0\xef7\xea\xea"
 b'\x87\x8f\xfaJt\x89\xbey\xe2s=\xff\t(>\r\x99\x13\xbf\x95\xadl\xbd\xba'
 b'\x9a\xf3\x0e\x04J\xf3\x1c1C\x86\x10Y\xd6nT\xa7*\xd97\x8c\x04*\xe4\xbf'
 b'Pg\xfc\r\x13)ni\xad;\xe7\xe8QJ\x82Dk\x99;\x00=\x00?\x00A\x00C\x00'
 b'\x00\x00\x80\x16b\xbaj>\x12\x95u?\xf8\x0b\xce\xa4\x1a')

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

{'A1': 32686,
 'A2': {'B1': -0.1275027096271515,
        'B2': 15275,
        'B3': -1537800338,
        'B4': -25382,
        'B5': -0.960185749378885},
 'A3': {'C1': {'D1': [{'E1': -96, 'E2': 239},
                      {'E1': 55, 'E2': 234},
                      {'E1': -22, 'E2': 135},
                      {'E1': -113, 'E2': 250}],
               'D2': {'F1': [-0.2684653401374817,
                             0.059542153030633926,
                             0.16410063207149506,
                             -0.5765541195869446,
                             -0.05778272822499275],
                      'F2': 2086092433693842106,
                      'F3': 49,
                      'F4': -6389360104435579325,
                      'F5': -0.6301291216503035,
                      'F6': 234645328,
                      'F7': [10515, 26990, 15277, 59623, 19025, 17538, 39275]},
               'D3': -128,
               'D4': 22},
        'C2': 6188721956414137934,
        'C3': [0.22922661900520325, 0.9593058824539185],
        'C4': -1438632731586245272,
        'C5': [-8, 11, -50, -92, 26],
        'C6': 93,
        'C7': 189},
 'A4': 4300,
 'A5': -28651}

Пример 2

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

(b'ZPWO\xc7zS\x10\xaap<\xbb\x18?\xff\xd7\xc5\xac\x9a@\r\x9e\xedR'
 b'\xa1\xe1\xbf\x82\x00\x9d\xed\xc8\x06\xe7c\xdbI\x02\x00\x90\x00\x0e\xf4)'
 b'{\x19Z8t\x03\x00\x98\x00av\x17)\xb6GG\x06-\x8d\x1e\xd1\xae\xc4M}\xad=\xf2'
 b'\xc7@\xbd\xe9&B\xbf\x85>E<+\xa6w\xbfL\xd3g-\x0c|\xce\xf9\x14|3\xc3\xf6'
 b'\xa5;Q\xc4D\x8f\xbak\xd5\xb4\xe0?\xb7\x91\x06\x88\x0c\xae\xd2W\r\xc4yR'
 b'\xba\xa9\xfd\xe5\xa3\x97;\x00=\x00?\x00A\x00C\x00\x00\x00\x1e\xa2V6}?\xa0`{?'
 b'B\x91[')

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

{'A1': 21370,
 'A2': {'B1': 0.01468898355960846,
        'B2': 6331,
        'B3': -975700161,
        'B4': -25940,
        'B5': -0.5509428635563509},
 'A3': {'C1': {'D1': [{'E1': 71, 'E2': 6},
                      {'E1': 45, 'E2': 141},
                      {'E1': 30, 'E2': 209},
                      {'E1': -82, 'E2': 196}],
               'D2': {'F1': [0.08471164852380753,
                             -0.04706568270921707,
                             -0.7584062218666077,
                             0.01203883159905672,
                             -0.9673792719841003],
                      'F2': -446282921319869620,
                      'F3': 20,
                      'F4': -4300590585166482564,
                      'F5': 0.5220744232251282,
                      'F6': -2012835401,
                      'F7': [44556, 22482, 50189, 21113, 43450, 58877, 38819]},
               'D3': 30,
               'D4': 162},
        'C2': 5321957228570799517,
        'C3': [0.9891103506088257, 0.9819431304931641],
        'C4': 8374542572582466574,
        'C5': [66, -111, 91],
        'C6': 97,
        'C7': 118},
 'A4': 10519,
 'A5': 18358}

Вариант №39

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

Поле Описание
1 uint32
2 uint8
3 float
4 int16
5 float
6 int64
7 float
8 int32

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

Пример 1

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

(b'HDOR9\x00\x02\x00P\x00T\x00\x00\x00s\x00\x03\x00\x8a\x00\x90\x00\x00\x00'
 b'\x83\xb0\x04@=\xcc1\xc8?\xd4\x92\xeeH!w\xeb?\x8a"P\xb2N!\xe0?tK\xfb'
 b'Ev\xf7\xd4?cF\xc3>\xebdm\x7f\xc8}qj\x95\xe0\xfe&A\xbf\xaa\xc6\xba\xf8\xca'
 b'\xd9\xb8 ^%\xb0mah\xb3\x1fg\xbf\x85\xb1\x1b\xba\x95>V\x1f\x1f\x95+'
 b'\xd0\x8f\x7f\x1d\xaeO\xbe\x1b\x9e\x1b\xde\xf1\xe2\xa6>\xc1\x9d\x82>\xa3'
 b'\xdd\xef\xd0\xad\x8b\xa5E\x13?\xd1O\xff\xa9\x9cZ\xfd\xcf\xd7\xf9Q\xf1\x7f+J'
 b'_#\xedE\xbe\xdcO\x1b\xc6\x02\xbf1\x8c\x15V\xd1#C1\xbd\xd0\x98\xbe\xcc'
 b'\xdd\x0f\x90')

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

{'A1': [{'B1': {'C1': 0.3813963830471039,
                'C2': 7670049940473472235,
                'C3': [149, 224],
                'C4': -0.754501223564148,
                'C5': 4172990122,
                'C6': -54},
         'B2': [47321, 24096],
         'B3': {'D1': 1634578469,
                'D2': 104,
                'D3': -0.9028274416923523,
                'D4': -20091,
                'D5': 0.29243549704551697,
                'D6': 9191794250090487638,
                'D7': -0.20281262695789337,
                'D8': -568615397}},
        {'B1': {'C1': 0.32595017552375793,
                'C2': -3391248301188538943,
                'C3': [173, 139],
                'C4': 0.5752814412117004,
                'C5': 2852081617,
                'C6': -100},
         'B2': [64858, 55247, 20985],
         'B3': {'D1': 1244364785,
                'D2': 95,
                'D3': -0.1932874172925949,
                'D4': 20444,
                'D5': -0.5108353495597839,
                'D6': 3549720313297472561,
                'D7': -0.2984675467014313,
                'D8': -1878008372}}],
 'A2': 131,
 'A3': [0.1890197085449805,
        0.8582922386600225,
        0.5040658457447347,
        0.32760388216154657]}

Пример 2

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

(b'HDOR9\x00\x03\x00P\x00V\x00\x00\x00u\x00\x03\x00\x8c\x00\x92\x00\x00\x00'
 b'\x8c\xc0\xa7u\xbe\x9fY\xdf?\xd8\xab\xc2\xbd\xb4c\xcb?\xa0\x06\r\xe4\xe3`\xbb'
 b'\xbf2\xe3\x98U7\x8a\xe6\xbf\xf0\xe1D?\x18X\xe2\x84\x17\x96\xe2K\xeb\xbf\x87'
 b'=\x9f>s\x88,\xdfM%\x13\x97\x0b\x8bm\xcc\xcaaY\xe3\xe3\x97\x1f?\xb1'
 b'L\xaf\x06\x01\xbe`b9D\xcd\xd36\xa7oc\x15\xbe\xae\xd2\xe4[\x15&\xef'
 b'\xbe\x12\xba\xa00\x10s\x95\x106\xb1\xff\x0e.\xbe\x19T|\xa0\'"\x87\x8f\x80'
 b'\xf5\x16\x10\xf3\xfd\xf6FX\\2?z6\xef\xf13?X\xb3\xa4U|\xab\xa5\x1eVL\xdc'
 b'>\x8a&\xe0\xf9')

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

{'A1': [{'B1': {'C1': 0.7690725326538086,
                'C2': 5468097925339043864,
                'C3': [235, 191],
                'C4': 0.3110162913799286,
                'C5': 3744237683,
                'C6': 77},
         'B2': [4901, 2967, 28043],
         'B3': {'D1': 1499581132,
                'D2': 227,
                'D3': 0.6234113574028015,
                'D4': 19633,
                'D5': -0.12600205838680267,
                'D6': -6397693342066843040,
                'D7': -0.1458871215581894,
                'D8': 1541722798}},
        {'B1': {'C1': -0.46708741784095764,
                'C2': 1194987789509245458,
                'C3': [54, 177],
                'C4': -0.16997908055782318,
                'C5': 2692502553,
                'C6': 39},
         'B2': [34594, 32911, 5877],
         'B3': {'D1': 4143837968,
                'D2': 70,
                'D3': 0.6967215538024902,
                'D4': 13946,
                'D5': 0.7029103636741638,
                'D6': 2208359742796247896,
                'D7': 0.43026989698410034,
                'D8': -102750582}}],
 'A2': 140,
 'A3': [0.4898452148396437,
        0.2139802862705824,
        -0.10694717710159773,
        -0.7043720886059417]}

Вариант №40

Задача №12

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

Структура A:

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

Структура B:

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

Структура C:

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

Структура D:

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

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

Пример 1

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

(b'LGGX\xf1\x00U\x9c\xbfe\xe8\x02?H\xad\xf0\xbf\x11\x01\n\xbf\x00\x93a'
 b'\xa8\xf0w\xf5\xdc\xbcy\x11\x94\x00\x00\x00\x02\x00\x00\x00\x08\x8f\xa4('
 b'j\x00\xc2b\xfc\x87\x00\x00\x00\x02\x00\x00\x00\x10Pz\xa8\xa3\xa4\x00'
 b'\x00\x00\x02\x00:cW{\x92\xa5}\xa6d2\x80@\x9f\xf45\t$\x8f8\x18G\x00\x00\x00'
 b'\x02\x00\x00\x00\x18~}\x11H\xbd\x00>?w/\xf7\x9d\\')

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

{'A1': {'B1': 2402818119,
        'B2': [{'C1': -6273382383073068783,
                'C2': 148,
                'C3': [-0.8980714082717896, 0.7839040756225586]},
               {'C1': -8096301794360925444,
                'C2': 135,
                'C3': [-0.5664221048355103, -0.5022488236427307]}],
        'B3': 2122125640,
        'B4': 189,
        'B5': {'D1': -92,
               'D2': [20602, 43171],
               'D3': [25431, 31634, -23171, -22940, 12928, 16543, -3019],
               'D4': [9, 36]},
        'B6': 0.965575635433197,
        'B7': -25252},
 'A2': 156}

Пример 2

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

(b'LGGX\xf1\x00to\xbf\x19\n\xe8>\xdd0\xab\xbf\x01\x90\x8d>\xa2\xadG=\x11\xbbL'
 b'<\x18\xab\xac\xdc\xc1\xa6\xe6\xa5\xb0ui\xd8\x00\x00\x00\x02\x00\x00\x00'
 b'\x08\x9c.\xacK%\x1e{Q9\x00\x00\x00\x02\x00\x00\x00\x10_8,\xddU\xb2'
 b'\xbb8\xe4\x00\x00\x00\x02\x00\x00\x00\x18\xfc\x18\x9a[\xfe\x16%&\xc6'
 b"n\xe5\x00\x00\x00\x05\x00S\x94\xa8C'\xcb\x03K,\xc4G\x165~Uf\xac}\xbe\x8aN"
 b'\x00\x00\x00\x03\x00\x00\x00 n\x85b+}\x00]\xbe\xb4\xa9\xf2gQ')

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

{'A1': {'B1': 2109639246,
        'B2': [{'C1': -2539565205307755159,
                'C2': 216,
                'C3': [-0.5978226661682129, 0.4320119321346283]},
               {'C1': -7192622116118824111,
                'C2': 57,
                'C3': [-0.5061119198799133, 0.3177282512187958]},
               {'C1': 6861283361436121912,
                'C2': 228,
                'C3': [0.03557901084423065, 0.009318273514509201]}],
        'B3': 1854235179,
        'B4': 125,
        'B5': {'D1': -27,
               'D2': [64536, 39515, 65046, 9510, 50798],
               'D3': [-27480, 17191, -13565, 19244, -15289, 5685, 32341],
               'D4': [102, 172]},
        'B6': -0.3528590798377991,
        'B7': 26449},
 'A2': 111}