Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Класс по работе с ХЕКСами / 4 сообщений из 4, страница 1 из 1
14.06.2005, 17:35
    #33116267
Frankie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс по работе с ХЕКСами
Нужен С++ класс по работе с шестнадцатиричными числами, содержащий арифметические операции, конвертирование в другие форматы. Наверняка у вас есть ссылочка на код ;) Писать самому мне пока не по зубам...

P.S. Реализация - билдер, но вряд ли это имеет значение.
...
Рейтинг: 0 / 0
14.06.2005, 17:48
    #33116314
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс по работе с ХЕКСами
Frankie, чем такие методы не устраивают?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include<stdio.h>
int main(void){
         long x,y;
         char * xs="ABCD",
              * ys="4321";

         sscanf(xs, "%lx", &x);
         sscanf(ys, "%lx", &y);
         printf("%lx %ld %lx %ld \n", x+y, x+y, 
0xABCD+0x4321,0xABCD+0x4321);
         return  0 ;
}
-----на выходе----
eeee  61166  eeee  61166 

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
14.06.2005, 21:28
    #33116662
Frankie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс по работе с ХЕКСами
Я в С++ только начинаю, поэтому не обессудьте. Во-первых, не совсем понял объявление
Код: plaintext
1.
2.
char * xs="ABCD",
     * ys="4321";

вроде char подразумевает 1 символ, char* означает указатель, а в двойных кавычках размещают строки.... не въехал.

В остальном разобрался, только маленький вопрос насчёт:
Код: plaintext
1.
2.
printf("%lx %ld %lx %ld \n", x+y, x+y, 
0xABCD+0x4321,0xABCD+0x4321);
последние 2 аргумента являются строками?
...
Рейтинг: 0 / 0
15.06.2005, 06:42
    #33116814
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс по работе с ХЕКСами
FrankieЯ в С++ только начинаю, поэтому не обессудьте. Во-первых, не совсем понял объявление
Код: plaintext
1.
2.
char * xs="ABCD",
     * ys="4321";

вроде char подразумевает 1 символ, char* означает указатель, а в двойных кавычках размещают строки.... не въехал.

В остальном разобрался, только маленький вопрос насчёт:
Код: plaintext
1.
2.
printf("%lx %ld %lx %ld \n", x+y, x+y, 
0xABCD+0x4321,0xABCD+0x4321);
последние 2 аргумента являются строками?

Еще один студент
Начнем с начала. В С/С++ нет такого понятия как "строка"; все строки размещаются в массивах (каждая буква в своем элементе массива (=вектора) ).
К массивам в С/С++ можно обращаться при помощи "традиционной" записи (а[j]), а можно через указатели (*а). По умолчанию (если над указателем не проводились никакие операции) результат следующих двух обращений совершенно идентичный:
j=а[0] и j=(*а)

Теперь о записи чисел. В программе, написанной на С/С++ можно пользоваться как стандартной записью ("десятичная система счисления"), так и другими системами счисления. Одной из допустимых и часто используемых систем счисления является шестнадцатиричная система (ХЕКС'ы). Признаком записи числа в 16-ричном формате является "префикс" 0x. Так, если написано 0x20, то компилятор распознает в такой записи шестнадцатиричное число, которое в десятичной записи равно 32, а в символьной записи - пробелу (для тебя ведь не новость, что тип char определяется для 16-разрядных систем как unsigned int с интервалом возможных значений от 0 до 255)... Кроме того, все числа легко могут быть преобразованы от одного формата к другому при помощи форматной строки в функциях printf, sscanf и некоторых других.
Так запись "%lx" обозначает, что аргумент функции является числом типа long и его необходимо обработать в 16-ричном формате (например, вывести на экран)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Класс по работе с ХЕКСами / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]