Множество разных способов, в зависимости от того, как вы хотите обрабатывать символы, отличные от ASCII.
Но самым простым кодом будет использование представления utf8:
let string = "hello"
let array: [UInt8] = Array(string.utf8)
Примечание. Это приведет к тому, что многобайтовые символы будут представлены в виде нескольких записей в массиве, то есть:
let string = "é"
print(Array(string.utf8))
выводит [195, 169]
Theres также .nulTerminatedUTF8, что делает то же самое, но затем добавляет nul-character в конец, если ваш план должен передать это где-то в виде строки C (хотя, если вы это делаете, возможно, вы также можете использовать .withCString или просто использовать неявное преобразование для мостовых функций C.
Ответ 2
let str = "test"
let byteArray = [UInt8](str.utf8)
Ответ 3
Я пришел к этому вопросу, ища, как преобразовать в массив Int8. Это то, как я это делаю, но, конечно, есть менее замкнутый способ:
Метод для расширения для String
public func int8Array() -> [Int8] {
var retVal : [Int8] = []
for thing in self.utf16 {
retVal.append(Int8(thing))
}
return retVal
}
Примечание. Сохранение кодированного символа UTF-16 (2 байта) в Int8 (1 байт) приведет к потере информации.
Ответ 4
swift 4
func stringToUInt8Array(){
let str:String = "Swift 4"
let strToUInt8:[UInt8] = [UInt8](str.utf8)
print(strToUInt8)
}