Ich möchte NSData in NSString konvertieren. Was ist der beste Weg, dies zu tun?
Ich verwende diesen Code, aber die letzte Zeichenfolge gibt null zurück
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
Wenn ich die Konsole sehe, wird null ausgegeben.
iphone
objective-c
ios
ipad
Mehul Mistri
quelle
quelle
nil
dann bekommen, denke ich, dass Ihre Daten keine gültige utf8-Zeichenfolge sind?Antworten:
Die Dokumentation für
NSString
sagthttps://developer.apple.com/documentation/foundation/nsstring/1416374-initwithdata
Sie sollten eine andere Codierung ausprobieren, um zu überprüfen, ob Ihr Problem dadurch behoben wird
quelle
NSASCIIStringEncoding
Verwenden Sie den folgenden Code.
quelle
NSASCIIStringEncoding
. siehe felipes Antwort für andere Kodierungen-[NSString initWithData:encoding]
wird zurückgegeben,nil
wenn die angegebene Codierung nicht mit der Codierung der Daten übereinstimmt.Stellen Sie sicher, dass Ihre Daten in UTF-8 codiert sind (oder ändern Sie NSUTF8StringEncoding in die für die Daten geeignete Codierung).
quelle
quelle
-[NSString initWithData:encoding]
ist dein Freund, aber nur, wenn du eine richtige Kodierung verwendest.quelle
Ziel c:
Schnell:
quelle
Schnell:
oder
.utf8
oder welche Kodierung auch immer angemessen istquelle
Sie sind sich des Codierungstyps der Daten nicht sicher? Kein Problem!
Ohne potenzielle Codierungstypen kennen zu müssen, bei denen falsche Codierungstypen Null / Null ergeben, sollte dies alle Ihre Grundlagen abdecken:
Getan!
Hinweis: Falls dies irgendwie fehlschlägt, können Sie Ihre NSData mit entpacken
NSKeyedUnarchiver
und dann(id)unpacked
erneut überNSKeyedArchiver
packen. Das NSData-Formular sollte base64-codierbar sein.quelle
quelle
{length = XX, bytes = 0xYYYYYYYY}
und ich nehme an, die Frage war, wie man einen codierten String aus rohen BytesZiel C enthält eine integrierte Methode zum Erkennen der Codierung einer in NSData eingebetteten Zeichenfolge.
quelle