module BCD
encoding: utf-8
Public Class Methods
parse(value)
click to toggle source
# File lib/rdoba/bcd.rb, line 27 def self.parse value if value < 0 raise ParseError; end res = BCDString.new if res.respond_to? :force_encoding res.force_encoding( 'ASCII-8BIT' ); end if value > 0 part = nil while value > 0 ( value, mod ) = value.divmod 10 if part res << ( ( mod << 4 ) | part ).chr part = nil else part = mod; end; end if part res << part.chr; end else res << 0.chr; end res; end
Public Instance Methods
pow(value, mul)
click to toggle source
# File lib/rdoba/bcd.rb, line 15 def pow value, mul if value >= 10 raise ConvertError; end value * mul end
to_i()
click to toggle source
# File lib/rdoba/bcd.rb, line 11 def to_i res = 0 mul = 1 self.each_byte do |c| def pow value, mul if value >= 10 raise ConvertError; end value * mul end res += pow( c.ord & 0xF, mul ) mul *= 10 res += pow( c.ord >> 4, mul ) mul *= 10 end res; end