Перекодировать из досовского формата

kursok3

Вообщем есть прибор, который работает под управлением компа с Win95 и DOC. И управляющая программа, сделанная под DOC, сохраняет данные, поступающие с прибора - т.е две колонки цифр в своем хитром формате... А можно-ли этот файл открыть в виндоусе на нормальном компе... может перекодировать как-нибудь...
Если блокнотом или вордом (или екселем) открывать, то выдает какие-то непонятные значки и т.д.?

yolki

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

1 -200.0
2 -199.5
3 -199.4
4 -198.0
5 -200.3
...
20 76.3
30 66.5

и т.п.

kursok3

В архиве - три файла со спектрами.
По идее в начале файла должны писаться условия съемки всякие, т.е. текст и цифры
Потом должна идти основная часть, где два столбца чисел (фиг их знает с каким разделителем). Числа должны быть с точкой (т.е первое 400.25, 400.50, 400.75, а, соответствующее, второе 30.2343 и т.д., т.е. четыре знака после запятой...)
Точных цифирей узнать никак низя, т.к. прога строит график по точкам, а значения в таблице не отображаются - можно только мышкой потыкать и узнать конкретное значение. Хотя можно записать с обним значением файл или с двумя в принципе...

yolki

в файле данные записаны в бинарном формате:
сначала несколько байт заголовка (~ около 30 затем N*float (float=4байта) - второй столбец с данными. для первого видимо указывается диапозон [a,b] и шаг h (видимо где-то в заголовке).
Можешь самостоятельно попробовать написать программу на C/любом другом языке/, которая это переводит в текстовый документ (а, может, сразу в Excel).
Или кого нибудь попросить. Если меня - то это примерно литр пива %)
вот, набросок последнего файла:

похож?

kursok3

еще один спектр...
Да, похоже, но данные должны в принципе выглядеть так (для нового архива:
200.0 0.072734 0.072734 0.096979 0.096979 0.072734
202.5 0.072734 0.072734 0.096979 0.072734 0.121224
205.0 0.096979 0.072734 0.072734 0.072734 0.096979
207.5 0.072734 0.072734 0.072734 0.072734 0.072734
210.0 0.048489
т.е. по идее шаг 0.5, а не 2.5, просто записывается так...

yolki

ну да, так и есть
т.е. в файле записывается не так. там записывается вот так:
что-то там...
200.0 (начальная точка)
210.0 (конечная точка)
21 (количество шагов между 200.0 и 210.0)
0.072734
0.072734
0.096979
...
0.096979
0.072734 (итого 21 число)

ryshiy28

То-то я думаю, почему у меня получается

200.000320
210.000000
0.500000
0.000000
-421469839487625120000000000000000.000000
-421469839487625120000000000000000.000000
и далее такая же ерунда

yolki

там для обозначения количества точек используется short int = 2байта. в результате у тебя рассинхронизация идёт. float-данные начинаются со смещения 0x6a

ryshiy28

И там зачем-то надо пропустить еще 4 байта
 
200.00032043 0.07226563
200.50032043 0.07273416
201.00032043 0.09714822
201.50032043 0.09697889
202.00032043 0.07256483
202.50032043 0.07273416
203.00032043 0.07273416
203.50032043 0.09714822
204.00032043 0.07256483
204.50032043 0.12156229
205.00032043 0.09680955
205.50032043 0.07256483
206.00032043 0.07273416
206.50032043 0.07273416
207.00032043 0.09714822
207.50032043 0.07256483
208.00032043 0.07273416
208.50032043 0.07273416
209.00032043 0.07273416
209.50032043 0.07273416
210.00032043 0.04857411
Оставить комментарий
Имя или ник:
Комментарий: