![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| 4y4z |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 19.7.2008 Репутация: нет Всего: нет |
Есть char buff[24] в первых 3х байтах лежит 23 младших бита целого беззнакового числа.
Правильно ли я вытаскиваю это число? uint value = (buff[0]) | (buff[1] << 8) | (buff[2] << 16); |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
забыл про обратный порядок, звиняюсь
Это сообщение отредактировал(а) NewDima - 28.1.2010, 17:09 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
-
действительно, смотря как лежит Это сообщение отредактировал(а) GoldFinch - 28.1.2010, 17:06 |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
смотря как ты это чиcло записывал
но вроде похоже на правду |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
если третий байт выделен под использование тоже, то проще так:
Это сообщение отредактировал(а) NewDima - 28.1.2010, 17:08 |
|||
|
||||
| 4y4z |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 19.7.2008 Репутация: нет Всего: нет |
В массиве 24 байта, из которых первые 22 байта в различных комбинациях (1, 2, 3 и 4 байта) отведены для хранения различных числовых величин, а последние 2 являются контрольной суммой, проверяемой и вычисляемой по отдельному алгоритму.
согласно спецификации заказчика первые 3 байта это число, младшие 23бита которого и нужно выделить. Собственно задача в том чтобы выделить эти самые 23 бита =) Порядок прямой. |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
ну отксорь тогда 24-х битный результат с (1 << 23)
|
|||
|
||||
| 4y4z |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 19.7.2008 Репутация: нет Всего: нет |
value^(1<<23) именно так и можно получить в итоге те самые 23 бита? Я в С/С++ новичок ;-) |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
отксорь ? Вы ничего не путаете ? |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
Все, что-то ночью уже который топик чушь несу, лучше помолчу до завтра, извиняюсь!
val & (~(1<<23)) |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну в принципе Вы были не далеко от истины, можно и отXORить, если только перед этим не забыть отORить.. но по определенным причинам сложилось так, что такой вариант просто не принят.. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |