Swift [UInt8]
バッファをCポインタにコピーしようとしています。私はここで、適切なソリューションを見つけることができない私のコードです:Swift 3の[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)
})
data.withUnsafeBytes
は私にUnsafeRawBufferPointer
を与えるが、それはUnsafeRawPointer
を期待memcpy
と互換性がないように思われます。
ヘルプありがとうございます。
あなたはswiftでmemcpyを使用すべきではありません。地獄のように危険で不器用だ。代わりに、 '[UInt8]'の代わりに 'NSData'を使用してバイトストリームをモデル化する必要があります。コピーを作成するためのイニシャライザが組み込まれています。あなたがこれらのバイトをどのように取得するのか、それらで何をしたいのかに関してより多くのコンテキストを示したら、私はあなたを助けることができます。 – Alexander
私は、既存のcURL Swiftライブラリにいくつかの機能を追加しようとしています。また、何らかの理由でData(NSData)を使用するのではなく、[UInt8]バッファ(Foundationライブラリも含めて)を使用しません。私はすでに書かれている方法に従うべきだと思った。なぜmemcpyがすごくかっこいいはずですか? –
安全でないポインタで作業するため – Alexander