第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

往返數(shù)據(jù)的SWIFT編號類型

往返數(shù)據(jù)的SWIFT編號類型

桃花長相依 2019-06-29 17:53:37
往返數(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 */ }

我不知道為不可變對象獲取一個的方法,因?yàn)镮nOut操作符只對可變對象工作。

這一點(diǎn)在您所鏈接的答案中得到了證明。


查看完整回答
反對 回復(fù) 2019-06-29
?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個贊

就我而言,馬丁R他的回答很有幫助,但結(jié)果卻是顛倒過來的。所以我對他的代碼做了一個小小的修改:

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))
    }}

這個問題與LittleEndian和BigEndian有關(guān)。


查看完整回答
反對 回復(fù) 2019-06-29
  • 3 回答
  • 0 關(guān)注
  • 569 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號