Module: Unpack
- Included in:
- FitObject
- Defined in:
- lib/fitreader/unpack.rb
Constant Summary collapse
- MASKS =
{ 7 => 0b10000000, 6 => 0b01000000, 5 => 0b00100000, 4 => 0b00010000, 3 => 0b00001000, 2 => 0b00000100, 1 => 0b00000010, 0 => 0b00000001 }.freeze
Instance Method Summary collapse
- #read_bit(byte, bit) ⇒ Object
- #read_bits(byte, range) ⇒ Object
- #read_multiple(io, char, len, size) ⇒ Object
- #readbytes(io, char, len) ⇒ Object
Instance Method Details
#read_bit(byte, bit) ⇒ Object
21 22 23 |
# File 'lib/fitreader/unpack.rb', line 21 def read_bit(byte, bit) (byte & MASKS[bit]) >> bit end |
#read_bits(byte, range) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/fitreader/unpack.rb', line 25 def read_bits(byte, range) mask = range.first .downto(range.last) .inject(0) { |sum, i| sum + MASKS[i] } (byte & mask) >> range.last end |
#read_multiple(io, char, len, size) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/fitreader/unpack.rb', line 7 def read_multiple(io, char, len, size) if char == 'Z*' readbytes(io, char, len) else multiples = len / size res = io.read(len).unpack(char * multiples) if res.length == 1 res.first else res end end end |
#readbytes(io, char, len) ⇒ Object
2 3 4 5 |
# File 'lib/fitreader/unpack.rb', line 2 def readbytes(io, char, len) d = io.read(len) d.unpack(char).first end |