web-dev-qa-db-ja.com

16進数から10進数への変換

hexを変換する方法を探しています(16進数) dec(10進数) 簡単に。私はこれを行う簡単な方法を見つけました:

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

しかし、それでは入力できません265。とにかくそれがそのように機能することはありますか:

入力:265

出力:613

とにかくそれをすることはありますか?

注:私が試した:

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

そしてそれは動作しません。

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

使用する - std::hex マニピュレータ:

#include <iostream>
#include <iomanip>

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

    return 0;
}
11
hmjd

さて、Cの方法は次のようなものかもしれません...

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

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

        exit(0);
}
5
stefanl

これは、文字列を使用し、ASCIIテーブルで10進数に変換するソリューションです。

#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' ;

boolean、float、またはintの入力を追加した場合、それはintメイン関数呼び出しで返されます...

関数テンプレートを使用すると、引数の型に基づいて、Cは各型の呼び出しを適切に処理するための個別の関数を生成します。すべての関数テンプレート定義は、キーワードテンプレートで始まり、その後に山括弧<および>で囲まれた引数が続きます。テストするデータのタイプには、単一の仮パラメーターTを使用します。

ユーザーが整数を入力してから浮動小数点数を入力するように求められる次のプログラムを考えてみます。それぞれが二乗関数を使用して二乗を決定します。関数テンプレートを使用すると、引数の型に基づいて、Cは各型の呼び出しを適切に処理するための個別の関数を生成します。すべての関数テンプレート定義は、キーワードテンプレートで始まり、その後に山括弧<および>で囲まれた引数が続きます。テストするデータのタイプには、単一の仮パラメーターTを使用します。

ユーザーが整数を入力してから浮動小数点数を入力するように求められる次のプログラムを考えてみます。それぞれが二乗関数を使用して二乗を決定します。

#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

私はこれを使います:

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