Conversion d'un octet en une chaîne binaire en c#

En c# je suis la conversion d'un byte à binary, la réponse est 00111111, mais le résultat donné est 111111. Maintenant, j'ai vraiment besoin d'afficher même les 2 0s devant. Quelqu'un peut me dire comment faire cela?

J'utilise:

Convert.ToString(byteArray[20],2)

Et la valeur d'octet est 63

35
demandé sur sam 2010-08-27 09:56:27

4 réponses

Changez simplement votre code en:

string yourByteString = Convert.ToString(byteArray[20], 2).PadLeft(8, '0');
// produces "00111111"
40
répondu Kelsey 2010-08-27 06:52:43

Si je comprends bien, vous avez 20 valeurs que vous voulez convertir, donc c'est juste un simple changement de chapeau que vous avez écrit.

Pour changer un seul octet en chaîne de caractères 8: Convert.ToString( x, 2 ).PadLeft( 8, '0' )

Pour changer le tableau complet:

byte[] a = new byte[] { 1, 10, 100, 255, 200, 20, 2 };
string[] b = a.Select( x => Convert.ToString( x, 2 ).PadLeft( 8, '0' ) ).ToArray();
// Returns array:
// 00000010
// 00010100
// 11001000
// 11111111
// 01100100
// 00001010
// 00000001

Pour changer votre tableau d'octets en chaîne unique, avec des octets séparés par de l'espace:

byte[] a = new byte[] { 1, 10, 100, 255, 200, 20, 2 };
string s = string.Join( " ",
    a.Select( x => Convert.ToString( x, 2 ).PadLeft( 8, '0' ) ) );
// Returns: 00000001 00001010 01100100 11111111 11001000 00010100 00000010

Si l'ordre des octets est incorrect, utilisez IEnumerable.Marche arrière():

byte[] a = new byte[] { 1, 10, 100, 255, 200, 20, 2 };
string s = string.Join( " ",
    a.Reverse().Select( x => Convert.ToString( x, 2 ).PadLeft( 8, '0' ) ) );
// Returns: 00000010 00010100 11001000 11111111 01100100 00001010 00000001
19
répondu Soul Reaver 2012-03-28 05:38:10

Essayez celui-ci

public static string ByteArrayToString(byte[] ba)
    {
        StringBuilder hex = new StringBuilder(ba.Length * 2);
        foreach (byte b in ba)
            hex.AppendFormat("{0:x2}", b);
        return hex.ToString();
    }
1
répondu Mahmoud El-baz 2015-12-23 06:19:47

Essayez celui-ci:

public static String convert(byte b)
{
    StringBuilder str = new StringBuilder(8);
            int[] bl  = new int[8];

    for (int i = 0; i < bl.Length; i++)
    {               
        bl[bl.Length - 1 - i] = ((b & (1 << i)) != 0) ? 1 : 0;
    }

    foreach ( int num in bl) str.Append(num);

    return str.ToString();
}
0
répondu kofucii 2010-08-27 19:45:04