Russian Qt Forum
Ноябрь 24, 2024, 09:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QBitArray  (Прочитано 10358 раз)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #15 : Февраль 16, 2012, 07:36 »

2 Igors:

Код
C
struct stime
{
   unsigned int seconds:12;
   unsigned int micro_seconds:20;
};

так ведь намного проще )
Записан

Qt 5.11/4.8.7 (X11/Win)
Kate
Гость
« Ответ #16 : Февраль 16, 2012, 10:06 »

QBitArray нужен,тк исходный файл содержит больше 2 000 бит,ведь когда нужно будет считать,например,1345й бит,то на мой взгляд QBitArray - единственный выход.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #17 : Февраль 16, 2012, 10:24 »

QBitArray нужен,тк исходный файл содержит больше 2 000 бит,ведь когда нужно будет считать,например,1345й бит,то на мой взгляд QBitArray - единственный выход.
Чего-то с теорией совсем слабовато. Единицей хранения данных в файлах является байт. И считывать вы будете байты. И извлекать "1345й бит" вы будете из 155-го байта.
Записан

Qt 5.11/4.8.7 (X11/Win)
BRE
Гость
« Ответ #18 : Февраль 16, 2012, 10:27 »

И извлекать "1345й бит" вы будете из 155-го байта.
Пересчитал несколько раз, вроде 169 байт.  Строит глазки
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #19 : Февраль 16, 2012, 10:33 »

Упс, опечатался - "извлекал" 1245-й бит)
Записан

Qt 5.11/4.8.7 (X11/Win)
andrew.k
Гость
« Ответ #20 : Февраль 16, 2012, 12:38 »

А зачем вообще извлекать отдельный бит? Какой смысл в одном бите?
Очевидно же, что читать надо интами.

QBitArray нужен,тк исходный файл содержит больше 2 000 бит,ведь когда нужно будет считать,например,1345й бит,то на мой взгляд QBitArray - единственный выход.
Интересно, когда Kate писала свое сообщение, она читала топик?
Записан
andrew.k
Гость
« Ответ #21 : Февраль 16, 2012, 12:41 »

2 Igors:

Код
C
struct stime
{
   unsigned int seconds:12;
   unsigned int micro_seconds:20;
};

так ведь намного проще )
Битовые поля железно упакуются в 32 бита? Мне кажется это зависит от "обстоятельств"? нет?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #22 : Февраль 16, 2012, 13:57 »

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

QBitArray нужен,тк исходный файл содержит больше 2 000 бит,ведь когда нужно будет считать,например,1345й бит,то на мой взгляд QBitArray - единственный выход.
Ну "считали бит" - и что Вы будете с ним делать? Для манипуляций с (микро) секундами бит бесполезен - нужны значения для арифметики.
Записан
Kate
Гость
« Ответ #23 : Февраль 16, 2012, 19:33 »

Нужно считывать 12 и 20 бит-это время,затем несколько раз по 12 бит на параметры,затем вся конструкция повторяется.Конечно,один бит не дает нужной информации.но нужна конструкция,кот начнет считывать с конретного бита,а не байта.Мне казалось,что сделать это возможно только через QBitArray,чтобы обращаться к любому месту в файле.
Записан
andrew.k
Гость
« Ответ #24 : Февраль 16, 2012, 21:02 »

Нужно считывать 12 и 20 бит-это время,затем несколько раз по 12 бит на параметры,затем вся конструкция повторяется.Конечно,один бит не дает нужной информации.но нужна конструкция,кот начнет считывать с конретного бита,а не байта.Мне казалось,что сделать это возможно только через QBitArray,чтобы обращаться к любому месту в файле.
жееееееесть!
вы меня конечно извините, но "логика женская. том первый". туши свет проще говоря)
весь тред впустую
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #25 : Февраль 16, 2012, 21:47 »

жееееееесть!
вы меня конечно извините, но "логика женская. том первый". туши свет проще говоря)
весь тред впустую
А что такого уж страшного человек сказал? Ну может неправильно выразился "читать бит" - все равно придется читать байт (минимальную единицу информации) и из него извлекать бит. QBitArray здесь ничего не дает так как "превращать биты в число" все равно придется самому. В любом случае надо считать массив char и потом напр так
Код
C++ (Qt)
inline int GetBit( const char * src, int bitOfs )
{
return (src[bitOfs / 8] >> (7 - (bitOfs % 8))) & 1;
}
 
Эта ф-ция возвращает старший бит для меньшего bitOfs и младший для большего , использование
Код
C++ (Qt)
inline int GetNBits( const char * src, int bitOfs, int numBits )
{
int result = 0;
for (int i = 0; i < numBits; ++i)
 result = (result << 1) | GetBit(src, bitOfs + i);
return result;
}
 
numBits не должно превышать 32
Записан
andrew.k
Гость
« Ответ #26 : Февраль 17, 2012, 10:07 »

Судя по последнему посту, биты вообще не при чем. Там просто файл с данными упакованными в структуру.
Нужно просто выяснить его формат.
И скорее всего там все тривиально. И никаких мучений с битами не требуется.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #27 : Февраль 17, 2012, 11:28 »

Судя по последнему посту, биты вообще не при чем. Там просто файл с данными упакованными в структуру.
Читаем
Нужно считывать 12 и 20 бит-это время,затем несколько раз по 12 бит на параметры,затем вся конструкция повторяется.
Конечно куда проще запихнуть время в 32 бита (int) и параметры в 16 бит (short). Но если требуется напр 11 значений по 12 бит каждое, и они должны следовать подряд - извлекать биты придется
Записан
andrew.k
Гость
« Ответ #28 : Февраль 17, 2012, 11:37 »

Судя по последнему посту, биты вообще не при чем. Там просто файл с данными упакованными в структуру.
Читаем
Нужно считывать 12 и 20 бит-это время,затем несколько раз по 12 бит на параметры,затем вся конструкция повторяется.
Конечно куда проще запихнуть время в 32 бита (int) и параметры в 16 бит (short). Но если требуется напр 11 значений по 12 бит каждое, и они должны следовать подряд - извлекать биты придется
Мы сейчас о чем спорим то? Что это невозможно сделать структурой? и "единственный выход это QBitArray"??
Записан
Kate
Гость
« Ответ #29 : Февраль 20, 2012, 19:57 »

Спасибо,Igors.Ваши ответы очень помогли.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.097 секунд. Запросов: 23.