J'ai encodé text ( NSString
) en utilisant la NSData
nouvelle API de classe qui est ajoutée dans iOS7.
en utilisant ceci
- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding;
voici mon code
NSString *base64EncodedString = [[myText dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0];
NSLog(@"%@", base64EncodedString);
Je cherche à le décoder
m_EncodeText
: s'il vous plaît arrêtezbase64EncodedStringWithOptions:
?Réponses:
Swift 3+
let plainString = "foo"
Codage
let plainData = plainString.data(using: .utf8) let base64String = plainData?.base64EncodedString() print(base64String!) // Zm9v
Décodage
if let decodedData = Data(base64Encoded: base64String!), let decodedString = String(data: decodedData, encoding: .utf8) { print(decodedString) // foo }
Swift <3
let plainString = "foo"
Codage
let plainData = plainString.dataUsingEncoding(NSUTF8StringEncoding) let base64String = plainData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) print(base64String!) // Zm9v
Décodage
let decodedData = NSData(base64EncodedString: base64String!, options: NSDataBase64DecodingOptions(rawValue: 0)) let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding) print(decodedString) // foo
Objectif c
NSString *plainString = @"foo";
Codage
NSData *plainData = [plainString dataUsingEncoding:NSUTF8StringEncoding]; NSString *base64String = [plainData base64EncodedStringWithOptions:0]; NSLog(@"%@", base64String); // Zm9v
Décodage
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0]; NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding]; NSLog(@"%@", decodedString); // foo
la source
kNilOptions
est égale à 0, ce qui est sans doute plus lisible que l'utilisation de 0 pour les options.kNilOptions
est défini dansMacTypes.h
lequel se trouve un en-tête OSX hérité, donc je n'aime pas l'utiliser, car je pense que cet en-tête devrait être complètement supprimé du SDK iOS. Quoi qu'il en soit, vous avez raison de dire que c'est très lisible, alors n'hésitez pas à l'utiliser.NSDataBase64DecodingOptions.IgnoreUnknownCharacters
j'ai eu ce problèmeDans le cas où vous souhaitez écrire du code de secours, le décodage à partir de base64 est présent dans iOS depuis le tout début, en mettant en garde
NSURL
:NSURL *URL = [NSURL URLWithString: [NSString stringWithFormat:@"data:application/octet-stream;base64,%@", base64String]]; return [NSData dataWithContentsOfURL:URL];
la source