• Viernes 15 de Noviembre de 2024, 14:33

Autor Tema:  Separar Los Bytes De Un Long Int  (Leído 2303 veces)

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Separar Los Bytes De Un Long Int
« en: Sábado 15 de Octubre de 2005, 18:48 »
0
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

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: Separar Los Bytes De Un Long Int
« Respuesta #1 en: Sábado 15 de Octubre de 2005, 19:20 »
0
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

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Separar Los Bytes De Un Long Int
« Respuesta #2 en: Sábado 15 de Octubre de 2005, 22:28 »
0
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:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Separar Los Bytes De Un Long Int
« Respuesta #3 en: Domingo 16 de Octubre de 2005, 05:46 »
0
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.
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: Separar Los Bytes De Un Long Int
« Respuesta #4 en: Domingo 16 de Octubre de 2005, 12:59 »
0
Muchas gracias por las respuesta, la primera forma no se me habio ocurrido, y la segunda una cosa nueva que aprendo