Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 23.08.2013
Сообщений: 39
Записей в блоге: 1

О дешифровке приборного файла

20.10.2023, 13:26. Показов 2530. Ответов 70
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, плиз, относительно дешифровки приборного файла.

Запрос авторам данных сделал, но там сложное положение: одни уволились, другие сами не понимают что и как - так что могут так и не ответить... долго объяснять всю ситуацию, всё довольно запутано...

..........................
Описание формата файла (от авторов):

Все данные пишутся в файл в бинарной форме. Вначале идет заголовок длинной в 1600 байт. Сразу после заголовка (после 1600 байт) непрерывно пишутся сами данные в виде последовательности из 2-байтных целых чисел.

Формат заголовка данных
ТипРазмер (байт)Описание
short2Число записей
float4Средний скачок между цифрами
shor2Минимум
shor2Максимум
char80Название канала

и т.д. ...
.....................

Вопрос в следующем:

я читаю файл, например, как

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Var
jWord  :  Word;
fI  :  File of Word;
...
 
Begin
...
 
While NOT(EOF(fI)) do
begin
  Кead(fI,jWord);
  Write(fF,IntToStr(jWord)+', ');
end;  //  While NOT(EOF(f))...
...
получаю такое:

3736, 0, 0, 65163, 374, 0, 57047, 16383, 250, 8240,27424, 24864, 44320, 24864, 43808, 8224, 8320, 8342, 8335, 0,...
- начало заголовка (1600 байт) и

65528, 65528, 65526, 65527, 65528, 65528, 65529, 65529, 65529, 65528,65527, 65529, 65529, 65528, 65528, 65528, 65528, 65528, 65529, 65528,...
- для собственно данных.

1.
Так вот - как мне дешифровать в десятичную цифру, "float 4 Средний скачок"?
как дешифровать "char 80 Название канала" в строку и прочие НЕ Word переменные в их формат?

Я же имею прочитанные Word, т.е. float в моей выдаче выглядит, как "57047, 16383", да и char и прочее - не лучше.

Тут я и останавливаюсь, т.к. не понимаю - как дешифровывать НЕ 2-х байтные переменные в переменные, состоящие из ДРУГОГО числа байт.

2.
Также, т.к., думаю, запись собственно приборных данных достаточно единообразна у всех - поэтому подскажите какую-нибудь мысль, относительно того, что собственно данные имеют такой вид, как - см. выше - на верхнем пределе 2-х байт.
Мах/мин в Заголовке коррелируют с прочитанными значениями. Мах= 374, мин= 65163, т.е какая-то мелкая фигня с переполнением. Но какая?
(Как уже писал - авторы, пока, в несознанке и не просвещают меня)

Файл я читаю, скорее правильно, т.к. в заголовке есть день-месяц-год и эти три Word числа правильны.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.10.2023, 13:26
Ответы с готовыми решениями:

Перекрёстный запрос: общее состояние приборного парка
Суть проблемы. Во вложении кусок БД. Есть запрос и по нему форма "общее состояние приборного парка". Запрос считает сколько...

К дешифровке
Здравствуйте! Можете помочь расшифровать и объяснить как расшифровали. 1)...

InvMixColumns в дешифровке AES
Застрял(туплю). Помощь. В функции MixColumns все было как бы просто, значения только 1,2, и 3, при умножении на 2 где-то прочитал, что...

70
 Аватар для Beltar
833 / 447 / 39
Регистрация: 05.05.2022
Сообщений: 3,144
20.10.2023, 23:11
Студворк — интернет-сервис помощи студентам
Главный инструмент программиста - это клещи для языка. Попади программист лет на 500 в прошлое и надо в инквизицию идти, чтобы ВСЁ вытягивать.
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
20.10.2023, 23:15
Посмотрел файл, сравнил с описанием, появился вопрос. В заголовке указано число записей в этом файле 3736. Одна запись 2 байта, а данных в файле больше чем на 2.2 млн. записей. Не сходится что-то.
0
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 872
21.10.2023, 00:10
очень похоже что данные - это 16 битное знаковое число - тогда это получится что-то типа графика в районе нуля с редкими заходами в положительную область.
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
21.10.2023, 00:29
Вот такая фигня там идет для Word:

а для SmallInt уже интереснее:
0
Заблокирован
21.10.2023, 00:34
Вы маньяки.
Ну вас нах, я спать пошёл.
1
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
21.10.2023, 00:39
Просто у меня в разработке есть компонет Osciloscop, для анимации таких вот данных и потестить его с чужими данными было полезно.
1
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
21.10.2023, 01:35
Цитата Сообщение от Verevkin Посмотреть сообщение
Мужики, не знаю, как вы, а я бы запилил потомка от TMemoryStream c нужным функционалом (свойства/методы для доступа к полям заголовка и данным после него). Посмотрите:
Как вариант да.
Хотя я бы по старинке определил бы тип запись и читал бы этот файл кусочками BlockRead.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
21.10.2023, 10:12
вариант со стримом мне кажется более выгодным,
хотя я бы даже не стал наследовать) просто класс сделал, который его использует))
0
Заблокирован
21.10.2023, 10:44
Цитата Сообщение от Пытливый Посмотреть сообщение
Просто у меня в разработке есть компонет Osciloscop
А чо ты его не через GDI+ рисуешь?

