如何将String转换为UInt8数组?
var str = "test"
var ar : [UInt8]
ar = str
答案 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个字节)将导致信息丢失。