我想在Go中序列化一些数据,我必须写出各个位。 (特别针对霍夫曼编码)。做这个的最好方式是什么?最明显的方法是一次只取八位,然后将第一个位置向左移动7位,将下一位移位6位,依此类推。
我想知道是否有更惯用的方式来做这件事,可能是标准库中的一个功能。我已经看过编码/ gob,但它似乎没有提供我想要的控件,例如写一个4布尔切片(我原本认为对应于位)输出24个字节。我猜它有数字表示切片开始,布尔下一个等等。
有没有好办法呢?
答案 0 :(得分:1)
encoding / gob是go值的二进制编码。它与bit操作无关。它的主要目的是提供一个高性能的解决方案,用于通过网络连接等转移数据结构(特别是对于rpc包)。
golang的slice内部表示是一个包含指向数组(适当类型)的指针的结构,以及两个整数,一个用于len
gth(即切片中元素的数量)和{{1} acity(即为数组分配的内存量。
我认为标准库中不支持您想要完成的任务。所以我认为你需要编写自己的实现,正如你自己建议的那样。
也许你可以将相关的代码放在一个单独的包中并分享它,go是一种年轻的语言,需要这样的实现,我想。
抱歉,我无法提供更多帮助。