Spec-Zone.ru › Kotlin 2

decodeIntoByteArray

kotlin-stdlib/kotlin.io.encoding/Base64/decodeIntoByteArray

Начиная с Kotlin: 2.2

fun decodeIntoByteArray(source: ByteArray, destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = source.size): Int

Декодирует символы из указанного массива source или его поддиапазона и записывает полученные байты в массив destination. Возвращает количество записанных байтов.

Обязательность, запрет или необязательность дополнения входных символов определяется значением PaddingOption, заданным для этого экземпляра Base64.

Возвращает

количество байтов, записанных в массив destination.

Параметры

source

массив, из которого декодируются символы.

destination

массив, в который записываются байты.

destinationOffset

начальный индекс в массиве destination, с которого записываются байты; по умолчанию равен 0.

startIndex

начало (включительно) поддиапазона для декодирования; по умолчанию равно 0.

endIndex

конец (не включительно) поддиапазона для декодирования; по умолчанию равен размеру массива source.

Выбрасывает

IndexOutOfBoundsException

если полученные байты не помещаются в массив destination, начиная с указанного destinationOffset, или если этот индекс выходит за пределы диапазона индексов массива destination.

IllegalArgumentException

если символы для декодирования дополнены не в соответствии с требованиями PaddingOption, заданного для этого экземпляра Base64, или если после дополнения имеются лишние символы.

Примеры

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

fun main() { 
   //sampleStart 
   val outputBuffer = ByteArray(1024)
// {data:\"ZW5jb2RlZA==\"}
val data = byteArrayOf(
    123, 100, 97, 116, 97,
    58, 34, 90, 87, 53, 106,
    98, 50, 82, 108, 90, 65,
    61, 61, 34, 125
)
val from = data.indexOf('"'.code.toByte()) + 1
val until = data.lastIndexOf('"'.code.toByte())

// decode subrange of input data into buffer and remember how many bytes were written
val bytesWritten = Base64.decodeIntoByteArray(data, destination = outputBuffer, startIndex = from, endIndex = until)
println(outputBuffer.decodeToString(endIndex = bytesWritten)) // encoded 
   //sampleEnd
}

fun decodeIntoByteArray(source: CharSequence, destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = source.length): Int

Декодирует символы из указанной символьной последовательности source или её подстроки и записывает полученные байты в массив destination. Возвращает количество записанных байтов.

Обязательность, запрет или необязательность дополнения входных символов определяется значением PaddingOption, заданным для этого экземпляра Base64.

Возвращает

количество байтов, записанных в массив destination.

Параметры

source

символьная последовательность, из которой декодируются символы.

destination

массив, в который записываются байты.

destinationOffset

начальный индекс в массиве destination, с которого записываются байты; по умолчанию равен 0.

startIndex

начало (включительно) подстроки для декодирования; по умолчанию равно 0.

endIndex

конец (не включительно) подстроки для декодирования; по умолчанию равен длине source.

Выбрасывает

IndexOutOfBoundsException

если полученные байты не помещаются в массив destination, начиная с указанного destinationOffset, или если этот индекс выходит за пределы диапазона индексов массива destination.

IllegalArgumentException

если символы для декодирования дополнены не в соответствии с требованиями PaddingOption, заданного для этого экземпляра Base64, или если после дополнения имеются лишние символы.

Примеры

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

fun main() { 
   //sampleStart 
   val outputBuffer = ByteArray(1024)
val inputChunks = listOf("Q2h1bmsx", "U2Vjb25kQ2h1bms=", "Y2h1bmsjMw==")

var bufferPosition = 0
val chunkIterator = inputChunks.iterator()
while (bufferPosition < outputBuffer.size && chunkIterator.hasNext()) {
    val chunk = chunkIterator.next()
    // fill buffer with data decoded from base64-encoded chunks
    // and increment current position by the number of decoded bytes
    bufferPosition += Base64.decodeIntoByteArray(
        chunk,
        destination = outputBuffer,
        destinationOffset = bufferPosition
    )
}
// consume outputBuffer
println(outputBuffer.decodeToString(endIndex = bufferPosition)) // Chunk1SecondChunkchunk#3 
   //sampleEnd
}

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.io.encoding/-base64/decode-into-byte-array.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API