Как преобразовать строку в byteArray в kotlin

В настоящее время я использую этот метод для преобразования строки в byteArray

 fun stringToByteArray(s: String): ByteArray? {
    val len = s.length
    if (len % 2 != 0) return null
    val data = ByteArray(len / 2)
    var i = 0
    while (i < len) {
        data[i / 2] =
            ((Character.digit(s[i], 16) shl 4) + Character.digit(s[i + 1], 16)).toByte()
        i += 2
    }
    return data
}

. Мой вопрос: есть ли более простой метод для достижения того же результата, при поиске в сети я обнаружил, что это можно сделать

val byteArray = key.toByteArray()

но почему-то дают разные результаты, какие-либо предложения?

3
задан 27.11.2019, 02:24
1 ответ

Правильное состоит в том, чтобы использовать метод toByteArray () , Которые из-за default используют кодирование UTF_8:

val valor = "Hola Emmanuel"
val bytes = valor.toByteArray()

ты можешь подтверждать, что его один Byte Array посредством contentToString(), пример: Вышедшие

 val valor = "Hola Emmanuel"
 val bytes = valor.toByteArray()
 System.out.println(bytes.contentToString())

:

[72, 111, 108, 97, 32, 69, 109, 109, 97, 110, 117, 101, 108]

взамен, если ты используешь метод, который ты описываешь в твоем вопросе, не получает array, даже возможно ты получишь стоимость null, так как он может входить в эту оценку:

if (len % 2 != 0) return null
1
ответ дан 01.12.2019, 10:46

Теги

Похожие вопросы