gpt4 book ai didi

ios - 将 base64URL 解码为 base64——Swift

转载 作者:可可西里 更新时间:2023-11-01 03:06:35 24 4
gpt4 key购买 nike

我还没有找到正确的方法来快速将 base64URL 解码为 base64 格式。

根据 base64url to base64 hJQWHABDBjoPHorYF5xghQ(base64URL) 应该是 hJQWHABDBjoPHorYF5xghQ==(base64)。这里可能会有更多差异。

stackoverflow 上没有解决方案。

最佳答案

“base64url”在两个方面不同于标准的Base64编码:

  • 索引 62 和 63 使用了不同的字符(-_ 代替+/)
  • 没有强制填充 = 字符来使字符串长度四的倍数。

(比较 https://en.wikipedia.org/wiki/Base64#Variants_summary_table )。

这里是一个可能的转换函数:

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>
}

为了完整起见,这将是相反的转换:

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
}

关于ios - 将 base64URL 解码为 base64——Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43499651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com