完成二进制文件以将其转换为字节数组

Complete a binary to convert it to byte array

我正在实现一个霍夫曼库,现在我有编码为字符串的结果。我想连同消息一起序列化树,我的结果有点像这样:

Message: aabbccdd
Tree output: 001011000011011000100101100011101100100
Encoded message: 0000010110101111
Serialized message (tree + message): 0010110000110110001001011000111011001000000010110101111

作为第二步,我想将这些二进制字符串转换为字节数组。问题是位数不一定适合这样做:可能会有一些额外的位。问题是如何将最终输出转换为字节数组并能够反序列化它?

树的编码方式如下:Efficient way of storing Huffman tree

除非您可以确保所有代码都至少有八位长​​,否则您将需要 a) 添加一个结束符号及其自己的代码来终止消息,或者 b) 添加几位到消息的开头表明最后一个字节中有多少位有效(假设有一些其他信息源表明消息占用了多少字节)。否则,末尾的额外位可能会被误解为一个或多个不需要的附加符号。