2016-07-25 107 views
0

如何解码base64二进制文件到swift文件?像docx 我使用这段代码但总是返回nil。解码base64到二进制文件在swift中

if let decodedData = NSData(base64EncodedString:"base64string" , options:.Ig(rawValue: 0)), 
       let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding) { 
       print(decodedString) 
      } 
+0

也许你错过了base64字符串末尾的'='字符? –

回答

0

你应该到64字符串传递的基座到NSData -initializer("base64string"是不是一个有效的base64,因此初始化返回nil)。

let stringToEncode = "testString" 
let stringData = stringToEncode.dataUsingEncoding(NSUTF8StringEncoding) 

let base64String = stringData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) 

if let decodedData = NSData(base64EncodedString:base64String , options: .IgnoreUnknownCharacters), 
    let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding) { 
    print(decodedString) 
} 
0
let myString = "my data" 

编码

let plainData = (myString as NSString).dataUsingEncoding(NSUTF8StringEncoding) 
let base64String = plainData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!) 
println(base64String) 

解码

if let decodedData = NSData(base64EncodedString: base64String, options:NSDataBase64DecodingOptions.fromRaw(0)!) { 
let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding)  
println(decodedString) 
} 
+0

我的base64编码是二进制文件。我能为此做些什么? –

0

在夫特4,可以执行base64编码或解码这样的:

extension Data { 

    init?(base64String: String) { 
     self.init(base64Encoded: base64String) 
    } 

    var base64String: String { 
     return self.base64EncodedString() 
    } 

} 

extension String { 

    init?(base64String: String) { 
     guard let data = Data(base64String: base64String) else { 
      return nil 
     } 
     self.init(data: data, encoding: .utf8) 
    } 

    var base64String: String { 
     return self.data(using: .utf8)!.base64String 
    } 

}