![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Здравствуйте.
Подскажите если у кого есть идея или предположение как можно сделать следующую универсальную функцию.
Функция получает:
Тоесть например функция получила память которая выглядит вот так ![]() Допустим NumberSize = 3 тогда если разделить память то числам, то она будет выглядеть вот так ![]() Если пронумеровать то будет выглядеть вот так ![]() Допустим Position = 4 тогда берём вот эти биты ![]() Тогда 100b = 4 возвращаем 4. Это сообщение отредактировал(а) Ak47black - 22.3.2008, 13:54 |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
хм... возниакет два вопроса, если число битовое, то зачем передавать размерность?
вопрос 2: если всётаки не битовое, то тогда почему возвращаем битовое? может в этом случае целесообразно передать адрес на память? а вообще я думаю проблем с этим нет... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Alix |
|
|||
|
L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 7 Всего: 23 |
в чем беда? получаем смещение в байтах как (NumberSize * Position) div 8, а потом берем нужные биты наложением соответствующей маски and. Кстати, тут такой вопрос, NumberSize может быть больше 8? А даже если и не может, то все равно надо учитывать моменты, когда биты берутся из двух (или более) смежных байт.
-------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
видимо я не совсем понял вопрос... но тут тоже особых проблем нет, получаешь адрес первого байта и смещение в битах smr:=(NumberSize * Position) mod 8; , читаешь начиная с него по длине NumberSize, естественно, если меньше 8, то 1 байт, потом удаляешь лишнее методом сдвигов влево вправо, или -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
А если например одно число в двух байтах, то как извлечь? Из двух байт слепить?
Число может находится в двух байтах, но NumberSize не может быть больше 8. Это сообщение отредактировал(а) Ak47black - 22.3.2008, 14:00 |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| TName |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.3.2008 Репутация: нет Всего: нет |
а как насчет shl или shr, а потом сделать XOR по нужной маске?
по-моему, при работе с побитовой информацией вариантов лучше нет ну и про copymemory не забыть.... Сейчас не охота пример придумывать, но любопытство вас должно спасти. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |