En c #, je convertis un byte
en binary
, la réponse réelle est 00111111
mais le résultat donné est 111111
. Maintenant, j'ai vraiment besoin d'afficher même les 2 0 devant. Quelqu'un peut-il me dire comment faire cela?
J'utilise:
Convert.ToString(byteArray[20],2)
et la valeur d'octet est 63
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 souhaitez convertir, il ne s'agit donc que d'un simple changement de chapeau que vous avez écrit.
Pour changer un octet unique en une chaîne de 8 caractères: 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.Reverse () :
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
essaye celui-là
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();
}
Essaye celui-là:
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();
}