快速从 Base64 格式解码

Posted

技术标签:

【中文标题】快速从 Base64 格式解码【英文标题】:Decode from Base64 format in swift 【发布时间】:2019-06-26 08:34:15 【问题描述】:

我正在尝试解码加密密钥。我尝试在线解码我得到以下结果 它工作正常。

KEY : oPvvNMsiOd//bheeboamB65AXi8r+go9NLz2rTPEJRU=
decode values : 4"9nn@^/+
=43%

当我尝试这段代码时,它出现了致命错误

let base64Encoded = "oPvvNMsiOd//bheeboamB65AXi8r+go9NLz2rTPEJRU="
let decodedData = Data(base64Encoded: base64Encoded)!
let decodedString = String(data: decodedData, encoding: .utf8)!
print(decodedString)

我尝试了很多方法,我必须从base64解码。

【问题讨论】:

有什么问题?它不起作用,比如错误的值或只是不会编译或其他东西? @MohmmadS 在我尝试时遇到致命错误我需要得到这个 4"9nn@^/+ 解码后的数据不是有效的UTF-8字符串... @Martin 感谢重播,我怎样才能转换成字符串 当我尝试上网时,我得到了结果 【参考方案1】:

最后我找到了解决我的问题的方法。

    extension Character 
        var isAscii: Bool 
            return unicodeScalars.allSatisfy  $0.isASCII 
        
    
    extension RangeReplaceableCollection where Self: StringProtocol 
        var asciiPrintable: Self 
            return filter  $0.isAscii 
        
    
    class ViewController: UIViewController 
        override func viewDidLoad() 
            super.viewDidLoad()
            let base64Encoded = "oPvvNMsiOd//bheeboamB65AXi8r+go9NLz2rTPEJRU="
            let decodedData = Data(base64Encoded: base64Encoded, options: [])
            var decodedString: String? = nil
            if let decodedData = decodedData 
                decodedString = String(data: decodedData, encoding: .ascii)
                print(decodedString)
                let ascivalue = decodedString!.asciiPrintable
                print(ascivalue)
            
        
        

Output: 

Optional(" ûï4Ë\"9ßÿn\u17n¦\u07®@^/+ú\n=4¼ö­3Ä%\u15")

4"9nn@^/+
=43%

【讨论】:

以上是关于快速从 Base64 格式解码的主要内容,如果未能解决你的问题,请参考以下文章

Base64解码没有结果

如何在打字稿快递服务器中将字符串解码/编码为base64

解码 Base64urlUInt 编码的值

如何将base64音频数据解码为wav格式

编码格式转换--base64 格式的解码和编码

Python 对图像进行base64编码及解码读取为numpyopencvmatplot需要的格式