gpt4 book ai didi

swift - 如何在 UnsafeMutablePointer 上进行指针运算并在 Swift 3 中获取字符串

转载 作者:行者123 更新时间:2023-11-28 05:57:39 25 4
gpt4 key购买 nike

我在 Objective-C 中查看这一行:

NSString * str = [[NSString alloc] initWithBytes:data + 1 length:length - 1 encoding:NSASCIIStringEncoding];

其中变量数据的类型为“UnsafeMutableRawPointer?”。

我尝试将该行转换为 Swift 3,如下所示:

let next = data + 1
let dataPtr = next.bindMemory(to: String.self, capacity: Int(length - 1))
let barcode = dataPtr.pointee

但是,我遇到了 EXC_BAD_ACCESS 异常。

最佳答案

您必须将原始指针绑定(bind)到 UInt8 指针:

let bytes = (data + 1).bindMemory(to: UInt8.self, capacity: length - 1)

现在您可以创建一个引用该字节范围的缓冲区指针

let buffer = UnsafeBufferPointer(start: bytes, count: length - 1)

哪个(作为序列)可以传递给

let str = String(bytes: buffer, encoding: .ascii)

关于swift - 如何在 UnsafeMutablePointer 上进行指针运算并在 Swift 3 中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50955809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com