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

CharToInt - C++

Войти
Регистрация
Восстановить пароль
 
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
26.02.2014, 00:58     CharToInt #1
нужно перевести 16ричную строку в тип int
идея - с тем чтоб часть перевести в atoi'ем а при встрече букв case'ом выполнить переход к соответствущими числу, а потом сделать конкатенацию двух переводов - адекватная?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Нарушитель
6954 / 5192 / 256
Регистрация: 10.12.2010
Сообщений: 22,778
Записей в блоге: 17
26.02.2014, 01:07     CharToInt #2
HexToBin()
nikolay1982
92 / 92 / 38
Регистрация: 22.01.2014
Сообщений: 310
26.02.2014, 01:13     CharToInt #3
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
int hex2int(char *str)
{
    char c;
    int s;
    s=0;
    while ((c=*str))
    {
        if (c>='a')
        {
            c-=87;
        }
        else
        {
            if (c>='A')
            {
                c-=55;
            }
            else c-=48;
        }
        s=s*16+(int) c;//mojno s=(s<<4) +(int)c;
        str++;
    }
    return s;
}
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
26.02.2014, 01:17  [ТС]     CharToInt #4
Avazart, понравилась такая мысля, только что-то не понял как в cpp подключить, еще и пишут, что HextoInt есть...
DrOffset
6795 / 4006 / 920
Регистрация: 30.01.2014
Сообщений: 6,830
26.02.2014, 02:22     CharToInt #5
Цитата Сообщение от RayPas Посмотреть сообщение
нужно перевести 16ричную строку в тип int
Все же умеет делать strtol. См последний параметр.
Avazart
Нарушитель
6954 / 5192 / 256
Регистрация: 10.12.2010
Сообщений: 22,778
Записей в блоге: 17
26.02.2014, 03:09     CharToInt #6

Не по теме:

Цитата Сообщение от RayPas Посмотреть сообщение
Avazart, понравилась такая мысля, только что-то не понял как в cpp подключить, еще и пишут, что HextoInt есть...
Прошу прощение, то что я кинул касается С++Builder



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
#include <iostream>
#include <string>
#include <sstream>
 
 
template<class CharT>
bool hex_str_to_int(const std::basic_string<CharT>& s,int &value)
{
    std::basic_stringstream<CharT> ss(s);
    return ss>>std::hex>>value;
}
 
int main()
{
    int value;
    std::string s="0x0C";
    if(hex_str_to_int(s,value))
        std::cout<<value<<std::endl;
    else
        std::cerr<<"Error convert"<<std::endl;
 
    getchar();
    return 0;
}
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
26.02.2014, 12:53  [ТС]     CharToInt #7
DrOffset, вроде не переводит буквы в цифры вернет указатель на тот момент когда прекратит перевод, т.е. я так понял, на первый встретившийся символ отличный от цифры
DrOffset
6795 / 4006 / 920
Регистрация: 30.01.2014
Сообщений: 6,830
26.02.2014, 13:45     CharToInt #8
Цитата Сообщение от RayPas Посмотреть сообщение
DrOffset, вроде не переводит буквы в цифры
Да как же так-то? Я же ссылку дал на справку, там же и примеры есть... Откуда хоть такие выводы-то?
16тричные знаки она переводит, если указать нужную систему счисления.

Цитата Сообщение от RayPas Посмотреть сообщение
вернет указатель на тот момент когда прекратит перевод, т.е. я так понял, на первый встретившийся символ отличный от цифры
Вернет, для контроля. А ты знал, что atoi реализована через эту функцию?
Avazart
26.02.2014, 15:05
  #9

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
А ты знал, что atoi реализована через эту функцию?
atoi() вообще фиговая функция, ибо число 0 от ошибки конвертирования не отличить.

DrOffset
6795 / 4006 / 920
Регистрация: 30.01.2014
Сообщений: 6,830
26.02.2014, 18:04     CharToInt #10
Цитата Сообщение от Avazart Посмотреть сообщение
atoi() вообще фиговая функция, ибо число 0 от ошибки конвертирования не отличить.

Не по теме:

через errno можно. но фиговой от этого она быть не перестает, соглашусь
поэтому функция strtol лучше хотя бы тем, что не требует задействовать errno для определения наличия ошибки.

Yandex
Объявления
26.02.2014, 18:04     CharToInt
Ответ Создать тему
Опции темы

Текущее время: 09:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru