Decode base64URL to base64 -- Swift(将 base64URL 解码为 base64 -- Swift)
问题描述
我还没有找到正确的方法来快速将 base64URL 解码为 base64 格式.
I haven't found properly way how to decode base64URL to base64 format in swift.
根据base64url转base64 hJQWHABDBjoPHorYF5xghQ
(base64URL)应该是 hJQWHABDBjoPHorYF5xghQ==
(base64).这里可能会有更多差异.
According to base64url to base64 hJQWHABDBjoPHorYF5xghQ
(base64URL) should be hJQWHABDBjoPHorYF5xghQ==
(base64). Here could be more differences.
stackoverflow 上没有解决方案.
There are no solutions on stackoverflow.
推荐答案
base64url"与标准Base64编码有两个不同:
"base64url" differs from the standard Base64 encoding in two aspects:
- 索引 62 和 63 使用不同的字符(
-
和_
+
和/
) - 没有强制填充
=
字符来使字符串长度四的倍数.
- different characters are used for index 62 and 63 (
-
and_
instead of+
and/
) - no mandatory padding with
=
characters to make the string length a multiple of four.
(比较 https://en.wikipedia.org/wiki/Base64#Variants_summary_table).
这是一个可能的转换函数:
Here is a possible conversion function:
func base64urlToBase64(base64url: String) -> String {
var base64 = base64url
.replacingOccurrences(of: "-", with: "+")
.replacingOccurrences(of: "_", with: "/")
if base64.characters.count % 4 != 0 {
base64.append(String(repeating: "=", count: 4 - base64.characters.count % 4))
}
return base64
}
例子:
let base64url = "hJQWHABDBjoPHorYF5xghQ"
let base64 = base64urlToBase64(base64url: base64url)
print(base64) // hJQWHABDBjoPHorYF5xghQ==
if let data = Data(base64Encoded: base64) {
print(data as NSData) // <8494161c 0043063a 0f1e8ad8 179c6085>
}
为了完整起见,这将是相反的转换:
For the sake of completeness, this would be the opposite conversion:
func base64ToBase64url(base64: String) -> String {
let base64url = base64
.replacingOccurrences(of: "+", with: "-")
.replacingOccurrences(of: "/", with: "_")
.replacingOccurrences(of: "=", with: "")
return base64url
}
<小时>
Swift 4 更新:
func base64urlToBase64(base64url: String) -> String {
var base64 = base64url
.replacingOccurrences(of: "-", with: "+")
.replacingOccurrences(of: "_", with: "/")
if base64.count % 4 != 0 {
base64.append(String(repeating: "=", count: 4 - base64.count % 4))
}
return base64
}
这篇关于将 base64URL 解码为 base64 -- Swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 base64URL 解码为 base64 -- Swift
基础教程推荐
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01