我正在使用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值,请帮助我。
答案 0 :(得分:3)
char.value
是String
。当您致电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。
我想这可行。
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