【发布时间】:2019-07-20 05:36:33
【问题描述】:
我正在尝试将一些旧的 ObjC 代码转换为 Swift,我在 Swift 上没有做太多关于指针的事情。
ObjC/C 原代码:
unsigned char myId[6];
memcpy(myId, packet.header->m1, 6);
原始 C 结构:
typedef struct {
unsigned char m1[6];
unsigned char m2[6];
} __attribute__((__packed__)) HeaderStruct;
我尝试过的 Swift 代码,不工作:
var myId = [CUnsignedChar](repeating: 0, count: 6)
var headerStruct: UnsafePointer<HeaderStruct> = packet!.header()
memcpy(&myId, headerStruct.pointee.m1, 6)
关于headerStruct.pointee.m1的错误
无法转换类型 '(UInt8, UInt8, UInt8, UInt8, UInt8, UInt8)' 到预期的参数类型'UnsafeRawPointer?'
我假设我需要基地址 (headerStruct) 并添加 m1 的偏移量,但我该怎么做呢?
【问题讨论】:
-
@MartinR 你的意思是这样的:
memcpy(&myId, withUnsafePointer(to: packet?.header().pointee.m1){$0}, 6)?
标签: c objective-c swift