it-swarm.com.de

Hexadezimal in Dezimal umwandeln

Ich suche nach einer Möglichkeit, hex zu konvertieren(hexadezimal) zu dec(Dezimal) leicht. Ich habe einen einfachen Weg gefunden, dies zu tun:

int k = 0x265;
cout << k << endl;

Aber damit kann ich nicht 265 eingeben. Gibt es sowieso dafür, dass es so funktioniert:

Eingabe: 265

Ausgabe: 613

Gibt es sowieso das zu tun?

Hinweis: Ich habe versucht:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

und es funktioniert nicht.

8
zeulb
#include <iostream>
#include <iomanip>

int main()
{
    int x, y;
    std::stringstream stream;

    std::cin >> x;
    stream << x;
    stream >> std::hex >> y;
    std::cout << y;

    return 0;
}
19
smichak

Verwenden Sie std::hex manipulator:

#include <iostream>
#include <iomanip>

int main()
{
    int x;
    std::cin >> std::hex >> x;
    std::cout << x << std::endl;

    return 0;
}
11
hmjd

Nun, der C-Weg könnte so etwas sein ...

#include <stdlib.h>
#include <stdio.h>

int main()
{
        int n;
        scanf("%d", &n);
        printf("%X", n);

        exit(0);
}
5
stefanl

Hier ist eine Lösung, die Strings verwendet und mit ASCII -Tabellen in Dezimalzahlen konvertiert:

#include <iostream>
#include <string>
#include "math.h"
using namespace std;
unsigned long hex2dec(string hex)
{
    unsigned long result = 0;
    for (int i=0; i<hex.length(); i++) {
        if (hex[i]>=48 && hex[i]<=57)
        {
            result += (hex[i]-48)*pow(16,hex.length()-i-1);
        } else if (hex[i]>=65 && hex[i]<=70) {
            result += (hex[i]-55)*pow(16,hex.length( )-i-1);
        } else if (hex[i]>=97 && hex[i]<=102) {
            result += (hex[i]-87)*pow(16,hex.length()-i-1);
        }
    }
    return result;
}

int main(int argc, const char * argv[]) {
    string hex_str;
    cin >> hex_str;
    cout << hex2dec(hex_str) << endl;
    return 0;
}
4
Christos
    std::cout << "Enter decimal number: " ;
    std::cin >> input ;

    std::cout << "0x" << std::hex << input << '\n' ;

wenn Sie eine Eingabe hinzufügen, die ein Boolean oder Float oder Int sein kann, wird sie im Int-Hauptfunktionsaufruf zurückgegeben.

Mit Funktionsvorlagen, die auf Argumenttypen basieren, generiert C separate Funktionen, um jeden Anruftyp entsprechend zu behandeln. Alle Funktionsvorlagendefinitionen beginnen mit der Schlüsselwortvorlage, gefolgt von Argumenten in spitzen Klammern <und>. Ein einziger Formalparameter T wird für die Art der zu testenden Daten verwendet. 

Betrachten Sie das folgende Programm, in dem der Benutzer aufgefordert wird, eine Ganzzahl und dann eine Gleitkommazahl einzugeben. Jedes Programm verwendet die Quadratfunktion, um das Quadrat zu bestimmen .. Mit Funktionsvorlagen generiert C auf Grundlage von Argumenttypen separate Funktionen, um jeden Aufruftyp zu behandeln passend. Alle Funktionsvorlagendefinitionen beginnen mit der Schlüsselwortvorlage, gefolgt von Argumenten in spitzen Klammern <und>. Ein einziger Formalparameter T wird für die Art der zu testenden Daten verwendet. 

Betrachten Sie das folgende Programm, in dem der Benutzer aufgefordert wird, eine Ganzzahl und dann einen Float einzugeben. Jedes Programm verwendet die Quadratfunktion, um das Quadrat zu bestimmen.

#include <iostream>
 using namespace std;
template <class T>      // function template
T square(T);    /* returns a value of type T and accepts                  type T     (int or float or whatever) */
  void main()
{
int x, y;
float w, z;
cout << "Enter a integer:  ";
cin >> x;
y = square(x);
cout << "The square of that number is:  " << y << endl;
cout << "Enter a float:  ";
cin >> w;
z = square(w);
cout << "The square of that number is:  " << z << endl;
}

template <class T>      // function template
T square(T u) //accepts a parameter u of type T (int or float)
{
return u * u;
}

Here is the output:

Enter a integer:  5
The square of that number is:  25
Enter a float:  5.3
The square of that number is:  28.09
1
101dolmations

Ich benutze das:

template <typename T>
bool fromHex(const std::string& hexValue, T& result)
{
    std::stringstream ss;
    ss << std::hex << hexValue;
    ss >> result;

    return !ss.fail();
}
0
dimon4eg