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