elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Empacar dos caracteres en una variable entera unsigned. [C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Empacar dos caracteres en una variable entera unsigned. [C]  (Leído 3,180 veces)
DanielPy

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Empacar dos caracteres en una variable entera unsigned. [C]
« en: 22 Febrero 2015, 20:10 pm »

Hola a todos.
Creo que es la primera vez que los consulto y no puedo mostrar ningún avance, bueno debo aclarar que estoy desconcertado y no sé por dónde comenzar y les soy sincero al decir que ni siquiera pude buscar en la web.-
Dejo el enunciado y espero que puedan ayudarme con teoría o con algún ej.-    



Saludos.
Daniel


« Última modificación: 22 Febrero 2015, 20:17 pm por engel lex » En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Empacar dos caracteres en una variable entera unsigned. [C]
« Respuesta #1 en: 22 Febrero 2015, 20:23 pm »

el entero lo haces igual al char 1 desplazado tantos bits como tiene char
variable_int = variable_char_1<<sizeof(char)

luego al entero le sumas el otro char
variable_int = variable_int + variable_char_2


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Empacar dos caracteres en una variable entera unsigned. [C]
« Respuesta #2 en: 23 Febrero 2015, 03:15 am »

Es relativamente fácil, todas las variables a utilizar deben ser sin signo y la operación para empaquetar los caracteres es:
Código
  1. unsigned char a = ALGO;
  2. unsigned char b = ALGO;
  3. unsigned int r = a << CHAR_BIT | b;
  4.  
  5. /* Impresion bit por bit de la variable r */

Como imprimir una variable bit por bit es algo que ya se trato en uno de tus otros temas.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
DanielPy

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Empacar dos caracteres en una variable entera unsigned. [C]
« Respuesta #3 en: 23 Febrero 2015, 21:38 pm »

Hola.
engel lex, me ocurrió algo inusual con tu respuesta, cuando la leí por primera vez tenía unos ej. Que luego (de ver el partido de la selección Argentina) desaparecieron y me apareció mi post modificado (por vos) y realmente no le encuentro diferencia con el original.
rir3760, ¿me podrías decir si mi programa tiene que ver con el enunciado?  .-
Tan sólo me faltaría que alguien me diga en la práctica, ¿de qué forma se puede aplicar el empaquetado de caracteres?.-
Gracias a todos por el tiempo.-

Código
  1. #include <stdio.h>
  2. #include <limits.h>
  3.  
  4. void empacaCaracteres(char a, char b);
  5.  
  6. int main(void){
  7. unsigned char a = 'r', b = 'd';
  8. empacaCaracteres(a, b);
  9.  
  10. return 0;
  11. }
  12.  
  13. void empacaCaracteres(char a, char b){
  14. unsigned int v = a << CHAR_BIT | b;
  15. unsigned bits = 1U << (sizeof(unsigned) * CHAR_BIT - 1), sep=0;
  16.  
  17. printf("\n\n");
  18. while(bits){
  19. printf(sep %8 == 0 ? " " : "");
  20. printf(v & bits ? "1" : "0");
  21. sep++;
  22. bits /=2;
  23. }
  24. }

Saludos.
Daniel
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-
crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Empacar dos caracteres en una variable entera unsigned. [C]
« Respuesta #4 en: 23 Febrero 2015, 21:42 pm »

Olle daniel desde un tiempo he visto tus dudas y me gustaria saber que curso estas siguiendo o donde estas encontrando esos ejercicios

si los compartes seria fabuloso
saludos...
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
DanielPy

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Empacar dos caracteres en una variable entera unsigned. [C]
« Respuesta #5 en: 23 Febrero 2015, 22:08 pm »

Hola crack81.
Te dejo la imagen de la tapa.-



Saludos.
Daniel
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Empacar dos caracteres en una variable entera unsigned. [C]
« Respuesta #6 en: 24 Febrero 2015, 04:16 am »

¿me podrías decir si mi programa tiene que ver con el enunciado?
Tu programa realiza la operación indicada de forma correcta, solo una recomendación: no utilices la función printf para imprimir una cadena vacía. En su lugar puedes utilizar un condicional para imprimir el espacio o bien ya que se trata de imprimir un solo carácter puedes usar la función putchar y el operador condicional, de esta forma:
Código
  1. while (bits){
  2.   putchar(v & bits ? '1' : '0');
  3.   bits >>= 1;
  4.  
  5.   sep++;
  6.   if (sep % CHAR_BIT == 0)
  7.      putchar(sep == sizeof(unsigned) * CHAR_BIT ? '\n' : ' ');
  8. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Empacar dos caracteres en una variable entera unsigned. [C]
« Respuesta #7 en: 24 Febrero 2015, 04:44 am »

Hola.
engel lex, me ocurrió algo inusual con tu respuesta, cuando la leí por primera vez tenía unos ej. Que luego (de ver el partido de la selección Argentina) desaparecieron y me apareció mi post modificado (por vos) y realmente no le encuentro diferencia con el original.

jaja algunas veces corrijo detallitos en imagenes y no aviso  :)

lo que hice fue modificar tu imagen agregando el parametro " width=600" luego del img para que la imagen no se viera tan grande, sin eso se ve así



En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines