将C typedef结构转换为Swift

时间:2018-08-22 02:12:37

标签: c swift struct

我有这个C typedef结构:

typedef struct _HEADER {
  BYTE              HeaderTag[16];
  UINT16            __unused_field_1;   
  UINT16            __unused_field_2;   
  UINT32            data;       
  UINT64            size;
  UINT32            UpperHeaderSize;    
  UINT32            LowerHeaderSize;    
  UINT32            KeySize;            
  UINT32            bufferEndOffset;
  UINT32            NcefTag;            
  BYTE              Description[128];   
  UINT32            ContainerVersion;   
  UINT32            HeaderSize;         
  GUID              KeyId;              
  UINT32            FileId;             
} HEADER, *P_HEADER;

typedef struct _INITIALIZATION_VECTOR {
  UINT32            Offset;             
  UINT32            __unused_field_1;
  UINT64            __unused_field_2;
} INITIALIZATION_VECTOR, *PINITIALIZATION_VECTOR;

我想将此C typedef结构转换为Swift。

1 个答案:

答案 0 :(得分:0)

除了headerTag之外,它在Swift中几乎相同。 我会让你开始:

struct Header
{
    var headerTag = [UInt8](repeating:0, count:16)
    var unused_field_1 : UInt16 = 0
    var unused_field_2 : UInt16 = 0
    var data : UInt32 = 0
    var size : UInt64 = 0
    var UpperHeaderSize : UInt32 = 0
    var LowerHeaderSize : UInt32 = 0
    // You can add the rest based on above
}

let headerA = Header()

我不知道GUID是什么格式,但是BYTE在Swift中是UInt8。

注意:结构在Swift中是通过值传递的,而不是在C语言中是通过引用传递的。