• Status: Solved
• Priority: Medium
• Security: Public
• Views: 602

unsigned int to string binary

Sorry for my bad english.

static unsigned int number = 256;
static char FW[20];

How to get a binary string ? like FW = "0000 000100000000"

Thanks
0
Ludde72
• 5
• 3
1 Solution

Commented:
Hi Ludde72,

you can use 'itao' to do this - it's done for 'int', but you can cast the 'unsigned int' to 'int' so it shouldn't make a difference. The char array you need should be of length 33 to make sure all 32 bits plus the terminating zero char fit into it.

Example:

``````static unsigned int number = 256;
static char FW[33];
itoa( number, FW, 2 );
``````

Hope that helps,

ZOPPO
0

Commented:
BTW, I forgot to ask: it the space in '0000 000100000000' from your posted sample wanted or a typo?
0

Author Commented:
Sorry it was a typo.

Thanks
0

Commented:
No problem ...
0

Author Commented:
Can't find itoa, is it ansi c ?, I'm using Labwindows (Watcom).

Thanks

// Ludde

0

Commented:
No, sorry, unfortunateley itoa is not ANSI C but comes with most C/C++ compilers.

But samples can be found in the internet how it can be implemented - I found some here: http://www.jb.man.ac.uk/~slowe/cpp/itoa.html

I tested one and found it seems to work fine:

``````void strreverse( char* begin, char* end )
{
char aux;

while( end > begin )
{
aux=*end, *end--=*begin, *begin++=aux;
}
}

void my_itoa( int value, char* str, int base )
{
static char num[] = "0123456789abcdefghijklmnopqrstuvwxyz";
char* wstr = str;
int sign;

// Validate base
if ( base < 2 || base > 35 )
{
*wstr='\0';
return;
}

// Take care of sign
if ( ( sign = value ) < 0 )
{
value = -value;
}

// Conversion. Number is reversed.
do
{
*wstr++ = num[ value % base ];
} while( value /= base );

if( sign < 0 )
{
*wstr++ = '-';
}

*wstr='\0';

// Reverse string
strreverse( str, wstr-1 );
}
``````

Hope that helps,

ZOPPO
0

Author Commented:
The code works fine, but i need to fill out wiht zero's.

FW = 0000000100000000

not FW = 100000000

Thanks

// Ludde

0

Commented:
Hi again,

sorry for late response, but I just arrived my PC at work ...

Here you can see a simplified version of the above posted function which converts and unsigned int to a binary string:

``````char* my_itoa2( unsigned int value )
{
int len = 32;
static char str[33];
static char num[] = "01";
char* wstr = str;

// Conversion. Number is reversed.
while( --len > 0 )
{
*wstr++ = num[ value % 2 ];
value /= 2;
}

*wstr='\0';

// Reverse string
strreverse( str, wstr-1 );

return str;
}
``````

Warning: This code isn't thread safe since it uses static char array - if you need it thread safe it need's to be modified in a way it gets passed a char array ...

ZOPPO
0

Senior Software Engineer (Avast)Commented:
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Featured Post

• 5
• 3
Tackle projects and never again get stuck behind a technical roadblock.