- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 UnsafeMutableRawPointer 实例,想检索它的整数表示形式。我正在尝试使用以下代码:
let pointer : UnsafeMutableRawPointer? = address(of: self)
let intRepresentation : UInt64 = UInt64(bitPattern: pointer)
但是 Swift 编译器抛出错误:“无法转换类型为‘UnsafeMutableRawPointer?’的值?”到预期的参数类型 'Int64'"
声明为 public init(bitPattern pointer: UnsafeMutableRawPointer?)
的构造函数是 Swift.Math.Integers.UInt它还在同一文件中有 public init(bitPattern x: Int64)
我如何才能使这段代码工作或将 UnsafeMutableRawPointer 转换为整数以任何其他方式(但不要太荒谬,如字符串解析)?
最佳答案
(U)Int
在所有平台(32 位或 64 位)上都具有指针的大小,因此您始终可以在 Unsafe(Mutable)(Raw)Pointer
之间进行转换和 Int
或 UInt
:
let pointer: UnsafeRawPointer? = ...
let intRepresentation = UInt(bitPattern: pointer)
let ptrRepresentation = UnsafeRawPointer(bitPattern: intRepresentation)
assert(ptrRepresentation == pointer)
你的代码
let intRepresentation = UInt64(bitPattern: pointer)
不编译因为UInt64
没有有一个接受指针参数的初始化器,那是因为指针可以是 32 位或 64 位的。 (即使在 64 位平台上,UInt
和 UInt64
也是不同的类型。)
如果你需要 UInt64
然后
let intRepresentation = UInt64(bitPattern:Int64(Int(bitPattern: pointer)))
成功了。
关于swift - 将 UnsafeMutableRawPointer 转换为 UInt64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55313453/
自 Xcode 11.4 起,我收到警告消息“‘UnsafeMutableRawPointer’的初始化导致悬空指针” 对于以下代码,我将 SIMD4 从 MTLTexture 读取到数组中: let
我可能会以错误的方式解决这个问题,因为我过去没有做过很多指针运算(甚至可能没有必要)。 但是,在 Swift 中给定一个指针(UnsafeMutableRawPointer 类型),我想获得最接近(向
我正在使用 UnsafeMutableRawPointer 分配内存: let p = UnsafeMutableRawPointer.allocate(bytes: 1000, alignedTo:
如果我想获得一个变量的unsafemutablerawpointer。然而,在不创建副本或缓冲区的情况下,最好/有效的方法是什么? 下面的例子有效! var number:UInt = 5 let n
Objective-C 代码运行良好。我不知道如何将指针迁移到 Swift。 代码 Objective-C to Swift Error in * to UnsafeMutableRawPointer
我似乎无法理解在 Swift 中手动访问图像像素数据背后的方法。我正在尝试从 CGImage 创建图像蒙版,稍后可以在单独的图像上使用。我想识别特定值的所有像素并将图像中的所有其他内容转换为黑/白或
使用 Swift 3,我得到了这个,没有任何错误: private var SessionRunningContext = 0 func addObservers() { self.sessio
我有两个类都符合相同的协议(protocol): class A {} class B {} protocol P {} extension A: P {} extension B: P {} 此外,
我正在尝试获取 UnsafeMutableRawPointer 指向的地址,但我无法这样做。我也是 Swift 的新手,所以我可能会遗漏某些东西或做错了。我最好将原始值转换为 CChar。 最佳答案
我有一个 Metal 纹理,我想通过将其设为 float4 数组来从 Swift 访问它的数据(这样我就可以访问每个像素的 4 个颜色分量)。 我发现了 MTLTexture 的这个方法: getBy
如何访问由 C API(Core Audio 等)传递给 Swift 函数的 UnsafeMutableRawPointer(Swift 3 中的新功能)指向的内存之外的字节(或 Int16、 flo
以下是Swift 3.0的作品: override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [N
我在更新到 swift 3.0 时遇到了一些问题。我有以下代码: // Retrieve the Device GUID let device = UIDevice.current
我有一个 UnsafeMutableRawPointer 实例,想检索它的整数表示形式。我正在尝试使用以下代码: let pointer : UnsafeMutableRawPointer? = ad
我知道如何使用以下方法将内存从数组复制到从索引 0 开始的 UnsafeMutableRawPointer: mutableRawPointer.copyMemory(from: bytes, byt
在 Core Audio 框架中,用户数据可以通过 UnsafeMutableRawPointer? 传递到回调中。我想知道如何通过此 UnsafeMutableRawPointer? 传递结构通过引
我正在尝试转换此源代码: BluetoothDeviceAddress *deviceAddress = malloc(sizeof(BluetoothDeviceAddress)); Swift,这
我只是将我的 iOS 应用程序的代码更新为 Swift 3,这行代码让我很困惑: let dataProvider:CGDataProvider? = CGDataProviderCreateWith
我正在尝试将 Objective-C 源代码转换为 Swift。 在 Objective-C 中,下面的代码 myView = (__bridge UIView *)([SmartPlayerSDK
我正在尝试将 Objective C 代码转换为 swift。 UInt8* data = calloc(bytesPerRow, height); 当我快速转换它时,它返回“UnsafeMutabl
我是一名优秀的程序员,十分优秀!