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)
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)
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
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.
Lea otras preguntas en las etiquetas arduino