Добавлено через 1 минуту
Цитата Сообщение от krapotkin Посмотреть сообщение
хотя я бы даже не стал наследовать) просто класс сделал, который его использует))
Зачем такие сложности? Ты комсомолец?
0
 Аватар для Beltar
833 / 447 / 39
Регистрация: 05.05.2022
Сообщений: 3,144
21.10.2023, 11:12
Цитата Сообщение от Verevkin Посмотреть сообщение
А чо ты его не через GDI+ рисуешь?
А я свой компонент для похожих графиков с десятками тысяч точек тоже пробовал через GDI+ сделать. Получилось торозно. А насчет анимации, ну меня XMin, XMax и перерисовывать,
0
Заблокирован
21.10.2023, 11:18
Цитата Сообщение от Beltar Посмотреть сообщение
Получилось торозно.
Я не у тебя спрашивал.
Если руки выпрямить, тромозить ничо не будет.
0
 Аватар для Beltar
833 / 447 / 39
Регистрация: 05.05.2022
Сообщений: 3,144
21.10.2023, 11:22
Так у меня и не тормозит.
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
21.10.2023, 12:15
Цитата Сообщение от northener Посмотреть сообщение
Хотя я бы по старинке определил бы тип запись и читал бы этот файл кусочками BlockRead.
Ну это уж совсем не по пацански.
Цитата Сообщение от Verevkin Посмотреть сообщение
А чо ты его не через GDI+ рисуешь?
Нет. Обошлось без GDI+. Компонент и в полном экране с несколькими каналами плавно рисует. (Во, только сейчас заметил, что я неправильно на нижней оси данные вывожу при динамике)

Добавлено через 3 минуты
Вообще задача от ТС стояла извлечь данные, а это делается просто:
Delphi
1
2
3
4
5
6
7
  var Data: Array of SmallInt;
  ...
  var FS := TFileStream.Create('d:\K.bin', fmOpenRead);
  SetLength(Data, (FS.Size-1600) div 2);
  FS.Seek(1600, soFromBeginning);
  FS.Read(Data[0], Length(Data));
  FS.Free;
а вот анализ заголовка это уже дополнительная задача.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
21.10.2023, 12:24
Цитата Сообщение от Пытливый Посмотреть сообщение
а вот анализ заголовка
а чо там аналазить? )
record фиксированной структуры?
0
Заблокирован
21.10.2023, 12:34
Цитата Сообщение от krapotkin Посмотреть сообщение
а чо там аналазить? )
record фиксированной структуры?
Для начала надо узнать эту структуру. Автор сам не знает нихрена и доки/сорцы не даёт.
0
 Аватар для Beltar
833 / 447 / 39
Регистрация: 05.05.2022
Сообщений: 3,144
21.10.2023, 12:44
Рискну предположить, что там на самом деле 8 каналов, а раз у Verevkin'а 2 байта до 200 в размере заголовка не хватило, то просто 1 поле пропущено. Клещами все, клещами.
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
21.10.2023, 12:54
Цитата Сообщение от krapotkin Посмотреть сообщение
а чо там аналазить? )
record фиксированной структуры?
Как пишет ТС, так должно быть, вот только его описание никак на 1600 байт не тянет, да и само описание вызывает серьезные сомнения. Вот что за число записей 3736 в примерном файле? В файле содержится 2240650 чисел. Допустим, что 3736 это количество блоков, но 2240650 на 3736 без остатка не делится. Вот и получается, что единственная подтвержденная информация это начало блока данных
0
Заблокирован
21.10.2023, 13:05
Цитата Сообщение от Beltar Посмотреть сообщение
Рискну предположить, что там на самом деле
В языке Delphi нет оператора "предположить".
0
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
21.10.2023, 13:15
Цитата Сообщение от Verevkin Посмотреть сообщение
В языке Delphi нет оператора "предположить".
С языка снял!
0
 Аватар для Beltar
833 / 447 / 39
Регистрация: 05.05.2022
Сообщений: 3,144
21.10.2023, 13:23
zzz
Миниатюры
О дешифровке приборного файла  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2023, 13:23
Помогаю со студенческими работами здесь

Поддается ли дешифровке BlowFish
Есть проблема. Зашифровали неизвестной программкой папку с нужными файлами. Достали часть их из бэкапов, т.е. у нас теперь есть оригинал и...

Нюансы в шифровании и дешифровке
Здравствуйте, тема, которую я создаю, является похожей на иные подобные, но всё же я обращусь к сообществу, т.к. сам не являюсь адептом...

Нужна помощь в дешифровке RijndaelManaged
Не получается преобразовать закодированный текст назад. Пишет "недопустимые символы". Помогите пожалуйста, подскажите где ошибка? ...

При дешифровке пропадает буква 'я'
при дешифровке пропадает буква 'я'. шифрование <?php if(isset($_POST)) { $k = 3; $X = fopen("new.txt",...

AES шифрование, ошибка в дешифровке
Приветы! Задача такова: пользователь выбирает файл, файл шифруется, создается зашифрованный файл, файл расшифровывается и создается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru