Подтвердить что ты не робот

Swift: Как преобразовать String в массив UInt8?

Как вы преобразовываете массив String в UInt8?

var str = "test"
var ar : [UInt8]
ar = str
4b9b3361

Ответ 1

Множество разных способов, в зависимости от того, как вы хотите обрабатывать символы, отличные от 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)
 }