【问题标题】:Convert string to base64 in Swift 3在 Swift 3 中将字符串转换为 base64
【发布时间】:2017-03-07 04:28:44
【问题描述】:
let strsize = 10_000_000
let tries = 100
var longstring:String = "a"

for i in 1...strsize {
longstring += "a"
}

for i in 1..<2 {
let basestring = NSData(base64EncodedString: longstring, options: .IgnoreUnknownCharacters)
print(basestring)
}

在命令提示符下编写代码。为 Swift 3 编写的正确代码是什么,我得到了 use of unresolved identifier NSData 。大多数关于将字符串编码为 base64 的教程都不起作用。

这适用于您在 Linux 或 Mac 上吗? http://studyswift.blogspot.sg/2016/03/convert-nsdatauint8-to-base64-in-swift.html

【问题讨论】:

  • 在 Swift 3 中,NSData 的大多数用法都转换为名为 Data 的新值类型。做:Data(base64Encoded: longstring, options: .ignoreUnknownCharacters)
  • @ozgur:没有重命名,至少在 Apple 平台上没有,两者仍然存在,DataNSData 的“Swift 覆盖类型”。但在 Linux 上可能会有所不同。
  • 如果你得到unresolved identifier你忘了import Foundation
  • 它是否可以在具有 import Foundation 或任何分辨率的 Linux 上工作?

标签: swift string swift3 base64


【解决方案1】:

这个字符串扩展可以提供帮助。

extension String {
    //Base64 decode
    func fromBase64() -> String? {
            guard let data = Data(base64Encoded: self) else {
                    return nil
            }
            return String(data: data, encoding: .utf8)
    }

    //Base64 encode
    func toBase64() -> String {
            return Data(self.utf8).base64EncodedString()
    }
 }

如何使用。

let str = "Hello World"
str.toBase64().fromBase64()

【讨论】:

    【解决方案2】:

    改用这个:

    let longstring = "test123"
    if let data = (longstring).data(using: String.Encoding.utf8) {
        let base64 = data.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))
        print(base64)// dGVzdDEyMw==\n
    }
    

    【讨论】:

    • 嗯...你用的是Swift3.0吗?
    • 为什么有options: NSData.Base64EncodingOptions(rawValue: 0)?如果您想要空选项集,您可以只使用[],它适用于所有OptionSet 类型。更重要的是,还有.base64EncodedString(),不需要指定选项。
    • 是的,标题已注明,看来我需要import Foundation
    • 除非我导入它,否则它不会编译。好吧,计划提交测试以进行基准测试,让它更容易在 Linux 上运行,目前在 Mac 上。
    • 非常感谢,亲爱的兄弟,你救了我的命。 thnx thx thx
    【解决方案3】:

    在 Swift 4.2 和 Xcode 10.1 中

    //Base64 encoding
    let data = combinedString.data(using: .utf8)//Here combinedString is your string
    let encodingString = data?.base64EncodedString()
    print(encodingString!)
    
    // OR Single line of code
    let encodingString = combinedString.data(using: .utf8)?.base64EncodedString()//Here combinedString is your string
    print(encodingString!)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多