当前位置: 首页 > 知识库问答 >
问题:

在Swift中将[Bit]序列化为NSData

龚弘业
2023-03-14

我正在Swift中实现哈夫曼编码,为了从这种编码中获益,我需要尽可能有效地序列化我的一零序列。在这种情况下,通常的方法是使用位数组。Swift包含Bit类型,将序列转换为[Bit]没有问题,但是我还没有找到任何标准的解决方案来从这个数组中获取NSData。我看到的唯一方法是创建[Int8](可以序列化)并使用按位运算符手动填充所有位,在最坏的情况下,我将在最后一个元素中丢失7位。

那么,对于[Bit]序列化是否有任何标准(即用)解决方案?

共有1个答案

邓阳伯
2023-03-14

简单的答案是否定的。

Swift中的位实现为公共枚举位:Int、Comparable、RandomAccessIndexType、_Reflectable{…} 。我看不出对Int使用位类型有什么好处,除了定义良好的抽象级别。最小NSData实例至少使用一个字节(实际上,内存使用量取决于底层处理器的能力。序列化也只是一种抽象,您可以将[Bit]序列化为“Bit with binary value one”、“Bit with binary value Zero”等字序列, .... 为了将您的位序列保存到NSData并能够重建它(取消序列化),您仍然需要制定某种“二进制协议”。至少您需要将位数保存为数据的一部分。如果使用哈夫曼编码,还需要保存符号表。。。

 类似资料:
  • 问题内容: 我如何从JSON格式的Django的Mysql数据库中获取DateTimeField?我执行代码“ Date.time无法在json中序列化”时遇到错误(数据包含很多值): 但这是通过添加来解决的 但是现在我得到的’str’对象没有属性’_meta’。 问题答案: DjangoJSONEncoder解决了我的问题。

  • 问题内容: 我想在Play2中将Scala对象列表反序列化为JSON映射-我说这是JSON的一个非常简单的用例。我的JSON输出如下所示: 为此,我正在看Play2的JSON文档 “ The Play JSON library” 。对我来说,他们的例子非常琐碎,我已经证实它们对我有用。因此,我能够正确地反序列化单个对象。 但是,当我阅读文档时,在Play2中制作包含JSON列表的映射似乎有些冗长。

  • 问题内容: 是具有值“ true”和“ false”的列。我需要将其转换为位列。 当我尝试这样做时: 它显示一个错误 问题答案: 我怀疑在字段“ Flag1”中除了“ true”和“ false”以外还有其他值。因此,请检查Flag1中的值。 从YouTable中选择不同的Flag1。 这是我的证明: 它工作正常。 但是,这将产生相同的错误。 ->消息245,级别16,状态1,第2行,将varch

  • 问题内容: 我正在客户端和Django服务器之间发送信息,并且我想对此使用JSON。我正在发送简单的信息-字符串列表。我尝试使用,但是当我这样做时, 看来这只能用于Django对象。如何序列化简单的Python对象? 问题答案: 你可以使用纯Python执行此操作:

  • 问题内容: 这个下课 需要转换为 我尝试将对象手动传递给将变量设置为字典并返回字典的函数。但是,我希望有一种更好的方法来实现这一目标。 问题答案: 在Swift 4中,您可以从类型继承。

  • 我想序列化一些XML。我的代码运行正常,但序列化不成功,对象为空,而不是填充数据。该值只是类型值:{OrangeCdToCollectorz.OrangeCd}。我怀疑我的阶级定义。以下是我正在序列化的类: 这是我的代码,尝试使用几种众所周知的技术对相同的XML进行反序列化,无论是作为字符串const还是来自文件: 以下是源XML的示例

  • 问题内容: 我正在寻找一种在Swift中自动序列化和反序列化类实例的方法。假设我们定义了以下类…… …和实例: 的JSON表示形式如下: 现在,这是我的问题: 我如何序列化实例并获取上面的JSON,而不必手动将类的所有属性添加到变成JSON的字典中? 我如何反序列化上面的JSON并获取静态类型为类型的实例化对象?同样,我不想手动映射属性。 这是使用Json.NET在C#中执行此操作的方法: 问题答

  • 问题内容: 使用Jackson 2,我正在寻找一种 通用的 方式将对象序列化为单个值(然后序列化它们,然后再填充该单个字段),而不必重复创建JsonSerializer / JsonDeserializer来处理每种情况。@JsonIdentityInfo批注非常接近,但由于我知道,它将始终对完整的子对象进行序列化,因此略微遗漏了该标记。 这是我想做的一个例子。给定的类: 我希望Order可以序列