Ios 如何将[UInt8]数组复制到Swift 3中的C指针?

Ios 如何将[UInt8]数组复制到Swift 3中的C指针?,ios,c,arrays,swift,swift3,Ios,C,Arrays,Swift,Swift3,我正在尝试将Swift[UInt8]缓冲区复制到C指针。我找不到正确的解决方案,以下是我的代码: uploadBodyBytes = [UInt8]() ... ... var data = crl.uploadBodyBytes[crl.bodyBytesUploaded..<crl.bodyBytesUploaded+actualLen] _ = data.withUnsafeBytes({ (rawData /*provides UnsafeRawBufferPointer*/)

我正在尝试将Swift
[UInt8]
缓冲区复制到C指针。我找不到正确的解决方案,以下是我的代码:

uploadBodyBytes = [UInt8]()
...
...
var data = crl.uploadBodyBytes[crl.bodyBytesUploaded..<crl.bodyBytesUploaded+actualLen]

_ = data.withUnsafeBytes({ (rawData /*provides UnsafeRawBufferPointer*/) -> UnsafeMutableRawPointer in
    return memcpy(a, rawData /*expected UnsafeRawPointer*/, actualLen)
})
uploadBodyBytes=[UInt8]()
...
...
var data=crl.uploadBodyBytes[crl.BodyBytesUpload..UnsafemeutableRawPointer in
返回memcpy(a,rawData/*预期为UnsafeRawPointer*/,实际值)
})
data.withUnsafeBytes
提供了
UnsafeRawBufferPointer
但这似乎与
memcpy
不兼容,后者需要
UnsafeRawPointer


感谢您的帮助。

您可以通过属性访问它,但不需要。

您不应该在Swift中使用memcpy。它非常不安全和笨重。相反,您应该使用
NSData
而不是
[UInt8]
对字节流进行建模。它内置了用于复制的初始值设定项。如果您展示更多关于如何获取这些字节以及如何使用它们的上下文,我可以帮助您。我只是尝试向现有的cURL Swift库添加一些功能。出于某种原因,它们不使用数据(NSData),而是使用[UInt8]缓冲区(我甚至认为不包括基础库)。我认为我应该遵循它已经写好的方式。不确定为什么MimcPy应该这么笨拙?因为它让你用不安全的、原始的PosisSee来编辑我的编辑。在SWIFT中没有理由使用MeMcPy:但是我在C回调函数中得到了“A”作为指针。(a,size,num,p)->Int in…不确定简单的a=rawData是否有效?哦,是的,我搞混了。这个数据的初始来源是什么,最终目的地是什么?可能最好将UnsafeRawBufferPointer绑定到某个类型,并用它创建一个Swift数组。我已经有了一个[Uint8]的Swift数组我需要将这些字节复制到“a”,这是C指针…例如,UnsafemeutableRawPointer?而不是首先获取指针,然后复制它,首先复制Swift数组,然后将其转换为指针