SnowBars |
Отправлено: 28.05.2006, 17:38 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Помогите пожалуста разобраться как получить код буквы который храниться в 8 битах...
Я попробовал через union:
union {
char ch;
bool bo[8];
} mod;
получаеться какая то корявая вещь, в которой некоторые значение "bo" не являеться ни true ни false, а если поменять значение "ch" то значение "bo" не меняеться...
У меня такое чуство, что там что то с памятью к которой они относяться...
но что именно понять никак
|
|
Grigoriy |
Отправлено: 28.05.2006, 19:54 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
Дело в том, что переменная типа bool занимает в памяти один байт — 8 бит, а не один бит.
Если без применения ассемблера, то с помощью битовых полей на C узнаются биты.
Вот код примера
CODE |
union tcodechar
{
char char1;
struct tbitchar
{
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
unsigned bit8:1;
}bitchar;
}codechar;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char d;
codechar.char1=Edit1->Text[1];
Edit2->Text=
IntToStr(codechar.bitchar.bit8)+
IntToStr(codechar.bitchar.bit7)+
IntToStr(codechar.bitchar.bit6)+
IntToStr(codechar.bitchar.bit5)+
IntToStr(codechar.bitchar.bit4)+
IntToStr(codechar.bitchar.bit3)+
IntToStr(codechar.bitchar.bit2)+
IntToStr(codechar.bitchar.bit1);
}
|
|
|
viva |
Отправлено: 29.05.2006, 04:02 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 31
|
Здесь уже обсуждали |
|
Konstantine |
Отправлено: 29.05.2006, 09:54 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
если код символа в строку нужно, то можно проще:
CODE |
char ch='A';
ShowMessage(IntToStr(ch));
|
|
|