Как преобразовать ByteArray в ShortArray в Kotlin? - PullRequest
0 голосов
/ 25 апреля 2018

Если у меня есть правильно сформированный ByteArray (скажем, byteArrayOf(12, 0, 24, 0)), какой самый простой способ преобразовать это в ShortArray?

Для простоты предположим, что порядок байтов не является слишком простым.

Результирующий ShortArray должен выглядеть как (12, 24).

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Без преобразования в список как @hotkey ответ:

val byteArray = byteArrayOf(12, 0, 24, 0)
val shortArray = ShortArray(byteArray.size / 2) {
    (byteArray[it * 2] + (byteArray[(it * 2) + 1].toInt() shl 8)).toShort()
}
println(shortArray.toList()) // [12, 24]
0 голосов
/ 25 апреля 2018

Вы можете обработать ByteArray как список с помощью .chunked(), хотя вам необходимо вручную преобразовать два байта в Short:

val bytes = byteArrayOf(12, 0, 24, 0)
val shorts = bytes
    .asList()
    .chunked(2)
    .map { (l, h) -> (l.toInt() + h.shl(8)).toShort() }
    .toShortArray()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...