gpt4 book ai didi

arrays - 在 Swift 中将图像十六进制转储转换为二进制数组的更快方法

转载 作者:行者123 更新时间:2023-11-28 08:33:23 26 4
gpt4 key购买 nike

我需要编辑图像像素的原始二进制值。为此,我执行了以下步骤:

  1. 我获得了包含图像十六进制转储的 CFData。

  2. 我将获得的CFData转换为字符数组(使用convertToArray函数)

  3. 之后,我使用 convertToBinaryString 函数获取表示十六进制转储的基数 2 值的字符串。

它确实有效并且可以完成小文件的工作,但是当涉及到更大的文件时,它需要很长时间才能完成。我在寻找更快方法的斗争中失败了。你能帮帮我吗?

在这里你可以看到我需要优化的功能:

func convertToArray(imageData : CFData) -> Array<Character>{
let arrayData : Array<Character> = Array(String(NSData(data: imageData)).characters)
print("Array : ")
Swift.print(arrayData)
return arrayData
}

func convertToBinaryString(array : Array<Character>) -> String{
let numberOfChars = array.count
var binaryString = convertHexToBinary(array[1])
for character in 2...numberOfChars - 2{
binaryString = binaryString + convertHexToBinary(array[character])
}
// print("BINARRY ARRAY : ")
// print(binaryString)
return binaryString

}

最佳答案

我会试试这个 NSData 的扩展,它提供了 CollectionType界面。看起来它会让您更容易地进行修改,而无需使用 UnsafeMutablePointer:

Bytes collection for NSData

由于 BytesViewMutableBytesView 是一个 CollectionType,它为您提供下标、索引等,因此您可以遍历数据并创建你想要的改变。

与此问题相关并介绍链接代码的文章:

NSData, My Old Friend

关于arrays - 在 Swift 中将图像十六进制转储转换为二进制数组的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377272/

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