module Base32
Constants
- ALPHABET
Public Instance Methods
a2b(ascstr)
click to toggle source
# 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)
click to toggle source
native-ruby encoding/decoding implementation probably could be a lot faster!
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/base32.rb, line 9 def encode32(binstr, variant_name = :plain) Variant[variant_name].wrap(self.b2a(binstr)) end