Konvertieren zwei Hexadezimale ASCII-Zeichen (Zwei ASCII-bytes) in einem byte

Ich konvertieren wollen zwei ASCII-bytes, um ein hexadezimal-byte.
zB.

0x30 0x43 => 0x0C , 0x34 0x46 => 0x4F ...

Den ASCII-bytes eine Zahl zwischen 0 und 9 oder einen Brief zwischen A und F (upper case), also zwischen 0x30 ... 0x39 und 0x41 ... 0x46

Weiß ich, wie "konstruieren" 0x4F mit den zahlen 0x34 und 0x46 : 0x4F = 0x34 * 0x10 + 0x46

So, in der Tat, würde ich zum konvertieren einer ASCII-byte in hexadezimaler Wert.

Dafür, ich kann bauen und array zuweisen der Hexadezimalwert der ASCII-char :

0x30 => 0x00
0x31 => 0x01
...
0x46 => 0x0F

Aber vielleicht haben die meisten « die richtige » Lösung.

Wird das Programm auf einem AVR-µC und kompiliert wird mit avr-gcc, so scanf() /printf() Lösungen sind nicht geeignet.

Habt Ihr da eine Idee ?
Dank

es gibt keine solche Sache als ASCII-bytes oder hex-bytes.
Was du (anscheinend!) tun möchten ist konvertieren ein paar bytes, die ein einzelnes byte von Interpretation die zwei bytes, die als ASCII-Symbole, die wiederum die hex-Ziffern darstellen, und mit den entsprechenden hexadezimalen Wert. Die Lösung diese Art von Fragen erfordert ein präzises Verständnis von dem, was Sie wirklich tun; und präzise Kommunikation hilft viel 🙂 Sie müssen sicher sein, Sie verstehen, grundlegend, was Daten ist. Wie David sagte, bytes sind bytes; es gibt keine ASCII-bytes oder hex-bytes.
ASCII-byte = byte repräsentieren einen ASCII-char-und hexadezimal-byte = byte-dargestellt in hexadezimal. Ich weiß, bytes sind bytes; ich weiß nur nicht, wie es zu erklären. Aber andere haben verstanden, was ich meinte. Ist das nicht das wichtigste?

InformationsquelleAutor Loïc G. | 2011-08-03

Schreibe einen Kommentar