Swift:如何将String转换为UInt8数组?

时间:2015-05-15 08:56:32

标签: swift

如何将String转换为UInt8数组?

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

4 个答案:

答案 0 :(得分:59)

许多不同的方式,取决于您希望如何处理非ASCII字符。

但最简单的代码是使用utf8视图:

let string = "hello"

let array: [UInt8] = Array(string.utf8)

注意,这将导致多字节字符在数组中表示为多个条目,即:

let string = "é"
print(Array(string.utf8))

打印出[195, 169]

还有.nulTerminatedUTF8,它做了同样的事情,但是如果你的计划要把它作为一个C字符串传递给某个地方,那么最后会添加一个空字符(尽管如果你这样做,你可以可能也使用.withCString或者只是对桥接C函数使用隐式转换。

答案 1 :(得分:10)

let str = "test"
let byteArray = [UInt8](str.utf8)

答案 2 :(得分:1)

swift 4

 func stringToUInt8Array(){

     let str:String = "Swift 4"
     let strToUInt8:[UInt8] = [UInt8](str.utf8)

     print(strToUInt8)
 }

答案 3 :(得分:0)

我来到这个问题,寻找如何转换为Int8数组。这就是我在做的方式,但肯定有一种不那么循环的方式:

String

扩展的方法
public func int8Array() -> [Int8] {
    var retVal : [Int8] = []
    for thing in self.utf16 {
        retVal.append(Int8(thing))
    }
    return retVal
}

注意:在Int8(1字节)中存储UTF-16编码字符(2个字节)将导致信息丢失。