Also, keep in mind that floats and ints aren't guaranteed to be the same size. Here's a fairly standard approach that works with any type of data:
Code:
#include <stdio.h>
#include <limits.h>
char* memory_to_binary_text_lsb_to_msb_order( void* dat, size_t siz, char* buf, size_t len )
{
unsigned char
msk,
* seq = dat,
* fin = seq + siz,
* ptr = buf;
if( siz == 0 || ( siz * CHAR_BIT + siz / CHAR_BIT ) >= len )
return NULL;
for( ;; )
{
for( msk = 0x1; msk; msk <<= 1 )
*ptr++ = ( *seq & msk ) ? '1' : '0';
if( ++seq == fin )
break;
*ptr++ = ' ';
}
*ptr = 0;
return buf;
}
int main( void )
{
double
val = exp( 1.0 );
char
buf[ 128 ];
puts
(
memory_to_binary_text_lsb_to_msb_order
(
&val,
sizeof( val ),
buf,
sizeof( buf )
)
);
return 0;
}