Module: BCD
- Included in:
- BCDString
- Defined in:
- lib/rdoba/bcd.rb
Defined Under Namespace
Classes: ConvertError, ParseError
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.parse(value) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# 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
|
Instance Method Details
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# 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
|