簡體   English   中英

在Swift中將[Bit]序列化為NSData

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM