一尘不染

Swift中字节数组的NSData

swift

我正在尝试NSData var从字节数组创建一个。

在Obj-C中,我可能这样做:

NSData *endMarker = [[NSData alloc] initWithBytes:{ 0xFF, 0xD9 }, length: 2]

我无法弄清楚Swift中的等效功能。


阅读 404

收藏
2020-07-07

共1个答案

一尘不染

NSData有一个带有bytes指针的初始化程序:init(bytes: UnsafeMutablePointer <Void>, length: Int)。一个UnsafePointer参数可以接受多种不同的东西,包括一个简单的斯威夫特阵列,所以你可以使用几乎相同的语法在Objective-C。传递数组时,需要确保将其标识为UInt8数组,否则Swift的类型推断将假定您要创建一个Int数组。

var endMarker = NSData(bytes: [0xFF, 0xD9] as [UInt8], length: 2)

您可以在Apple的与C
API交互的
文档中阅读有关不安全指针参数的更多信息。

2020-07-07