ABSENT_OPTIONAL

Do not pad on encode, allow optional padding on decode.

When encoding, the result is not padded. When decoding, the input may be either padded or unpadded. If the input contains a padding character, the correct amount of padding character(s) must be present. The padding character '=' marks the end of the encoded data, and subsequent symbols are prohibited.

Samples

import kotlin.io.encoding.*
import kotlin.test.*

fun main() { 
   //sampleStart 
   val format = HexFormat { upperCase = true; bytes.byteSeparator = " " }
val bytes = byteArrayOf(0xDE.toByte(), 0x2D, 0x02, 0xC0.toByte())

val base64AbsentOptionalPadding = Base64.Default.withPadding(Base64.PaddingOption.ABSENT_OPTIONAL)

// PaddingOption.ABSENT_OPTIONAL does not pad on encode
println(base64AbsentOptionalPadding.encode(bytes)) // 3i0CwA
// It allows both padded and unpadded decode inputs
println(base64AbsentOptionalPadding.decode("3i0CwA").toHexString(format)) // DE 2D 02 C0
println(base64AbsentOptionalPadding.decode("3i0CwA==").toHexString(format)) // DE 2D 02 C0
// However, partially padded input is prohibited
// base64AbsentOptionalPadding.decode("3i0CwA=") // will fail with IllegalArgumentException 
   //sampleEnd
}

Properties

Link copied to clipboard
expect val name: String

Returns the name of this enum constant, exactly as declared in its enum declaration.

Link copied to clipboard
expect val ordinal: Int

Returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant is assigned an ordinal of zero).