Was will ich von ‚B‘ konvertieren Hex-Wert 0xB, die 11
Also, Sie B als Hexadezimalzahl und bekommen Zahlenwert, sondern als "sie interpretieren wollen konvertieren hexadezimale Darstellung ". Folgende Arbeiten für jede Base (bis zur Basis 36) und mit Groß- und Kleinbuchstaben Ziffern:
int value =
(c >= '0' && c <= '9') ? (c - '0') :
(c >= 'A' && c <= 'Z') ? (c - 'A' + 0xA) :
(c >= 'a' && c <= 'z') ? (c - 'a' + 0xA) :
-1; // error
Sie ersetzen können z
mit f
, wenn Sie den Fehlerwert wollen, wenn die Eingabe nicht eine hexadezimale Ziffer ist.
Alte Antwort:
Zeichen werden als Zahlen codiert. Welcher numerische Wert repräsentiert, welches Zeichen durch die Zeichencodierung bestimmt wird.
"Hexadezimale Darstellung" einer Zahl ist eine Zeichenkette. Diese Zeichen repräsentieren die Hexadezimalziffern der Zahl einzeln. Die numerischen Werte der Zeichen in der hexadezimalen Darstellung sind ohne den Kontext der Zeichencodierung bedeutungslos.
das erste Bitmap char Gesetzt ist ein ‚B‘, will ich es hexadezimale Darstellung umzuwandeln (Transform ‚B‘ in 0xB)
#include <string>
using namespace std::string_literals;
int main() {
char c = 'B';
std::string hex = "0x"s + c; // now hex is "0xB"
}
Es wäre in der Tat ziemlich ineffizient sein, zuerst Konvertieren Sie B
in eine Ganzzahl und dann zurück in Hexadezimaldarstellung mit std::stringstream
, wenn alles, was Sie möchten, ist, das Präfix hinzuzufügen.
@ FrédéricHamidi somthing wie: int val = (byte> = ' EIN') ? (Byte - 55): (Byte - '0')? Auch mit ternären Operator ist schnell? – learner