From 61d6a8e191d70ce858ea6000aa317d0243921f23 Mon Sep 17 00:00:00 2001 From: Infendro Date: Wed, 21 Jan 2026 22:03:23 +0100 Subject: [PATCH] implement Base45 --- .../kotlin/com/infendro/encoding/Base45.kt | 51 +++++++++++++++++++ .../kotlin/com/infendro/encoding/Base45.kt | 36 +++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 src/commonMain/kotlin/com/infendro/encoding/Base45.kt create mode 100644 src/commonTest/kotlin/com/infendro/encoding/Base45.kt diff --git a/src/commonMain/kotlin/com/infendro/encoding/Base45.kt b/src/commonMain/kotlin/com/infendro/encoding/Base45.kt new file mode 100644 index 0000000..c24808a --- /dev/null +++ b/src/commonMain/kotlin/com/infendro/encoding/Base45.kt @@ -0,0 +1,51 @@ +package com.infendro.encoding + +import com.infendro.encoding.exception.IllegalByteException + +object Base45 : Encoding { + private val alphabet: ByteArray = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".encodeToByteArray() + private val base: Int = alphabet.size + + override fun encode(bytes: ByteArray): ByteArray { + val result = mutableListOf() + + for (i in bytes.indices step 2) { + val remaining = minOf(bytes.size - i, 2) + + var value = 0 + for (j in 0..() + + for (i in bytes.indices step 3) { + val remaining = minOf(bytes.size - i, 3) + + var value = 0 + for (j in (0..