如何快速将字节数组转换为 base64 字符串?

Posted

技术标签:

【中文标题】如何快速将字节数组转换为 base64 字符串?【英文标题】:How can I convert byte array to base64 string in swift? 【发布时间】: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 返回数据的方式 【参考方案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 ;在这里查看***.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)

【讨论】:

以上是关于如何快速将字节数组转换为 base64 字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像的字节数组转换为表示 jpg 的 base64 编码字符串

如何将base64位的字节数组转换成图片并显示

如何在 Java 中将字节数组转换为 Base64?

如何在 ios 中将 Base64 编码的 NSString 转换为字节数组(Java)?

在swift和java中将字符串转换为base64字节数组给出不同的值

从字节数组转换为 base64 并返回