iOS開発-ベース:Base 64を使用してNSDataとNSStringオブジェクトをコーデック

3003 ワード

変換元:http://itony.me/488.html
概要:
iOS 7の正式版が発売されるにつれて、AppleはBase 64コーデックを使用するサポートを追加しました.この論文では、Base 64を使用してNSDataおよびNSStringオブジェクトを符号化する2つの例を示します.
まず、Base 64によってエンコードされたNSDataオブジェクトから生成されるNSStringオブジェクトを作成します.Base 64を使用してNSString復号化を行うと、NSDataオブジェクトに復元されます.NSStringの符号化と復号化後の内容を示し,すべてのプロセスに誤りがないことを保証する.
第2の例では、NSDataは、Base 64から/へ符号化および復号される.この例は、NSDataオブジェクトがある場合、Base 64符号化になる必要がある場合、またはBase 64符号化NSDataオブジェクトを復号する必要がある場合に適しています(理由にかかわらず).
Base 64符号化NSStringオブジェクトの作成
NSDataオブジェクトのBase 64符号化を開始し、NSStringオブジェクトを返します.
// Create NSData object
NSData *nsdata = [@"iOS Developer Tips encoded in Base64"
  dataUsingEncoding:NSUTF8StringEncoding];
 
// Get NSString from NSData object in Base64
NSString *base64Encoded = [nsdata base64EncodedStringWithOptions:0];
 
// Print the Base64 encoded string
NSLog(@"Encoded: %@", base64Encoded);
 
// Let's go the other way...
 
// NSData from the Base64 encoded str
NSData *nsdataFromBase64String = [[NSData alloc]
  initWithBase64EncodedString:base64Encoded options:0];
 
// Decoded NSString from the NSData
NSString *base64Decoded = [[NSString alloc] 
  initWithData:nsdataFromBase64String encoding:NSUTF8StringEncoding];
NSLog(@"Decoded: %@", base64Decoded);

2行目では復号化のためのNSDataを作成した.6行目はこのデータを符号化し、NSStringオブジェクトを返します.
別の方法に戻ると、1つのBase 64で符号化されたNSStringオブジェクトをNSDataオブジェクトに変換することは非常に簡単であり、initWithBase 64 EncodedStringを呼び出し、Base 64で符号化されたNSStringを入力パラメータとして使用するだけである(14-15行).
18-20行では、Base 64 NSDataからNSStringに復元する方法(最初の例の文字列)を示します.
出力は次のように見えます.
Encoded:
 aU9TIERldmVsb3BlciBUaXBzIGVuY29kZWQgaW4gQmFzZTY0


Decoded:
 iOSDeveloperTipsencodedinBase64

Base 64を使用してNSDataオブジェクトをエンコード
NSDataオブジェクトをBase 64に直接符号化する方法と、NSDataに直接復号(復元)する方法を見てみましょう.
// Create NSData object  
NSData *dataTake2 =   
  [@"iOS Developer Tips" dataUsingEncoding:NSUTF8StringEncoding];  
   
// Convert to Base64 data  
NSData *base64Data = [dataTake2 base64EncodedDataWithOptions:0];  
NSLog(@"%@", [NSString stringWithUTF8String:[base64Data bytes]]);  
   
// Do something with the data  
// ...  
   
// Now convert back from Base64  
NSData *nsdataDecoded = [base64Data initWithBase64EncodedData:base64Data options:0];  
NSString *str = [[NSString alloc] initWithData:nsdataDecoded encoding:NSUTF8StringEncoding];  
NSLog(@"%@", str); 

2行目でNSDataテストオブジェクトを作成しました.6行目ではbase 64 EncodedDataWithOptionsメソッドを呼び出し、データをBase 64符号化します.随州NSStringを使用してデータを変換し、後で復元したデータの内容が一致しているかどうかを確認するために表示しました.
このBase 64 NSDataを復号することは、呼び出し方法initWithBase 64 EncodedDataにほかならず、符号化されたNSDataを入力パラメータとする(13行目).もう一度、NSStringを作成してテストしました.
拡張読書
NSData class reference Base 64を使用してNSDataを符号化および復号する方法に関する情報が含まれている.
NSString class reference NSStringでの符号化と復号化の微妙な違いを述べた.
コマンドラインの下で符号化および復号化データをデバッグするとき、私が見つけたこれらの資料は、base 64 OS X terminal utility を記述するMac OS Xドキュメントに役立つかもしれません.