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
4 réponses
Changez simplement votre code en:
string yourByteString = Convert.ToString(byteArray[20], 2).PadLeft(8, '0');
// produces "00111111"
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
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();
}
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();
}