kann man in C keine sprintf-Formatierung im Binärformat machen?
Also so:
void printIrString () {
char tmp[20];
for (int s = 0; s < 19; s++) {
sprintf(tmp, "Byte %02d: %02X %08b" , s , irString[s], irString[s]);
Serial.println (tmp);
}
Serial.println ();
}
Soll ein Bytearray sowohl als Hexzahl, und neben dran als Binärzahl darstellen. Hexzahl geht, Binärzahl nicht.
Ja ich weiss, es ginge auch mit: Serial.println (irString[s], BIN); Aber da fehlen halt die führenden Nullen.
Du kannst erst mal berechnen wie viele Stellen deine Zahl als Binär braucht. Und dann vorher so viele Nullen ausgeben. Danach dann print() mit BIN machen.
So variabel brauch ichs gar nicht. Will ja nur immer ein Byte ausgeben.
Hab daher nur das wesentliche aus deinem Beispiel gezogen.
Aber irgendwie bringt der neue Code den UNO zum abkacken:
void printIrString () {
char tmp[10];
for (int s = 0; s < 19; s++) {
sprintf(tmp, "Byte %02d: %02X " , s , irString[s]);
Serial.print (tmp);
utoa(irString[s], tmp, 2);
int length = strlen(tmp);
for(int i = length; i < 8; i++)
Serial.print('0');
Serial.println (irString[s], BIN);
}
Serial.println ();
}
EDIT:
Aaaaahhhh:
char tmp[10];
Was hat mich da geritten...... dachte für die Binärzahl ist das array groß genug. Aber für den sprintf hats dann nicht mehr gereicht.
Schäm
BTW: Danke dass du gleich immer ein Codebeispiel hinterherschickst. Das machts für mich dann doch leichter. 8)