在 Swift 中获取字符 ASCII 值作为整数

Getting character ASCII value as an Integer in Swift

我一直在尝试将字符 ascii 代码获取为 int,以便我可以修改它并通过一些数学运算来更改字符。但是我发现很难这样做,因为我在不同类型的整数之间遇到转换错误并且似乎找不到答案

     var n:Character = pass[I] //using the string protocol extension
     if n.isASCII
     {
        var tempo:Int = Int(n.asciiValue)
        temp += (tempo | key) //key and temp are of type int 
     }

在Swift中,Character不一定是ASCII码。例如,return "" which requires a large unicode encoding. This is why asciiValue property has an optional UInt8 值的 ascii 值是没有意义的,它被注释为 UInt8?.

最简单的解决方案

由于您自己检查过字符 isAscii,您可以安全地使用 !:

进行无条件解包
var tempo:Int = Int(n.asciiValue!)     // <--- just change this line

更优雅的选择

您还可以利用可选绑定,当没有 ascii 值(即 n 不是 ASCII 字符)时,可选绑定为 nil:

if let tempo = n.asciiValue   // is true only if there is an ascii value
{
    temp += (Int(tempo) | key) 
}