bitio.cpp

来自「有关几个数字编码的C++ 程序」· C++ 代码 · 共 88 行

CPP
88
字号
// BitIO.cpp: implementation of the CBitIO class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "BitIO.h"

//----------------- Construction/Destruction--------------------------
CBitIO::CBitIO()
{

}

CBitIO::~CBitIO()
{

}
//=====================================================================

//----------------------initialize bit input---------------------------
void CBitIO::start_inputing_bits(FILE *filein)
{
	bits_to_go = 0;
	garbage_bits = 0;
	inputfile = filein;
}
//======================================================================

//---------------------------input a bit--------------------------------
int CBitIO::input_bit()
{
	int t;
	if ( bits_to_go == 0 )
	{
		buffer = getc(inputfile);
		if ( buffer == EOF )
		{
			garbage_bits += 1;
			if ( garbage_bits > Code_value_bits-2 )
			{
				//::MessageBox(NULL,"Bad input file\n","Errer");
				printf("bad input file");
				exit(-1);
			}
		}
		bits_to_go = 8;
	}
	t = buffer&1;
	buffer >>= 1;
	bits_to_go -= 1;
	return t;
}
//=======================================================================

//----------------initialize for bit input-------------------------------
void CBitIO::start_outputing_bits(FILE *fileout)
{
	buffer = 0;
	bits_to_go = 8;
	outputfile = fileout;
}
//========================================================================

//-------------------------output a bit-----------------------------------
void CBitIO::output_bit(int bit)
{
	buffer >>= 1;
	if ( bit ) 
		buffer |=0x80;
	bits_to_go--;
	if ( bits_to_go == 0 )
	{
		putc(buffer,outputfile);
		bits_to_go = 8;
	}

}
//=========================================================================

//--------------------flush out the last bits------------------------------
void CBitIO::done_outputing_bits()
{
	putc(buffer>>bits_to_go, outputfile);

}
//=========================================================================

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?