将 Char 转换为 Int swift
Convert Char in Int swift
我正在尝试将 char 转换为 int,在 C 中它可以工作,但在 Swift 中我遇到了一些问题。在C里就不一样了,用ascii没问题
这个函数是我的atoi函数的一部分。
我尝试使用 binaryInt 和 UnicodeScalar,但没有成功
func scanNumber(_ strArray: [Character], _ index: Int, _ flag: Int) -> Int {
var resalt = 0
while ((strArray[index] >= "0") && (strArray[index] <= "9")) {
// flag mean plus or minus sign in strArray, if flag = 2 it's like a ["-", "1", "2", "3"]
if flag != 2 {
resalt *= 10
resalt = resalt + Int(strArray[index]) //error
} else {
resalt *= 10
resalt = resalt - Int(strArray[index]) //error
}
}
return resalt
}
Int(strArray[index]) return:
Initializer 'init(_:)' requires that 'Character' conform to 'BinaryInteger'
这是一个使用 asciiValue
的解决方案
func scanNumber(_ strArray: [Character], _ index: Int, _ flag: Int) -> Int {
var resalt = 0
var arrayIndex = index
while (arrayIndex < strArray.count && (strArray[arrayIndex] >= "0") && (strArray[arrayIndex] <= "9")) {
guard let ascii = strArray[arrayIndex].asciiValue else {
return resalt
}
resalt *= 10
if flag != 2 {
resalt += Int(ascii) - 48
} else {
resalt -= Int(ascii) - 48
}
arrayIndex += 1
}
return resalt
}
我也修复了循环
您可以使用字符创建字符串。使用 String 你可以创建一个 Int.
let char: 字符 = "1"
如果让 number = Int(String(char)) {
// 使用数字<br>
}
我正在尝试将 char 转换为 int,在 C 中它可以工作,但在 Swift 中我遇到了一些问题。在C里就不一样了,用ascii没问题
这个函数是我的atoi函数的一部分。
我尝试使用 binaryInt 和 UnicodeScalar,但没有成功
func scanNumber(_ strArray: [Character], _ index: Int, _ flag: Int) -> Int {
var resalt = 0
while ((strArray[index] >= "0") && (strArray[index] <= "9")) {
// flag mean plus or minus sign in strArray, if flag = 2 it's like a ["-", "1", "2", "3"]
if flag != 2 {
resalt *= 10
resalt = resalt + Int(strArray[index]) //error
} else {
resalt *= 10
resalt = resalt - Int(strArray[index]) //error
}
}
return resalt
}
Int(strArray[index]) return:
Initializer 'init(_:)' requires that 'Character' conform to 'BinaryInteger'
这是一个使用 asciiValue
的解决方案func scanNumber(_ strArray: [Character], _ index: Int, _ flag: Int) -> Int {
var resalt = 0
var arrayIndex = index
while (arrayIndex < strArray.count && (strArray[arrayIndex] >= "0") && (strArray[arrayIndex] <= "9")) {
guard let ascii = strArray[arrayIndex].asciiValue else {
return resalt
}
resalt *= 10
if flag != 2 {
resalt += Int(ascii) - 48
} else {
resalt -= Int(ascii) - 48
}
arrayIndex += 1
}
return resalt
}
我也修复了循环
您可以使用字符创建字符串。使用 String 你可以创建一个 Int.
let char: 字符 = "1"
如果让 number = Int(String(char)) {
// 使用数字<br>
}