2011-02-03 3 views
6

Y at-il un moyen simple de convertir un personnage en sa représentation binaire? Je tente d'envoyer un message à un autre processus, un seul bit à la fois. Donc, si le message est "Bonjour", je dois d'abord transformer "H" en binaire, puis envoyer les bits dans l'ordre.comment convertir un caractère en binaire?

Le stockage dans un tableau serait préférable.

Merci pour vos commentaires, soit le code pseudo ou le code réel serait le plus utile.

Je pense que je devrais mentionner que c'est pour une tâche d'école pour apprendre des signaux ... c'est juste une manière intéressante d'apprendre d'eux. SIGUSR1 est utilisé comme 0, SIGUSR2 est utilisé comme 1, et le but est d'envoyer un message d'un processus à un autre, en prétendant que l'environnement verrouille les autres méthodes de communication.

+0

Pourriez-vous donner un exemple de ce que vous vous attendez à être effectivement envoyé? –

+0

Vous ne voulez donc envoyer qu'un seul chiffre binaire à la fois? Pourquoi? –

+0

Eh bien c'est avec des signaux en fait ... tout ce dont j'ai besoin est la représentation binaire d'un personnage. alors peut-être que je fournis un tableau int, et à travers certaines fonctions, il devient le binaire. alors je peux faire défiler le tableau et envoyer chaque bit. C'est un peu un exercice de réflexion hors de la boîte. – Blackbinary

Répondre

14

Vous n'avez qu'à boucler pour chaque bit faire un décalage et faire un AND logique pour obtenir le bit.

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

Par exemple:

unsigned char mychar = 0xA5; // 10100101 

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

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

et ainsi de suite ...

+0

Vous devriez faire ce 'unsigned char' ou bien s'assurer que la valeur sera toujours positive, puisque le résultat de' >> 'a une valeur définie par l'implémentation pour les opérandes négatifs. –

+0

Revisé! Remercier votre. –

3

Qu'en est-:

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

qui écrit les bits de c dans output, bit le moins significatif en premier.

+0

c'est exactement ce que je veux, je vais le tester. – Blackbinary

Questions connexes