Asignaciób de valores a variables enteras

Hola, tengo poca experiencia en lenguaje c y necesito resolver el siguiente problema que tengo:
Si ejecuto la sig. Sentencia:
UInt iVariable= 'F';
La variable contiene el valor 70 pero si asigno:
UInt iVariable= 'FFFF';
La variable tiene un valor mucho más grande, me gustaría saber como se llega a ese valor para poder, a raíz de otro valor, identificar la secuencia de caracteres que lo compone.
Desde ya muchas gracias.

1 Respuesta

Respuesta
1
Lo que tu estas haciendo es una mezcla de valores que es no muy recomendable, estas asignado a una variable entera una cadena de caracteres, bueno te cuento como asigna los valores (supongo que conocerás como se codifica en bits los números).
Lo que hace el ordenata en el primer caso es, tienes el carácter F, busca en la tabla ascii el código del carácter F y le da que es el entero 70 que en binario es 0100 0110, entonces este numero es el que asigna a la iVaribale, ahora en el segundo caso tiene una cadena de caracteres de FFFF, es decir 70 70 70 70 que en binario es 01000110 01000110 01000110 01000110 que es lo que codfica en un valor entero, todo ese numero binario de 32 bits que justo cabe en un entero.
Para averiguar la cadena de caracteres tendrías que ir copiando la variable entera y rotar los bits a la derecha, primero rotas 24 bits con lo que te quedas con el primer carácter, este carácter le pasas de una variable entera a una carácter y así ya lo tienes, para el segundo carácter rotas la iVariable 16 bits y haces un and con 0x00FF para quitar los bits del primer carácter y así tienes el segundo y así sucesivamente.
Debes tener en cuenta que esto solo te va a valer para cadenas de 4 caracteres como máximo pues son los 32 bits que caben en un entero, si la cadena es mayor o la divides en cachos de 4 o te buscas otro método.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas