Class: CloudQuery::X64

Inherits:
Object
  • Object
show all
Defined in:
lib/cloud_query/x64.rb

Constant Summary collapse

Shift =
6
Mask =
0x3f
Munge =
0x30
NumberOfChars =
(64 + Shift - 1)/Shift
Maximum =
0xffffffffffffffff
Compliment =
0x8000000000000000
Characters =
'.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'

Class Method Summary collapse

Class Method Details

.encode(object, characters = Characters, munge = Munge) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/cloud_query/x64.rb', line 11

def self.encode(object, characters = Characters, munge = Munge)
  int = integer_from_object(object)

  chars = []
  while chars.length == 0 || int != 0
    byte = int & Maximum

    (0...NumberOfChars).each do |i|
      index = byte & Mask
      index |= munge if i == (NumberOfChars - 1)
      chars.unshift characters[index, 1]
      byte = (byte >> Shift) & Maximum
    end

    int = int >> 64
  end

  chars.join
end