首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Swift中将字符串编码为Base64?

如何在Swift中将字符串编码为Base64?
EN

Stack Overflow用户
提问于 2015-03-31 17:27:45
回答 7查看 166.9K关注 0票数 141

我想把一个字符串转换成Base64。我在几个地方找到了答案,但它在Swift中不再起作用。我使用的是Xcode 6.2。我相信答案可能是在以前的Xcode版本中工作,而不是Xcode 6.2。

有没有人可以指导我在Xcode6.2中做这件事?

我找到的答案是这样的,但它在我的Xcode版本中不起作用:

代码语言:javascript
复制
var str = "iOS Developer Tips encoded in Base64"
println("Original: \(str)")

// UTF 8 str from original
// NSData! type returned (optional)
let utf8str = str.dataUsingEncoding(NSUTF8StringEncoding)

// Base64 encode UTF 8 string
// fromRaw(0) is equivalent to objc 'base64EncodedStringWithOptions:0'
// Notice the unwrapping given the NSData! optional
// NSString! returned (optional)
let base64Encoded = utf8str.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!)
println("Encoded:  \(base64Encoded)")

// Base64 Decode (go back the other way)
// Notice the unwrapping given the NSString! optional
// NSData returned
let data = NSData(base64EncodedString: base64Encoded, options:   NSDataBase64DecodingOptions.fromRaw(0)!)

// Convert back to a string
let base64Decoded = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Decoded:  \(base64Decoded)")

参考:http://iosdevelopertips.com/swift-code/base64-encode-decode-swift.html

EN

回答 7

Stack Overflow用户

发布于 2015-09-11 05:43:55

你可以只做一个简单的扩展,比如:

代码语言:javascript
复制
import UIKit

// MARK: - Mixed string utils and helpers
extension String {


    /**
    Encode a String to Base64

    :returns: 
    */
    func toBase64()->String{

        let data = self.dataUsingEncoding(NSUTF8StringEncoding)

        return data!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))

    }

}

iOS 7及更高版本

票数 23
EN

Stack Overflow用户

发布于 2015-09-29 18:09:15

经过彻底的研究,我找到了解决方案。

编码

代码语言:javascript
复制
    let plainData = (plainString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
    let base64String =plainData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!)
    println(base64String) // bXkgcGxhbmkgdGV4dA==

解码

代码语言:javascript
复制
    let decodedData = NSData(base64EncodedString: base64String, options:NSDataBase64DecodingOptions.fromRaw(0)!)
    let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding)    
    println(decodedString) // my plain data

有关此http://creativecoefficient.net/swift/encoding-and-decoding-base64/的更多信息

票数 14
EN

Stack Overflow用户

发布于 2016-09-29 03:28:12

Swift 3或4

代码语言:javascript
复制
let base64Encoded = Data("original string".utf8).base64EncodedString()
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29365145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档