在Swift中如何将字节数组转换成Base64字符串?

3
当我从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)

打印数据时,数据正常显示,但图片返回空值。


你的API返回的JSON示例是真实的吗? - ryantxr
它有一些字段,但我只需要弄清楚如何将数据字节数组转换为NSData。 - ConnorB
假设这些是十进制值,这看起来不像是base64数据。 - ryantxr
这是我的 blob 返回数据的方式。 - ConnorB
2个回答

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返回给我的内容。 - ConnorB
你的数组内容不是base64编码图像的字符串表示吗? - Andrea
不,我的 API 将编码的 Base64 字符串存储为 BLOB,但是 BLOB 会将数据作为字节数组返回。 - ConnorB
例如,这是一段图像的base64编码:iVBORw0KGgoAA,而这是一个C字节数组byte[] bytes = { 3, 10, 8, 25 }; 在此处查看https://dev59.com/v2ct5IYBdhLWcg3wvf3J - Andrea

0
    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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接