diff --git a/src/commonMain/kotlin/com/infendro/encoding/exception/DecodeException.kt b/src/commonMain/kotlin/com/infendro/encoding/exception/DecodeException.kt new file mode 100644 index 0000000..f81ba30 --- /dev/null +++ b/src/commonMain/kotlin/com/infendro/encoding/exception/DecodeException.kt @@ -0,0 +1,5 @@ +package com.infendro.encoding.exception + +abstract class DecodeException : Exception() { + abstract override val message: String +} diff --git a/src/commonMain/kotlin/com/infendro/encoding/exception/IllegalByteException.kt b/src/commonMain/kotlin/com/infendro/encoding/exception/IllegalByteException.kt new file mode 100644 index 0000000..5650bf6 --- /dev/null +++ b/src/commonMain/kotlin/com/infendro/encoding/exception/IllegalByteException.kt @@ -0,0 +1,12 @@ +package com.infendro.encoding.exception + +class IllegalByteException( + val byte: Byte, +) : DecodeException() { + override val message: String + get() { + val hex = "0x${byte.toHexString().padStart(2, '0')}" + val char = "'${byte.toInt().toChar()}'" + return "Illegal byte $hex ($char)." + } +} diff --git a/src/commonMain/kotlin/com/infendro/encoding/numeric/NumericEncoding.kt b/src/commonMain/kotlin/com/infendro/encoding/numeric/NumericEncoding.kt index 16b36d4..671a552 100644 --- a/src/commonMain/kotlin/com/infendro/encoding/numeric/NumericEncoding.kt +++ b/src/commonMain/kotlin/com/infendro/encoding/numeric/NumericEncoding.kt @@ -1,6 +1,7 @@ package com.infendro.encoding.numeric import com.infendro.encoding.Encoding +import com.infendro.encoding.exception.IllegalByteException import com.infendro.encoding.util.BigInt import com.infendro.encoding.util.log2 import kotlin.math.ceil @@ -30,8 +31,11 @@ open class NumericEncoding( var value = BigInt.zero for (i in 0..