如何将int8数组保存到Swift中的文件

如何将int8数组保存到Swift中的文件,swift,Swift,我想知道如何将int8数组的内容保存到文件中。 我发现,如果int8数组表示的“实际内容”是字符串,那么我的代码运行良好。但如果内容实际上是图像,则无法打开保存的文件(表示文件已损坏) 我尝试使用文本编辑器打开图像,发现内容与预期不同(我有一个“良好”的图像,可用于比较)。我想知道这是否与编码有关 int8数组是来自HTTP响应的原始数据(HTTP部分用C编写) 我不确定我是否在正确的轨道上,有什么想法吗 var response: NSData! = NSData(bytes: myArray

我想知道如何将int8数组的内容保存到文件中。 我发现,如果int8数组表示的“实际内容”是字符串,那么我的代码运行良好。但如果内容实际上是图像,则无法打开保存的文件(表示文件已损坏)

我尝试使用文本编辑器打开图像,发现内容与预期不同(我有一个“良好”的图像,可用于比较)。我想知道这是否与编码有关


int8数组是来自HTTP响应的原始数据(HTTP部分用C编写)

我不确定我是否在正确的轨道上,有什么想法吗

var response: NSData! = NSData(bytes: myArray, length: contentLength)
var writeOutput: Bool = response.writeToURL(thePath, atomically: false)
如何修改代码,使其正确保存内容,无论内容是文本还是图像

非常感谢~

Swift 3:

let myArray:[Int8] = [ 0x4d, 0x2a, 0x41, 0x2a, 0x53, 0x2a, 0x48]
let pointer = UnsafeBufferPointer(start:myArray, count:myArray.count)
let data = Data(buffer:pointer)
try! data.write(to: URL(fileURLWithPath: "myFile.data"))
Swift 3:

let myArray:[Int8] = [ 0x4d, 0x2a, 0x41, 0x2a, 0x53, 0x2a, 0x48]
let pointer = UnsafeBufferPointer(start:myArray, count:myArray.count)
let data = Data(buffer:pointer)
try! data.write(to: URL(fileURLWithPath: "myFile.data"))
Swift 3:

let myArray:[Int8] = [ 0x4d, 0x2a, 0x41, 0x2a, 0x53, 0x2a, 0x48]
let pointer = UnsafeBufferPointer(start:myArray, count:myArray.count)
let data = Data(buffer:pointer)
try! data.write(to: URL(fileURLWithPath: "myFile.data"))
Swift 3:

let myArray:[Int8] = [ 0x4d, 0x2a, 0x41, 0x2a, 0x53, 0x2a, 0x48]
let pointer = UnsafeBufferPointer(start:myArray, count:myArray.count)
let data = Data(buffer:pointer)
try! data.write(to: URL(fileURLWithPath: "myFile.data"))

“int8数组是来自HTTP响应的原始数据(HTTP部分是用C编写的)”我可以问一下您为什么这样做吗?听起来好像Int8在妨碍你。如果你只是让系统下载,它从一开始就是NSData,你可以保存它。顺便说一下,这不应该是Int8,所以我希望你不是真的这么想。应该是UInt8。原始数据是一个
无符号字符[]
。如果你一直以Int8的形式收集这些数据,那可能是问题的根源。谢谢matt,是的,应该是UInt8,我的错:-D。那么,如何将一个无符号字符数组附加到另一个无符号字符数组?我试过strcat,但结果似乎不正确?非常感谢~对不起,这超出了我的工资等级。:)我所做的只是使用NSURLSession。数据以NSData的形式输入,我一直将其附加到NSMutableData,我们就在这里。事实上,如果我使用下载任务,我不必收集数据;它只是进入一个文件,我在最后保存它。“int8数组是来自HTTP响应的原始数据(HTTP部分是用C编写的)”我能问一下你为什么这样做吗?听起来好像Int8在妨碍你。如果你只是让系统下载,它从一开始就是NSData,你可以保存它。顺便说一下,这不应该是Int8,所以我希望你不是真的这么想。应该是UInt8。原始数据是一个
无符号字符[]
。如果你一直以Int8的形式收集这些数据,那可能是问题的根源。谢谢matt,是的,应该是UInt8,我的错:-D。那么,如何将一个无符号字符数组附加到另一个无符号字符数组?我试过strcat,但结果似乎不正确?非常感谢~对不起,这超出了我的工资等级。:)我所做的只是使用NSURLSession。数据以NSData的形式输入,我一直将其附加到NSMutableData,我们就在这里。事实上,如果我使用下载任务,我不必收集数据;它只是进入一个文件,我在最后保存它。“int8数组是来自HTTP响应的原始数据(HTTP部分是用C编写的)”我能问一下你为什么这样做吗?听起来好像Int8在妨碍你。如果你只是让系统下载,它从一开始就是NSData,你可以保存它。顺便说一下,这不应该是Int8,所以我希望你不是真的这么想。应该是UInt8。原始数据是一个
无符号字符[]
。如果你一直以Int8的形式收集这些数据,那可能是问题的根源。谢谢matt,是的,应该是UInt8,我的错:-D。那么,如何将一个无符号字符数组附加到另一个无符号字符数组?我试过strcat,但结果似乎不正确?非常感谢~对不起,这超出了我的工资等级。:)我所做的只是使用NSURLSession。数据以NSData的形式输入,我一直将其附加到NSMutableData,我们就在这里。事实上,如果我使用下载任务,我不必收集数据;它只是进入一个文件,我在最后保存它。“int8数组是来自HTTP响应的原始数据(HTTP部分是用C编写的)”我能问一下你为什么这样做吗?听起来好像Int8在妨碍你。如果你只是让系统下载,它从一开始就是NSData,你可以保存它。顺便说一下,这不应该是Int8,所以我希望你不是真的这么想。应该是UInt8。原始数据是一个
无符号字符[]
。如果你一直以Int8的形式收集这些数据,那可能是问题的根源。谢谢matt,是的,应该是UInt8,我的错:-D。那么,如何将一个无符号字符数组附加到另一个无符号字符数组?我试过strcat,但结果似乎不正确?非常感谢~对不起,这超出了我的工资等级。:)我所做的只是使用NSURLSession。数据以NSData的形式输入,我一直将其附加到NSMutableData,我们就在这里。事实上,如果我使用下载任务,我不必收集数据;它只是进入一个文件,我在最后保存它。