Что за кодировка?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Что за кодировка?

Сообщение Al Prad » 14.09.2009 (Пн) 11:34

Добрый день всем!

Не знаю, в какой раздел эту тему, но, поскольку программа пишется на VB6, то пишу сюда. Извиняйте, если что.

Есть файл, формируется электронными весами (см вложение). Производитель говорит (если не ошибся), что в нем - текущее значение массы.
Помогите разобраться с кодировкой, плиз...

Заранее благодарен.

В аттачменте - сам файл (это не архив)
Вложения
current1.zip
current1.zip
(16 байт) Скачиваний: 78
Последний раз редактировалось Al Prad 14.09.2009 (Пн) 13:39, всего редактировалось 2 раз(а).

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Что за кодировка?

Сообщение Viper » 14.09.2009 (Пн) 11:36

И где файл?
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Что за кодировка?

Сообщение Хакер » 14.09.2009 (Пн) 16:11

Заюзай предмет гордости Андрея Шитова.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Что за кодировка?

Сообщение Al Prad » 14.09.2009 (Пн) 16:52

Не помогло. Остальные перекодировщики тоже ничего путного не показывают.

Может, это не текстовый, а бинарный файл?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Что за кодировка?

Сообщение iGrok » 14.09.2009 (Пн) 17:08

А значение массы-то какое должно быть?
Не 40067.545 случаем?
label:
cli
jmp label

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Что за кодировка?

Сообщение ALX_2002 » 14.09.2009 (Пн) 17:14

Ради спортивного интереса попробывать раскодировать:
1) А известно какая масса должна получится ?
2) Что за производитель ? И если есть с ним связь, то почему нельзя у него взять описание ?

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Что за кодировка?

Сообщение jangle » 14.09.2009 (Пн) 17:23

Al Prad писал(а):Не помогло. Остальные перекодировщики тоже ничего путного не показывают.

Может, это не текстовый, а бинарный файл?


А может еще и шифрованный, чтобы желающие не могли массу на весах накрутить.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Что за кодировка?

Сообщение ALX_2002 » 14.09.2009 (Пн) 17:38

УХ :shock: пентагоновские секретные весы. С защитой значения массы... Эт ж прям нанотехнологии будущего... Небось сделаны для взвешивания пришельцев :alien:
2 Al Prad: Сэр, а Вас не убьют, за то что вы нам рассказали о столь секретных технологиях ? :) Или чего хуже нас то не почикают ?

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Что за кодировка?

Сообщение Al Prad » 14.09.2009 (Пн) 20:46

Масса должна быть близкой к нулю. 0,2 например. Возможен еще какой-то дополнительный текст. Ладно, буду связываться с производителем (маленькая фирмочка, работают чуть ли не в гараже, так что не бойтесь возмездия)

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Что за кодировка?

Сообщение Williams » 14.09.2009 (Пн) 22:16

Ассемблерный вирус длиной 16 байт :)
И вы думаете, что вас оставят в живых после прочтения этого поста?

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Re: Что за кодировка?

Сообщение HiSER » 15.09.2009 (Вт) 23:24

А нельзя было сделать несколько измерений и сравнить что в файле?

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Что за кодировка?

Сообщение Al Prad » 16.09.2009 (Ср) 10:02

HiSER писал(а):А нельзя было сделать несколько измерений и сравнить что в файле?

Можно. Во вложении - файл (это не "зип"); предполагается, что там должно быть что-то типа 19,25 (вес пустого грузовика с прицепом в тоннах)
Вложения
current1.zip
(16 байт) Скачиваний: 48

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Что за кодировка?

Сообщение Александр Дмитриев » 16.09.2009 (Ср) 11:16

Очень похоже на число с фиксированной запятой. Как раз и получается примерно 0,2 (точнее: 0,198254194).

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Что за кодировка?

Сообщение Al Prad » 16.09.2009 (Ср) 13:17

Александр Дмитриев писал(а):Очень похоже на число с фиксированной запятой. Как раз и получается примерно 0,2 (точнее: 0,198254194).

Чесно говоря, сомнительно.
Я ошибся - должно было быть около -0,1~+0,1. И слишком большая точность, как мне кажется...

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Что за кодировка?

Сообщение Александр Дмитриев » 16.09.2009 (Ср) 17:58

Точность в любом случае будет большая - целых 16 байт. С другой стороны, никто не говорит, что у этого числа ошибка равна величине младшего разряда. Он измеряет с какой-то погрешностью, а ответ даёт в стандартизованном виде.

