Nibbles nach char umwandeln

Hemi

Aktives Mitglied
Premium Benutzer
30. Nov. 2008
1.103
19
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Servus miteinander,

ich habe ein kleines Problemchen und zwar:

Ich habe ein String:

Code:
unsigned char c[] = {0x30, 0x32, 0x35, 0x50};

So. Jetzt will ich die erste Stelle des zweiten Bytes und die zweite Stelle des dritten Bytes haben:

Code:
unsigned char byte2, byte3;

byte2 = (c[1] >> 4) & 0x0F;
byte3 = c[2] & 0x0F;

So weit, so gut.

Wenn ich es mir jetzt ausgebe:

Code:
printf ("Byte2 ist: %x\n", byte2);
printf ("Byte3 ist: %x", byte3);

Sehe ich:

Code:
Byte2 ist: 3
Byte3 ist: 5

Wie kriege ich es hin, dass ich für die 3 und 5 den Hex-Code sehe, also 0x33 und 0x35?

Danke & Grüsse
Heinrich
 
Hallo Heinrich,

du meinst den Ascii-Code. Addiere einfach 0x30 (48 dezimal) und gib diese Zahl aus.

Gruß,
Dirk
 
Hallo ihr,

du meinst den Ascii-Code. Addiere einfach 0x30 (48 dezimal) und gib diese Zahl aus.
das geht aber nur von 0..9 .
ab 10 (also A) muß man noch einen weitern Offset dazuaddieren :D
da zwischen 9 und A in der ASCII-Tabelle noch ein paar Sonderzeichen sind.

Gruß
Dino
 
Hi Dino,

stimmt natürlich (war anscheinend noch nicht ganz wach :boring:), ab 10 dann 0x37 addieren :)

Man kann es auch über Tabellenadressierung machen:



CodeBox C


const unsigned char HEX<> PROGMEM = {"0123456789ABCDEF"};

// ...

byte_ascii = pgm_read_byte(&HEX<byte1 & 0x0F>);



(">" und "<" durch eckige Klammern ersetzen)

Grüße,
Dirk
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)