class MemoryIO::Types::Basic::Number

This class registered (un)signed {8, 16, 32, 64)-bit integers and IEEE-754 floating numbers.
All types registered by this class are assumed as *little endian*.
Register numbers to {Types}.

def initialize(bytes, signed, pack_str)

Parameters:
  • pack_str (String) --
  • signed (Boolean) --
  • bytes (Integer) --
def initialize(bytes, signed, pack_str)
  @bytes = bytes
  @signed = signed
  @pack_str = pack_str
end

def pack(val)

def pack(val)
  [val].pack(@pack_str)
end

def read(stream)

Returns:
  • (Integer) -
def read(stream)
  unpack(stream.read(@bytes))
end

def unpack(str)

def unpack(str)
  val = str.unpack(@pack_str).first
  val -= (2**(@bytes * 8)) if @signed && val >= (2**(@bytes * 8 - 1))
  val
end

def write(stream, val)

Parameters:
  • val (Integer) --
def write(stream, val)
  stream.write(pack(val))
end