Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Преобразование символьного представления числа ...  (Прочитано 11589 раз)
0 Пользователей и 11 Гостей смотрят эту тему.
EXE
Гость
« : 03-12-2003 08:40 » 

Добрый день!
Подскажите пожалуйста начинающему :

Имеется символьный масcив, в котором записаны числа в шестнадцатеричном виде.
Мне необходимо преобразовать символы в число в десятичном виде.

char Buff[4];
...
...
...

int Value = ...


1 2 c 8  - эти четыри символа (в массиве) образуют число 0X12c8
Требуется из элементов символьного массива получить десятичиное число (4808) и записать его в Value.

Заранее благодарен всем !!!
Записан
Diletant
Помогающий

de
Offline Offline

« Ответ #1 : 03-12-2003 08:53 » 

Массив желательно иметь длиной 5, чтобы завершающий нуль строки было куда записывать. И этот нуль таки записать.
Затем

   sscanf(Buff, "%x", &Value);

Все.
Записан
EXE
Гость
« Ответ #2 : 03-12-2003 09:05 » 

Diletant - СПАСИБО ОГРОМНОЕ !!!
Записан
GlukSoft
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 03-12-2003 09:09 » new

Задача не особо сложная, вот ответ.

char c;
int    i, v;
Value = 0;
for (i = 0; i < 4; i++)
{
  c = Buff;
  v = 0;
  if (c >= '0' && c <= '9')
    v = c - '0';
  if (c >= 'a' && c <= 'f')
    v = c - 'a' + 10;
  if (c >= 'A' && c <= 'F')
    v = c - 'A' + 10;
  Value = Value * 16 + v;
}
Записан

Fatal error C1: Brain expected
GlukSoft
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 03-12-2003 09:15 » 

Diletant, Судя по твоему ответу ты математик, помнишь старую шутку по поводу разницы между математиком и физиком Отлично ?
Записан

Fatal error C1: Brain expected
Igor10
Гость
« Ответ #5 : 15-01-2004 14:15 » 

If Win32 luche:

char *end;
Value = strtoul( Buff, &end, 16 );
Записан
Igor10
Гость
« Ответ #6 : 15-01-2004 14:17 » 

Sorry, nujen 0 v kontse Buff...
Записан
GlukSoft
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 15-01-2004 16:01 » 

Igor10, а какие проблемы его туда добавить вручную или с помощью функции?
Записан

Fatal error C1: Brain expected
Igor10
Гость
« Ответ #8 : 20-01-2004 11:54 » 

Цитата

какие проблемы его туда добавить вручную или с помощью функции?

A v chom raznitsa?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines