Format binaire

Résolu
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 25 juin 2005 à 20:53
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 26 juin 2005 à 16:09
Salut, quel est le format pour sortir les données en représentation binaire dans une chaine ? merci..

9 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 juin 2005 à 21:10
Completement foirer le c/c :

private string GetBinString ( byte[] data )
{
BitArray array = new BitArray(data);

StringBuilder sb = new StringBuilder();
bool current;

for ( int i = array.Count-1; i >= 0; i-- )
{
current = array.Get(i);
if ( current )
sb.Append('1');
else
sb.Append('0');
}

return sb.ToString();
}

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 juin 2005 à 21:09
Salut,

Je ne sais pas si il y a mieux :



private string GetBinString ( byte[] data )


{


BitArray array = new BitArray(data);


StringBuilder sb = new StringBuilder();


bool current;


for ( int i = array.Count-1; i >= 0; i-- )


{


current = array.Get(i);


if ( current )


sb.Append('1');


else


sb.Append('0');


}


return sb.ToString();


}

<!--EndFragment-->

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
25 juin 2005 à 21:41
Il n'y a pas de format avec String.Format !? C'est pour ca que je ne trouvais pas.. Merci Coq.. je vais tester ta méthode puis après je donnerai une autre technique si ca interesse qlq'un, avec un mask binaire, peut etre que tu connais aussi, c'est un peu comme tu as fait mais sans le BitArray.. mais plus tard là je regarde la télé : ))
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 juin 2005 à 21:48
Pour le String.Format je ne crois pas, ou alors ils l'ont rudement bien caché ^^
Pour ta méthode donne la, c'est toujours bon d'avoir plusieurs exemples. :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
26 juin 2005 à 00:00
J'ai codé ca en précipitation j'espère que je me suis pas planté.. J'ai appris cette technique d'un demomaker.. sont pas nuls les gars !! : )

private string GetBinaryString( int val )
{
int mask = 1 << 31; // le bit le plus haut est à 1.
string s = String.Empty;


for ( int i = 0; i < 32; i++ ) // 32 bits
{
if ( ( val & mask ) != 0 )
s += "1";
else
s += "0";


val <<= 1;


if ( ( i + 1 ) % 8 == 0 ) // pas obligatoire !
s += " ";
}


return s;
}
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
26 juin 2005 à 09:40
En tout cas on arrive au même résultat, mis à part que je ne separe pas les octets.
Par contre avec ma méthode si on passe du Int16 on obtient la représentation sur 16 caractères directement ^^
Après côté perf je ne sais pas ce que ça donne, mais l'utilisation de la concaténation de chaîne n'est pas très conseillée.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
26 juin 2005 à 15:09
Vi, j'ai utilisé String pour l'exemple mais il est évident que pour les perfs StringBuilder c'est mieux.. Elle marche comment en interne la classe StringBuilder ? Mon exemple attend un int mais on peut facilement le modifier pour prendre un tableau de byte.. Je suis vraiment surpris que String.Format ne puisse pas sortir la chaine au format binaire, meme le framework 2.0 ? je profite qu'on parle des opérateurs binaires pour poser une question ou ,j'ai un doute, le OU binaire ajoute une enumération [ Flags ] dans une variable, ca ok c'est facile, mais pour la retirer !!? je pense à inverser les bit avant de refaire un OU, c'est ca la bonne technique ? Première fois que je tombe sur ce cas de figure, je n'avais jamais eu besoin de retirer juste une valeur d'un flag : |
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
26 juin 2005 à 15:21
Pour la retirer on peut utiliser l'opérateur ^. (Voir aussi l'opérateur ^=)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
26 juin 2005 à 16:09
Eh eh.. J'ai bien fait de demander.. Je sentais que c'etait pas normal d'utiliser deux opérateurs.. J'avais penser à l'opérateur XOR mais en faisant des tests sur papier je me suis embrouillé, j'aurais mieux fait de tester tout de suite :( merciii...


Une petite idée au passage.. Tu devrais faire un mix des deux méthodes ( GetBinString ) pour obtenir les meilleurs perfs, ca fera une bonne candidate pour le namespace CSLib.Text
0
Rejoignez-nous