Module: Base32
- Defined in:
- lib/base32.rb,
lib/base32/base32.rb,
lib/base32/variant.rb,
lib/base32/version.rb
Defined Under Namespace
Modules: VERSION
Classes: Variant
Constant Summary
collapse
- ALPHABET =
'0123456789ABCDEFGHIJKLMNOPQRSTUV'
Class Method Summary
collapse
Class Method Details
.a2b(ascstr) ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/base32/base32.rb', line 13
def a2b(ascstr)
n_octets = (ascstr.length * 5) / 8
bigint = ascstr.to_i(32)
octet_arr = Array.new(n_octets)
while n_octets > 0
octet_arr[n_octets - 1] = bigint & 0b11111111
bigint >>= 8
n_octets -= 1
end
octet_arr.pack('C*')
end
|
.b2a(binstr) ⇒ Object
7
8
9
10
11
|
# File 'lib/base32/base32.rb', line 7
def b2a(binstr)
n_pentets = ((binstr.length * 8) + 4) / 5
bigint = binstr.bytes.inject(0){ |i,octet| (i << 8) | octet }
bigint.to_s(32).rjust(n_pentets, '0')
end
|
.decode32(ascstr, variant_name = :plain) ⇒ Object
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/base32.rb', line 13
def decode32(ascstr, variant_name = :plain)
variant = Variant[variant_name]
cleanascstr = variant.clean(ascstr)
if cleanascstr.length == 0 && ascstr.length != 0
raise ArgumentError, "invalid Base32 sequence"
end
self.a2b(variant.unwrap(cleanascstr))
end
|
.encode32(binstr, variant_name = :plain) ⇒ Object
9
10
11
|
# File 'lib/base32.rb', line 9
def encode32(binstr, variant_name = :plain)
Variant[variant_name].wrap(self.b2a(binstr))
end
|