[ C ] transformer un char en byte?

Fermé
Nettogrof Messages postés 521 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 décembre 2005 - 1 déc. 2003 à 18:14
Nettogrof Messages postés 521 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 décembre 2005 - 2 déc. 2003 à 17:01
Bonjour,

Je me pose une question, j'ai un char que j'aimerais transformer en binaire.
Exemple j'ai le caractère f qui vaut en hex 66, donc j'aimerais avoir : 01100110.

Est-ce que vous connaissez une méthode simple?
(développement par Visual C++, mais je ne fais que du C)

Merci d'avoir au moins lu mon problème...
Nettogrof tseb era seiromem emoS
A voir également:

4 réponses

Nettogrof Messages postés 521 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 décembre 2005 672
1 déc. 2003 à 21:53
Merci pour ta réponse,

Mais mon probleme demeure, je vais essayer d'être plus clair.

par exemple j'ai en char : ctes
en hex : 63 74 65 73
en binaire : 0110 0011 0111 0100 0110 0101 0111 0011


et par exemple je voudrais enlever un bit à tout les 4.

donc 011 001 011 010 011 010 011 001

qui donne en hex : 65 A6 99 qui est loin de mon hex de départ.

Est-ce qu'en C il est possible de faire un tableau de bit ou un tableau de boolean?

La raison , c'est que j'ai un programme qui après d'avoir modife une image, il rajoute des "0" pour complété le dernier octet et moi je veux les enlever.

Nettogrof tseb era seiromem emoS
0
tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
2 déc. 2003 à 15:56
les booleens n'existent pas en C, on n'y remedie en utilisant des enums coe ceci enum bool { VRAI = 1, FAUX = 0} ou en utilisant les macros definitions (#define).
On peut manipuler des bits en C, mais je trouve q c'est assez complique(j'ai jamais fait), en fait, ds tout ce que j'ai lu, on ne peut declarer des bits directement(kernighan et ritchie et aussi J.P Braquelaire). Les champs de bits(par contre seulement int ou unsigned), st des champs de structure(ou union), attend je te donne un exemple, c'est plus clair :
struct cell {
int fix : 3; //decare que fix a pour taille 3bits
int res : 14; //14bits};
//la declaration ne p se faire qu'a l'interieur d'une structure, et c'est comprehensible.
Mais tu sais q tu peux manipuler les bits en utilisant les 6 operateurs sur les bits : &, |, >>, <<, ~, ^

ou bien tu peux faire ceci, ce n'est pas correct a mes yeux, mais on p essayer :
typedef struct inutile {
unsigned bit : 1;
} inutile;
inutile tab [32];
j'espere t'avoir aide.

tafiscobar  "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
0
Nettogrof Messages postés 521 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 décembre 2005 672
2 déc. 2003 à 17:01
Merci bcp,

c'est ce que je pensais, car après tant de recherche, je ne voyais toujours pas comment faire "du bit à bit".

Merci encore..

Nettogrof tseb era seiromem emoS
0
tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
1 déc. 2003 à 20:24
un char c'est un unsigned int, et donc, tu le castes en unsigned int et tu fais ta representation binaire sur cet int.
ex : representation_binaire((unsigned ) 'f');

tafiscobar  "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
-1