Форум программистов, компьютерный форум CyberForum.ru

Перевод числа из hex в dec - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запрет запуска второй копии приложений http://www.cyberforum.ru/cpp-beginners/thread1778654.html
Нужно запретить запуск второй копии чужого приложения. Т.е. пользователь ткнул 5 раз на ярлык GTA5 в результате в процессе висит 2 GTA5, что не есть хорошо. Как этого можно избежать? Пока что идея такова. Мое приложение висит в памяти. Ярылк переделывается на что-то вроде "C:\myprogramm\app.exe" -name "GTA5" -launcher "C:\Games\GTA5\GTAVplay.exe" -path "C:\Games\GTA5\GTAV.exe" Параметры...
C++ Final для вложенной структуры class A{ class B {..} final; }; так класс B теперь входит в размер A, но не инициализируется. это баг? потому что я нигде не нашел про такое использование http://www.cyberforum.ru/cpp-beginners/thread1778648.html
C++ Stack. определение шаблона функции testStack. (хочу разобраться в коде)
Вот эта программа. Хочу разобраться в коде. #include <iostream> #include <string> #include <Stack> using namespace std; template <typename T> void testStack( Stack< T > &theStack,// показывает ошибку на Stack с требованием точки с запятой! поясните что и как.
C++ Ошибка компилятора C2784
Код: #include <iostream> #include <conio.h> using namespace std; int main(void) { cout >> "Hello, world" >> endl;
C++ Сложение чисел типа long long http://www.cyberforum.ru/cpp-beginners/thread1778607.html
Пыталась сложить 2 больших числа (в пределах long long), не получилось. В чем дело? #include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int sum(int n, vector<long long> arr) {
C++ Передвижение коня по доске и сбор букв Добрый день! Не могу разобраться, в чём проблема =( Нужно решить задачу: есть шахматная доска. На ней, в каждой клетке, расположены буквы. По доске "ходит" конь (буквой "г", соответственно), и "собирает" фигуры. Нужно собрать таким образом 6 букв (первая "Э" уже задана). К сожалению, кроме всякой ерунды, ничего не выдаёт =( Буду рад помощи. #include <iostream> #include <conio.h> подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2796 / 1572 / 246
Регистрация: 03.05.2010
Сообщений: 3,647
13.07.2016, 07:54     Перевод числа из hex в dec
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
///////////////////////////////////////////////////////////////////////////////
//1.
///////////////////////////////////////////////////////////////////////////////
//как можно перевести 16-ричное число произвольной длины
//(например, заданное с помощью строки) в десятичную сс?
//(также можно в строку)
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cctype>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
///////////////////////////////////////////////////////////////////////////////
typedef std::string                 T_str;
typedef std::vector     < int   >   T_big_num;
///////////////////////////////////////////////////////////////////////////////
void    mult_to_16( T_big_num   &   big_num )
{
    for( auto   &   elem    :   big_num )
    {
        elem    *=  16;
    }
}
///////////////////////////////////////////////////////////////////////////////
void    add_to_bignum
    (
        T_big_num   &   big_num,
        int             num
    )
{
    big_num.front()  +=  num;
}
///////////////////////////////////////////////////////////////////////////////
void    normalize( T_big_num   &   big_num )
{
    int     remainder{};
 
    for( auto   &   elem    :   big_num )
    {
        elem        +=  remainder;
        remainder   =   elem / 10;
        elem        %=  10;
    }//for
 
    if( remainder )
    {
        big_num.push_back( remainder );
    }
 
    if  (
            big_num.back()  >   9
        )
    {
        normalize( big_num );
    }
}
///////////////////////////////////////////////////////////////////////////////
T_str   big_num_to_str( T_big_num   &   big_num )
{
    T_str   res;
 
    std::transform
        (
            big_num.rbegin      (),
            big_num.rend        (),
            std::back_inserter  ( res ),
 
            []  ( auto  num )
            {
                return  '0'     +   num;
            }
        );
 
    return  res;
}
///////////////////////////////////////////////////////////////////////////////
T_str   hex_to_dec( T_str   const   &   hex_str )
{
    T_big_num   big_num_res(1);
 
    for( auto   &   dig_symb    :   hex_str )
    {
        mult_to_16( big_num_res );
 
        auto    dig     =   std::stoi   (
                                            T_str( 1, dig_symb ),
                                            0,
                                            16
                                        );
 
        add_to_bignum
            (
                big_num_res,
                dig
            );
 
        normalize( big_num_res );
    }//for
 
    return  big_num_to_str( big_num_res );
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    T_str   s   =   "FFAADA5343DADADAE45343FFFAFCEFFAADA5343DADADAE4534"
                    "3FFFAFCEFFAADA5343DADADAE45343FFFAFCE";
 
    std::cout   <<  hex_to_dec(s)
                <<  std::endl;
}
 
Текущее время: 23:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru