Class: Tinkerforge::Base58

Inherits:
Object
  • Object
show all
Defined in:
lib/tinkerforge/ip_connection.rb

Overview

internal

Constant Summary collapse

ALPHABET =
'123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'

Class Method Summary collapse

Class Method Details

.decode(encoded) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/tinkerforge/ip_connection.rb', line 30

def self.decode(encoded)
  value = 0
  base = 1
  encoded.reverse.split(//).each do |c|
    index = ALPHABET.index c
    if index == nil
      raise ArgumentError, "UID '#{encoded}' contains invalid character"
    end
    value += index * base
    base *= 58
  end
  value
end

.encode(value) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/tinkerforge/ip_connection.rb', line 20

def self.encode(value)
  encoded = ''
  while value >= 58
    div, mod = value.divmod 58
    encoded = ALPHABET[mod, 1] + encoded
    value = div
  end
  ALPHABET[value, 1] + encoded
end