2016-07-25 28 views
0

Wie kann ich entschlüsseln Base64 Binärdatei in die Datei in swift? Wie docx ich diesen Code verwendet, aber das Rück immer gleich Null.Decode base64 zu Binärdatei in schnellen

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

Vielleicht verpasst man die '=' Zeichen am Ende des base64 String? –

Antwort

0

Sie sollen eine Basis passieren 64-Zeichenfolge in das NSData -initializer ("base64string" ist keine gültige base64, damit die initializer gibt nil zurück).

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" 

Encoding

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

Dekodierungs

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

Meine Base64-Codierung ist eine Binärdatei. Was kann ich dafür tun? –

0

In Swift 4, Sie Base64-Codierung oder Decodierung wie dies tun können:

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 
    } 

}