在C ++中高效读/写比特流

时间:2011-04-23 12:48:44

标签: c++ libraries

我正在编写一个数据压缩库,我需要在内存中编写一系列整数编码(在各种整数编码器中),将其存储在一个文件中,然后再读取所有这些编码。

必须连续存储整数编码。 由于它们的位大小通常不是8的倍数,所以我没有在内存中对齐它们。

简而言之,我需要的是暴露这些功能的东西:

unsigned int BitReader::read_bits(size_t bits);
unsigned int BitWriter::write_bits(unsigned int num, size_t bits);
void BitWriter::get_array(char** array);
BitReader::BitReader(char *array);

因为我需要在(非常)紧密的循环中调用这些函数,所以效率是最重要的(特别是在阅读中)。

你知道一些C ++库能做我想要的吗?感谢。

2 个答案:

答案 0 :(得分:0)

如果效率是您唯一的要求,那么获取数据存储的地址并将其直接写入存储。然后在还原时分配相同的存储并执行反向操作。它简单,快速,没有学习曲线。

答案 1 :(得分:-1)

打开流到任何输入/输出的流是最有效的,尽管对于大量数据效率不高。 Streams提供了一种执行读/写操作的便携方式,这就是为什么你可以在内存或磁盘中打开流的原因。如果你想控制流到磁盘本身,我建议使用_bios_disk函数google“_bios_disk”获取更多信息。