【问题标题】:UnsafeMutablePointer<Bytef> swift3UnsafeMutablePointer<Bytef> swift3
【发布时间】:2016-09-14 09:54:58
【问题描述】:

swift3 中的后续行会出错。

out = UnsafeMutablePointer<Bytef>(data.mutableBytes)

无法使用类型为“(UnsafeMutableRawPointer)”的参数列表调用类型 'UnsafeMutablePointer&lt;Bytef&gt;' 的初始化程序

【问题讨论】:

  • 我也有同样的问题...有人吗?
  • 您需要将 data.mutableBytes 转换为 UnsafeMutablePointer。我使用 data.mutableBytes.sumptionMemoryBound(to: Bytef.IntegerLiteralType.self)。

标签: swift3 unsafemutablepointer


【解决方案1】:

我不是 100% 确定我理解您的要求,但是,swift3 中处理数据指针的方式发生了一些变化:

Swift2

当我想在 swift2 中访问数据流中的实际字节时,你会做一些时髦的指针东西,将数据转换成一个不安全的可变指针,然后指向一个 [UInt8] 数组,它引用了所有字节直接数据流。

根据您的要求,您过去可能一直在尝试做类似的事情。

Swift3

您现在有两个命令withUnsafeByteswithUnsafeMutableBytes。在 swift2 中,我曾经通过获取字节并将其转换为指针数组来处理数据(类似于您正在做的事情)。

在 swift 3 中,您现在可以执行以下操作:

return data.withUnsafeBytes { (bytes: UnsafePointer<UInt8>) -> Bool in
        return 1 ==  Int((bytes[1] & 0x2) >> 1)
}

或者这个:

rawData.withUnsafeMutableBytes {
            (bytes: UnsafeMutablePointer<UInt8>) -> Void in
            bytes[0] = newValue.rawValue
        }

这是你要找的吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    相关资源
    最近更新 更多