Arduino: ¿por qué Serial.println (int, HEX) muestra 4 bytes?

3

Un int es de 2 bytes pero Serial.print con formato de HEX o BIN produce 4 bytes:

  int x = 0x9876;
  Serial.println(x, HEX);
  // output is FFFF9876

¿Por qué?

(y cuál es una buena manera de imprimir solo 2 bytes)

    
pregunta Brian Low

2 respuestas

4

La función Arduino print / println convierte el int en un largo, que es de 4 bytes para Arduinos. Consulte aquí: enlace

Para tener más control sobre la impresión, revise la función sprintf de C ++. Por ejemplo,

int x = 0x9876;
char buf[9];
sprintf(buf, "%04x", x);
Serial.println(buf);

Se imprimirá correctamente.

sprintf - enlace

referencia de cadena de formato - enlace

    
respondido por el geometrikal
-1

Esto se debe a que el tipo de datos 'int' en el lenguaje 'C', según los estándares ANSI C, es un tipo numérico de 32 bits y, por lo tanto, se ven 4 bytes.

Si su variable 'x' solo puede tomar valores de 2 bytes, entonces declare que es una variable 'corta', en lugar de 'int'. Esto se debe a que el tipo 'corto' según los estándares de idioma es un tipo numérico de 16 bits.

    
respondido por el icarus74

Lea otras preguntas en las etiquetas