Тёмный

PythoNN: Василий Рябов - "Парсинг бинарных данных с помощью ctypes, или пишем на питоне как на Си" 

Никита Соболев
Подписаться 2,3 тыс.
Просмотров 367
50% 1

Слайды: speakerdeck.com/sobolevn/pyth...
Чат и анонсы: t.me/pytho_nn

Игры

Опубликовано:

 

21 июл 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 4   
@Ca1vema
@Ca1vema 10 месяцев назад
Как парсить данные переменной длины через структуры из ctypes? Кажется, что кроме как сделать шаг назад и переместиться в категорию "Как не надо делать! (а по рукам?)" выхода нет. Получается всё таки придётся делать так, как не надо.
@VasilyRyabovVarjag
@VasilyRyabovVarjag 10 месяцев назад
Тот неловкий момент, когда комментарий сложнее доклада. 😅 А если серьезно, то зависит от того, насколько переменные эти данные. В структуре можно сделать и union, который интерпретировать в зависимости от предыдущего поля. Или несколько структур завести: свою на каждый стабильного размера кусок данных. Но, в конце концов, если комфортнее делать как неправильно, то получить проклятие от потомков никто не может запретить. А если проект потом все равно умрет, то и совсем пофиг! 😅
@Ca1vema
@Ca1vema 10 месяцев назад
@@VasilyRyabovVarjag В нашем случае у нас в пакетах что-то типо "в октете N длина поля, а дальше само поле" и "если здесь X, то длина поля 2 байта, если Y то один". Ну и всё в таком духе :)) Извращаемся с struct`ом )
@VasilyRyabovVarjag
@VasilyRyabovVarjag 10 месяцев назад
@@Ca1vema тут прямо visitor паттерном пахнет) В зависимости от типа поля разные методы звать. Так обычно синтаксическое дерево (AST) парсят (там тоже типы узлов разные). Но может и на вашу структуру пакетов такой подход ляжет вдруг. Кода мало не станет, но хотя бы стандартный подход какой-никакой.
Далее
надувательство чистой воды
00:28
How is it possible? 🫢😱 #tiktok #elsarca
00:13
Просмотров 3,2 млн
Шаг #1. Excel для Начинающих
7:49
Просмотров 3,1 млн
ЛКПП 3: Какой Python язык?
24:09
Просмотров 2,8 тыс.
Три криперёнка в Roblox! 😱 @titwow
0:29