相关疑难解决方法(0)

往返数据的往返Swift数字类型

由于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中,我只是在它前面拍一个&符号,然后就去了.

swift swift3 swift-data

84
推荐指数
1
解决办法
4万
查看次数

如何在Swift中将数据转换为双打,Ints和字符串等类型?

我正在为iOS Swift中的shapefile构建一个自定义文件打开器(一种GIS格式,与此问题无关).这些文件有一个100字节长的标题.我能够将其读入4字节数组,存储我想要的信息.我可以将这些数组转换成斯威夫特类型DataNSData,并有转化他们(像一些其他选项Base64EncodedString).但我无法将这些原料阵列或数据或任何的格式转换成有用的属性等Double,IntString.

import Foundation
    struct ShapeReader {
        var shapeFile = FileHandle(forReadingAtPath: "/Users/christopherjlowrie/Documents/Shapes/SF_Neighborhoods/Planning_Zones.shp")
        var fileHeader: String{
            let header = shapeFile?.readData(ofLength: 100)
            let headerStream = InputStream(data: header!)
            headerStream.open()
            var buffer = [UInt8](repeating: 0, count: 4)
            while (headerStream.hasBytesAvailable){
                headerStream.read(&buffer, maxLength: buffer.count)
                print(buffer)
                let x = Data(buffer)
                print(x)
        }
        return "A"
    }
}
Run Code Online (Sandbox Code Playgroud)

这当前只返回A,因为测试原因我返回一个字符串

我怎么能打开文件,并阅读他们的原始字节分为不同的类型(Doubles,Ints,Strings)的斯威夫特?

swift

7
推荐指数
1
解决办法
2614
查看次数

标签 统计

swift ×2

swift-data ×1

swift3 ×1