Ios 在swift中将UInt8转换为字符串

Ios 在swift中将UInt8转换为字符串,ios,swift,Ios,Swift,我正在将以下UInt8数组转换为swift中的字符串,每次都得到零。我应该怎么做??请帮帮我 [ 201, 201, 87, 200, 204 ] let decData = NSData(bytes: mydata, length: Int(mydata.count) ) let result1 = NSString(data: decData, encoding: NSUTF8StringEncoding) 编辑: 我正在使用InflateStream/deflateStream压缩数据。

我正在将以下UInt8数组转换为swift中的字符串,每次都得到零。我应该怎么做??请帮帮我

[ 201, 201, 87, 200, 204 ]
let decData = NSData(bytes: mydata, length: Int(mydata.count) )
let result1 = NSString(data: decData, encoding: NSUTF8StringEncoding)
编辑: 我正在使用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)")

给定一个
UInt8
数组:

let letters: [UInt8] = [201, 201, 87, 200, 204]
我们可以首先将其映射到
字符的数组中

let characters = letters.map { Character(UnicodeScalar($0)) }
然后我们只调用
字符串
构造函数,它需要
[字符]

let result = String(Array(characters))

给定一个
UInt8
数组:

let letters: [UInt8] = [201, 201, 87, 200, 204]
我们可以首先将其映射到
字符的数组中

let characters = letters.map { Character(UnicodeScalar($0)) }
然后我们只调用
字符串
构造函数,它需要
[字符]

let result = String(Array(characters))


数组表示字符?您希望
result1
有什么输出<代码>“ÉWÈÌ”?可能我不确定,因为我在压缩后得到了这个数组。有什么方法可以让我看看吗?代码在我下面的答案中。根据我刚才看到的ASCII图表,给定您提供的大概ASCII值,这是正确的字符串。数据代表什么?它不是有效的UTF-8序列。也许是ISO-8859编码?Unicode码点?没有这些信息(或者不知道预期结果),我们只能猜测。@NomanAkhtar:DeflateStream从何而来?我尝试了它(必须更新为Swift 2)。然后,在更新的示例中,
膨胀的
变成了
[104、101、108、108、111]
,这是一个有效的UTF-8序列,可以像第一个代码片段一样转换为字符串“Hello”。请发布一个(最小的)示例来演示这个问题。数组表示字符?您希望
result1
有什么输出<代码>“ÉWÈÌ”?可能我不确定,因为我在压缩后得到了这个数组。有什么方法可以让我看看吗?代码在我下面的答案中。根据我刚才看到的ASCII图表,给定您提供的大概ASCII值,这是正确的字符串。数据代表什么?它不是有效的UTF-8序列。也许是ISO-8859编码?Unicode码点?没有这些信息(或者不知道预期结果),我们只能猜测。@NomanAkhtar:DeflateStream从何而来?我尝试了它(必须更新为Swift 2)。然后,在更新的示例中,
膨胀的
变成了
[104、101、108、108、111]
,这是一个有效的UTF-8序列,可以像第一个代码片段一样转换为字符串“Hello”。请发布一个(最小的)示例来演示这个问题。在这里,当我再次使用以下代码获取UInt8时,输出是不同的[let data:[UInt8]=Array(result.utf8)print(data)]@NomanAkhtar:当然,因为
201、201、87、200、204
不是有效的UTF-8序列。请让我们知道数据来自何处,它代表什么,以及您期望的结果。我正在使用放气/充气器压缩压缩后的数据。我得到了这些数据,我必须以stringlet 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(“******deflatter:(deflated)”//解压缩变量充气器=充气流()变量(充气,errr)=充气器。写入(放气,刷新:true)如果错误!=nil{fatalError(“(errr!)”}print(“******膨胀:(膨胀)”)这是一个非常假设的解决方案,也不适用:将无符号八位整数映射到Unicode标量应该是一个有效的Unicode值,可以表示为单个UInt8。除了
87
,给定的值肯定不是有效的UTF-8起始字节。在这里,当我再次使用以下代码获取UInt8时,输出是不同的[let data:[UInt8]=Array(result.utf8)print(data)]@NomanAkhtar:当然,因为
201、201、87、200、204
不是有效的UTF-8序列。请让我们知道数据来自何处,它代表什么,以及您期望的结果。我正在使用放气/充气器压缩压缩后的数据。我得到了这些数据,我必须以stringlet 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(“******deflatter:(deflated)”//解压缩变量充气器=充气流()变量(充气,errr)=充气器。写入(放气,刷新:true)如果错误!=nil{fatalError(“(errr!)”}print(“******膨胀:(膨胀)”)这是一个非常假设的解决方案,也不适用:将无符号八位整数映射到Unicode标量应该是一个有效的Unicode值,可以表示为单个UInt8。除了
87
,给定的值肯定不是有效的UTF-8起始字节。