簡體   English   中英

將字符串轉換為字節時出現NumberFormatException

[英]NumberFormatException in converting string to byte

我正在嘗試獲取字符串的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()) 我得到數字格式異常

輸入我正在傳遞dataoEXm43

如果我將ex: 11作為輸入data的字符串傳遞,則不會崩潰

輸入應該始終是string integer ,還是可以由numbercharacters的混合體。

您正在嘗試調用采用單個byte參數的update方法,並使用toByte將整個字符串的數字值轉換為單個字節。 這種轉換方法對String內的非數字值無效。

相反,您可以使用帶有byte[]參數的update變體,並使用toByteArrayString轉換為字節數組(每個字符一個):

digest.update(data.toByteArray())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM