将 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> }