Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Бинарные файлы как их читать
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
b_gafurov b_gafurov вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.04.2006
По умолчанию Бинарные файлы как их читать - 27.04.2006, 18:33

Подскажите пожалуста, как с файла считывается биты?
Ответить с цитированием
  (#2 (permalink)) Старый
B-Boy S B-Boy S вне форума
Member
 
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.04.2006
По умолчанию 27.04.2006, 18:42

Считывай байт и разбивай на биты.
Ответить с цитированием
  (#3 (permalink)) Старый
c++ c++ вне форума
Member
 
Сообщений: 962
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.12.2003
По умолчанию 27.04.2006, 21:20

После того, как с диска считаны байты, есть вот такая функция, которая читает заданное количество бит:
Код:
/* count must be between 1 and 32 */
uint32_t GetBits(uint8_t *buffer, uint32_t count, uint32_t *bit_position)
{
  uint32_t byte_offset;
  uint32_t bit_offset;
  uint32_t bit_mask;
  uint32_t bit_bite;
  uint32_t result=0;
  if (count == 0) return 0; 
  do {
    byte_offset = *bit_position >> 3;  /* Div 8 */
    bit_offset = 8 - (*bit_position & 0x7); /* Bits got 87654321 */
    bit_mask = ((1 << (bit_offset)) - 1);
    bit_bite = bit_offset;
    if (count < bit_offset) {
      bit_mask ^=  ((1 << (bit_offset-count)) - 1);
      bit_bite = count;
    }
    /*
    printf("Byte=0x%02x Bitmask=0x%04x byte_offset=%u bit_offset=%u bit_byte=%u count=%un",buffer[byte_offset], bit_mask, byte_offset, bit_offset, bit_bite,count);
    */
    result = (result << bit_bite) | ((buffer[byte_offset] & bit_mask) >> (bit_offset-bit_bite));
    *bit_position+=bit_bite;
    count-=bit_bite;
  } while ((count > 0) && (byte_offset<50) ); 
  return result;
}
buffer - буфер байтов;
count - число битов, которые нужно прочитать;
bit_position - начиная с какого бита по счету считывать.
Ответить с цитированием
  (#4 (permalink)) Старый
b_gafurov b_gafurov вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.04.2006
По умолчанию 28.04.2006, 09:31

Eto funksiya daet oshibku, (uint32_8' : missing storage-class or type specifiers) chota ne nakhodit uint32_8. Mojet dlya ego kakoyu nibud biblioteku nado vkluchit? Izvenite za takie prostie voprosi.
Ответить с цитированием
  (#5 (permalink)) Старый
c++ c++ вне форума
Member
 
Сообщений: 962
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.12.2003
По умолчанию 28.04.2006, 13:46

Ну, если у тебя Linux, то нужно включить inttypes.h. Если Windows, то я обычно для переносимости пишу такой код:
Код:
#ifdef WIN32
    typedef __int8              int8_t;
    typedef __int16             int16_t;
    typedef __int32             int32_t;
    typedef __int64             int64_t;
    
    typedef unsigned __int8     uint8_t;
    typedef unsigned __int16    uint16_t;
    typedef unsigned __int32    uint32_t;
    typedef unsigned __int64    uint64_t;
#else
    #include <inttypes.h>
#endif // WIN32
А вот идентификатора uint32_8 у меня точно в коде нет - смотри ошибку у себя.
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
списки и бинарные деревья ab_walker Prolog 5 25.12.2011 17:05
Бинарные деревья Leks100 Вопросы начинающих программистов 1 13.12.2011 11:19
бинарные деревья!!!! adekvatnaya Prolog 1 22.11.2011 23:35
Бинарные деревья SanyOk Prolog 0 21.04.2011 15:12
Для чего нужны бинарные файлы? hunter-70 Любые вопросы от новичков 2 24.02.2011 05:40
бинарные деревья в С++ Aspirine Задания за деньги 0 21.09.2008 15:26
Необходимо читать файлы /proc другого хоста wildhare C++ на Unix 0 01.04.2008 19:40
Выбор хранения данных на XML, MySQL или бинарные файлы simple Вопросы начинающих программистов 53 19.01.2008 14:50
Потоки и бинарные файлы Fat-Zer С/С++ 8 24.04.2006 17:44
Как читать-записывать файлы в двоичном виде DENIS451 C++ Builder 6 27.10.2004 23:37
Как читать файлы MS Excel в С++ VL-88 Visual C++ 2 16.03.2004 21:21
Бинарные данные в XML-документе Garik XML & WML 2 20.01.2003 16:44



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов