class Simms::Bytes
Attributes
data[RW]
Public Class Methods
new(byte_array)
click to toggle source
# File lib/simms/bytes.rb, line 12 def initialize(byte_array) @data = byte_array @data = @data.to_s.scan(/../) unless @data.is_a?(Array) end
Public Instance Methods
[](*args)
click to toggle source
# File lib/simms/bytes.rb, line 60 def [](*args) Bytes.new(@data[*args]) end
bool(pos)
click to toggle source
# File lib/simms/bytes.rb, line 45 def bool(pos) @data[pos].hex == 1 end
calc_checksum()
click to toggle source
# File lib/simms/bytes.rb, line 64 def calc_checksum @data.inject(0) {|sum, byte| sum + byte.hex} % 0xFF end
count()
click to toggle source
# File lib/simms/bytes.rb, line 17 def count @data.count end
empty?()
click to toggle source
# File lib/simms/bytes.rb, line 21 def empty? count == 0 end
float(pos)
click to toggle source
# File lib/simms/bytes.rb, line 49 def float(pos) v = uint32(pos) x = (v & ((1 << 23) - 1)) + (1 << 23) * (v >> 31 | 1) exp = (v >> 23 & 0xFF) - 127 return x.to_f * (2 ** (exp - 23)) end
sint16(pos)
click to toggle source
# File lib/simms/bytes.rb, line 33 def sint16(pos) [@data[pos...pos+2].join].pack('H*').unpack('s').first end
sint32(pos)
click to toggle source
# File lib/simms/bytes.rb, line 41 def sint32(pos) [@data[pos...pos+4].join].pack('H*').unpack('l').first end
slice(*args)
click to toggle source
# File lib/simms/bytes.rb, line 56 def slice(*args) Bytes.new(@data.slice(*args)) end
to_s()
click to toggle source
# File lib/simms/bytes.rb, line 68 def to_s @data.join('') end
uint16(pos)
click to toggle source
# File lib/simms/bytes.rb, line 29 def uint16(pos) @data[pos...pos+2].reverse.join('').hex end
uint32(pos)
click to toggle source
# File lib/simms/bytes.rb, line 37 def uint32(pos) @data[pos...pos+4].reverse.join('').hex end
uint8(pos)
click to toggle source
# File lib/simms/bytes.rb, line 25 def uint8(pos) @data[pos].hex end