【发布时间】:2010-12-23 19:30:29
【问题描述】:
我正在用 C 语言实现霍夫曼算法。我已经掌握了基本功能,直到获得二进制代码字为止。例如, abcd 将是 100011000 或类似的东西。现在的问题是如何在压缩文件中以二进制形式编写此代码。我的意思是如果我正常写它,每个 1 和 0 将是一个字符,所以没有压缩。
我需要以位的形式写出这些 1 和 0。这在 C 语言中是否可行?如果可以,怎么办?
【问题讨论】:
-
好吧,我只是问在这种情况下该怎么做。简单地编写代码作为 ascii 并不能达到目的。一定有别的办法。
-
您应该在编码函数中生成一个 int 而不是 char*,或者编写一个函数将字符串转换为表示该位序列的 int 或 long。
-
@Vinko:转换为数字然后存储不好。他必须小心符号和字节序,更不用说架构了(int 在不同的拱门上可以有不同的大小)。无符号字符是最安全的选择。
-
@Stan:正确。我的想法与 Nils 所写的内容一致,即使我建议的实现细节不合适。也就是,不要写每个 1 或 0 的 ASCII 值。
标签: c bit-manipulation binaryfiles huffman-code