Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: не можу разобрать байт :/  (Прочитано 5527 раз)
0 Пользователей и 1 Гость смотрят эту тему.
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« : 03-08-2008 09:56 » 

туплю второй день. есть байт, представляющий собой упакованные флаги. пакуются они в следующем виде:

Код:
+---+---
| 0 |
| 1 |     Size
| 2 |
+---+---
| 3 |     Sorted
+---+--
| 4 |
| 5 |     Resolution
| 6 |
+---+--
| 7 |     Present
+---+--

делал так:

Present := B and 1;
Resolution := B shr 1 and 7;
Sorted := B shr 4 and 1;
Size := B shr 5 and 7;

для чмсла 87, например, имеем 01010111. вся сия лабуда отрабатывает правильно. с одним маленьким но.  байт представляет собой часть хидера ГИФ-файла, а именно - описывает глобальную палитру цветов. и если флаг Present сброшен, поле Size обязано быть забитым нулями. а у меня при сброшенном флаге там сидят цифири, чего не может быть в принципе. явно, что где-то нарушена логика, только где - я понять не могу :/
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 03-08-2008 10:38 » 

Игор, дык, так файл сотворили...

1. ты gif-ами занялся?
2. почему не libungif ?
3. подробнее расскажи, откуда файл и что ты с ним хочешь сделать.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #2 : 03-08-2008 10:44 » 

1. ога
2. потому что мне нужен редактор анимарованных гифоф, и желательно кроссплатформенный. под  линухами сабж  отсутствует, как класс. про КПК - вообще молчу.
3. да любой гиф-файл. в данный момент я хочу просто прочитать хидер. чтобы знать размеры GCT (Global Color Table), мне надо распарсить этот байт с флагами. проблема в том, что не может при сброшенном флаге (т.е. глобальной палитры - нет) быть выставлен размер этой палитры. это любого гифа касается, тут конкретный файл ни при чём.
Записан

x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 03-08-2008 10:52 » 

всё, вьехал, наконец... байт парсится правильно. просто я значения не под дебагером смотрел, а на экран вытаскивал отладочными сообщениями... кто ж ево знал, что ShowMessage (BoolToStr (TRUE)) = -1 :/

Лазарус жжот.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines