как преобразовать символ в двоичный файл? - PullRequest
6 голосов
/ 04 февраля 2011

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

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

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

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

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

Ответы [ 2 ]

13 голосов
/ 04 февраля 2011

Вам нужно только выполнить цикл для каждого бита, выполнить сдвиг и выполнить логику 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)

и т. Д....

3 голосов
/ 04 февраля 2011

Как насчет:

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

, который записывает биты из c в output, младший бит вначале.

...