gpt4 book ai didi

swift - 快速读取二进制文件

转载 作者:行者123 更新时间:2023-11-28 13:27:10 27 4
gpt4 key购买 nike

Xcode 版本 11.0 (11A420a)

        var byteArray: [UInt8] = []
do {
let data:NSData = try NSData(contentsOfFile: path)
print("Data Len: " + String(data.length))
var buffer = [UInt8](
unsafeUninitializedCapacity: data.length,
initializingWith: {_,_ in}
)
print("Buffer Len: " + String(buffer.count))
data.getBytes(&buffer, length: data.length)
byteArray = buffer
print("Array Len: " + String(byteArray.count))
} catch {
print("Load Error")
addChild(ErrorViewController())
return
}

这不会出错,但会返回 0 长度结果。打印输出为:

Data Len: 3020

Buffer Len: 0

Array Len: 0

我做错了什么?

最佳答案

这个

var buffer = [UInt8](
unsafeUninitializedCapacity: data.length,
initializingWith: {_,_ in}
)

什么都不做,因为闭包什么都不做(它应该初始化第一个闭包参数指向的元素存储,然后设置第二个闭包参数initializedCount)。还有这个

data.getBytes(&buffer, length: data.length)

什么都不做,因为 buffer 是空的。

话虽如此,您可以简单地将文件读入 Data

let data = try NSData(contentsOfFile: path) as Data
// or better:
let data = try Data(contentsOf: URL(fileURLWithPath: path))

然后使用 Data 值。如果您确实需要将数据复制到数组,那么您可以使用

let byteArray = Array(data)

关于swift - 快速读取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58157957/

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