{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Извлечение из числа нужного количества бит, начиная с определённой позиции
Данная функция работает следующим образом :
предположим есть число 381. его битовая маска 101111101
и предположим из этой маски нужно выделить 3 бита, начиная с 3-го (т.е. 111)
это производится так : BitsToNum(381,3,3).
Основано на
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=mathcalc&id=10714
Зависимости: нет
Автор: Прахожий
Copyright:  
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=mathcalc&id=10714
Дата: 23 февраля 2008 г.
***************************************************************** }
function BitsToNum(source:integer; frombit:integer; CountBit:integer):integer;
const bitArray:ARRAY[0..31] of DWORD
= (
$0,
$1,$3,$7,$F,
$1F,$3F,$7F,$FF,
$1FF,$3FF,$7FF,$FFF,
$1FFF,$3FFF,$7FFF,
$FFFF,$1FFFF,$3FFFF,$7FFFF,$FFFFF,
$1FFFFF,$3FFFFF,$7FFFFF,$FFFFFF,
$1FFFFFF,$3FFFFFF,$7FFFFFF,$FFFFFFF,
$1FFFFFFF,$3FFFFFFF,$7FFFFFFF
);
begin
result:=(bitArray[CountBit]) and (source shr (frombit-1));
end;