Вопрос № 78436: Здравствуйте!
Каким способом можно получить номер символа (char) из таблицы ASC и записать его в переменную типа int
Как програмно перевести число типа int из десятичной системы в двоичную?...Вопрос № 78447: Прива!
Как с помощью CFile считать постепенно в буфер и выводить на экран весь фаил, как заставить считывать фаил по кускам до конца и как вообще определить что начтупил конец фийла?!! ...Вопрос № 78448: Всем экспертам привет. Вопрос такой,
Каким образом использовать формат *.png в программе, какие есть компоненты.
Прямые ссылки на статьи и примеры приветструются.
...Вопрос № 78483: Здраствуйте!
Подскажите пожалуйста, какой компилятор С/С++ нужно использовать что бы скомпилировать программу под биос. Тоесть что бы работа на уровне БИОСА, а не ОС.
Может есть по этому делу какой-нибудь мануалчик....Вопрос № 78491: Добрый вечер. У меня на повестке дня такой вопрос: как можно ограничить поле ввода в командной строке для пользователя. Пример: нужно,чтобы пользователь ввёл просто символ, хочу обезопасить программу от ввода строки....
Вопрос № 78.436
Здравствуйте!
Каким способом можно получить номер символа (char) из таблицы ASC и записать его в переменную типа int
Как програмно перевести число типа int из десятичной системы в двоичную?
Отправлен: 15.03.2007, 15:44
Вопрос задал: Tatarin (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: V1s0r
Здравствуйте, Tatarin!
Используй функцию из стандартной библиотеки itoa, которая передодит число в строку в указанной СС. Или возись с побитовыми операторами. Или можешь использовать std::bitset (поместить туда число, потом по индексам брать биты).
Думаю, это не все возможные способы :)
Синтаксис в любом справочнике по C/C++.
Насчёт первого вопроса не понял.
int a = 'ё'; // в "а" будет код "ё"
Ответ отправил: V1s0r (статус: 2-ой класс)
Ответ отправлен: 15.03.2007, 16:03 Оценка за ответ: 5
Отвечает: Ilkras
Здравствуйте, Tatarin!
Посмотреть очень просто. Правильно это будет выглядеть так:
// look through the ASCII table
int i;
for (i = 20; i< 128; i++)
printf("Character "%c" has value %d
", i, (int)i);
Далее. Число всегда хранится в двоичной форме. При распечатке можно представить его в десятичной. Чтобы точно знать как это делать надо почитать руководство. Руководство по функции printf() вам прекрасно поможет.
Ответ отправил: Ilkras (статус: 4-ый класс)
Ответ отправлен: 15.03.2007, 16:52 Оценка за ответ: 5
Отвечает: kool
Здравствуйте, Tatarin!
1)ASCII символ предсавлен своим кодом.
Т.е.
char a='A';
int cod_a;
cod_a=a;
2)
int b=0x8044,bb=b;
char *bit=new char[sizeof(int)*8];
memset(bit,'0',sizeof(int)*8);
for(int i=0;i
for(int j=0;j<8;j++)
if((bb&(0x80>>j)))
bit[i*8+j]='1';
bb>>=8;
}
delete bit;
--------- I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 15.03.2007, 20:49
Отвечает: Thread
Здравствуйте, Tatarin!
Я уже много раз писал об этом, но не поленюсь написать еще разок). В С/С++ char - это не символ, это целочисленный тип, который как правило используется для хранения кодов символов. Т.е. можно использовать приведение типов:
char ch = 'q'; //Присвоим переменной ch код символа q
int code = (int) ch; //В переменной code будет код символа ch
Но можно написать без приведения типов:
char ch = 'q';
int code = ch;
Но я рекомендую использовать приведение типов, так как это на мой взгляд улучшает читабельность.
А можно прямо написать так:
int code = 'q';
По поводу Вашего второго вопроса ничего в голову не приходит, кроме как использовать классический алгоритм деления на 2 и с записью остатков. Здесь два момента:
1) Остаток от деления можно получить с помощью оператора %
2) Из массива символов "собрать" число можно сложив все элементы массива, умножив на 10 в степени позиция.
Приложение:
Ответ отправил: Thread (статус: 5-ый класс)
Ответ отправлен: 15.03.2007, 21:34
Отвечает: Evkwarrior
Здравствуйте, Tatarin!
Было приведено уже много ответов на вопрос, я добавлю свой.
Во-первых, запись
int a = 'g'; //(к примеру)
в общем случае неверная!!! int - это знаковый тип!
Возьмем, к примеру, букву "Б". Её код = 0xC1 = 11000001b = 193 (-63). А это отрицательное число!
После выполнения int a = 'Б'; a = -63 = 0xFFFFFFC1 (32-разрядная система).
Поэтому надо выполнять двойное явное приведение типов:
int a = (int) (unsigned char) 'Б';
Вот тогда a = 0x000000C1 = 193;
и вот мой вариант преобразования числа char в строку нулей и единичек:
char* CharToBinString (char val);
Пример: char *binary = CharToBinString ('G');
binary = "01000111"
Приложение:
--------- всё, что тебя не убъёт, сделает тебя сильнее
Ответ отправил: Evkwarrior (статус: 1-ый класс)
Ответ отправлен: 15.03.2007, 23:26
Вопрос № 78.447
Прива!
Как с помощью CFile считать постепенно в буфер и выводить на экран весь фаил, как заставить считывать фаил по кускам до конца и как вообще определить что начтупил конец фийла?!!
Отправлен: 15.03.2007, 17:08
Вопрос задал: Tatarin (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Ответ отправил: DragonTusk (статус: 3-ий класс)
Ответ отправлен: 16.03.2007, 00:28
Вопрос № 78.448
Всем экспертам привет. Вопрос такой,
Каким образом использовать формат *.png в программе, какие есть компоненты.
Прямые ссылки на статьи и примеры приветструются.
Отвечает: V1s0r
Здравствуйте, Григорьеа Владимир Дмитриевич!
Поздравляю, вы выбрали отличный формат! :)
libPNG
Попробуйте в google: libPNG download (или что-то типа того)
Если вы программируете в Qt, то там встроенная поддержка чтения и записи PNG.
Ответ отправил: V1s0r (статус: 2-ой класс)
Ответ отправлен: 15.03.2007, 18:10
Вопрос № 78.483
Здраствуйте!
Подскажите пожалуйста, какой компилятор С/С++ нужно использовать что бы скомпилировать программу под биос. Тоесть что бы работа на уровне БИОСА, а не ОС.
Может есть по этому делу какой-нибудь мануалчик.
Отправлен: 15.03.2007, 22:09
Вопрос задал: chikanok (статус: 3-ий класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ilkras
Здравствуйте, chikanok!
здесь важен не компилятор, а библиотеки, с которыми линкуешься. runtime library. их надо искать для конкретного производителя биоса. с ними придут и хедеры.
в принципе, биос должен быть реализован без операционки, но тем не менее строить предположения о том какие библиотеки он пользует я бы не стал. (хотя попробовать stdlib можно)
Ответ отправил: Ilkras (статус: 4-ый класс)
Ответ отправлен: 15.03.2007, 22:34
Отвечает: Fenixk19
Здравствуйте, chikanok!
Впервый раз слышу, что на C/C++ можно писать на уровне биоса. Может я чего-то не знаю, но я всегда думал, что с биосом можно работать только посредством ассемблера. И что за такая странная надобность, если не секрет?
Ответ отправил: Fenixk19 (статус: 3-ий класс)
Ответ отправлен: 16.03.2007, 00:26
Вопрос № 78.491
Добрый вечер. У меня на повестке дня такой вопрос: как можно ограничить поле ввода в командной строке для пользователя. Пример: нужно,чтобы пользователь ввёл просто символ, хочу обезопасить программу от ввода строки.
Отправлен: 15.03.2007, 23:00
Вопрос задал: Griever (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Ilkras
Здравствуйте, Griever!
если в DOS, то getch() решает проблему, если это windows форма, то где-то в properties должна быть максимальная длина
Ответ отправил: Ilkras (статус: 4-ый класс)
Ответ отправлен: 15.03.2007, 23:09
Отвечает: DragonTusk
Здравствуйте, Griever!
Функция из Си int scanf(const char *format [, argument]... );
format - строка списка аргументов.
В случае ошибки возвращает 0, иначе 1.
Ответ отправил: DragonTusk (статус: 3-ий класс)
Ответ отправлен: 16.03.2007, 00:21