SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: joaquinrg en Sábado 15 de Octubre de 2005, 18:48

Título: Separar Los Bytes De Un Long Int
Publicado por: joaquinrg en Sábado 15 de Octubre de 2005, 18:48
Hola, q tal? no se como hacer esto, a ver si me podeis ayudar. Tengo un unsigned long int, que son 4 bytes,no? y me gustaria meter cada byte en la casilla de una tabla BYTE tabla[4]. Como puedo acceder a cada byte del unsigned long int? lo unico que se me habia ocurrido es esto, pero no va:

Código: Text
  1.  
  2. BYTE tabla[4]
  3. unsigned long int res;
  4. res=FuncionQueDevuelveUnsLongInt()
  5.  
  6. printf("Res: %lx\n", res);
  7. tabla[0]=res;
  8. tabla[1]=*(&res+sizeof(BYTE));
  9. ....
  10.  
  11.  

pero luego la unica casilla que tiene algun byte como lo imprime el printf es tabla[0], que contiene el ultimo byte de res.

No se si me he explicado muy bien. Gracias de antemano
Título: Re: Separar Los Bytes De Un Long Int
Publicado por: joaquinrg en Sábado 15 de Octubre de 2005, 19:20
Bueno, me respondo a mi mismo, al final lo he conseguido de esta forma, aunque me imagino q habra mil formas mejores...

BYTE tabla[2]
unsigned long int res;
res=FuncionQueDevuelveUnsLongInt()

printf("Res: %lx\n", res);
tabla[0]=res;
tabla[1]=res/0xFF
Título: Re: Separar Los Bytes De Un Long Int
Publicado por: Eternal Idol en Sábado 15 de Octubre de 2005, 22:28
Aca tenes otra formita de hacerlo:

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. void main()
  5. {
  6.   int x = 0x12345678;
  7.   char *tabla = (char*)&x;
  8.   printf("0x%X\r\n", tabla[0]);
  9.   printf("0x%X\r\n", tabla[1]);
  10.   printf("0x%X\r\n", tabla[2]);
  11.   printf("0x%X\r\n", tabla[3]);
  12. }
  13.  
  14.  

 :devil:  :devil:  :devil:
Título: Re: Separar Los Bytes De Un Long Int
Publicado por: LeGatoRojo en Domingo 16 de Octubre de 2005, 05:46
Tal vez no es muy rapida como las demas, pero aqui tienes otra forma

union {
  iunsigned long int a;
  int a1:1;
  int a2:1;
  int a4:1;
};

y ya todo queda la union, la variable a:1 es el pirmer byte y asi sucesivamente.
Título: Re: Separar Los Bytes De Un Long Int
Publicado por: joaquinrg en Domingo 16 de Octubre de 2005, 12:59
Muchas gracias por las respuesta, la primera forma no se me habio ocurrido, y la segunda una cosa nueva que aprendo