2016-05-04 18 views
0

Ich konvertiere folgende UInt8-Array zu String in swift und bekommen nil jedes Mal. Was ich tun sollte ?? Bitte hilf mir.Umwandlung von UInt8 zu String in swift

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

Edited: I InflateStream/DeflateStream bin mit meinen Daten zu komprimieren. Der Rückgabetyp von deflateStream ist UInt8. Ich habe versucht, diesen Wert in eine Zeichenfolge zu konvertieren, so dass ich es an den Server senden kann.

Dies ist mein Code

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

Das Array repräsentiert Zeichen? Welche Ausgabe erwartest du * für 'result1'? "" ÉÉW ""? – nhgrif

+0

vielleicht bin ich mir nicht sicher, weil dieses Array ich nach der Komprimierung bekommen werde. Alle Möglichkeiten, wie Sie das haben, können Sie mir bitte zeigen? –

+0

Der Code ist in meiner Antwort unten. Nach einem ASCII-Chart, das ich gerade angeschaut habe, ist das die korrekte Zeichenkette mit den vermutlich von Ihnen angegebenen ASCII-Werten. – nhgrif

Antwort

4

eine Reihe von UInt8 Gegeben: wir

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

Und dann:

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

Wir durch die Abbildung dieser in ein Array von Character beginnen Rufen Sie einfach den String-Konstruktor auf, dererwartet:

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

hier, wenn ich wieder bekomme UInt8 mit folgendem Code die Ausgabe kommt anders [lassen Sie Daten: [UInt8] = Array (result.utf8) drucken (Daten)] –

+0

@NomanAkhtar: Natürlich, weil '201, 201, 87, 200, 204 'ist * keine * gültige UTF-8-Sequenz. Bitte teilen Sie uns mit, woher die Daten stammen, was sie darstellt und welches Ergebnis Sie erwarten. –

+0

im Deflator/inflater unter Verwendung von Daten nach der Kompression zu komprimieren ich diese Daten habe ich habe diese Daten in Form von String –