чем считать данные из специфического *.dat файла?
Ничего предполагать не нужно, если файл заполнен только этими значениями, читай до feof.
Интервал -4096..4095.
Только как это сделать? я не нашел пока метода чтобы вытягивать 13-байтные числа из массива символов..
8 6
2 8 4
4 8 2
6 8
8 6
Одно число - один байт, вернее, количество битов, которые из него нужно достать. Как видно, схема повторяется для каждых 10ти байтов. То есть, достаточно запрограммировать извлечение 4х чисел из первых 10ти байт, а все остальные получать в цикле. Использовать для этого можно логические сдвиги и логические операции с битами.
Только как это сделать? я не нашел пока метода чтобы вытягивать 13-байтные числа из массива символов..
Руками :)
Проще всего - блоками по 7 байт (56 бит). Это - четыре 14-битовых поля.
Чтоб не думать - выставляем выравнивание на байт, и пишем структуру типа
short int i0: 13;
char : 1;
short int i1: 13;
char : 1;
short int i2: 13;
char : 1;
short int i3: 13;
char : 1;
};
То, что вам написали про 10-байтовый блок - ошибка, блок таки 7-байтовый, что видно даже из приведенной автором комментария про 10-байтовый блок схемы.
и вытягиваем из 7-байтового блока 4 числа. Если, конечно, у вас прибор little-endian - иначе надо еще немного повозиться...
Прибора в глаза не видел. У меня есть только *.dat файлы. =)
Чтож, сажусь писать код.
Я так понимаю, вопросы теперь буду писать на сайте, ибо ответы довольно оперативные, а сделать нужно до завтра.)