Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> hex -> dec c i386\amd64 
:(
    Опции темы
Loki
Дата 21.6.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



Как быстро конвертнуть hex в decimal на Си? При этом что-бы было платформонезависимо или компилируемо на разных архитектурах, в общем используя CPU\FPU регистры?
PM MAIL   Вверх
mes
Дата 21.6.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Loki @  21.6.2008,  11:09 Найти цитируемый пост)
Как быстро конвертнуть hex в decimal на Си? 

вот простой (без проверок) пример по конвертации строкового шестнадцациричного значения в int
Код

#include <cstdlib>
#include <iostream>

int Hex2Int (const char* hex)
{
    int i = 0;
    while (*hex)
    {
        int a=0;
        if (*hex >= '0' && *hex <= '9')      a = (i<<4) + *hex-'0';
        else if (*hex >= 'A' && *hex <= 'F') a = (i<<4) + *hex-'A'+10;
        else if (*hex >= 'a' && *hex <= 'f') a = (i<<4) + *hex-'a'+10;
        else break;
        i=a; ++hex;
    };
    return i;
};

int main()
{
// test:
    std::cout << Hex2Int ("0FAH") << std::endl;
    std::cout << Hex2Int ("0FA")  << std::endl;
    std::cout << Hex2Int ("FA") << std::endl;
    std::cout << Hex2Int ("FAX") << std::endl;
    std::cout << Hex2Int ("FXA") << std::endl;
 system ("pause");
    return 0;
}



Добавлено через 10 минут и 2 секунды
Цитата(Loki @  21.6.2008,  11:09 Найти цитируемый пост)
в общем используя CPU\FPU регистры

как невнимательно читаю - этой строчки и не видел.

Во первых для использования регистров надо обрашаться в раздел ASM
Во вторых в каком виде хранится hex ? и в каком нужно получить dec ?
и какова разрядность (для  учета отрицательных значений ) ?

Это сообщение отредактировал(а) mes - 21.6.2008, 12:15


--------------------
PM MAIL WWW   Вверх
W4FhLF
Дата 21.6.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Цитата(Loki @  21.6.2008,  11:09 Найти цитируемый пост)
в общем используя CPU\FPU регистры?


1. зачем использовать FPU для конвертирования целых?
2. Любой код на С будет скомпилирован в машинный и там будут использованы регистры общего назначения. Это я тебе 100% даю. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Loki
Дата 22.6.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



mes, спасибо, на си уже переделаю=)
Цитата

1. зачем использовать FPU для конвертирования целых?
2. Любой код на С будет скомпилирован в машинный и там будут использованы регистры общего назначения. Это я тебе 100% даю.  

да, точно, все равно в итоге компиляции получается машинный код smile 
PM MAIL   Вверх
Mayk
Дата 26.6.2008, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



man strtol


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3946 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.