2015-12-11 60 views
0

我在Swift中實現哈夫曼編碼,並從此編碼中受益,我需要將我的一個零序列儘可能有效地序列化。在這種情況下的常用方法是使用位陣列。 Swift包含Bit類型,並且將序列轉換爲[Bit]沒有問題,但是我還沒有找到任何標準解決方案從此數組中獲取NSData。我看到的唯一方法是創建[Int8](可以序列化)並使用按位運算符手動填充所有位,最壞的情況下,我將在最後一個元素中丟失7位。在Swift中將NSData序列化[位]

因此,如果[Bit]序列化有任何標準(隨時可用)解決方案?

+1

比較http://stackoverflow.com/questions/28929804/swift-bit-array-到字節陣列-UINT8陣列 –

回答

1

簡單的答案是NO。

Swift中的位實現爲public enum Bit : Int, Comparable, RandomAccessIndexType, _Reflectable { ... }。除了明確定義的抽象級別之外,我認爲對Int使用Bit類型沒有任何優勢。最小的NSData實例至少使用一個字節(實際上,內存使用量取決於底層處理器的能力。序列化也僅僅是一個抽象,您可以將您的[Bit]序列化爲字序列「Bit with binary value One」, 「二進制值爲零的位」,....爲了將你的位序列保存到NSData並能夠重建它(反序列化它),你仍然需要製作某種'二進制協議'。至少你需要保存如果你使用霍夫曼編碼,你也需要保存你的符號表...