簡體   English   中英

如何獲得指向Swift結構的C指針的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM