Would some adaptations of this be helpful?
#include <stdio.h>
#include <limits.h>
char *bits_uchar ( char *dest, unsigned char value )
{
char *start = dest;
unsigned char bit;
for ( bit = 1 << (CHAR_BIT - 1); bit > 0; bit >>= 1 )
{
*dest++ = value & bit ? '1' : '0';
}
*dest = 0;
return start;
}
char *bits_block ( char *dest, const void *object, size_t size )
{
char *start = dest;
const unsigned char *byte = object;
for ( byte += size - 1; size-- > 0; --byte )
{
bits_uchar ( dest, *byte );
dest += CHAR_BIT;
*dest++ = size > 0 ? '-' : 0;
}
return start;
}
int main(void)
{
char result [ 80 ];
float value = 5.375;
printf ( "%g = \"%s\"\n", value,
bits_block ( result, &value, sizeof value ) );
return 0;
}
/* my output
5.375 = "01000000-10101100-00000000-00000000"
*/ Dave Sinkula
long time no c
Team Colleague
5,058 posts since Apr 2004
Reputation Points: 2,780
Solved Threads: 314