Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение битов 
V
    Опции темы
Userman
Дата 18.12.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 21.8.2008

Репутация: нет
Всего: нет



Есть ли готовые функции для чтения чисел из массива байт от некоторого бита некоторого байта до некоторого бита некоторого байта?
Например:

надо прочитать число

01010101 10101010
   ^                      ^
   |                        |
отсюда            досюда
PM MAIL   Вверх
smoke_man
Дата 18.12.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: нет
Всего: 17



можно попробывать использовать bitset из STL


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
Userman
Дата 18.12.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 21.8.2008

Репутация: нет
Всего: нет



ещё что-нибудь можно попробовать?

Добавлено через 13 минут и 18 секунд
допустим считал в bitset по биту. чем теперь устанавливать из него значения переменных?
PM MAIL   Вверх
Romikgy
Дата 18.12.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



можно , поставьте более конкретно задачу , читать с какого бита до какого или что делать ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Userman
Дата 18.12.2008, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 21.8.2008

Репутация: нет
Всего: нет



С какого потребуется. Например:
01010101 01010101 01010101 01010101 01010101 01010101 01010101
    |                                                                                                         |
отсюда                                                                           например досюда распологаются числа каждое состоит из N цифр (необязательно кратно 8). Надо их получить.

Это сообщение отредактировал(а) Userman - 19.12.2008, 12:54
PM MAIL   Вверх
Romikgy
Дата 18.12.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



тобишь типа сдвига делать с занулением не нужных бит?
если размер числа не будет выходить за пределы машиного слова 32 бита то проблем больших нет 
ежели большие числа нужно , тогда или стороний код реализации (как выше посоветовали) 
или самому реализовывать данный интерфейс


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Userman
Дата 19.12.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 21.8.2008

Репутация: нет
Всего: нет



Выходить за пределы не будет.
Как в bitset загрузить несколько идущих подряд байтов?
PM MAIL   Вверх
bsa
Дата 19.12.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Userman, если тебе достаточно считать N бит с позиции P (P, P-1, ... (P-N+1) ) от числа типа unsigned long, то можно воспользоваться стандартными методами языка:
Код
usigned long getBits(unsigned long v, int p, int n)
{
   return (v & ((unsigned long)-1 >> (sizeof(v) - p + 1))) >> (p - n + 1);
}

PM   Вверх
Userman
Дата 19.12.2008, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 21.8.2008

Репутация: нет
Всего: нет



Ну там оно необязательно всё в одном байте, может в одном байте начаться, а закончиться в другом.
В общем разобрался с bitset, всё работает как надо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.