unsigned int Code;
char Char;
Code = Char;
Как узнать ASCII-код символа?
Как узнать ASCII-код символа. Символ хранится в char или в AnsiString.
По хорошему поищи в инете таблицу, а если конкретного, то в событии KeyPress, любого компонента, можно посмотреть
char *Char;
Char = "a";
int ASCII = (unsigned char) Char[0];
/////////////////////////////////////////////////
AnsiString String;
String = "a";
int ASCII = (unsigned char) String[0];
Цитата:
Originally posted by pluton
Как узнать ASCII-код символа. Символ хранится в char или в AnsiString.
Как узнать ASCII-код символа. Символ хранится в char или в AnsiString.
Сразу видно, паскалист :)
Цитата:
Originally posted by REmindER
Очень просто:
char *Char;
Char = "a";
int ASCII = (unsigned char) Char[0];
Очень просто:
char *Char;
Char = "a";
int ASCII = (unsigned char) Char[0];
:D :D :D
unsigned char ASCII = 'a';
Цитата:
Originally posted by Green
:D :D :D
unsigned char ASCII = 'a';
:D :D :D
unsigned char ASCII = 'a';
Если статически, то правильно. (...Символ хранится в char или в AnsiString...) :D
или так:
printf("Й = %u\n", 'Й');
или так:
Код:
для AnsiString должно сработать это:
Код:
unsigned int Code;
AnsiString anChar = "Ъ";
Code = (unsigned) anChar.c_str()[0];
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);
}
Кто знает почему?
Цитата:
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);
}
Кто знает почему?
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
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
226 -30 226 226
0xe2 0xe2 0xe2