Array to String. Großbuchstaben + "0" vorschieben,

Hallo Community,

Ich habe ein Problem. Um ID-Adressen auf einen Display wieder zu geben muss man die Daten die in einem Array gespeichert sind in ein String umwandeln. Soweit alles kein Problem ich habe das mit der itoa()-Funktion gewährleistet. Über den Serial Monitor bekam ich z.B. diese Adresse “2D 82 AA 34 03 00 00 7F”. Über eine einfache IF-Abfrage habe ich bei der Ausgabe eine 0 vorgeschoben, bei den Werten die <=15 sind. Dies ist aber bei einem String nicht möglich (meines Wissensstand nach). Auf dem Display erscheint nur “2d 82 aa 34 3 0 0 7f”.

Was kann ich nun machen, dass das Display mir auch Großbuchstaben ausgibt und bei HEX Zahlen kleiner gleich 15 eine Null vorgeschoben wird?

Danke für eure Hilfe! :wink:

Viele Grüße

Du kannst das LCD doch genau so beschreiben, wie Serial.
Das print verhält sich gleich (sollten sie zumindest).

Sonst mal bei toupper schauen.

Gruß Tommy

Schau dir mal sprintf(buffer, "%02X ",val); an.
Das macht führende Nullen und Großbuchstaben bei A … F.

Oder mach es einfach von Hand:

char buffer[25] = "00 00 00 00 00 00 00 00";  // Ergebnis
byte ID[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0xFF}; // Testdaten
for (byte i = 0; i < 8; i++) {
  toHex(buffer+(i*3), ID[i]);
} 
Serial.println(buffer);

void toHex( char* buf, byte x) {
// convert to hex ( set 2 characters at buf and buf+1 )
  byte x2 = x >> 4;
  if ( x2 > 9) *buf = x2 - 10 + 'A'; else *buf = x2 + '0';
  buf++; x2 = x & 0x0F;
  if ( x2 > 9) *buf = x2 - 10 + 'A'; else *buf = x2 + '0';
}

Danke für eure Hilfe. Es hat sehr gut mit dem sprintf-Befehl funktioniert :slight_smile:

Gruß