2011-02-03 3 views
6

есть простой способ преобразования символа в его двоичное представление?Как преобразовать символ в двоичный?

Im пытается отправить сообщение другому процессу, за один бит за раз. Итак, если сообщение «Hello», мне нужно сначала превратить «H» в двоичный файл, а затем отправить бит в порядок.

Хранение в массиве было бы предпочтительнее.

Благодарим за любую обратную связь. Самый полезный может быть либо псевдокод, либо действительный код.

Я думаю, что я должен упомянуть, что это для школьного задания, чтобы узнать о сигналах ... это просто интересный способ узнать о них. SIGUSR1 используется как 0, SIGUSR2 используется как 1, и точка должна отправить сообщение от одного процесса другому, притворяясь, что среда блокирует другие способы связи.

+0

Могли бы вы привести пример того, что вы ожидаете на самом деле будут посланы? –

+0

Итак, вы хотите отправить только одну двоичную цифру за раз? Зачем? –

+0

ну его с сигналами на самом деле ... все, что мне нужно, это двоичное представление персонажа. поэтому, возможно, я предоставляю массив int, и через некоторую функцию он становится двоичным. то я могу циклически перемещаться по массиву и отправлять каждый бит. Это своего рода упражнение в мышлении из коробки. – Blackbinary

ответ

14

У вас есть только петля для каждого бит, сделайте сдвиг и выполните логику AND, чтобы получить бит.

for (int i = 0; i < 8; ++i) { 
    send((mychar >> i) & 1); 
} 

Например:

unsigned char mychar = 0xA5; // 10100101 

(mychar >> 0) 10100101 
& 1   & 00000001 
============= 00000001 (bit 1) 

(mychar >> 1) 01010010 
& 1   & 00000001 
============= 00000000 (bit 0) 

и так далее ...

+0

Вы должны сделать это 'unsigned char' или убедиться, что значение всегда будет положительным, так как результат' >> 'имеет определенное для реализации значение для отрицательных операндов. –

+0

Пересмотренный! Благодарю вас. –

3

насчет:

int output[CHAR_BIT]; 
char c; 
int i; 
for (i = 0; i < CHAR_BIT; ++i) { 
    output[i] = (c >> i) & 1; 
} 

Это пишет биты из c в output, наименее значащий бит первого.

+0

, что именно то, что я хочу, я проверю. – Blackbinary

Смежные вопросы