How can I decode base64 binary file to the file in swift?like docx I used this code but return always nil.
if let decodedData = NSData(base64EncodedString:"base64string" , options:.Ig(rawValue: 0)),
let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding) {
print(decodedString)
}
You are supposed to pass a base 64-string into the NSData
-initializer ( "base64string"
is not a valid base64, hence the initializer returns 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)
}
let myString = "my data"
Encoding
let plainData = (myString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
let base64String = plainData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!)
println(base64String)
Decoding
if let decodedData = NSData(base64EncodedString: base64String, options:NSDataBase64DecodingOptions.fromRaw(0)!) {
let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding)
println(decodedString)
}
In Swift 4, you can do base64 encoding or decoding like this:
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
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.