Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ascii - код символа?

9.1K
03 мая 2006 года
pnz
27 / / 24.04.2006
Ребят! такая проблема - вводится строка, нужно сохранить ASCII код каждого символа. Кто знает как его получить(вычислить и т.д.), подскажите пожалуйста.

Заранее спасибо!!!
317
03 мая 2006 года
Relax
573 / / 20.09.2000
дык цифровое значение переменной и есть код символа...
ну то есть:

char sym = 'a';
int i = (int)sym;
929
03 мая 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by Relax
дык цифровое значение переменной и есть код символа...
ну то есть:

char sym = 'a';
int i = (int)sym;


А зачем преобразовывать?

 
Код:
char sym = 'a';
  printf("%d", sym);
317
03 мая 2006 года
Relax
573 / / 20.09.2000
ну незачем на самом деле... это для наглядности, ну и смотря как использовать. например, если тебе надо вывести код не в консоль, а в какой-нть гуевый компонент, то проще преобразование в int сделать.

char sym = 'a';
Label->Caption = sym; // будет а
Label->Caption = (int)sym; // будет 97
9.1K
04 мая 2006 года
pnz
27 / / 24.04.2006
Цитата:
Originally posted by Relax
ну незачем на самом деле... это для наглядности, ну и смотря как использовать. например, если тебе надо вывести код не в консоль, а в какой-нть гуевый компонент, то проще преобразование в int сделать.

char sym = 'a';
Label->Caption = sym; // будет а
Label->Caption = (int)sym; // будет 97


Большое спасибо что-то я об это не подумал! На самом деле просто ситуация такая - нужно просто закодировать строку, и я хотел брать код сомвола и проделать с ним логический сдвиг, к примеру на 3 вправо. Так де ведь можно (ну не прибегая к разным адгоритмам шифрования)?

317
04 мая 2006 года
Relax
573 / / 20.09.2000
да можно, то можно... токо вот не будут ли теряться разряды? ну, допустим, сдвинул ты вправо - часить разрядов, которые были на этих 3-х правых позициях пропадет? а как их потом восстановить? надо по идее переносить их в 3 левые позиции после сдвига... как-то так...

может быть они и сами переносятся - просто точно не помню как оператор сдвига работает :(
6.5K
04 мая 2006 года
SkyHawk
43 / / 20.10.2005
Цитата:
Originally posted by Relax
да можно, то можно... токо вот не будут ли теряться разряды? ну, допустим, сдвинул ты вправо - часить разрядов, которые были на этих 3-х правых позициях пропадет? а как их потом восстановить? надо по идее переносить их в 3 левые позиции после сдвига... как-то так...

может быть они и сами переносятся - просто точно не помню как оператор сдвига работает :(



Во! Я как раз работаю над проблемой шифрования! Один из оптимальных вариантов - выполнять логическую операцию "поразрядное исключающее ИЛИ" (XOR) над кодом каждого символа (операция ^) с любым другим символом. Для обратного преобразования достаточно снова выполнить XOR над этими же символами. Ключом к шифрованию будет как раз тот "любой другой символ".

P.S. Для более сложного шифрования можно еще вдобавок просто уменьшать или увеличивать значение кода каждого символа на определенное число.

Во как!

317
04 мая 2006 года
Relax
573 / / 20.09.2000
да, XOR рулит! :)
32K
02 октября 2007 года
saint_code
3 / / 02.10.2007
Подскажите пожалуйста
работаю в Turbo C 3.0

в графическом режиме читаю символ
c=getch();

необходимо преобразовать его из Ascii-кода в char
для последующего вывода на экран и добавления в другую строку

такое преобразование не прокатывает
outtextxy(x, y, (char)c);

или подскажите аналог Паскалевской функции ord для C

Заранее спасибо!
240
02 октября 2007 года
aks
2.5K / / 14.07.2006
потому что у тебя char, а тебе нужен не char, а массив char-ов ))
32K
04 октября 2007 года
saint_code
3 / / 02.10.2007
Цитата: aks
потому что у тебя char, а тебе нужен не char, а массив char-ов ))



Можно немного подробнее, уважаемый.
Как мне заставить это работать???

 
Код:
char c;
   while (c!=13)
   {
   c=getch();
   outtextxy(x+5, y+5, (char)c);
   }


Спасибо за помощь.
1.6K
04 октября 2007 года
Vov4ick
476 / / 01.02.2007
Можно сделать структуру из двух байт. Первый - любой, второй - нулевой. Читаем символ в первый байт, функции вывода скармливаем указатель на него.
Второй вариант. Строка из одного символа. Функции чтения символа скармливаем указатель на первый элемент. Оба варианта по сути равнозначны.
240
04 октября 2007 года
aks
2.5K / / 14.07.2006
Не равнозначны. Но второй юзать можно.
32K
04 октября 2007 года
saint_code
3 / / 02.10.2007
Цитата: Vov4ick
Можно сделать структуру из двух байт. Первый - любой, второй - нулевой. Читаем символ в первый байт, функции вывода скармливаем указатель на него.
Второй вариант. Строка из одного символа. Функции чтения символа скармливаем указатель на первый элемент. Оба варианта по сути равнозначны.



Реализовал второй вариант:

 
Код:
char c[1];
   while (c[0]!=13)
   {
   c[0]=getch();
   outtextxy(x+5, y+10, c);
   }

to aks и Vov4ick
Спасибо за помощь и за то что откликнулись.
1.6K
04 октября 2007 года
Vov4ick
476 / / 01.02.2007
aks Равнозначны. Что там, что там подряд два байта, первый - символ - второй - ноль - признак окончания строки в языке СИ.
240
05 октября 2007 года
aks
2.5K / / 14.07.2006
Никто не гарантирует то что их будет только 2.
Плюс не равнозначно с точки зрения языка и кривого приведения типов.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог