[C++]Hex in Dez Umrechner

12/10/2014 10:11 .Quadral#1
Guten Tag liebe Programmierer,


wollte mal eben einen kleinen Umrechner programmieren, der mit Hex->Dez und Dez->Hex umrechnet.

Meine Frage ist wenn ich jetzt eingebe z.B.: 1F6
Wie ich dem Programm sagen kann welche Ziffer er behandeln soll, weiß nicht genau, wie ich das sagen soll :|

ich habe meinem Programm noch gesagt:
PHP Code:
10=='A'
11=='B'
12=='C'
13=='D'
14=='E'
15=='F' 
Also kurz:
Wie kann ich sagen das er von 1F6 erstmal die 6 behandeln soll.
Geht das so: iHexZahl(0) ?

Tut mir leid für meine schlecht gewählt Aussprache, weiß aber nicht genau wie ich das schreiben soll.
Kann euch meinen gesamten Code leider nicht zur Verfügung stellen, da ich im Moment auf Arbeit bin.

Ich möchte im Grunde genommen die Hexadezimalzahl 1F6 in die passende Dezimalzahl umrechnen.

Mit freundlichen Grüßen
12/10/2014 14:03 lordsill#2
ich denke mal, 1F6 wird als String gespeichert sein?

Dann kannst du einfach den String rückwärts lesen.

z.b.

Code:
string value = "1F6";
for (int k = value.length() - 1; k >= 0; k--)
{
	cout << value.at(k);
}
So würde er dir jetzt deine Eingabe einmal von hinten nach vorne lesen. So kannst du dann auch die einzelnen "Zeichen" handhaben
12/10/2014 14:05 .Quadral#3
Versteh ich nicht so ganz.
Kannst du es mir per PN erklären vielleicht?

Mfg
12/10/2014 15:11 bloodx#4
std::hex
12/10/2014 18:36 snow#5
Wenn es dir nur um die Ausgabe geht, sollte das mit std::stoi und std::dec gehen:
Code:
std::cout << std::dec << std::stoi(input, nullptr, 16) << std::endl;
Sollte es dir um einen Algorithmus gehen:

Code:
int to_hex(const std::string &input)
{
    int p = 0;
    int output = 0;
    for (auto it = input.crbegin(), end = input.crend(); it != end; ++it, ++p)
    {
        output += char_to_num(*it) * static_cast<int>(std::pow(16, p));
    }

    return output;
}
mit

Code:
int char_to_num(char c)
{
    switch (c)
    {
    case 'A':
    case 'B':
    case 'C':
    case 'D':
    case 'E':
    case 'F':
        return c - 'A' + 10;    
    default:
        return c - '0';
    }
}
zur einfachen Konvertierung (keine Fehlerbehandlung, yolo) funktioniert bei mir.
12/10/2014 23:03 Terrat#6
Snow posts all he is every where *_*
Habe genau das selbe gesucht *_*
12/11/2014 07:22 .Quadral#7
Danke snow, da ich aber noch Anfänger bin, wäre es nett wenn du mir deinen Code erklären könntest, danke.