Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2009, 20:10   #1
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию Шестнадцатеричные цифры

Добрый день, спешу за помошью. Вот делал себе спокойно курсовик опять таки и наткнулся на оочень неприятную штуку. Эта штука состоит в том, что у меня есть массив (*buf), в этом массиве находится несколько чисел в шестнадцатеричном виде (1F A 3F). Как вы понимаете (т.е. пока не увидев код ), массив *buf у меня char. Мне вот что надо, мне надо так, чтобы из этого массива брались эти циферки (в коде я реализовал так, чтобы циферки брались по одному, т.е. пропускаю пробелы), потом эти циферки сохранялись куда нить как циферки и к этим циферкам можно было прибавить любые другие циферки того же типа как и они (к шестнадцатеричным прибавить шестнадцатеричные)
и чтобы циферки можно было выводить в шестнадцатеричном виде, можно конечно складывать эти циферки между собой, не обязательно вводить их в консоль, но выводить результат так, чтобы сначало сумму вчислить а потом сумму вывести (сумма куда то сохраняется, вот я не знаю куда сохранять).
Код:
#include <conio.h>
#include <stdio.h>
#include <windows.h>

void main (void)
{
 char buf[] = "F1 A B";
 char raz[] = " ";
 char *trush;
 trush = strtok(buf,raz);
 while ( trush != NULL)
 {
  printf("%s\n", trush);
  trush = strtok(NULL,raz);
 }
}
вроде бы все что я хотел..., да, buf, raz, trush, если можно, то так и оставить просто чарами, потому что у меня в файле находится не только шестнадцатеричные цифры, но и команды.
Спасибо за внимание.
Olejik вне форума Ответить с цитированием
Старый 04.06.2009, 21:43   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Если верно понял, то вам нужно написать функцию, которая будет из строки, где записано число в шестнадцатиричном виде, делать число в десятичном.
Ну а выводить можно так:
Код:
printf("%x\n",<число>);
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 21:59   #3
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

хммм...ну значит мне надо переводить в десятичное, потом пожно это число будет меремножать, умножать, вычислять, потом его обратно переводить в шестнадцатеричное? Проста у меня курсовая - типа транслятор для асма, там два прохода и там кароч адреса меток и КОП и операндов типа в шестнадцатеричном виде
а на счет этого вывода, как Вы написали,я знаю, но мне проста надо, чтобы в массиве было сохранено шестнадцатеричное число...или десятичное...плин,я запутался ))
я посижу сейчас, покумекаю и если чо, уточню вопросик ))
Olejik вне форума Ответить с цитированием
Старый 04.06.2009, 22:02   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
но мне проста надо, чтобы в массиве было сохранено шестнадцатеричное число.
Если так, то, возможно, имеется в виду, что вам нужно написать свой класс.
А так, в переменной хранится число, просто число. Не в десятичной, не в шестнадцатиричной системе. Оно просто там есть.
Возможно, вам нужно хранить их как строки, а не как числа.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 22:27   #5
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

ну я разобрался,я решил сделать так, выцепить всетаки шестнадцатеричное число из строки, потом его преобразовать в десятичное и хранить как десятичное в массиве адресов, на всякий случай кидаю код, вдруг кому нить понадобится )
Sazary, спасибо, помог, так сказать подвел меня к решению ))
Код:
int atos (char *trash)
{
	int r,k = 1,t = 0;
	r = strlen (trash);
	r--;
	for ( ; r>=0 ; k *= 16, r--)
	{
		switch (trash[r])
		{
		case '0' : break;
		case '1' : t+=1*k; break;
		case '2' : t+=2*k; break;
		case '3' : t+=3*k; break;
		case '4' : t+=4*k; break;
		case '5' : t+=5*k; break;
		case '6' : t+=6*k; break;
		case '7' : t+=7*k; break;
		case '8' : t+=8*k; break;
		case '9' : t+=9*k; break;
		case 'A' : t+=0xA*k; break;
		case 'B' : t+=0xB*k; break;
		case 'C' : t+=0xC*k; break;
		case 'D' : t+=0xD*k; break;
		case 'E' : t+=0xE*k; break;
		case 'F' : t+=0xF*k; break;
		}
	}
	return t;
}
Olejik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортирует цифры по строкам, а надо чтобы сортировала цифры , записанные через пробелы Алексей_xXx Помощь студентам 14 06.05.2009 17:42
Римские цифры Sergeevich Помощь студентам 2 26.05.2008 18:21
Шестнадцатеричные числа в делфи Hottabych Общие вопросы Delphi 1 03.05.2008 00:10
Двоичные и шестнадцатеричные числа Rembo Помощь студентам 9 13.11.2007 19:08
Перевёрнутые цифры BETONOMESHALKA Общие вопросы Delphi 2 04.11.2007 15:22