NumberFormatException при преобразовании строки в байт - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь получить формат строки MD5

Код:

fun getEncodedData(data: String): String? {

        val MD5 = "MD5"

        // Create MD5 Hash
        val digest = java.security.MessageDigest
            .getInstance(MD5)

        digest.update(data.toByte())
        val messageDigest = digest.digest()

        // Create Hex String
        val hexString = StringBuilder()
        for (aMessageDigest in messageDigest) {
            var h = Integer.toHexString(0xFF and aMessageDigest.toInt())
            while (h.length < 2)
                h = "0$h"
            hexString.append(h)
        }
        return hexString.toString()
    }

Произошел сбой при: digest.update(data.toByte()). Я получаю номер формата Exception

Ввод, который я передаю для data: oEXm43

Нет сбоя, если я передам ex: 11 в качестве строки для ввода data

Если входное значение всегда должно быть integer в string или это может быть смесь number и characters.

1 Ответ

0 голосов
/ 10 января 2019

Вы пытаетесь вызвать метод update, который принимает один параметр byte, и используете toByte, который преобразует числовое значение всей строки в один байт. Этот метод преобразования - то, что терпит неудачу на нечисловых значениях внутри String.

Вместо этого вы можете использовать вариант update с параметром byte[] и преобразовать String в массив байтов (по одному на символ) с toByteArray

digest.update(data.toByteArray())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...