Diferencia entre revisiones de «highByte()»

De ArduWiki
Saltar a: navegación, buscar
(Ejemplo 1)
(Ejemplo 2)
Línea 47: Línea 47:
  
 
== Ejemplo 2 ==
 
== Ejemplo 2 ==
 +
Descomponer en [[byte]s y reconstruir un [[long]].
 +
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
 +
void setup(){
 +
  Serial.begin(9600);
 +
  //Descomponer
 +
  long dat1 = 123456789;
 +
  Serial.print(dat1, HEX);
 +
  byte val[4];
 +
  for (byte i=0; i<4; i++) {
 +
      val[i] = lowByte(dat1);
 +
      Serial.println(val[i], HEX);
 +
      dat1 = dat1 <nowiki>>></nowiki> 8;
 +
  }
 +
  Serial.println("-------");
 +
  //Reconstruir
 +
  long dat2;
 +
  for (byte n=3; n>=0; n--) {
 +
  }
 +
  Serial.println(dat2);
 +
}
 +
 +
void loop(){
 +
  //Nada
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revisión del 17:55 5 may 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.prinln(dat1, HEX);     //ox3039
   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.prinln(dat2, HEX);     //0x3039
}
void loop(){
   //Nada
}

Ejemplo 2

Descomponer en [[byte]s y reconstruir un long.

void setup(){
   Serial.begin(9600);
   //Descomponer
   long dat1 = 123456789;
   Serial.print(dat1, HEX);
   byte val[4];
   for (byte i=0; i<4; i++) {
      val[i] = lowByte(dat1);
      Serial.println(val[i], HEX);
      dat1 = dat1 <nowiki>>></nowiki> 8;
   }
   Serial.println("-------");
   //Reconstruir
   long dat2;
   for (byte n=3; n>=0; n--) {
   }
   Serial.println(dat2);
}

void loop(){
   //Nada
}

Vea también

Referencias