Diferencia entre revisiones de «highByte()»
De ArduWiki
(→Ejemplo 1) |
(→Ejemplo 2) |
||
Línea 54: | Línea 54: | ||
//Descomponer | //Descomponer | ||
long dat1 = 123456789; | long dat1 = 123456789; | ||
− | Serial. | + | Serial.println(dat1, HEX); |
byte val[4]; | byte val[4]; | ||
for (byte i=0; i<4; i++) { | for (byte i=0; i<4; i++) { | ||
val[i] = lowByte(dat1); | val[i] = lowByte(dat1); | ||
Serial.println(val[i], HEX); | Serial.println(val[i], HEX); | ||
− | //desplazar aqui | + | dat1 >>= 8; //desplazar aqui |
} | } | ||
Serial.println("-------"); | Serial.println("-------"); |
Revisión del 23:46 13 may 2019
Contenido
Descripción
Extrae el byte de orden superior (MSB) en int o el segundo byte más bajo de un tipo de datos más grande como long.
Sintaxis
highByte(variable);
Parámetros
- variable
- variable a evaluar que deberá ser int, long, float, unsigned int o unsigned long
Retornos
Retorna byte mas significativo.
Advertencias
Cuidado al trabajar con tipo long que es de 4 bytes, porque highByte() se refiere al que esta a la izquierda del LSB y no se refiere al MSB.
long val = 0x11223344; highByte(val); //33 lowByte(val); //44 (LSB)
Ejemplo 1
Descomponer en bytes y reconstruir un int.
void setup(){
Serial.begin(9600);
//Descomponer
int dat1 = 12345;
Serial.println(dat1, HEX); //0x3039
byte val1 = highByte(dat1); //0x30 (MSB)
byte val2 = lowByte(dat1); //0x39 (LSB)
Serial.println("-------");
//Reconstruir
int dat2;
dat2 = val1; //Tomamos MSB
dat2 <<= 8; //Desplazamos 8 bits a la izquierda
dat2 |= val2; //Añadimos LSB
Serial.println(dat2, HEX); //0x3039
}
void loop(){
//Nada
}
Ejemplo 2
Descomponer en bytes y reconstruir un long.
void setup(){
Serial.begin(9600);
//Descomponer
long dat1 = 123456789;
Serial.println(dat1, HEX);
byte val[4];
for (byte i=0; i<4; i++) {
val[i] = lowByte(dat1);
Serial.println(val[i], HEX);
dat1 >>= 8; //desplazar aqui
}
Serial.println("-------");
//Reconstruir
long dat2;
for (byte n=3; n>=0; n--) {
}
Serial.println(dat2);
}
void loop(){
//Nada
}
********* Ejemplo incompleto no permite *******
Vea también
- bit()
- bitClear()
- bitRead()
- bitSet()
- bitWrite()
- bitshift left - (<<)
- bitshift right - (>>)
- lowByte()
- shiftIn()
- shiftOut()
- or bit a bit compuesto (|=)
- and bit a bit compuesto (&=)