2016-03-28 7 views
-4

Vielen Dank im VorausC/C++ ASCII des Charakters zu HEX Byte-Array

Ich frage mich, wie in C/C++ ich etwas wie erreichen würde:

ASCII-Zeichen Array: enter image description here

Convert das in ein BYTE-Array von: enter image description here

Ergebnis in einem 0x10-Array anstelle von 0x20.

Prost

+0

Sie meinen, wie können Sie die Hex ASCII-Darstellungen als einfache Werte interpretieren? –

+0

Yh ..........:> Ich sah mich eine Weile um, bevor ich fragte, konnte aber nichts finden. – Snazzy

+0

Eigentlich ist der erste Dump, den Sie zeigen, ein Dump eines Hex-Codes und Sie wollen die Hexadezimalziffern in binäre Nibbles kodieren. Das ist im Grunde, was Ihr Algorithmus reduziert auf: Wie kodieren Sie eine hexadezimale Zahl in ein binäres Nibble und wo platzieren Sie die Nibble (hoch oder niedrig)? – ikrabbe

Antwort

-1

eine Hexadezimalzeichens

#define HEX2BIN(D) ((('0' <= D) && (D <= '9')) ? D-'0' : (('a' <= D) && (D <= 'f')) ? D-'a'+10 : (('A' <= D) && (D <= 'F')) ? D-'A'+10 : -1) 

und legen Sie es hoch oder niedrig

#define NIBBLE2BYTE(HI,BYTE,NIBBLE) do { if (HI) { BYTE = ((BYTE & 0xf0) | NIBBLE<<4); HI = 0; } else { BYTE = ((BYTE & 0x0f) | NIBBLE); HI=1; } } while (0) 

Encoding. Jetzt können Sie Ihre Eingabe und Ausgabe zunächst mit HI=1 durchlaufen. Test auf HEX2BIN(D) > 0, um Eingabefehler zu erfassen!

+0

Verwenden Sie niemals ein Makro, wenn es auf die gleiche Weise mit einer Funktion ausgeführt werden kann. – Olaf

+1

Ich wollte nur das Konzept zeigen. Jeder, der seine ersten Lektionen in C-Programmierung gelernt hat, sollte in der Lage sein, diese Kodierung in fast allem zu machen, sei es eine Funktion, ein Makro, ein bisschen Assembler-Code oder nur eine einfache Schleife direkt in den Code geschrieben und Makros können sehr sein nützlich für so einfache Dinge. – ikrabbe

+1

Sie unterrichten effektiv schlechten (und fehleranfälligen) Codierungsstil. Dies wird von Anfängern gelesen, die das für den normalen Weg nehmen. Sie können dies auch mit einer Funktion anzeigen. Nicht zu vergessen die Verwendung von Großbuchstaben wird üblicherweise für Makros und _enum-constants_ verwendet. – Olaf