Probleme Hex-Werte auf Display auszugeben

Gast #899868
Lesenswert?

Hallo zusammen,

ich habe folgendes Problem. Ich habe in einem Array mehrere Werte in HEX 
stehen.

unsigned char Data[8];

Nun möchte ich diese Daten auf einem LC-Display ausgeben. Die Ausgabe an 
sich ist kein Problem.

Mein Problem ist, die Daten in Hex auszugeben. Normale Werte (Integer) 
wandle ich mit einer Funktion in einen String um und gebe sie dann auf 
dem Display aus.
1
IntToString(ausg_str, Data[ii], 2,1);
2
LCDOuts(ausg_str);

Wenn ich das nun mit meinen Hex-Werten mache, werden die Werte natürlich 
nicht in Hex sondern Dezimal ausgegeben, aber ich möchte z.B. 11, 22, 
33(Hex)... usw. ausgeben, anstatt 17, 34, 51...

Wenn ich die Daten direkt ausgebe...
1
LCDOuts(Data[ii]);

wird nur Mist ausgegeben.

Wäre klasse, wenn mir dabei jemand helfen könnte, die Daten auch 
wirklich in Hex auszugeben...

Gruß
Bernd
Gast #899883
Lesenswert?

>Ich habe in einem Array mehrere Werte in HEX stehen.
Das ist so nicht ganz richtig. Die stehen da binär drin. Es ist egal, ob 
Du sie HEX, octal oder dezimal reinschreibst, sie werden immer binär 
reingeschrieben.

Wahrscheinlich müsstest Du so was machen wie:
1
 ausg_str = sprintf("%h", Data[ii]);
2
LCDOuts(ausg_str);
Gast #899884
Lesenswert?

mit sprintf(%X) geht das, dürfte aber das Programm mächtig aufblasen.
Kannst die aber selber einen kleine Routine schreiben. Tabelle, die 
0..15 in 0..F umcodiert, nibbleweise adressieren.
Gast #899946
Lesenswert?

void PrintHex(unsigned char byte)
{
  /*~~~~~~~~~~~~~*/
  unsigned char byte1, byte2;
  /*~~~~~~~~~~~~~*/

  byte1 = (unsigned char) (byte / 16);
  byte2 = (unsigned char) (byte % 16);

  /* printf("byte1: %d byte2: %d",byte1,byte2); */
  if(byte1 <= 9)
    PUTC(byte1 + 48);
  else
    PUTC(byte1 - 10 + 65);
  if(byte2 <= 9)
    PUTC(byte2 + 48);
  else
    PUTC(byte2 - 10 + 65);
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren