如何在 swift 3 中将字符数组转换为 uint8 数组


arr1 = ["h","e","l","l","o"] as! Any
for i in 0..<arr1.count
{
    let newString:String = arr1[i] as! String
    let data1:UInt8 = UInt8(newString)!
    arr[i] = data1
}

可以通过String表示Character来实现UInt8您可以使用String.UTF8View,是一种集合类型,现在您可以使用map轻松转换为UInt8。如

let charArray: [Character] = ["h","e","l","l","o"]
let arrayUInt8 = String(charArray).utf8.map { (val) -> UInt8 in
    return val
}
print(charArray)
//["h", "e", "l", "l", "o"]
print(arrayUInt8)
//[104, 101, 108, 108, 111]

将字符数组转换为UInt8实际上没有意义,因为某些字符不能仅用 8 位表示,例如 "😀">

不过,这是您将字符转换为[UInt32]的方式:

let chars: [Character] = ["a", "😀", "c"]
let result = chars.map { UnicodeScalar($0.description)?.value }.filter{ $0 != nil }

或者,您可以使用此方法将字符转换为 UInt8 ,但过滤掉那些不能用 8 位表示的字符:

let chars: [Character] = ["a", "😀", "c"]
let result = chars.map { UnicodeScalar($0.description) }.filter { $0 != nil && $0!.isASCII }.map { UInt8($0!.value) }

最新更新