2010-11-27 4 views
1

Ich muss einige rohe Bytes von NSData Objekt in eine NSString (im Grunde eine Null-Codierung) speichern, aber ich bin mir nicht sicher, wie dies zu tun ist. Offensichtlich wäre das Zuweisen einer ungeeigneten 8-Bit-Codierung schlecht. NSASCIIStringEncoding ist nicht OK, weil die Dokumentation sagt "Strikte 7-Bit-ASCII-Codierung innerhalb von 8-Bit-Zeichen; nur ASCII-Werte 0 ... 127." aber ich brauche den vollen Bereich von 0x0 - 0xFF.Welche Codierung mit rohen Bytes in einem NSString zu verwenden

Base64 Codierung ist keine akzeptable Lösung.

+0

Es könnte helfen, ein bisschen mehr Kontext zu kennen. Woher kamen die Daten? Wo versuchst du es als String zu senden? – grahamparks

Antwort

2

Grundsätzlich nicht.

Ein NSString ist für Strings von gültig codierten String-Daten; normalerweise UTF8 oder UTF16. NSData ist für beliebige binäre Daten.

Wenn Sie rohe Bytes in einem NSString speichern möchten, müssen Sie sie kodieren und base64 ist eines der häufigsten Mittel dazu.

+0

Natürlich liefert @bbum wieder! :) –

+0

Also bedeutet dies, dass wir Base64 codieren und die NSData dekodieren und die resultierenden NSData zu Nstring konvertieren müssen. Habe ich recht? – Warrior

+0

Yup - das würde funktionieren. Generell zu vermeiden, es sei denn, Sie müssen. – bbum