Depending on a variable 1-7, I am interested in ANDing a byte value to to get that number of bits.

Currently I'm doing this:

function getMaskedBits(num, Bit_location: Byte): Byte;
var
  masks: array[1..7]of Byte=(127,63,31,15,7,3,1);
begin
  Result:=num and masks[Bit_location];
end;

is there a better (or more efficient way of doing this?)

Recommended Answers

All 2 Replies

This works just fine.

You can probably also use something like this:

Result := num and (127 shr (bit_location - 1));

Sorry for not replying earlier: Thanks very much for your help!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.