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)
-
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)
-
(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)
-
val
(Integer
) --
def write(stream, val) stream.write(pack(val)) end