From 12344283f79770c9df97d279f798be8808e8f8ab Mon Sep 17 00:00:00 2001 From: Infendro Date: Tue, 18 Nov 2025 11:21:46 +0100 Subject: [PATCH] implement Base8 encoding, rename Binary and Hex encodings --- .../infendro/encoding/{Hex.kt => Base16.kt} | 16 +++--------- .../kotlin/com/infendro/encoding/Base2.kt | 15 +++++++++++ .../kotlin/com/infendro/encoding/Base32.kt | 16 ++---------- .../kotlin/com/infendro/encoding/Base64.kt | 16 ++---------- .../kotlin/com/infendro/encoding/Base8.kt | 15 +++++++++++ .../kotlin/com/infendro/encoding/Binary.kt | 25 ------------------- .../kotlin/com/infendro/encoding/Encoding.kt | 2 +- 7 files changed, 38 insertions(+), 67 deletions(-) rename src/commonMain/kotlin/com/infendro/encoding/{Hex.kt => Base16.kt} (57%) create mode 100644 src/commonMain/kotlin/com/infendro/encoding/Base2.kt create mode 100644 src/commonMain/kotlin/com/infendro/encoding/Base8.kt delete mode 100644 src/commonMain/kotlin/com/infendro/encoding/Binary.kt diff --git a/src/commonMain/kotlin/com/infendro/encoding/Hex.kt b/src/commonMain/kotlin/com/infendro/encoding/Base16.kt similarity index 57% rename from src/commonMain/kotlin/com/infendro/encoding/Hex.kt rename to src/commonMain/kotlin/com/infendro/encoding/Base16.kt index f2acbd5..4c23230 100644 --- a/src/commonMain/kotlin/com/infendro/encoding/Hex.kt +++ b/src/commonMain/kotlin/com/infendro/encoding/Base16.kt @@ -1,6 +1,6 @@ package com.infendro.encoding -object Hex : Encoding() { +object Base16 : Encoding() { private val CHARACTERS = ubyteArrayOf( 0x30U, 0x31U, 0x32U, 0x33U, 0x34U, 0x35U, 0x36U, 0x37U, 0x38U, 0x39U, 0x61U, 0x62U, 0x63U, 0x64U, 0x65U, 0x66U, @@ -8,19 +8,9 @@ object Hex : Encoding() { override fun encode( bytes: UByteArray, - ): UByteArray { - return encode( - bytes, - CHARACTERS, - ) - } + ) = encode(bytes, CHARACTERS) override fun decode( bytes: UByteArray, - ): UByteArray { - return decode( - bytes, - CHARACTERS, - ) - } + ) = decode(bytes, CHARACTERS) } diff --git a/src/commonMain/kotlin/com/infendro/encoding/Base2.kt b/src/commonMain/kotlin/com/infendro/encoding/Base2.kt new file mode 100644 index 0000000..a6de71b --- /dev/null +++ b/src/commonMain/kotlin/com/infendro/encoding/Base2.kt @@ -0,0 +1,15 @@ +package com.infendro.encoding + +object Base2 : Encoding() { + private val CHARACTERS = ubyteArrayOf( + 0x30U, 0x31U, + ) + + override fun encode( + bytes: UByteArray, + ) = encode(bytes, CHARACTERS) + + override fun decode( + bytes: UByteArray, + ) = decode(bytes, CHARACTERS) +} diff --git a/src/commonMain/kotlin/com/infendro/encoding/Base32.kt b/src/commonMain/kotlin/com/infendro/encoding/Base32.kt index 5bc8c73..007471f 100644 --- a/src/commonMain/kotlin/com/infendro/encoding/Base32.kt +++ b/src/commonMain/kotlin/com/infendro/encoding/Base32.kt @@ -11,21 +11,9 @@ object Base32 : Encoding() { override fun encode( bytes: UByteArray, - ): UByteArray { - return encode( - bytes, - CHARACTERS, - PADDING, - ) - } + ) = encode(bytes, CHARACTERS, PADDING) override fun decode( bytes: UByteArray, - ): UByteArray { - return decode( - bytes, - CHARACTERS, - PADDING, - ) - } + ) = decode(bytes, CHARACTERS, PADDING) } diff --git a/src/commonMain/kotlin/com/infendro/encoding/Base64.kt b/src/commonMain/kotlin/com/infendro/encoding/Base64.kt index e857105..bcf1c6c 100644 --- a/src/commonMain/kotlin/com/infendro/encoding/Base64.kt +++ b/src/commonMain/kotlin/com/infendro/encoding/Base64.kt @@ -15,21 +15,9 @@ object Base64 : Encoding() { override fun encode( bytes: UByteArray, - ): UByteArray { - return encode( - bytes, - CHARACTERS, - PADDING, - ) - } + ) = encode(bytes, CHARACTERS, PADDING) override fun decode( bytes: UByteArray, - ): UByteArray { - return decode( - bytes, - CHARACTERS, - PADDING, - ) - } + ) = decode(bytes, CHARACTERS, PADDING) } diff --git a/src/commonMain/kotlin/com/infendro/encoding/Base8.kt b/src/commonMain/kotlin/com/infendro/encoding/Base8.kt new file mode 100644 index 0000000..ac9dccc --- /dev/null +++ b/src/commonMain/kotlin/com/infendro/encoding/Base8.kt @@ -0,0 +1,15 @@ +package com.infendro.encoding + +object Base8 : Encoding() { + private val CHARACTERS = ubyteArrayOf( + 0x30U, 0x31U, 0x32U, 0x33U, 0x34U, 0x35U, 0x36U, 0x37U, + ) + + override fun encode( + bytes: UByteArray, + ) = encode(bytes, CHARACTERS) + + override fun decode( + bytes: UByteArray, + ) = decode(bytes, CHARACTERS) +} diff --git a/src/commonMain/kotlin/com/infendro/encoding/Binary.kt b/src/commonMain/kotlin/com/infendro/encoding/Binary.kt deleted file mode 100644 index aecf757..0000000 --- a/src/commonMain/kotlin/com/infendro/encoding/Binary.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.infendro.encoding - -object Binary : Encoding() { - private val CHARACTERS = ubyteArrayOf( - 0x30U, 0x31U, - ) - - override fun encode( - bytes: UByteArray, - ): UByteArray { - return encode( - bytes, - CHARACTERS, - ) - } - - override fun decode( - bytes: UByteArray, - ): UByteArray { - return decode( - bytes, - CHARACTERS, - ) - } -} diff --git a/src/commonMain/kotlin/com/infendro/encoding/Encoding.kt b/src/commonMain/kotlin/com/infendro/encoding/Encoding.kt index c3aebe9..211a271 100644 --- a/src/commonMain/kotlin/com/infendro/encoding/Encoding.kt +++ b/src/commonMain/kotlin/com/infendro/encoding/Encoding.kt @@ -61,7 +61,7 @@ sealed class Encoding { padding: UByte? = null, ): UByteArray { val length = log2(characters.size).toInt() - val mask = 0xFFU + val mask = 0xffU val decoded = mutableListOf()