我有以下base64编码串,我需要使用夫特为base64对其进行解码:问题BASE64特定字符串进行解码
KimHser2RvFf9RPjajWO4K/odT51hTlISwMKNIfPUC + gXYZKNjGDCvHEom ++ 6liXNq6PkStnpzMKBsTk + tIpJA ==
这里没有换行符,StackOverflow只是包装字符串。我已经尝试了很多方法来base64解码这个。但是,当我尝试将NSData转换为NSString对象时,结果始终为零。如果我将编码更改为ASCII或UTF16,我会收到一个结果,所以我认为Swift无法识别UTF8格式的NSData。但是,如果我base 64在C#中解码相同的字符串,则UTF8起作用,并且Base64解码工作。所以我很积极,由于我缺乏Swift的经验,我错过了一步。
这里是我的最新尝试:
import Foundation
extension String {
// MARK: Base64 encode
func base64Encode() -> String {
let data : NSData = self.dataUsingEncoding(NSUTF8StringEncoding)!
return data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
}
// MARK: Base64 decode
func base64Decode() -> String {
let decodedData = NSData(base64EncodedString: self, options: NSDataBase64DecodingOptions(rawValue: 0))
let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding)
return decodedString as! String
}
}
我敢肯定这件事情很容易。但是,这是我在Swift中的第一个应用程序,我仍然在学习。
任何帮助,非常感谢。
谢谢!
'decodedData'是'<2a2987b1 ... fad22924>'这绝对是*不*有效的UTF-8序列。你期望什么结果? –
我想实现Azure共享访问签名从iOS查询我的Azure存储服务。这是他们给我的访问密钥(别担心,我已经重置了我的密钥)。但是,当它们尝试将base64解码到NSString中时,它们都不在Swift中工作,因此我可以使用解码字符串作为HMACSHA256的密钥来生成共享访问签名。 – Josh
我对Azure和Azure签名算法的详细信息一无所知。但我强烈地认为,您可以直接使用* data *作为HMACSHA256的关键字,而不是先将其转换为字符串。 –