En C, ¿cuál es la forma más eficiente de convertir una cadena de dígitos hexadecimales en una cadena binaria unsigned int
o unsigned long
?
Por ejemplo, si tengo 0xFFFFFFFE
, quiero un int
con el valor en base10 4294967294
.
Usted quiere strtol
o strtoul
. Vea también la Unix man page
Prueba esto:
#include <stdio.h>
int main()
{
char s[] = "fffffffe";
int x;
sscanf(s, "%x", &x);
printf("%u\n", x);
}
@Eric
¿Por qué se vota en contra de una solución de código que funciona? Claro, es feo y puede que no sea la forma más rápida de hacerlo, pero es más instructivo que decir "strtol" o "sscanf". Si lo intentas tú mismo aprenderás algo sobre cómo suceden las cosas bajo el capó.
Realmente no creo que su solución debería haber sido votado en contra, pero mi conjetura en cuanto a por qué it's sucediendo es porque it's menos práctico. La idea con la votación es que la "mejor" respuesta flotará a la cima, y mientras que su respuesta podría ser más instructivo acerca de lo que sucede bajo el capó (o una forma en que podría suceder), it's definitivamente no es la mejor manera de analizar los números hexadecimales en un sistema de producción.
Una vez más, no creo que haya nada malo con su respuesta desde un punto de vista educativo, y yo ciertamente no lo haría (y no lo hizo) votar en contra. No se desanime y deje de publicar sólo porque a algunas personas no les haya gustado una de sus respuestas. Son cosas que pasan.
Dudo que mi respuesta te haga sentir mejor por el hecho de que la tuya haya sido rechazada, pero sé que no es nada divertido cuando preguntas por qué algo ha sido rechazado y nadie responde.