繁体   English   中英

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

[英]How to convert char to ascii value in kotlin language

我正在使用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
}

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

引起:java.lang.NumberFormatException: Invalid int: "u"

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

char.value是一个String 当您调用String.toInt() ,它期望将数字字符串(例如"1", "-123"解析为Int 所以, "f".toInt()会给你NumberFormatException因为"f"不是一个数字字符串。

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

char.value.first().code

你说的是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()
}

我检查了@ice1000 的答案,我发现下面的块不起作用。

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

正如我们在科特林文档看到字符串-科特林程序设计语言中, toByte()的函数String “解析字符串作为符号字节数,并返回结果” 如果字符串的内容不是数字,则会抛出java.lang.NumberFormatException

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM