2016-05-04 7 views
0

私は次のUInt8配列を素早くStringに変換し、毎回ゼロになるようにしています。私を助けてください。すぐにUInt8から文字列への変換

[ 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です。この値を文字列に変換してサーバーに送信できるようにしようとしました。

これは私のコード

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)") 
+0

配列は文字を表しますか?あなたは 'result1'に対してどんな出力を期待していますか? ''ÉwÈÌ "'? – nhgrif

+0

私はこの配列私はcompression.anyどのようにあなたがこれを得た後に取得しているので、私はあなたが私を見せてくれますか? –

+0

コードは私の答えです。私が見たASCIIチャートによれば、それはあなたが提供したASCII値を与えられた正しい文字列です。 – nhgrif

答えて

4

です:

let characters = letters.map { Character(UnicodeScalar($0)) } 

そして、我々:我々はCharacterの配列にこれをマッピングすることによって開始することができます

let letters: [UInt8] = [201, 201, 87, 200, 204] 

をを期待しているStringコンストラクタに電話するだけです:

let result = String(Array(characters)) 
+0

ここにもう一度、次のコードを使用してUInt8を取得すると、出力は次のようになります[data:[UInt8] = Array(result.utf8)print(data)] –

+0

@NomanAkhtar: 201、87、200、204'は有効なUTF-8シーケンスではありません。データがどこから来て、どのようなもので、どのような結果が期待されるのかを教えてください。 –

+0

私はデフレーター/インフレータを使用して圧縮後にデータを圧縮します。このデータは文字列の形でこのデータを送信する必要があります –

関連する問題