如何将UnsafeMutablePointer <Void>转换为UInt8?

Sem*_*ush 9 type-conversion swift

问题很简单,但不知怎的,我不知道怎么做:

如何将UnsafeMutablePointer转换为UInt8?

我尝试像这样转换它:

UInt8(theUnsafeMutablePointerVar)
Run Code Online (Sandbox Code Playgroud)

但它给了我以下错误:找不到类型为"UInt8"的初始值设定项,它接受类型为"UnsafeMutablePointer"的参数列表

Mar*_*n R 14

您必须首先将指针转换为正确的类型(指向UInt8),然后您可以访问它指向的内存:

let u8 = UnsafePointer<UInt8>(theUnsafeMutablePointerVar).memory
Run Code Online (Sandbox Code Playgroud)

Swift 3中,来自C的void指针被导入Swift as UnsafeMutableRawPointer,并且可以读取指向的数据

let u8 = theUnsafeMutablePointerVar.load(as: UInt8.self)
Run Code Online (Sandbox Code Playgroud)

  • `UnsafePointer <UInt8>(theUnsafeMutablePointerVar)`对我来说不起作用.`无法使用类型'(UnsafeMutablePointer <Void>)'`的参数列表调用类型'UnsafePointer <UInt8>'的初始值设定项.如果我尝试`UnsafeMutablePointer <UInt8>`而不是'UnsafePointer`,也是一样的. (3认同)