Если мы считаем, что строка состоит из символов, где каждый символ представлен 2 десятичными буквами, то что-то вроде этого будет работать (это всего лишь пример, не оптимальный).
func convertAscii(asciiStr: String) {
var source = asciiStr
var characters: [String] = []
let digitsPerCharacter = 2
while source.count >= digitsPerCharacter {
let charBytes = source.prefix(digitsPerCharacter)
source = String(source.dropFirst(digitsPerCharacter))
let number = Int(charBytes, radix: 10)!
let character = UnicodeScalar(number)!
characters.append(String(character))
}
let result: String = characters.joined()
print(result)
}
convertAscii(asciiStr: "7297112112121326610511411610410097121")
Однакосам формат неоднозначен, потому что символы ASCII могут принимать от 1 до 3 десятичных цифр, поэтому для правильного разбора необходимо, чтобы все символы имели одинаковую длину (например, 1
должно быть 001
).
Обратите внимание, что я беру всегда одинаковое количество букв, затем преобразую их в число, а затем создаю символ числа.