在 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)
}
我一直在尝试将字符 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)
}