在Swift 3中将字符串转换为base64

5
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,但出现了“未解析的标识符NSData”的错误。大多数将字符串编码为base64的教程都无法正常工作。

这个方法在您的Linux或Mac上是否有效? http://studyswift.blogspot.sg/2016/03/convert-nsdatauint8-to-base64-in-swift.html


1
在Swift 3中,大多数使用NSData的情况都被转换为名为Data的新值类型。请执行:Data(base64Encoded: longstring, options: .ignoreUnknownCharacters) - Ozgur Vatansever
1
@ozgur:至少在苹果平台上没有重命名,两者仍然存在,DataNSData的“Swift覆盖类型”。但在Linux上可能会有所不同。 - Martin R
2
如果你得到了 未解决的标识符 错误,那么你可能忘记了 import Foundation - vadian
它能在Linux上使用import Foundation或任何分辨率吗? - James Lei
3个回答

14

请使用这个替代:

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
}

2
嗯...你在使用Swift3.0吗? - Rashwan L
1
为什么要使用 options: NSData.Base64EncodingOptions(rawValue: 0)?如果您想要一个空的选项集,只需使用 [] 即可,并且它适用于所有 OptionSet 类型。而且,甚至还有 .base64EncodedString(),它不需要指定选项。 - user28434'mstep
是的,正如标题所示,看起来我需要 import Foundation - James Lei
1
除非我导入那个,否则它不会编译。好的,计划将测试提交给基准测试,并且在Linux上运行会更容易,目前在Mac上。 - James Lei
1
非常感谢,亲爱的兄弟,你救了我的命。谢谢,谢谢,谢谢。 - reza_khalafi

0

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

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()

-1

在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!)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接