![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Defoult |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
Привет форумчане
![]() вот, решил всё-таки доделать начатое обсуждение этой темы возникла пробла с побитовыми операциями :( Задача такая, у меня есть текст char textIn[], мне его нужно разбить на блоки по 3 байта, а затем эти 3 байта на слова по 3 бита, и заменить на слова из соответсвующего алфавита... Воот что смог написать...
Вот что имею, как переводятся понимаю, а вот как ликвидировать эти ошибки Х.З. :( С битами\байтами раньше не приходлось работать...
Подскажите на правильном ли я пути( я имею ввиду работу с битами) и где у меня ошибки... |
||||
|
|||||
DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
и т.д. MASK_A 4 байта = 32 бита buf 3 байта = 24 бита т.е. разные размерности ![]() Это сообщение отредактировал(а) DigitSphinx - 26.12.2007, 07:28 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Ошибка в том, что когда ты объявляешь char buf[3]; а потом используешь buf, то buf в большинстве случаев представляет собой указатель. А разве к указателю применима операция '&'?
Дальше, зачем разбивать на блоки по 3 байта? почему сразу нельзя оперировать битами? Для этого тебе надо всего лишь придумать указатель на бит (указатель на байт + номер бита) и логику работы с ним. В этом случае будет меньше проблем при переходе на другую архитектуру (например, big-endian). |
|||
|
||||
DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
но указатель это 4 байта (DWORD переменная) т.е. с ней можно проделывать логические операции ?! |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
DigitSphinx, да что ты? А почему умножать указатели нельзя, ведь это просто DWORD?
|
|||
|
||||
Defoult |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
накладывать маску на textIn[], и потом <<3
не фтыкаю... ![]() а всё-таки, как мне решить проблему в моём коде? |
||||
|
|||||
DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
bsa, не пробовал не знаю
![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Пример есть в STL. bitset называется. Правда, это С++. Добавлено через 18 секунд DigitSphinx, ты их хотя бы сложить попробуй ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Defoult |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
archimed7592, значит, то что я написал - ерунда? И без указателей никак не обойтись?
|
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Не совсем понял, откуда ты сделал такой вывод... Вот простой пример, как узнать значение определённого бита:
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
![]()
компилиться ![]() ![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
DigitSphinx, и что будет? Каков тайный смысл операции? Что будет если умножить номер одного дома на номер другого?
прекращай цирк. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
DigitSphinx, а ты не задавался вопросом, почему указатели можно вычитать(без преобразований) или складывать/вычитать с числом?
![]()
Это сообщение отредактировал(а) archimed7592 - 26.12.2007, 22:22 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Defoult |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
А так что, нельзя? Это сообщение отредактировал(а) Defoult - 26.12.2007, 22:36 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Можно, но, в таком случае x должен представлять из себя интегральный тип(char, int и пр.), а не массив или указатель. Поверь, приведённая мною ф-ция многим проще в применении, чем метод, предложенный в твоей цитате. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |