![]() |
|
Модераторы: xvr |
![]()
|
|
| proman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
Привет !
Вобщем в цикле беру из массива в котором лежит 57 байт по 3 байта(8 бит) и делаю из них 4 по 6 бит
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Крайне неоптимальный алгоритм. Кстати, операция AND выполняется быстрее двух SHIFT.
А что собственно не ясно? Проще сделать так:
DWORD обычно это unsigned int, но для 16-ти битных машин это unsigned long. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
Ухх. Это откуда?
Это ведь не эквивалентно Если tmpchar имеет тип char, то после сдвига вправа его знаковый и предшествующий знаковому могут остатся такими же, какими они стали в момент времени (1). -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| proman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
tmpchar это unsigmed char tmpchar
nReadBytes переменная в которую записывается кол-во байт считанных из файла в ReadData[57] ResData[76] закодированная строка Добавлено @ 20:56 bsa, Чтото я непойму твоего кода если можеш опишы его пожалуста Добавлено @ 20:58 Я новичек и многие вещи мне неизвестны!!! |
|||
|
||||
| proman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
А лучше я бы хотел оставить этот код вы мне лучше обьясните что в нем происходит
|
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
Делов - то почитать документашки по предмету и все понятно станет
Это сообщение отредактировал(а) GrayCardinal - 18.5.2006, 23:03 |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Я дотошно исходный код не изучал. Поэтому мог написать неэквивалентный код. Но если бы я упаковывал 4 байта в 3, то сделал бы именно так, как написал. Вот что мой код делает (если ошибок в нем не допустил, естественно):
44444433, 33332222, 22111111 -> 00444444, 00333333, 00222222, 00111111 0 - бит занулен, 1,2,3,4 - номера блоков данных (начиная с 1). В твоем коде:
|
||||
|
|||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |