我想在Swift中将类型为 Data
的数据缓冲区(名为data
)传递给一个接受类型为 UnsafePointer<UInt8>
的指针的C函数(名为do_something
)。
下面的代码示例是否正确?如果是这种情况,是否可以使用assumingMemoryBound(to:)
代替bindMemory(to:capacity:)
?
data.withUnsafeBytes { (unsafeBytes) in
let bytes = unsafeBytes.baseAddress!.assumingMemoryBound(to: UInt8.self)
do_something(bytes, unsafeBytes.count)
}
Data
转换为[UInt8]
并将其作为指针传递会更容易吧? - vadianUInt8
类型? - ma11hew28UInt8
值,而不考虑保存在该内存中的值的类型。” 所以我不明白为什么我不能假设它已经被绑定到UInt8
类型。我知道它后面还会说:“要通过类型化操作访问底层内存,必须将内存绑定到平凡的类型。” 但那似乎只有在您想将内存绑定到除UInt8
之外的类型时才是必要的。 - ma11hew28