How to use "bitmap" in LoRa Serialization library?

I’m not sure if you’re still asking a question?

It’s just that the code does not print leading zeroes, which for humans often have no meaning. Each byte is always 8 bits, so you’re really sending 11110001 00000000 11111011. And hexadecimal F1 0 FB is the same as F1 00 FB, or f1 00 fb, or f100fb, and so on.

To print the leading zeroes, see other examples, like:

for (int i = 0; i < size; i++) {
  if (data[i] < 0x10) {
    Serial.print(F("0"));
  }
  Serial.print(data[i], HEX);
}

For binary, where the number of leading zeroes could be as many as 7, that’s a bit more difficult in Arduino. Many people on the Arduino forums use the bitRead like you used elsewhere in your code already, like, untested:

for (int i = 0; i < size; i++) {
  for (int bit = 7; bit >= 0; bit--) {
    Serial.print(bitRead(data[i], bit));
  }
  Serial.print(" ");
}

Fun fact: for computer code, a leading zero often denotes an octal number, just like a leading 0x denotes it’s a value in hexadecimal notation. Like in, e.g., C, C++, Java and JavaScript, 10 (decimal) and 010 (octal) are not the same. But in funny JavaScript, 80 and 080 are the same, while 70 and 070 are not:thinking:

2 Likes