【问题标题】:Decode base64 to binary file in swift快速将base64解码为二进制文件
【发布时间】:2016-07-25 04:26:01
【问题描述】:

如何快速将 base64 二进制文件解码为文件?如 docx 我使用了这段代码,但总是返回 nil。

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

【问题讨论】:

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

标签: swift binary base64 decode


【解决方案1】:

您应该将 base 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)
}

【讨论】:

    【解决方案2】:
    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)
    }
    

    【讨论】:

    • 我的 base64 编码是二进制文件。我能做些什么呢?
    【解决方案3】:

    在 Swift 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
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-16
      • 2017-07-14
      • 2018-03-23
      • 2020-01-03
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      相关资源
      最近更新 更多