返回 导航

Swift

hangge.com

Swift - 将 String/Data 类型转换成UnsafeMutablePointer<UInt8>类型

作者:hangge | 2018-10-31 08:10
    虽然 Swift 并不推荐我们直接对指针进行操作,但有时在与 C 混编时,不可避免地要将对象转换为 C 的指针类型以便传值。本文演示如何将 String 类型(或者说 Data 类型)数据转成对应的 UnsafeMutablePointer<UInt8>

(1)之前我曾介绍过如何将 String 数据转换为 [UInt8]bytes 字节数组)(点击查看),首先是将 String 转成 Data,然后再将 Data 转成 [UInt8]
let data = "航歌".data(using: .utf8)!
let bytes = [UInt8](data)
print(bytes)

(2)而要将 String 数据转成对应的 UnsafeMutablePointer<UInt8>,同样是先将 String 转成 Data,然后再通过 Data 获取指针:
var data = "航歌".data(using: .utf8)!

data.withUnsafeMutableBytes({ (bytes: UnsafeMutablePointer<UInt8>) -> Void in
    //bytes即为指针地址
    print("指针地址:\(bytes)")
    
    //通过指针移动来取值(赋值也是可以的)
    var bytesStart = bytes
    for _ in 0..<6 {
        print(bytesStart.pointee)
        bytesStart += 1
    }
})
评论

全部评论(0)

回到顶部