C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как получить восьмеричный код буквы?, Через union коряво получаеться!
SnowBars
Отправлено: 28.05.2006, 17:38


Ученик-кочегар

Группа: Участник
Сообщений: 5



Помогите пожалуста разобраться как получить код буквы который храниться в 8 битах...

Я попробовал через union:
union {
char ch;
bool bo[8];
} mod;

получаеться какая то корявая вещь, в которой некоторые значение "bo" не являеться ни true ни false, а если поменять значение "ch" то значение "bo" не меняеться...
У меня такое чуство, что там что то с памятью к которой они относяться...
но что именно понять никак sad.gif

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));

Вернуться в Вопросы программирования в C++Builder