Buenas,
Si hubieses sido asi de concreto en el primer post, la primera respuesta hubiese sido la buena y nos ahorrariamos todos tiempo.
Cita: Esto es lo que quiero lograr, tan simple como eso, lo que pasa es que en el programa de Uds. si pongo:
char cadena[] = "4294967295";
Debo lograr que el binario sea:
11111111111111111111111111111111
Tu funcion "atob"
Código C:
Ver original#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int c[32]; char s[40];
char *atob (const char* str) {
int i, j, k = 0; char *p;
unsigned long int n
= atol(str
);
for (i = 0; i < 32; i++)
c[i] = (n >> i) & 0x1;
for (i = 0, j = 31; j >= 0; i++, j--)
{
if (k == 4)
{
k = 0;
}
s[i] = c[j]+'0'; k++;
}
if ((p
= strchr (s
, '1')) == NULL
) return s+35;
k = p - s;
k /= 5; k *= 5;
return s+k;
}
int main(void) {
const char* cadena = "4294967295";
printf("Equivalente en binario: %s", atob
(cadena
));
return 0;
}
Resultado:
Código consola:
Ver originalEquivalente en binario: 11111111111111111111111111111111
Nota: la he cogido y adaptado un poquito a partir de aqui:
http://cboard.cprogramming.com/c-pro...onversion.html
Un saludo