![](/img/trans.png)
[英]Convert UnsafeMutableBufferPointer<Bit> to NSData in Swift
[英]Serialize [Bit] to NSData in Swift
我正在Swift中實現Haffman編碼,並且要從這種編碼中受益,我需要盡可能有效地序列化零序列。 在這種情況下,通常的方法是使用位陣列。 Swift包含Bit
類型,將序列轉換為[Bit]
沒有問題,但是我還沒有找到任何標准解決方案來從該數組中獲取NSData
。 我看到的唯一方法是創建[Int8]
(可以序列化)並使用按位運算符手動填充所有位,在最壞的情況下,我將在最后一個元素中丟失7位。
那么,對於[位]序列化是否有任何標准(即用)解決方案?
簡單回答是不。
Swift中的位實現為public enum Bit : Int, Comparable, RandomAccessIndexType, _Reflectable { ... }
。 除了定義良好的抽象級別之外,對於Int使用Bit類型沒有任何優勢。 最小的NSData實例至少使用一個字節(實際上,內存使用量取決於基礎處理器的能力。序列化也只是一種抽象,您可以將[Bit]序列化為單詞“具有二進制值One的比特”, “二進制值為零的位”,....要將位序列保存到NSData並能夠對其進行重構(反序列化),仍然需要制作某種“二進制協議”,至少需要保存作為數據一部分的位數如果使用霍夫曼編碼,也需要保存符號表...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.