由于Swift 3倾向于Data而不是[UInt8],我试图找出最有效/惯用的编码/解码方式将各种数字类型(UInt8,Double,Float,Int64等)作为数据对象.
对于使用[UInt8]有这个答案,但它似乎使用了我在Data上找不到的各种指针API.
我想基本上一些自定义扩展看起来像:
let input = 42.13 // implicit Double
let bytes = input.data
let roundtrip = bytes.to(Double) // --> 42.13
Run Code Online (Sandbox Code Playgroud)
真正逃避我的部分,我已经查看了一堆文档,我是如何从任何基本结构(所有数字都是)得到某种指针的东西(OpaquePointer或BufferPointer或UnsafePointer?).在C中,我只是在它前面拍一个&符号,然后就去了.
我UInt8在使用swift 将Byte数组转换为字符串时遇到问题.我搜索并找到一个简单的解决方案
String.stringWithBytes(buff, encoding: NSUTF8StringEncoding)
Run Code Online (Sandbox Code Playgroud)
但它显示错误String.type没有成员stringWithBytes.谁能建议我一个解决方案?
这是我的代码,我得到一个NSData并转换为字节数组,然后我必须将该字节数组转换为字符串.
let count = data.length / sizeof(UInt8)
var array = [UInt8](count: count, repeatedValue: 0)
data.getBytes(&array, length:count * sizeof(UInt8))
String.stringWithBytes(buff, encoding: NSUTF8StringEncoding)
Run Code Online (Sandbox Code Playgroud) swift 中数据类型 Int 和 UInt8 之间有什么区别?
看起来 UInt8 用于二进制数据,我需要将 UInt8 转换为 Int 这是可能的。