Module: Base24
- Defined in:
- lib/base24.rb,
lib/base24/version.rb
Defined Under Namespace
Classes: Error
Constant Summary collapse
- VERSION =
"0.1.0"
Class Method Summary collapse
Class Method Details
.decode24(data) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/base24.rb', line 27 def self.decode24(data) raise "Data size must be multiple of 7" if data.size % 7 != 0 data.chars.each_slice(7).reduce([]) do |result, chars| value = chars.reduce(0) do |value, char| idx = DECODE_MAP[char] raise "Invalid character" if idx.nil? value * ASIZE + idx end mask = 0xFF b0 = (value & (mask << 24)) >> 24 b1 = (value & (mask << 16)) >> 16 b2 = (value & (mask << 8)) >> 8 b3 = value & mask result + [b0, b1, b2, b3] end.pack('C*') end |
.encode24(data) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/base24.rb', line 6 def self.encode24(data) raise "Data size must be multiple of 4" if data.size % 4 != 0 data.unpack('C*').each_slice(4).reduce([]) do |result, slice| b0, b1, b2, b3 = slice value = b0 << 24 | b1 << 16 | b2 << 8 | b3 sub_result, value = (0..6).reduce([[], value]) do |acc, i| res, value = acc idx = value % ASIZE value = value / ASIZE char = ENCODE_MAP[idx] [[char] + res, value] end result + sub_result end.join end |