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

Ваш аккаунт

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

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

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

Как узнать ASCII-код символа?

1.9K
05 декабря 2003 года
pluton
32 / / 02.09.2003
Как узнать ASCII-код символа. Символ хранится в char или в AnsiString.
293
05 декабря 2003 года
SEDEGOFF
586 / / 06.10.2002
Храниться в char, если интерпритировать как 'a' и в int если как 65.
По хорошему поищи в инете таблицу, а если конкретного, то в событии KeyPress, любого компонента, можно посмотреть
443
05 декабря 2003 года
REmindER
292 / / 23.03.2003
Очень просто:

char *Char;

Char = "a";

int ASCII = (unsigned char) Char[0];

/////////////////////////////////////////////////

AnsiString String;

String = "a";

int ASCII = (unsigned char) String[0];
4
05 декабря 2003 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by pluton
Как узнать ASCII-код символа. Символ хранится в char или в AnsiString.



Сразу видно, паскалист :)

3
05 декабря 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by REmindER
Очень просто:

char *Char;

Char = "a";

int ASCII = (unsigned char) Char[0];


:D :D :D

unsigned char ASCII = 'a';

443
06 декабря 2003 года
REmindER
292 / / 23.03.2003
Цитата:
Originally posted by Green

:D :D :D

unsigned char ASCII = 'a';



Если статически, то правильно. (...Символ хранится в char или в AnsiString...) :D

415
06 декабря 2003 года
SLA
274 / / 08.08.2003
printf("Код символа \'%c\' = %u\n", C,C);

или так:

printf("Й = %u\n", 'Й');

или так:

 
Код:
unsigned int Code;
char Char;

Code = Char;


для AnsiString должно сработать это:

 
Код:
unsigned int Code;
AnsiString anChar = "Ъ";
Code = (unsigned) anChar.c_str()[0];


БЛИН! Проверил, все работает, но для русских букв возвращает отрицательные значения! ПОЧЕМУ?
Вот код:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned int Code;
AnsiString anChar = Edit1->Text;

Code = (unsigned) anChar.c_str()[0];
Label1->Caption = IntToStr(Code);
}

Кто знает почему?
3
06 декабря 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by SLA
printf("Код символа \'%c\' = %u\n", C,C);
БЛИН! Проверил, все работает, но для русских букв возвращает отрицательные значения! ПОЧЕМУ?
Вот код:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned int Code;
AnsiString anChar = Edit1->Text;

Code = (unsigned) anChar.c_str()[0];
Label1->Caption = IntToStr(Code);
}

Кто знает почему?



Потому, что ты не правильно пользуешься явными и неявными приведениями типов. В твоем коде в строке

 
Код:
Code = (unsigned) anChar.c_str()[0];

происходят следующие преобразования типов (для примера для буквы 'в'):
 
Код:
'в' char  ->  int  ->  unsighned  ->  unsigned int
226  -30      -30      4294967266      4294967266
     0xe2  0xffffffe2  0xffffffe2      0xffffffe2

Надо было написать так:
 
Код:
Code = (unsigned char) anChar.c_str()[0];

Тогда приведение выглядело бы так:
 
Код:
'в' char -> unsighned char -> unsigned int
226  -30          226             226
    0xe2         0xe2             0xe2
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог