往返數(shù)據(jù)的SWIFT編號類型斯威夫特3傾向于Data而不是[UInt8],我正在嘗試找出哪種最有效/慣用的方式將各種數(shù)字類型(UInt 8、Double、Float、Int 64等)編碼/解碼為數(shù)據(jù)對象。有這是使用[UInt 8]的答案,但它似乎在使用數(shù)據(jù)上找不到的各種指針API。我想基本上是一些自定義擴(kuò)展,類似于:let input = 42.13 // implicit Doublelet bytes = input.datalet roundtrip = bytes.to(Double) // --> 42.13真正讓我無法理解的是,我已經(jīng)看過了一堆文檔,我是如何得到某種指針的(OpaquePoter,BufferPoter,還是Unsecurity Poter?)從任何基本結(jié)構(gòu)(所有的數(shù)字都是)。在C中,我會在它前面打一個符號,然后你就可以了。
3 回答

ibeautiful
TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個贊
withUnsafePointer
:
withUnsafePointer(&input) { /* $0 is your pointer */ }

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個贊
extension UInt16 : DataConvertible { init?(data: Data) { guard data.count == MemoryLayout<UInt16>.size else { return nil } self = data.withUnsafeBytes { $0.pointee } } var data: Data { var value = CFSwapInt16HostToBig(self)//Acho que o padrao do IOS 'e LittleEndian, pois os bytes estavao ao contrario return Data(buffer: UnsafeBufferPointer(start: &value, count: 1)) }}
- 3 回答
- 0 關(guān)注
- 569 瀏覽
添加回答
舉報(bào)
0/150
提交
取消