如何在Swift 3中对不可配置指针进行指针运算并获取字符串

如何在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

我正在看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: 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)