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

swiftserver side programmingprogramming更新于 2025/5/31 6:22:17

在 Swift 中,您可以使用内置的 Data 类型及其方法 base64EncodedString() 将字符串编码为 Base64。在 iOS 应用程序中,您可能需要将字符串编码为 base64,主要是在网络请求和响应中。大多数情况下,您需要将字符串编码为 base64,反之亦然。让我们学习如何使用 Swift 将字符串编码为 Base64。

示例

在此示例中,我们将使用以下步骤将字符串编码为 base64 −

  • 步骤 1 − 在此步骤中,我们将使用 data(using: .utf8) 方法将字符串转换为 Data 对象。在此方法中,我们传递 utf8 作为编码参数,因为这是最常见的编码方法。

  • 步骤 2 - 在此步骤中,我们调用 base64EncodedString 方法将数据对象转换为 Base64 编码的字符串。请记住,data(using:) 方法返回一个可选数据对象。您可以使用可选绑定来解包它。

import Foundation
let stringToEncode = "This is a sample string to encode in Base64 in Swift."
if let data = stringToEncode.data(using: .utf8) {
   let base64String = data.base64EncodedString()
   print(base64String)
}

输出

VGhpcyBpcyBhIHNhbXBsZSBzdHJpbmcgdG8gZW5jb2RlIGluIEJhc2U2NCBpbiBTd2lmdC4=

示例

将字符串编码为 Base64、将其解码回其原始字符串形式以及处理可能发生的错误的另一个示例 -

  • 步骤 1 - 在第一步中,我们将定义一个名为"originalString"的输入字符串变量,并使用 data.base64EncodedString() 方法将其编码为 Base64。与之前一样,我们执行了两个步骤来编码输入字符串。

  • 步骤 2 - 解码输入字符串后。我们将使用 Data(base64Encoded:) 初始化方法将 Base64 字符串转换为 Data 对象。

  • 步骤 3 − 如果初始化程序返回非零 Data 对象,我们使用 String(data:encoding:) 初始化程序从 Data 对象创建一个字符串。

import Foundation
let originalString = "这是在 Swift 中使用 Base64 编码的示例字符串。"
// 将字符串编码为 Base64
if let data = originalString.data(using: .utf8) {
       
   let base64String = data.base64EncodedString()
   print("Base64-encoded string: \(base64String)")
       
   // 将 Base64 编码的字符串解码回原始字符串
   if let decodedData = Data(base64Encoded: base64String) {
      if let decodedString = String(data: decodedData, encoding: .utf8) {
         print("Decoded string: \(decodedString)")
      } else {
         print("Error decoding data: could not convert decoded data to string.")
      }
   } else {
      print("Error decoding base64-encoded string: could not create decoded data.")
   }
} else {
   print("Error encoding string: could not create data.")
}

输出

Base64-encoded string: VGhpcyBpcyBhIHNhbXBsZSBzdHJpbmcgdG8gZW5jb2RlIGluIEJhc2U2NCBpbiBTd2lmdC4=
Decoded string: This is a sample string to encode in Base64 in Swift.

但是,如果解码的数据无法转换为字符串,或者 Base64 编码的文本不正确,则解码可能不会成功。我们使用可选绑定来管理这些情况,并在任何操作出错时打印错误消息。

为了保证数据正确地转换为字符串形式和从字符串形式转换,应该注意,我们在使用 Data 和 String 初始化器时指定 .utf8 编码。

推荐方法

Swift 中的扩展功能更强大。我们将创建一个 String 扩展以及一些用于编码和解码字符串的方法。这是一个扩展 −

import Foundation
extension String {
   func base64Encoded() -> String? {
      data(using: .utf8)?.base64EncodedString()
   }
   func base64Decoded() -> String? {
      guard let data = Data(base64Encoded: self) else { return nil }
      return String(data: data, encoding: .utf8)
   }
}

示例

以下是使用上述扩展的示例

let originalString = "This is a sample string to encode in Base64 in Swift."
if let encodedString = originalString.base64Encoded() {
   print("Encoded String: \(encodedString)")
    
   if let decodedString = encodedString.base64Decoded() {
      print("Decoded String: \(decodedString)")
   }
}

输出

Encoded String: VGhpcyBpcyBhIHNhbXBsZSBzdHJpbmcgdG8gZW5jb2RlIGluIEJhc2U2NCBpbiBTd2lmdC4=
Decoded String: This is a sample string to encode in Base64 in Swift.

在上面的例子中,我们创建了一个 String 扩展来对字符串进行编码和解码。它看起来整洁有序。您可以在整个应用程序中使用此扩展。在代码重复的情况下,没有必要在任何地方都写它。

结论

使用 Data 类型及其 base64EncodedString() 方法,在 Swift 中将字符串编码为 Base64 很简单。将 Base64 编码的字符串解码回其原始形式需要使用 Data(base64Encoded:) 初始化程序从编码字符串建立 Data 对象,然后使用 String(data:encoding:) 初始化程序从 Data 对象创建字符串。

使用可选绑定并查找 nil 值来管理潜在的编码或解码问题至关重要。在将数据转换为字符串形式或从字符串形式转换时,使用正确的编码至关重要;字符串通常使用 .utf8 编码进行编码。



相关文章



关于我们 | 隐私条款 | 学习路线
返回顶部