iOS 7+ 中的 Base64 解码

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19088231/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 01:52:01  来源:igfitidea点击:

Base64 Decoding in iOS 7+

iosobjective-cswiftios7ios8

提问by Sandeep Khade

I have Encoded text(NSString) using NSDataClass new API which is Added in iOS7.

NSString使用NSDataiOS7 中添加的 Class new API对文本()进行了编码。

using this

使用这个

- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding;  

here is my code

这是我的代码

NSString *base64EncodedString = [[myText dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0];

NSLog(@"%@", base64EncodedString);

I am looking to decode it

我正在寻找解码它

回答by Gabriele Petronella

Swift 3+

斯威夫特 3+

let plainString = "foo"

Encoding

编码

let plainData = plainString.data(using: .utf8)
let base64String = plainData?.base64EncodedString()
print(base64String!) // Zm9v

Decoding

解码

if let decodedData = Data(base64Encoded: base64String!),
   let decodedString = String(data: decodedData, encoding: .utf8) {
  print(decodedString) // foo
}


Swift < 3

斯威夫特 < 3

let plainString = "foo"

Encoding

编码

let plainData = plainString.dataUsingEncoding(NSUTF8StringEncoding)
let base64String = plainData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
print(base64String!) // Zm9v

Decoding

解码

let decodedData = NSData(base64EncodedString: base64String!, options: NSDataBase64DecodingOptions(rawValue: 0))
let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding)
print(decodedString) // foo


Objective-C

目标-C

NSString *plainString = @"foo";

Encoding

编码

NSData *plainData = [plainString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [plainData base64EncodedStringWithOptions:0];
NSLog(@"%@", base64String); // Zm9v

Decoding

解码

NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];
NSLog(@"%@", decodedString); // foo 


回答by Tommy

In case you want to write fallback code, decoding from base64 has been present in iOS since the very beginning by caveat of NSURL:

如果您想编写回退代码,从一开始就存在于 iOS 中的 base64 解码,警告NSURL

NSURL *URL = [NSURL URLWithString:
      [NSString stringWithFormat:@"data:application/octet-stream;base64,%@",
           base64String]];

return [NSData dataWithContentsOfURL:URL];