如何用Kotlin语言将char转换为ascii值

Iro*_*ack 5 android kotlin

我正在开发一个Android应用程序,kotlin需要在其中将字符串字符转换为其ASCII值,

fun tryDiCript(cypher: String) :String {
        var cypher = "fs2543i435u@$#g#@#sagb@!#12416@@@"
        var originalText = ""

        var regEx =Regex("[a-z]")
        for(char in  regEx.findAll(cypher))
        {                 
            originalText += (char.value.toInt()).toString()            
        }
       return originalText
}
Run Code Online (Sandbox Code Playgroud)

本教程网站向我展示了使用方法,char.toInt()但它给出了运行时错误提示

原因:java.lang.NumberFormatException:无效的int:“ u”

因此,如果有人知道如何将char转换为ASCII值,请如何帮助我。

小智 15

从 Kotlin 1.5 开始

如果您的变量是 char 类型(例如“a”),您可以简单地使用a.code.

旧方法(例如toByte())现已弃用。


ice*_*000 6

你说的是ascii,不是unicode。所以很容易。

这是一个示例,向您展示如何将 char ( 'A')转换为它的 ascii 值。

fun main(vararg args: String) {
  println('A'.toByte().toInt())
}
Run Code Online (Sandbox Code Playgroud)

输出是我们预期的,65。

请注意,这不适用于 unicode。

编辑 1

我想这行得通。

fun tryDiCript(cypher: String): String {
    var cypher = "fs2543i435u@$#g#@#sagb@!#12416@@@"
    var originalText = ""

    var regEx = Regex("[a-z]")
    for(char in regEx.findAll(cypher))
        originalText += char.value[0].toInt().toString()            
    return originalText
}
Run Code Online (Sandbox Code Playgroud)

我建议你使用StringBuilder.

fun tryDiCript(cypher: String): String {
    var cypher = "fs2543i435u@$#g#@#sagb@!#12416@@@"
    val originalText = StringBuilder()

    var regEx = Regex("[a-z]")
    for(char in regEx.findAll(cypher))
        originalText.append(char.value[0].toInt())
    return originalText.toString()
}
Run Code Online (Sandbox Code Playgroud)


Bak*_*aii 5

char.value是一个String。当您呼叫时String.toInt(),它希望将一个数字字符串"1", "-123"解析为Int。因此,由于不是数字字符串,"f".toInt()因此会给您。NumberFormatException"f"

如果你不确定char.valueString正好包含一个唯一的字符。要获得它的ascii值,可以使用:

char.value.first().toInt()
Run Code Online (Sandbox Code Playgroud)