如何在kotlin语言中将char转换为ascii值

时间:2017-11-11 05:47:30

标签: android kotlin

我正在使用kotlin开发一个Android应用程序,我需要将字符串字符转换为其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
}

this tutorial website向我展示了使用char.toInt(),但它给运行时错误说

  

引起:java.lang.NumberFormatException:无效的int:" u"

所以,如果有人知道将char转换为ASCII值,请帮助我。

4 个答案:

答案 0 :(得分:3)

char.valueString。当您致电String.toInt()时,期望将"1", "-123"等数字字符串解析为Int。因此,"f".toInt()会为您提供NumberFormatException,因为"f"不是数字字符串。

如果您确定char.value只是String只包含一个字符。要获取它的ascii值,您可以使用:

char.value.first().toInt()

答案 1 :(得分:2)

你说 ascii ,而不是 unicode 。这很容易。

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

fun main(vararg args: String) {
  println('A'.toByte().toInt())
}

输出是我们的预期,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
}

我建议您使用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()
}

答案 2 :(得分:0)

我检查了@ ice1000的回答,我发现下面的块无效。

fun main(vararg args: String) {
  println('A'.toByte().toInt())
}

正如我们在Kotlin文档String - Kotlin Programming Language中看到的那样,toByte()&#34的String函数将字符串解析为带符号的字节数并返回结果。&#34 ;如果字符串的内容不是数字,则会抛出java.lang.NumberFormatException

但是String的另一个函数叫toByteArray(),这个函数不要求字符串的内容是数字。我的代码如下:

String tempString = "Hello"
val tempArray = tempString.toByteArray()
for (i in tempArray){
    println(i.toInt())
}

关注toByteArray()函数在kotlin的文档中的定义:

fun String.toByteArray(
    charset: Charset = Charsets.UTF_8
): ByteArray

默认字符集是UTF-8,如果您想使用其他字符集,可以使用参数修改它。

答案 3 :(得分:0)

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