【发布时间】:2015-05-15 08:56:32
【问题描述】:
如何将 String 转换为 UInt8 数组?
var str = "test"
var ar : [UInt8]
ar = str
【问题讨论】:
标签: swift
如何将 String 转换为 UInt8 数组?
var str = "test"
var ar : [UInt8]
ar = str
【问题讨论】:
标签: swift
有很多不同的方法,具体取决于您要如何处理非 ASCII 字符。
但最简单的代码是使用utf8 视图:
let string = "hello"
let array: [UInt8] = Array(string.utf8)
注意,这将导致多字节字符表示为数组中的多个条目,即:
let string = "é"
print(Array(string.utf8))
打印出[195, 169]
还有.nulTerminatedUTF8,它做同样的事情,但是如果你的计划是将它作为C字符串传递到某个地方,那么它会在末尾添加一个空字符(尽管如果你这样做,你可能也可以使用 .withCString 或只使用桥接 C 函数的隐式转换。
【讨论】:
let str = "test"
let byteArray = [UInt8](str.utf8)
【讨论】:
斯威夫特 4
func stringToUInt8Array(){
let str:String = "Swift 4"
let strToUInt8:[UInt8] = [UInt8](str.utf8)
print(strToUInt8)
}
【讨论】:
我来这个问题是为了寻找如何转换为 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 字节)中会导致信息丢失。
【讨论】:
Int。