All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.fluency03.multibase.Base16Impl.scala Maven / Gradle / Ivy

package com.github.fluency03.multibase

object Base16Impl {

  def encode(data: Array[Byte], base16: Base16RFC4648): String =
    data.flatMap(b => byteToChars(b, base16.alphabet.toCharArray))
      .mkString

  private def byteToChars(byte: Byte, alphabet: Array[Char]): Array[Char] = Array(
    alphabet(MASK_4BITS(byte >>> 4)),
    alphabet(MASK_4BITS(byte))
  )


  def decode(data: String, base16: Base16RFC4648): Array[Byte] =
    data.toCharArray
      .grouped(2)
      .map(g => twoCharsToByte(g, base16.alphabetPos))
      .toArray

  private def twoCharsToByte(tuple: Array[Char], pos: Map[Char, Int]): Byte =
    (pos(tuple(0)) << 4 | pos(tuple(1))).toByte

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy