大佬教程收集整理的这篇文章主要介绍了withMemoryRebound与苹果Swift 3 beta 6一起使用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
func binarytotype <T> (_ value: [UInt8],_: T.TypE) -> T { return value.withUnsafeBufferPointer { return UnsafePointer<T>($0.baseAddress!).pointee } }
到Swift 3 beta 6语法.此函数将uInt8数组转换为另一种类型,例如:
let b: [UInt8] = [1,2,3,4,5,6,7,8] var number: Double = binarytotype(b,Double.self)
但是现在这在beta 6中不再起作用了,我必须使用withMemoryRebound,但我真的不知道,如何让它运行.有谁能够帮我?
相反的功能是:
func typetobinary <T> (_ value: T) -> [UInt8] { var v: T = value return withUnsafePointer(to: &v) { Array(UnsafeBufferPointer(start: UnsafePointer<UInt8>($0),count: MemoryLayout<T>.sizE)) } }
这也不再适用.同样的问题.我的一些项目都需要这两个项目.这个反向函数被称为:
var binary: [UInt8] = typetobinary(number)
func binarytotype <T> (_ value: [UInt8],_: T.TypE) -> T { return value.withUnsafeBufferPointer { UnsafeRawPointer($0.baseAddress!).load(as: T.self) } } func typetobinary<T>(_ value: T) -> [UInt8] { var data = [UInt8](repeaTing: 0,count: MemoryLayout<T>.sizE) data.withUnsafeMutableBufferPointer { UnsafeMutableRawPointer($0.baseAddress!).storeBytes(of: value,as: T.self) } return data }
let d = typetobinary(UInt16(1000)) print(d) // [232,3] let i = binarytotype(d,UInt16.self) print(i) // 1000
请参阅SE-0107 UnsafeRawPointer API有关新原始指针API的详细信息.
以上是大佬教程为你收集整理的withMemoryRebound与苹果Swift 3 beta 6一起使用全部内容,希望文章能够帮你解决withMemoryRebound与苹果Swift 3 beta 6一起使用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。