Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: El_programata en 24 Febrero 2016, 17:15 PM

Título: Error muy extraño con SSCANF
Publicado por: El_programata en 24 Febrero 2016, 17:15 PM
Hola buenos días, tengo un código que funciona perfectamente excepto en unos casos en concreto.

Tengo una variable tipo int llamada code y otra variable string llamada lenconte.

Hal hacer el cast de esta manera:

sscanf(lenconte,"%x", &code);

Todo funciona correctamente ....excepto que code solamente capta los 8 últimos digitos de lenconte y para números muy largos se me secciona.

Alguna idea?

Gracias.
Título: Re: Error muy extraño con SSCANF
Publicado por: MAFUS en 24 Febrero 2016, 17:24 PM
Debes recordar que  los números son finitos y hay un máximo valor para cada tipo. 16 dígitos en hexadecimal ya es hablar de un número muy muy grande.
Deberías pensar en usar una librería para manejar este tipo de números o manejarlos por ti mismo.
Título: Re: Error muy extraño con SSCANF
Publicado por: El_programata en 24 Febrero 2016, 17:37 PM
Cita de: MAFUS en 24 Febrero 2016, 17:24 PM
Debes recordar que  los números son finitos y hay un máximo valor para cada tipo. 16 dígitos en hexadecimal ya es hablar de un número muy muy grande.
Deberías pensar en usar una librería para manejar este tipo de números o manejarlos por ti mismo.

Edito el mensaje principal, ya que no son 16 sino 8. Aunque es cierto que siguen siendo números muy grandes. He probado a trabajar con %lx y %llx en el cast pero sigue admitiendo unicamente estos 8 digitos. No se si se me escapa algun concepto, llevo poco programando. A ver si a alguien se le ocurre algo, yo sigo investigando lo que dices de las librerías.

Muchas gracias :)
Título: Re: Error muy extraño con SSCANF
Publicado por: MAFUS en 24 Febrero 2016, 18:50 PM
Dices que lo guardas en un int.
Cambia la variable a long, tendrás el doble de tamaño. Y si no vas a usar números negativos usa unsigned long.
Título: Re: Error muy extraño con SSCANF
Publicado por: furciorifa en 27 Febrero 2016, 07:30 AM
Tú error está en que estas asignando %x como Hexadecimal

te recuerdo que hay una variación de 0 1 2 3 4 5 6 7 8 9 A B C D E F numeros en Hexa es decir 16 como su nombre lo dice, al almacenar más de 8 dígitos estamos hablando de 16^8 que es un 1GB así que ten cuidado.
Título: Re: Error muy extraño con SSCANF
Publicado por: MAFUS en 27 Febrero 2016, 08:49 AM
furciorifa, esa cuenta está mal.

Los valores hexadecimales representan 4 bits, poner dos juntos es un byte en la memoria del ordenador.

Por tanto si el ordenador le acepta un númeri de 16 hexadecimales lo que está es trabajando con un dato de 64 bits.