如何在Swift 3中对不可配置指针进行指针运算并获取字符串
我正在看Objective-C中的这一行:如何在Swift 3中对不可配置指针进行指针运算并获取字符串,swift,pointers,pointer-arithmetic,Swift,Pointers,Pointer Arithmetic,我正在看Objective-C中的这一行: NSString * str = [[NSString alloc] initWithBytes:data + 1 length:length - 1 encoding:NSASCIIStringEncoding]; 其中,变量数据的类型为“UnsaFemeutableRawPointer?” 我尝试将该行转换为Swift 3,如下所示: let next = data + 1 let dataPtr = next.bindMemory(to: St
NSString * str = [[NSString alloc] initWithBytes:data + 1 length:length - 1 encoding:NSASCIIStringEncoding];
其中,变量数据的类型为“UnsaFemeutableRawPointer?”
我尝试将该行转换为Swift 3,如下所示:
let next = data + 1
let dataPtr = next.bindMemory(to: String.self, capacity: Int(length - 1))
let barcode = dataPtr.pointee
然而,我得到一个EXC_BAD_访问异常 必须将原始指针绑定到
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)