快速从 UInt8 转换为 String

Nom*_*tar 2 ios swift

我正在将以下 UInt8 数组快速转换为 String 并且每次都变为 nil。我应该怎么做??请帮我。

[ 201, 201, 87, 200, 204 ]
let decData = NSData(bytes: mydata, length: Int(mydata.count) )
let result1 = NSString(data: decData, encoding: NSUTF8StringEncoding)
Run Code Online (Sandbox Code Playgroud)

编辑:我使用 InflateStream/deflateStream 来压缩我的数据。deflateStream 的返回类型是 UInt8。我尝试将此值转换为字符串,以便将其发送到服务器。

这是我的代码

    let string = "hello"
    let data: [UInt8] = Array(string.utf8)

    // compress
    var deflater = DeflateStream()
    var (deflated, err) = deflater.write(data, flush: true)
    if err != nil{
        fatalError("\(err!)")
    }
    print(" ***** deflater: \(deflated)")

    // decompress
    var inflater = InflateStream()
    var (inflated, errr) = inflater.write(deflated, flush: true)
    if errr != nil{
        fatalError("\(errr!)")
    }
    print(" ***** inflated: \(inflated)")
Run Code Online (Sandbox Code Playgroud)

nhg*_*rif 6

给定一个数组UInt8

let letters: [UInt8] = [201, 201, 87, 200, 204]
Run Code Online (Sandbox Code Playgroud)

我们可以首先将其映射到一个数组Character

let characters = letters.map { Character(UnicodeScalar($0)) }
Run Code Online (Sandbox Code Playgroud)

然后我们只需调用String期望的构造函数[Character]

let result = String(Array(characters))
Run Code Online (Sandbox Code Playgroud)

  • 这是一个非常假设的解决方案,也不适用:将无符号八位整数映射到 Unicode 标量应该是可以表示为单个 UInt8 的有效 unicode 值。_given_ 值 - 除了 `87` - 当然不是有效的 UTF-8 起始字节。 (2认同)