Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
mandigit прально грит, по ходу поступления каждого бита сравнивать с маской, а если надо найти маску в массиве то может как то так+
Отправлено
PaulS
(78.107.190.69)
14 июня 2010, г. 13:10
В ответ на:
Как правильно организовать побитное хранение и поиск данных по заданной маске (см. внутри)
отправлено
ZoltriX
14 июня 2010, г. 10:21
int tst() {
char mask;
short *pBuff;
for(char a = 0; a < 16; pBuff += 2, ++a) {
short var = *(short*)pBuff;
for(char b = 0; b < 8; ++b) {
if(mask == (var << b)) return a*16+b;
}
}
}
Составить ответ
|
Вернуться на конференцию
Ответы
тфу, блин. указатель pBuff на чавский тип исправить. А так в форе просто инкрементировать. (Воскесенье жара, да после речки...)
-
PaulS
(14.06.2010, 13:16:38
78.107.190.69
,
пустое
)
Вот так всё правильно? и возвращаемое значение = порядковому номеру совпаших данных
-
ZoltriX
(14.06.2010, 14:02:40
78.40.231.89
, 299 байт)
Нет, переменная 'var' (куда пишутся врЕменные данные(типа аккумулятор по термину ASM)) должна быть типа short или __int16 (если IAR поддерживает такой тип. SHORT точно поддерживает)). Ну и можно немнго оптимизировать. Убрать переменную VAR и сравнивать маску сразу с массивом. Просто так лучше читается.
-
PaulS
(14.06.2010, 17:57:1
78.106.147.232
,
пустое
)
Да, именно номеру бита в последовательности, хотя щас я проспался после речки с шашлыками и думаю, что проверку надо изменить на if (mask == ((var << b) & 0xFF)). Ладно, реальные ответы могу давть после обеда в понедельник или со вторника. Хотя к нынешней ситуэйшн это не применимо :)))
-
PaulS
(14.06.2010, 17:35:46
78.106.147.232
,
пустое
)
Ответ:
-
mandigit
(14.06.2010, 14:26:20
91.79.36.143
, 406 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите 4 пополам:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru