Diferencia entre revisiones de «highByte()»

De ArduWiki
Saltar a: navegación, buscar
(Vea también)
(Vea también)
 
(No se muestra una edición intermedia del mismo usuario)
Línea 81: Línea 81:
 
== Vea también ==
 
== Vea también ==
 
<categorytree mode=all>Funciones bit y byte</categorytree>
 
<categorytree mode=all>Funciones bit y byte</categorytree>
* [[bitWrite()]]
+
<categorytree mode=all>Operador bit a bit</categorytree>
* [[bitshift left]] - (<nowiki><<</nowiki>)
 
* [[bitshift right]] - (<nowiki>>></nowiki>)
 
* [[shiftIn()]]
 
* [[shiftOut()]]
 
* [[or bit a bit compuesto]] <nowiki>(|=)</nowiki>
 
* [[and bit a bit compuesto]] <nowiki>(&=)</nowiki>
 
  
 
== Referencias externas ==
 
== Referencias externas ==

Revisión actual del 17:40 14 jul 2019

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 i=0; i<4; i++) {
      dat2 |= val[3-i];  //Meter en LSB
      if (i  3){  //Menor que 3
          dat2 <<= 8;     //desplazar aqui
      }
   }
   Serial.println(dat2);
}

void loop(){
   //Nada
}
********* Ejemplo incompleto no permite *******

Vea también


Referencias externas