Давай больше значений (и желательно точных). Взвесь гирю или что-нибудь с точно известной массой. Doubl'ом это не может быть, потому что его (8 байт) до 16 байт не округляют. Extended (10 байт) тоже, потому что во втором случае значащих байт больше 10. У Quadrupl'а получилась бы нулевая экспонента. Остаётся только число с фиксированной точкой. Если точку поставить в середине файла, в первом случае получится 0,198254194, во втором - 2593745217,543471734. Если сдвинуть точку на 1 байт левее середины, то 0,00077443 и 10131817,256029186 соответственно (во втором случае может быть масса грузовика в граммах). Если сдвинуть влево на 0,5 байта - 0,012390887 и 162109076,096466983.

UPD:
Если сдвигать дальше, то получится (для второго файла (для первого будет дальнейшее убывание к нулю)):
633238,578501824 (1,5 байта)
39577,411156364 (2 байта)
2473,588197273 (2,5 байта)
154,59926233 (3 байта)
9,662453896 (3,5 байта)
0,465145512 (4 байта)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Что за кодировка?

Сообщение Хакер » 16.09.2009 (Ср) 18:39

Взвесь гирю или что-нибудь с точно известной массой.

Судя по тому, что весы взвешивают 20 тонные автомобили, гиря должна быть большой...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Что за кодировка?

Сообщение Williams » 16.09.2009 (Ср) 19:16

Хакер писал(а):
Взвесь гирю или что-нибудь с точно известной массой.

Судя по тому, что весы взвешивают 20 тонные автомобили, гиря должна быть большой...


Примерно 40 ядер Османской Пушки ))
И вы думаете, что вас оставят в живых после прочтения этого поста?

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Что за кодировка?

Сообщение Al Prad » 17.09.2009 (Чт) 9:16

Прилагаю 3 файла. Имя каждого файла соответствует весу, отображаемому программой весов.
Вложения
0,00.zip
(16 байт) Скачиваний: 44
14.10.zip
(16 байт) Скачиваний: 51
14,28.zip
(16 байт) Скачиваний: 44

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Что за кодировка?

Сообщение Antonariy » 17.09.2009 (Чт) 10:49

Гипотеза.
1) Последние три байта смысловой нагрузки в плане веса не несут, возможно дата.
2) 5 байт перед ними означают дробную часть.
3) Следующий байт походу означает разделитель дробной части. Он равен 41 во всех файлах, кроме самого первого и 0,00.zip, а в них равен нулю.
4) Остальные байты — целая часть
Выводы
1) В файл весы пишут более точное значение, чем отображает программа.
2) 0,00 на самом деле >0 и <1. А возможно, что и меньше 0,01.
3) Значение в первом файле current1 меньше 1.

Нужно несколько значений с шагом 0,01 меньше нуля и больше единицы для дальнейшего анализа.
Лучший способ понять что-то самому — объяснить это другому.

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Что за кодировка?

Сообщение Александр Дмитриев » 18.09.2009 (Пт) 14:14

Antonariy Идея про дату - гениальная!

Всё гораздо проще. Первые четыре байта всегда ноль (я не знаю, что они значат, может быть это 64-битный процессор у весов округляет до 64 бит, может быть это версия или зарезервированное место для будущих версий, или какой-то параметр весов, который при измерениях всегда был 0). Следующие 4 байта - значение массы в тоннах в формате binary32 (для C это будет обычный float, для VB - Single). Последние 8 байт - кол-во дней, прошедших с 1 января 1900 года к моменту измерения, выраженное в формате binary64 (double и Double в языках C и VB соответственно) (по сути это тип VB Date). И Antonariy и я не учли, что в файлах порядок байт обратный.

Прилагаю маленький проектик, который показывает как читать такой формат в VB.
Вложения
Coding of mass.zip
(4.66 Кб) Скачиваний: 54

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Что за кодировка?

Сообщение Al Prad » 21.09.2009 (Пн) 8:48

Господа, я поражен силой ваших умов. Спасибо за помощь!

Привожу ответ программиста весов на вопрос о структуре файла:


struct TEK_MASS // структура данных в файле current1
{
int priznak; //0 - масса; 1- ïперегруз; 2-нет
связи с АЦП - 4 байта
float tekmass; // текущая масса если priznak=0
иначе 0. - 4 байта
TDateTime tekdate; /дата и время
- 8 байта
};

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Что за кодировка?

Сообщение Al Prad » 21.09.2009 (Пн) 9:31

Александр Дмитриев писал(а):Antonariy Идея про дату - гениальная!

Прилагаю маленький проектик, который показывает как читать такой формат в VB.


Проектик работает отлично, большое спасибо. Буду использовать :P


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 99

    TopList