Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C++ функция перевода из 16-ричной системы в 10-тичную

17K
18 ноября 2008 года
vanyavl
23 / / 25.12.2006
На данном этапе немного застрял. В С++ есть замечательная функция, с помощью которой можно из дестяичной системы перевести в 16-ричную

 
Код:
CString CCpios_laba1Dlg::perevod_x16(int x16)
{
    char buffer[20];
    _itoa(x16,buffer,16);
    return buffer;
}

А есть ли в С++, функция обратная _itoa, что б переводила из 16ричной системы в десятичную?
87
18 ноября 2008 года
Kogrom
2.7K / / 02.02.2008
strtol
14
18 ноября 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: vanyavl
В С++ есть замечательная функция, с помощью которой можно из дестяичной системы перевести в 16-ричную


В твоем случае она переводит из двоичной, десятичной, 16-ричной переменной в "16-ричную" строку. Между системами счисления она ну никак не переводит. Если бы она принимала на входе строку и выдавала строку на выходе - еще можно бы было о чем-то таком говорить.

17K
18 ноября 2008 года
vanyavl
23 / / 25.12.2006
Спасибо! Можно еще один вопросик? Вот я, сделал функцию:

 
Код:
CString CCpios_laba1Dlg::HexToDes(char *str)
{
    char *endstr;
    int i;
    CString s;
    i = strtol(str, &endstr, 16);
    s = perevod_x10(i);
    return s;
}


Потом ее вызываю

CString des;
des = HexToDes("100");
m_list2.AddString(des);

И на выходе получаю 256. Все правильно. А если к примеру у меня есть переменная
 
Код:
int r = 100;

Как мне ее можно вызвать
 
Код:
des =  HexToDes(r);
m_list2.AddString(des);

Тоесть мне надо передавать значение переменной, а не конкретное число!
конечно можно было

 
Код:
CString des;
   
    char *c1 = "100";
   
    des = HexToDes(c1);
    m_list2.AddString(des);


Но мне надо именно int
87
18 ноября 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: vanyavl
Но мне надо именно int



Код:
#include <sstream>

using namespace std;

string HextoString(int val)
{
    ostringstream oss;
    oss << hex << uppercase << val;
    return oss.str();
}

int val = 0x100;
17K
19 ноября 2008 года
vanyavl
23 / / 25.12.2006
Огромнейшее спасибо, а можете хоть примерно описать, что оно делает, я немного не понял(
87
19 ноября 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: vanyavl
Огромнейшее спасибо, а можете хоть примерно описать, что оно делает, я немного не понял(


Эээ, ну в общем-то тут я сделал аналог вашей функции perevod_x16...

А число оно и есть число - его величина от формата же не зависит. Формат виден только при выводе и когда вы инициализируете. Например:

int i = 255; // dec
то же что и
int i = 0xFF; // hex

17K
19 ноября 2008 года
vanyavl
23 / / 25.12.2006
Цитата: Kogrom
Эээ, ну в общем-то тут я сделал аналог вашей функции perevod_x16...

А число оно и есть число - его величина от формата же не зависит. Формат виден только при выводе и когда вы инициализируете. Например:

int i = 255; // dec
то же что и
int i = 0xFF; // hex



та я не про это, я еще не так слен в программировании, мне интересно откуда взялось:
ostringstream oss; //что это за тип такой?
oss << hex << uppercase << val; //что такое oss, hex, uppercase
return oss.str(); //и почему мы возвращаем oss.str()

И потом, при приписывании к интовской переменной 0x мы определяем число в 16 ричной системе?

87
20 ноября 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: vanyavl
та я не про это, я еще не так слен в программировании, мне интересно откуда взялось...


Есть два выхода: либо тупо копировать и вставлять, либо покупать толстые учебники по c++ и изучать. Если я начну отвечать, то появятся еще вопросы и мне придется перессказывать весь учебник...

Для представления шестнадцатеричных констант к числу добавляется спереди 0x , для восьмеричных, просто 0.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог