[英]How can I get the values of a C pointer to a Swift struct?
我正在為預編譯的C庫構建一個Swift包裝器/接口,該庫附帶了自己的頭文件。 除以下內容外,我所有的功能都在工作。 該庫讀取加載的文件頭的給定部分。 我有一個看起來像這樣的結構:
typedef struct {
DWORD width;
DWORD height;
DWORD length;
const void *data;
} T_PICTURE;
以及所述庫中的函數,當給它一個可讀文件(特定元數據的一部分,確切地說是圖片)時,該函數返回UnsafePointer<Int8>
指針。
我的問題是 :如何將給定內存位置的數據分配給這種結構?
我想將內存中的空間分配給這種結構,但是到目前為止,我還無法做到這一點。
我很肯定,因為我對編程還比較陌生,所以我缺少一些關鍵的東西,或者至少我看不到一些基本的東西。 在決定詢問之前已經環顧了幾天,在此先謝謝您!
如果我正確理解您的問題,那么您有
ptr: UnsafePointer<Int8>
指向包含T_PICTURE
結構的內存位置。
在Swift 2中,您可以簡單地“重鑄”指針並對其進行引用。 這會將ptr
指向的數據復制到T_PICTURE
類型的picture
變量中:
let picture = UnsafePointer<T_PICTURE>(ptr).memory
在Swift 3中,您必須“重新綁定”指針:
let picture = ptr.withMemoryRebound(to: T_PICTURE.self, capacity: 1) {
$0.pointee
}
有關新的指針轉換API的更多信息,請參見UnsafeRawPointer遷移 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.