Преобразование шестнадцатеричного в десятичное

Я ищу способ конвертироватьhex(hexadecimal) вdec(decimal) без труда. Я нашел простой способ сделать это, как:

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

Но с этим я не могу ввести265, Есть ли в любом случае, чтобы это работало так:

Входные данные:265

Выход:613

Есть ли способ сделать это?

Note: Я пробовал:

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

и это не работает.

 Esailija14 июн. 2012 г., 12:25
printf( "%x", k) Похоже
 Chris14 июн. 2012 г., 12:41
Возможный дубликат:stackoverflow.com/q/676763/769220
 zeulb14 июн. 2012 г., 12:27
@ Оли Чарльзуорт, я хочу ввести "265" и выведите «613»;
 zeulb14 июн. 2012 г., 12:27
@Esailija Я думаю, что вместо этого он конвертирует int в hex.
 Oliver Charlesworth14 июн. 2012 г., 12:26
Это не ясно.0x265 is 613 в десятичном виде. Чего ты ожидал?

Ответы на вопрос(6)

std::hex манипулятор:

#include <iostream>
#include <iomanip>

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

    return 0;
}
 zeulb14 июн. 2012 г., 12:38
в любом случае, чтобы сделать это без использования ввода? потому что я хочу использовать оригинальный ввод для чего-то еще
 14 июн. 2012 г., 12:42
@zeulb, не уверен, что именно ты имеешь в виду. Но вы вернетесьcin использовать десятичное числоstd::cin >> std::dec;
 zeulb14 июн. 2012 г., 12:43
я имею в виду, я хочу использовать как шестнадцатеричный и десятичный на двух разных переменных
 zeulb14 июн. 2012 г., 12:51
как я использую «cin» & gt; hex & gt; & gt; k; ', затем я ввел 265, теперь значение k было 613. я хочу сохранить 265 в переменной p. и 613 остаются на переменной k. Извините за мой плохой английский.
 14 июн. 2012 г., 12:48
То, как ввод был выполнен (шестнадцатеричный или десятичный), не влияет на внутреннее представление переменной (переменных) int, и что? Прошу выразить себя более четко. Вы хотите сохранить значения из потока в две переменные в пределах одного оператора?

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

    return !ss.fail();
}

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

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

        exit(0);
}
    std::cout << "Enter decimal number: " ;
    std::cin >> input ;

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

который может быть логическим, или float, или int, он будет передан обратно в вызов основной функции int ...

С помощью шаблонов функций, основанных на типах аргументов, C генерирует отдельные функции для соответствующей обработки каждого типа вызова. Все определения шаблона функции начинаются с ключевого слова template, за которым следуют аргументы, заключенные в угловые скобки & lt; и & gt ;. Единственный формальный параметр T используется для типа данных, которые будут проверены.

Рассмотрим следующую программу, где пользователю предлагается ввести целое число, а затем число с плавающей запятой, каждая из которых использует функцию квадрата для определения квадрата. С помощью шаблонов функций, основанных на типах аргументов, C генерирует отдельные функции для соответствующей обработки каждого типа вызова. Все определения шаблона функции начинаются с ключевого слова template, за которым следуют аргументы, заключенные в угловые скобки & lt; и & gt ;. Единственный формальный параметр 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
Решение Вопроса
#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;
}
 29 июн. 2015 г., 19:51
Вам не нужно #include & lt; sstream & gt; ?
 zeulb14 июн. 2012 г., 12:57
спасибо :) это то, что я ищу: D
 14 июн. 2012 г., 13:45
Почему промежуточный струнный поток. Почему не простоcin >> hex >> y?

использующее строки и преобразующее его в десятичное с помощью таблиц ASCII:

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

Ваш ответ на вопрос