Code Search for Developers
 
 
  

BitBuffer.c from redshed at Krugle


Show BitBuffer.c syntax highlighted

#include "BitBuffer.h"
#include <assert.h>

	int // 0 or 1
ReadBitBuffer(
	const	void	*buffer,
			size_t	bufferLengthInBytes,
			size_t	bitIndex)
{
	assert(buffer);
	assert(bufferLengthInBytes);
	assert((bufferLengthInBytes*8)-1 >= bitIndex);
	
	size_t bytePosition = bitIndex / 8;
	bitIndex %= 8;
	size_t rightShiftCount = 7 - bitIndex;
	
	const char *byteBuffer = (const char*)buffer;
	byteBuffer += bytePosition;
	char byte = *byteBuffer;
	byte >>= rightShiftCount;
	byte &= 0x01;
	
	return byte ? 1 : 0;
}

	void
WriteBitBuffer(
	void	*buffer,
	size_t	bufferLengthInBytes,
	size_t	bitIndex,
	int		value)
{
	assert(buffer);
	assert(bufferLengthInBytes);
	assert((bufferLengthInBytes*8)-1 >= bitIndex);
	assert(0 == value || 1 == value);
	
	size_t bytePosition = bitIndex / 8;
	bitIndex %= 8;
	size_t leftShiftCount = 7 - bitIndex;
	
	char *byteBuffer = (char*)buffer;
	byteBuffer += bytePosition;
	
	char newBit = 0x01 << leftShiftCount;
	if (value) {
		//	Setting a bit.
		*byteBuffer |= newBit;
	} else {
		//	Clearing a bit.
		*byteBuffer &= ~newBit;
	}
}



See more files for this project here

redshed

Code for Mac+WebObjects.

Project homepage: http://sourceforge.net/projects/redshed
Programming language(s): C,Java,Objective C
License: other

  BitBuffer.c
  BitBuffer.h