web-dev-qa-db-ja.com

NSDataとbase64文字列間の変換

NSDataとbase64文字列間の変換を行う最も簡単で最速のコードは何ですか?私はSOで多くのソリューションを読んでおり、ほとんどの場合、別のクラスの追加などに関与しています。素晴らしいソリューション here しかし、それはあまりにも複雑です。

39
aherlambang

リンクしたページの / および 提供されたNSData + Base64ファイルConclusionセクションまで下にスクロールします。私がこれまで見た中で最高のソリューションであり、非常に使いやすいです。 Cocoaについて何か学ぶことができれば、そのプロジェクトの使い方を学ぶことができます。


NSString *originalString = [NSString stringWithFormat:@"test"]; 
NSData *data = [NSData dataFromBase64String:originalString];  
NSLog([data base64EncodedString]); 

上記では、元の文字列をbase64に変換して通常のエンコードされていない文字列に戻した後、元の文字列を出力します。

57
Ryan Wersal

IOS 7から、NSDataは、このメソッドに新しいメソッドを直接提供します -base64EncodedDataWithOptions: および -base64EncodedStringWithOptions: 。 (オプションを使用すると、文字列を行で折り返す/折りたたむように指定できます。電子メールやユーザー向けのディスプレイの処理に適しています。)

41
Sixten Otto

カスタム実装は必要ありません。 NSDataからbase64を作成する方法は、他の回答に示されています。反対方向があります。 Base64文字列からNSDataへ:

 NSString *base64Encoded = @"some base64 string";
 NSData *nsdataFromBase64String = [[NSData alloc] initWithBase64EncodedString:base64Encoded options:0];
34
kraag22

私はSUDZCによって提供されたのと同じクラスを使用することになりました

実装は簡単でした最初にインポートを行いました

 #import "NSData+Base64.h"

その後、データを呼び出すことができました。

 NSData *data = [[NSData alloc] initWithData:[NSData dataWithBase64EncodedString:strData]];
1
SeeCoolGuy

または、(かなり新しい) CryptoCompatibility サンプルプロジェクトをご覧ください。base64操作用のラッパークラスがあると思います。これはMacOSのサンプルですが、ライブラリlibresolve.dylibを使用していますが、iOSでも使用できると思います(少なくともiOS7で確認できます)。

0
Stephan

さらに多くのBase64形式があることに注意してください。

たとえば、JWTは RLセーフ形式 を使用します。

0
meaning-matters