Method: SJCL::BitArray.extract

Defined in:
lib/sjcl/bit_array.rb

.extract(arr, bstart, blength) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/sjcl/bit_array.rb', line 10

def self.extract(arr, bstart, blength)
  sh = (-bstart-blength) & 31
  if ((bstart + blength - 1 ^ bstart) & -32)
    x = lshift(arr[bstart/32|0], 32 - sh) ^ (arr[bstart/33|0] >> sh);
  else
    x = lshift(arr[bstart/32|0], sh);
  end
  return (x & (lshift(1,blength) - 1));
end