【问题标题】:How can I convert byte array to base64 string in swift?如何快速将字节数组转换为 base64 字符串?
【发布时间】:2016-04-14 02:28:35
【问题描述】:

当我从我的 API 中获取我的 JSON 时,这就是它的样子

{
  data:[
     100,
     80,
     105,
     99,
     etc
  ]

}

如何获取这个数组并将其转回 base64 字符串,然后是 NSData,最后是 UIImage。 这是我到目前为止所拥有的。

let byteArray = todo["image"]["data"].arrayObject
var data = NSData(bytes: byteArray!, length: byteArray!.count)
var image = UIImage(data: data)

打印数据时,它打印正常,但返回 nil 为图像。

【问题讨论】:

  • 这是来自您的 API 的真实 JSON 样本吗?
  • 它前面有几个字段,但我需要弄清楚的是如何将字节数据数组转换为 NSData
  • 假设这些是十进制值,这看起来不像 base64 数据。
  • 这是我的 blob 返回数据的方式

标签: ios json swift uiimageview nsdate


【解决方案1】:

您是否尝试过遍历数组并从其元素构建字符串,使用 base64 编码/解码 api 从字符串返回到 NSData?类似的东西(我是用 iPad 写的,所以无法查看)。

var encodedString=""
for smallString in byteArray {
   encodedString += String(smallString)
}
let data = NSData(base64EncodedString: base64Encoded, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
var image = UIImage(data: data)

【讨论】:

  • 编码字符串是什么意思。我所拥有的只是一个带有字节的数据数组。这就是我的 API 返回给我的内容
  • 你数组的内容不是base 64编码图像的字符串表示吗?
  • 没有我的 API 将编码的 base 64 字符串存储为 BLOB,但 blob 将数据作为字节数组返回
  • 例如这是一张base64编码的图像:iVBORw0KGgoAA 这是一个C字节数组 byte[] bytes = { 3, 10, 8, 25 };在这里查看stackoverflow.com/questions/11860830/byte-array-to-nsdata
【解决方案2】:
    let byteArray = todo["image"]["data"].arrayObject         
    let string = String(bytes: byteArray, encoding: .utf8)
    let encodedImageData = string
    let imageData = NSData(base64Encoded: encodedImageData!)
    let image = UIImage(data: imageData! as Data)

【讨论】:

    猜你喜欢
    • 2017-05-21
    • 2021-08-23
    • 2016-10-21
    • 2017-03-16
    • 2012-07-21
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 2011-09-21
    相关资源
    最近更新 更多