Мне нужно руководство по синтаксическому анализу и десериализации двоичных данных, полученных от символьного устройства в Linux. Я работаю над написанием программы на Rust, которая отслеживает ввод с клавиатуры, используемый для различных функций на моем устройстве. Согласно проведенному мной исследованию, данные следует анализировать в структуру input_event.
Код: Выделить всё
struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что это не описывает весь блок данных, который я получаю от символьного устройства, который выглядит следующим образом:
[C, F5, 8F, 66, 0, 0, 0, 0, 33, 1A, 1, 0, 0, 0, 0, 0, 1, 0, 1D, 0, 1, 0, 0, 0, C, F5, 8F, 66, 0, 0, 0, 0, 33, 1A, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Я могу легко предположить, что последние 64 бита составляют тип, код и значение, но я не могу точно вычислить отметку времени.
Может ли кто-нибудь подсказать мне, как правильно анализировать эти данные?
Подробнее здесь:
https://stackoverflow.com/questions/787 ... e-in-linux