Hallo zusammen, habe folgenden code, jetzt moechte ich den aber so umschreiben das er fuer intel und non-intel(BIG-endian) bits zu gebrauchen ist.
Auserdem moechte ich eine Bitrange einbauen: Startbit --> Endbit statt 0 -- > Size.
Hat jemand irgendeine Ahnung wie?
Delphi-Quellcode:
function CountBitsSet(P: Pointer; Count: Cardinal): Cardinal;
const
lu :
packed array[0..15]
of Byte = (0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);
var
b: Byte;
begin
Result := 0;
while Count > 0
do
begin
b := PByte(P)^;
// lower Nibble
Inc(Result, lu[b
and $0F]);
// upper Nibble
Inc(Result, lu[b
shr 4]);
Dec(Count);
Inc(PByte(P));
end;
end;
Schonmal recht herzlichen Dank.
Gruss Diablo