我需要解压缩一个二进制文件。由于二进制文件以 14 位编码,因此我必须读取 14 位而不是 8 位来解码。但据我所知,使用getc()
读取文件每次只给我 8 位。有没有有效的方法来实现这一目标?下面是一个可以完成这项工作的代码块,但它似乎效率不高,我该如何改进它?
unsigned int input_code(FILE *input)
{
unsigned int return_value;
static int input_bit_count=0;
static unsigned long input_bit_buffer=0L;
while (input_bit_count <= 24)
{
input_bit_buffer |=
(unsigned long) getc(input) << (24-input_bit_count);
input_bit_count += 8;
}
return_value=input_bit_buffer >> (32-BITS);
input_bit_buffer <<= BITS;
input_bit_count -= BITS;
return(return_value);
}