C/Visual C - Operaciones sobre bytes

 
Vista:

Operaciones sobre bytes

Publicado por Jose A (1 intervención) el 17/04/2007 22:44:48
Hola a tod@s.
¿Alguien sabe como puedo obtener los 8 primeros bits de una variable que opcupa 2 bytes?, es decir, voy a utilizar una variable que ocupa 2 bytes para almacenar dos valores; un valor ocupará el primer buye, y otro valor ocupará el segundo byte.
Mi duda es que no se como obtener dichos bytes por separado.
Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Operaciones sobre bytes

Publicado por fernando.gomez (1603 intervenciones) el 18/04/2007 00:27:18
Con memncpy y aritmética de punteros.

int i = ...; // esta variable int tiene dos bytes en la mayoría de compiladores 32 bits.
unsigned char byte1, byte2; // 1 byte enterito en cada variable.

memncpy(&byte1, &i, 1); // copiamos el primer byte
memncpy(&byte2, &i + 1, 1); // copiamos el segundo byte

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Operaciones sobre bytes

Publicado por Nelek (816 intervenciones) el 18/04/2007 07:54:02
No solo se puede hacer asi...

Que sea lo mas correcto o no.. no lo se. Pero yo tambien aislo bytes o bits aplicando matematica binaria.

WORD wGrande = //lo que quieras;
BYTE byIzda = wGrande / 256;
BYTE byDcha = wGrande % 256;

O usando mascaras y los >> , << para quedarme con los bits que a mi me interesan si estan en posiciones algo mas complicadas y luego pasandolo a otra variable.

BYTE byIzda = ((wGrande & 0xFF00) >> 8);
BYTE byDcha = (BYTE) (wGrande & 0x00FF);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar